From e2f2b6faaf37fc752d7f0d21ed13e38f42c57047 Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Fri, 19 Apr 2019 03:05:20 +0200 Subject: [PATCH 01/22] Initial create-reducer implementation --- src/create-reducer.spec.ts | 21 +++++++++++++++++++++ src/create-reducer.ts | 31 +++++++++++++++++++++++++++++++ src/index.ts | 12 +++++++++--- 3 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 src/create-reducer.spec.ts create mode 100644 src/create-reducer.ts diff --git a/src/create-reducer.spec.ts b/src/create-reducer.spec.ts new file mode 100644 index 0000000..3eefaa3 --- /dev/null +++ b/src/create-reducer.spec.ts @@ -0,0 +1,21 @@ +export const add = (amount: number) => createAction('ADD', amount); +export const increment = () => createAction('INCREMENT'); +const actions = { add, increment }; + +declare module '.' { + export type RootAction = ActionType; +} + +import { ActionType, action as createAction, createReducer } from '.'; + +const initialState = 0; + +export const counterReducer = createReducer(initialState) + .addHandler([add], (state, action) => { + return state + action.payload; + }) + .addHandler([increment], (state, _) => { + return state + 1; + }); + +const counterState = counterReducer(0, increment()); diff --git a/src/create-reducer.ts b/src/create-reducer.ts new file mode 100644 index 0000000..86800f9 --- /dev/null +++ b/src/create-reducer.ts @@ -0,0 +1,31 @@ +import { RootAction } from '.'; + +export function createReducer( + initialState: S +) { + type AddHandler = ( + actionsCreators: Array<(...args: any[]) => TAction>, + actionsHandler: (state: S, action: A extends TAction ? A : never) => S + ) => Exclude extends never + ? ReducerInstance + : ReducerInstance & { + addHandler: AddHandler>; + }; + + type ReducerInstance = (state: S, action: A) => S; + type Chain = { addHandler: AddHandler }; + + const addHandler: AddHandler = (types, handler) => { + return Object.assign({}, { addHandler }); + }; + + return Object.assign({}, { addHandler }) as ReducerInstance & Chain; + + // return (state: S = initialState, action: A): S => { + // if (handlers.hasOwnProperty(action.type)) { + // return (handlers as any)[action.type](state, action); + // } else { + // return state; + // } + // }; +} diff --git a/src/index.ts b/src/index.ts index ed62ab5..e98d62b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,16 +5,22 @@ */ /** Public API */ -// creators + +// action-creators export { action } from './action'; export { createAction } from './create-action'; export { createStandardAction } from './create-standard-action'; export { createCustomAction } from './create-custom-action'; export { createAsyncAction } from './create-async-action'; -// guards -export { ActionType, StateType } from './type-helpers'; +export { createReducer } from './create-reducer'; + +// action-helpers export { getType } from './get-type'; export { isOfType } from './is-of-type'; export { isActionOf } from './is-action-of'; + +// type-helpers +export { ActionType, StateType, ActionCreator, TypeMeta } from './type-helpers'; + // deprecated export { createActionDeprecated } from './create-action-deprecated'; From e6398d0312449f7c6a69eaf5a6ece0474a0d2a99 Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Fri, 19 Apr 2019 03:51:31 +0200 Subject: [PATCH 02/22] Implemented runtime and added basic tests to create-reducer --- src/__snapshots__/create-reducer.spec.ts.snap | 5 +++ src/create-reducer.spec.ts | 13 ++++--- src/create-reducer.ts | 36 +++++++++++-------- 3 files changed, 35 insertions(+), 19 deletions(-) create mode 100644 src/__snapshots__/create-reducer.spec.ts.snap diff --git a/src/__snapshots__/create-reducer.spec.ts.snap b/src/__snapshots__/create-reducer.spec.ts.snap new file mode 100644 index 0000000..f82af6a --- /dev/null +++ b/src/__snapshots__/create-reducer.spec.ts.snap @@ -0,0 +1,5 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`counterReducer(0, add(4)) (type) should match snapshot 1`] = `"number"`; + +exports[`counterReducer(0, increment()) (type) should match snapshot 1`] = `"number"`; diff --git a/src/create-reducer.spec.ts b/src/create-reducer.spec.ts index 3eefaa3..6814972 100644 --- a/src/create-reducer.spec.ts +++ b/src/create-reducer.spec.ts @@ -1,13 +1,13 @@ -export const add = (amount: number) => createAction('ADD', amount); -export const increment = () => createAction('INCREMENT'); +import { ActionType, createStandardAction, createReducer } from '.'; + +export const add = createStandardAction('ADD')(); +export const increment = createStandardAction('INCREMENT')(); const actions = { add, increment }; declare module '.' { export type RootAction = ActionType; } -import { ActionType, action as createAction, createReducer } from '.'; - const initialState = 0; export const counterReducer = createReducer(initialState) @@ -18,4 +18,7 @@ export const counterReducer = createReducer(initialState) return state + 1; }); -const counterState = counterReducer(0, increment()); +// @dts-jest:pass:snap +counterReducer(0, increment()); // => 1 +// @dts-jest:pass:snap +counterReducer(0, add(4)); // => 4 diff --git a/src/create-reducer.ts b/src/create-reducer.ts index 86800f9..5c97209 100644 --- a/src/create-reducer.ts +++ b/src/create-reducer.ts @@ -1,4 +1,6 @@ +// @ts-ignore import { RootAction } from '.'; +import { getType } from './get-type'; export function createReducer( initialState: S @@ -7,25 +9,31 @@ export function createReducer( actionsCreators: Array<(...args: any[]) => TAction>, actionsHandler: (state: S, action: A extends TAction ? A : never) => S ) => Exclude extends never - ? ReducerInstance - : ReducerInstance & { + ? Reducer + : Reducer & { addHandler: AddHandler>; }; + type AddHandlerChain = { addHandler: AddHandler }; - type ReducerInstance = (state: S, action: A) => S; - type Chain = { addHandler: AddHandler }; + const handlers: Record = {}; - const addHandler: AddHandler = (types, handler) => { - return Object.assign({}, { addHandler }); + type Reducer = (state: S, action: A) => S; + const reducer: Reducer = (state = initialState, action) => { + if (handlers.hasOwnProperty(action.type)) { + return handlers[action.type](state, action); + } else { + return state; + } }; - return Object.assign({}, { addHandler }) as ReducerInstance & Chain; + const addHandler = ((actionsCreators, actionsHandler: Reducer) => { + actionsCreators.forEach(ac => (handlers[getType(ac)] = actionsHandler)); + return chain; + }) as AddHandler; - // return (state: S = initialState, action: A): S => { - // if (handlers.hasOwnProperty(action.type)) { - // return (handlers as any)[action.type](state, action); - // } else { - // return state; - // } - // }; + const chain: Reducer & AddHandlerChain = Object.assign(reducer, { + addHandler, + }); + + return chain; } From 45f7f2ebdf6957d232d0eea9a8362242561b2089 Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sat, 20 Apr 2019 03:56:08 +0200 Subject: [PATCH 03/22] Added improved implementation covering both action creators and types as inputs --- src/__snapshots__/create-reducer.spec.ts.snap | 24 ++++++- src/create-reducer.spec.ts | 72 +++++++++++++++---- src/create-reducer.ts | 46 ++++++++++-- src/utils/validation.ts | 54 +++++++++----- 4 files changed, 157 insertions(+), 39 deletions(-) diff --git a/src/__snapshots__/create-reducer.spec.ts.snap b/src/__snapshots__/create-reducer.spec.ts.snap index f82af6a..ad05db9 100644 --- a/src/__snapshots__/create-reducer.spec.ts.snap +++ b/src/__snapshots__/create-reducer.spec.ts.snap @@ -1,5 +1,25 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`counterReducer(0, add(4)) (type) should match snapshot 1`] = `"number"`; +exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 1`] = `"number"`; -exports[`counterReducer(0, increment()) (type) should match snapshot 1`] = `"number"`; +exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 2`] = `"number"`; + +exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 3`] = `"number"`; + +exports[`With Action Creators fn(0, increment()) (type) should match snapshot 1`] = `"number"`; + +exports[`With Action Creators fn(0, increment()) (type) should match snapshot 2`] = `"number"`; + +exports[`With Action Creators fn(0, increment()) (type) should match snapshot 3`] = `"number"`; + +exports[`With Action Types fn(0, add(4)) (type) should match snapshot 1`] = `"number"`; + +exports[`With Action Types fn(0, add(4)) (type) should match snapshot 2`] = `"number"`; + +exports[`With Action Types fn(0, add(4)) (type) should match snapshot 3`] = `"number"`; + +exports[`With Action Types fn(0, increment()) (type) should match snapshot 1`] = `"number"`; + +exports[`With Action Types fn(0, increment()) (type) should match snapshot 2`] = `"number"`; + +exports[`With Action Types fn(0, increment()) (type) should match snapshot 3`] = `"number"`; diff --git a/src/create-reducer.spec.ts b/src/create-reducer.spec.ts index 6814972..66db905 100644 --- a/src/create-reducer.spec.ts +++ b/src/create-reducer.spec.ts @@ -1,7 +1,7 @@ import { ActionType, createStandardAction, createReducer } from '.'; -export const add = createStandardAction('ADD')(); -export const increment = createStandardAction('INCREMENT')(); +const add = createStandardAction('ADD')(); +const increment = createStandardAction('INCREMENT')(); const actions = { add, increment }; declare module '.' { @@ -9,16 +9,64 @@ declare module '.' { } const initialState = 0; +describe('With Action Creators', () => { + const counterReducer1 = createReducer(initialState).addHandler( + [add, increment], + (state, action) => { + return state + (action.type === 'ADD' ? action.payload : 1); + } + ); + const counterReducer2 = createReducer(initialState) + .addHandler([add], (state, action) => { + return state + action.payload; + }) + .addHandler([increment], (state, _) => { + return state + 1; + }); + const counterReducer3 = createReducer(initialState) + .addHandler(add, (state, action) => { + return state + action.payload; + }) + .addHandler(increment, (state, _) => { + return state + 1; + }); -export const counterReducer = createReducer(initialState) - .addHandler([add], (state, action) => { - return state + action.payload; - }) - .addHandler([increment], (state, _) => { - return state + 1; + [counterReducer1, counterReducer2, counterReducer3].forEach(fn => { + // @dts-jest:pass:snap + fn(0, increment()); // => 1 + // @dts-jest:pass:snap + fn(0, add(4)); // => 4 }); +}); -// @dts-jest:pass:snap -counterReducer(0, increment()); // => 1 -// @dts-jest:pass:snap -counterReducer(0, add(4)); // => 4 +// wroc do implementacji ze nie mozna podac dwoch tych samych parametrow +describe('With Action Types', () => { + const counterReducer1 = createReducer(initialState).addHandler( + ['ADD', 'INCREMENT'], + (state, action) => { + return state + (action.type === 'ADD' ? action.payload : 1); + } + ); + + const counterReducer2 = createReducer(initialState) + .addHandler(['ADD'], (state, action) => { + return state + action.payload; + }) + .addHandler(['INCREMENT'], (state, _) => { + return state + 1; + }); + const counterReducer3 = createReducer(initialState) + .addHandler('ADD', (state, action) => { + return state + action.payload; + }) + .addHandler('INCREMENT', (state, _) => { + return state + 1; + }); + + [counterReducer1, counterReducer2, counterReducer3].forEach(fn => { + // @dts-jest:pass:snap + fn(0, increment()); // => 1 + // @dts-jest:pass:snap + fn(0, add(4)); // => 4 + }); +}); diff --git a/src/create-reducer.ts b/src/create-reducer.ts index 5c97209..7a44d5c 100644 --- a/src/create-reducer.ts +++ b/src/create-reducer.ts @@ -1,18 +1,38 @@ // @ts-ignore import { RootAction } from '.'; import { getType } from './get-type'; +import { + checkValidActionCreator, + checkValidActionType, + throwInvalidActionTypeOrActionCreator, +} from './utils/validation'; export function createReducer( initialState: S ) { - type AddHandler = ( - actionsCreators: Array<(...args: any[]) => TAction>, - actionsHandler: (state: S, action: A extends TAction ? A : never) => S - ) => Exclude extends never + type AddHandler = < + TType extends TAllActions['type'], + TTypeAction extends TAllActions extends { type: TType } + ? TAllActions + : never, + TCreator extends (...args: any[]) => TAllActions, + TCreatorAction extends TAllActions extends ReturnType + ? TAllActions + : never, + TActionIntersection extends TTypeAction extends TCreatorAction + ? TTypeAction + : never + >( + actionsTypes: TType | TCreator | TType[] | TCreator[], + actionsHandler: (state: S, action: TActionIntersection) => S + ) => Exclude extends never ? Reducer : Reducer & { - addHandler: AddHandler>; + addHandler: AddHandler< + Exclude + >; }; + type AddHandlerChain = { addHandler: AddHandler }; const handlers: Record = {}; @@ -26,8 +46,20 @@ export function createReducer( } }; - const addHandler = ((actionsCreators, actionsHandler: Reducer) => { - actionsCreators.forEach(ac => (handlers[getType(ac)] = actionsHandler)); + const addHandler = ((actionsTypes, actionsHandler: Reducer) => { + const creatorsOrTypes = Array.isArray(actionsTypes) + ? actionsTypes + : [actionsTypes]; + + creatorsOrTypes + .map(acOrType => + checkValidActionCreator(acOrType) + ? getType(acOrType) + : checkValidActionType(acOrType) + ? acOrType + : throwInvalidActionTypeOrActionCreator() + ) + .forEach(type => (handlers[type] = actionsHandler)); return chain; }) as AddHandler; diff --git a/src/utils/validation.ts b/src/utils/validation.ts index f7eac08..cd4b3a6 100644 --- a/src/utils/validation.ts +++ b/src/utils/validation.ts @@ -8,8 +8,14 @@ export function throwIsEmpty(argPosition: number = 1): never { throw new Error(`Argument ${argPosition} is empty.`); } -export function checkInvalidActionCreator(arg: ActionCreator) { - return typeof arg !== 'function' || !('getType' in arg); +export function checkValidActionCreator( + arg: unknown +): arg is ActionCreator { + return typeof arg === 'function' && 'getType' in arg; +} + +export function checkInvalidActionCreator(arg: unknown) { + return !checkValidActionCreator(arg); } export function throwInvalidActionCreator(argPosition: number = 1): never { @@ -18,8 +24,28 @@ export function throwInvalidActionCreator(argPosition: number = 1): never { ); } -export function checkInvalidActionType(arg: StringType) { - return typeof arg !== 'string' && typeof arg !== 'symbol'; +export function checkInvalidActionCreatorInArray( + arg: ActionCreator & TypeMeta, + idx: number +): void | never { + if (arg == null) { + throw new Error( + `Argument contains array with empty element at index ${idx}` + ); + } else if (arg.getType == null) { + throw new Error( + // tslint:disable-next-line:max-line-length + `Argument contains array with invalid element at index ${idx}, it should be an action-creator instance from "typesafe-actions"` + ); + } +} + +export function checkValidActionType(arg: unknown): arg is string | symbol { + return typeof arg === 'string' || typeof arg === 'symbol'; +} + +export function checkInvalidActionType(arg: unknown): arg is string | symbol { + return !checkValidActionType(arg); } export function throwInvalidActionType(argPosition: number = 1): never { @@ -43,18 +69,10 @@ export function checkInvalidActionTypeInArray( } } -export function checkInvalidActionCreatorInArray( - arg: ActionCreator & TypeMeta, - idx: number -): void | never { - if (arg == null) { - throw new Error( - `Argument contains array with empty element at index ${idx}` - ); - } else if (arg.getType == null) { - throw new Error( - // tslint:disable-next-line:max-line-length - `Argument contains array with invalid element at index ${idx}, it should be an action-creator instance from "typesafe-actions"` - ); - } +export function throwInvalidActionTypeOrActionCreator( + argPosition: number = 1 +): never { + throw new Error( + `Argument ${argPosition} is invalid, it should be an action-creator instance from "typesafe-actions" or action type of type: string | symbol` + ); } From b199c238c147b79f0026d176028325cf1079225c Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sat, 20 Apr 2019 15:55:41 +0200 Subject: [PATCH 04/22] Updated Compatibility Notes --- README.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 86ff801..f9a804f 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,8 @@ Issues can be funded by anyone and the money will be transparently distributed t - [Installation](#installation) - [Compatibility Notes](#compatibility-notes) - [TypeScript support](#typescript-support) - - [Browser Polyfills](#browser-polyfills) + - [Browser support](#browser-support) + - [Recommended polyfill for IE](#recommended-polyfill-for-ie) - [Motivation](#motivation) - [Tutorial](#tutorial) - [Constants](#constants) @@ -121,15 +122,18 @@ yarn add typesafe-actions * `typesafe-actions@3.X.X` - minimal TS v3.2 * `typesafe-actions@4.X.X` - minimal TS v3.2 -### Browser Polyfills -If you support older browsers (e.g. IE < 11) and mobile devices please provide this polyfill: +### Browser support +It's compatible with all modern browsers. + +For older browsers (e.g. IE <= 11) and mobile devices you need to provide these polyfills: - [Object.assign](https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Obiekty/Object/assign#Polyfill) - [Array.prototype.includes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes) -You could also consider including a global polyfill in your bundled application, such as `@babel/polyfill`. +### Recommended polyfill for IE +To provide the best compatibility for your application please include a popular polyfill package in your bundled application, such as `@babel/polyfill`. You can check the `React` guidelines on how to do that, specifically: https://reactjs.org/docs/javascript-environment-requirements.html -> You can also check our codesandbox reference implementation which is using `@babel/polyfill` and was confirmed to be working with IE11 +> It's included in our `/codesandbox` reference implementation which is using `@babel/polyfill` and is confirmed to be working with IE11. Please check it out! [⇧ back to top](#table-of-contents) @@ -155,6 +159,8 @@ To showcase the flexibility and the power of the **type-safety** provided by thi > **WARNING**: Please make sure that you are familiar with the following concepts of programming languages to be able to follow along: [Type Inference](https://www.typescriptlang.org/docs/handbook/type-inference.html), [Control flow analysis](https://github.com/Microsoft/TypeScript/wiki/What%27s-new-in-TypeScript#control-flow-based-type-analysis), [Tagged union types](https://github.com/Microsoft/TypeScript/wiki/What%27s-new-in-TypeScript#tagged-union-types), [Generics](https://www.typescriptlang.org/docs/handbook/generics.html) and [Advanced Types](https://www.typescriptlang.org/docs/handbook/advanced-types.html). +[⇧ back to top](#table-of-contents) + ### Constants **String constants limitation in TypeScript** - when using **string constants** as action `type` property, please make sure to use **simple string literal assignment with const**. This limitation is coming from the type-system, because all the **dynamic string operations** (e.g. string concatenation, template strings and also object used as a map) will widen the literal type to its super-type, `string`. As a result this will break contextual typing for **action** object in reducer cases. @@ -177,6 +183,8 @@ export default ({ } as const) // working in TS v3.4 and above => https://github.com/Microsoft/TypeScript/pull/29510 ``` +[⇧ back to top](#table-of-contents) + ### Actions Different projects have different needs, and conventions vary across teams, and this is why `typesafe-actions` was designed with flexibility in mind. It provides three different major styles so you can choose whichever would be the best fit for your team. From e359deec83a781d014799d2b38ca8225bffa98ce Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sat, 20 Apr 2019 18:59:49 +0200 Subject: [PATCH 05/22] Updated readme --- README.md | 193 +++++++++++++++++++++++++++++------------------------- 1 file changed, 102 insertions(+), 91 deletions(-) diff --git a/README.md b/README.md index f9a804f..226733b 100644 --- a/README.md +++ b/README.md @@ -1,75 +1,70 @@ -# typesafe-actions +
+

typesafe-actions

-Typesafe utilities for "action-creators" in Redux / Flux Architecture. - -Featuring flexible functional API that's specifically designed to reduce types **verbosity** -and **complexity** (explained in [motivation](#motivation)). - -_This lib is part of [React & Redux TypeScript Guide](https://github.com/piotrwitek/react-redux-typescript-guide)_ :book: +Typesafe utilities designed to reduce types **verbosity** +and **complexity** in Redux Architecture. +_This library is part of the [React & Redux TypeScript Guide](https://github.com/piotrwitek/react-redux-typescript-guide)_ ecosystem :book: [![Latest Stable Version](https://img.shields.io/npm/v/typesafe-actions.svg)](https://www.npmjs.com/package/typesafe-actions) [![Build Status](https://semaphoreci.com/api/v1/piotrekwitek/typesafe-actions/branches/master/shields_badge.svg)](https://semaphoreci.com/piotrekwitek/typesafe-actions) [![dependencies Status](https://david-dm.org/piotrwitek/typesafe-actions/status.svg)](https://david-dm.org/piotrwitek/typesafe-actions) -[![peerDependencies Status](https://david-dm.org/piotrwitek/typesafe-actions/peer-status.svg)](https://david-dm.org/piotrwitek/typesafe-actions?type=peer) [![License](https://img.shields.io/npm/l/typesafe-actions.svg?style=flat)](https://david-dm.org/piotrwitek/typesafe-actions?type=peer) [![NPM Downloads](https://img.shields.io/npm/dm/typesafe-actions.svg)](https://www.npmjs.com/package/typesafe-actions) [![NPM Downloads](https://img.shields.io/npm/dt/typesafe-actions.svg)](https://www.npmjs.com/package/typesafe-actions) [![Bundlephobia Size](https://img.shields.io/bundlephobia/minzip/typesafe-actions.svg)](https://www.npmjs.com/package/typesafe-actions) -##### :star: _Found it useful? Want more updates?_ [**Show your support by giving a :star:**](https://github.com/piotrwitek/typesafe-actions/stargazers) +:star: _Found it useful? Want more updates?_ [**Show your support by giving a :star:**](https://github.com/piotrwitek/typesafe-actions/stargazers) + +
+ Become a Patron + +
+ + Buy Me a Coffee + -_Now updated to be compatible with **TypeScript v3.4.1**_ :tada: +:tada: _Now updated to be compatible with **TypeScript v3.4**_ :tada: -_Reference Todo-App implementation with `typesafe-actions` on [CodeSandbox](https://codesandbox.io/s/github/piotrwitek/typesafe-actions/tree/master/codesandbox)_ :computer: +
+ +--- -### Features +**Features:** * __minimalistic__ - according to `rollup-plugin-filesize` (Bundle size: 2.6 KB, Gzipped size: 808 B) check also on [bundlephobia](https://bundlephobia.com/result?p=typesafe-actions) * __secure and optimized__ - no external dependencies, bundled in 3 different formats (`cjs`, `esm` and `umd` for browser) * __focus on quality__ - complete test-suite for an entire API surface containing regular runtime tests and extra type-tests to guarantee **type soundness** -## Bug Report CodeSandbox -You can use this CodeSandbox to reproduce bug reports: https://codesandbox.io/s/github/piotrwitek/typesafe-actions/tree/master/codesandbox - -## Contributing Guide -We are open for contributions. If you're planning to contribute please make sure to read the contributing guide: [CONTRIBUTING.md](/CONTRIBUTING.md) - -## Sponsor -**Typesafe-Actions** is an independent open-source project created by people investing their free time for the benefit of our community. - -If you are using **Typesafe-Actions** please consider donating as this will guarantee the project will be updated and maintained in the long run. +**Codesandbox links:** -Issues can be funded by anyone and the money will be transparently distributed to the contributors handling a particular issue. - -[![Let's fund issues in this repository](https://issuehunt.io/static/embed/issuehunt-button-v1.svg)](https://issuehunt.io/repos/110746954) +- Reference Todo-App implementation using `typesafe-actions`: [Link](https://codesandbox.io/s/github/piotrwitek/typesafe-actions/tree/master/codesandbox) +- Starter to help reproduce bug reports: [Link](https://codesandbox.io/s/github/piotrwitek/typesafe-actions/tree/master/codesandbox) --- -# Table of Contents +## Table of Contents +- [Motivation](#motivation) - [Installation](#installation) - [Compatibility Notes](#compatibility-notes) - - [TypeScript support](#typescript-support) - - [Browser support](#browser-support) - - [Recommended polyfill for IE](#recommended-polyfill-for-ie) -- [Motivation](#motivation) +- [Contributing Guide](#contributing-guide) +- [Funding issues](#funding-issues) - [Tutorial](#tutorial) - [Constants](#constants) - [Actions](#actions) - [1. Basic actions](#1-basic-actions) - [2. FSA compliant actions](#2-fsa-compliant-actions) - [3. Custom actions (non-standard use-cases)](#3-custom-actions-non-standard-use-cases) + - [Reducers](#reducers) - [Action-Helpers](#action-helpers) - [Using action-creators instances instead of type-constants](#using-action-creators-instances-instead-of-type-constants) - [Using regular type-constants](#using-regular-type-constants) - - [Async-Flows](#async-flows) - - [With `redux-observable` epics](#with-redux-observable-epics) - [With `redux-saga` sagas](#with-redux-saga-sagas) - [API Docs](#api-docs) - [Type-helpers](#type-helpers) @@ -100,6 +95,20 @@ Issues can be funded by anyone and the money will be transparently distributed t --- +## Motivation + +When I started to combine Redux with TypeScript, I was trying to use [redux-actions](https://redux-actions.js.org/) to reduce the maintainability cost and boilerplate of **action-creators**. Unfortunately, the results were intimidating: incorrect type signatures and broken type-inference cascading throughout the entire code-base [(click here for a detailed comparison)](#redux-actions). + +Existing solutions in the wild have been either **too verbose because of redundant type annotations** (hard to maintain) or **used classes** (hinders readability and requires using the **new** keyword 😱) + +**So I created `typesafe-actions` to address all of the above pain points.** + +The core idea was to design an API that would mostly use the power of TypeScript **type-inference** 💪 to lift the "maintainability burden" of type annotations. In addition, I wanted to make it "look and feel" as close as possible to the idiomatic JavaScript ❤️ , so we don't have to write the redundant type annotations that which will create additional noise in your code. + +[⇧ back to top](#table-of-contents) + +--- + ## Installation ```bash @@ -116,20 +125,23 @@ yarn add typesafe-actions ## Compatibility Notes -### TypeScript support +**TypeScript support** + * `typesafe-actions@1.X.X` - minimal TS v2.7 * `typesafe-actions@2.X.X` - minimal TS v2.9 * `typesafe-actions@3.X.X` - minimal TS v3.2 * `typesafe-actions@4.X.X` - minimal TS v3.2 -### Browser support +**Browser support** + It's compatible with all modern browsers. For older browsers (e.g. IE <= 11) and mobile devices you need to provide these polyfills: - [Object.assign](https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Obiekty/Object/assign#Polyfill) - [Array.prototype.includes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes) -### Recommended polyfill for IE +**Recommended polyfill for IE** + To provide the best compatibility for your application please include a popular polyfill package in your bundled application, such as `@babel/polyfill`. You can check the `React` guidelines on how to do that, specifically: https://reactjs.org/docs/javascript-environment-requirements.html @@ -139,15 +151,22 @@ You can check the `React` guidelines on how to do that, specifically: https://re --- -## Motivation +## Contributing Guide -When I started to combine Redux with TypeScript, I was trying to use [redux-actions](https://redux-actions.js.org/) to reduce the maintainability cost and boilerplate of **action-creators**. Unfortunately, the results were intimidating: incorrect type signatures and broken type-inference cascading throughout the entire code-base [(click here for a detailed comparison)](#redux-actions). +We are open for contributions. If you're planning to contribute please make sure to read the contributing guide: [CONTRIBUTING.md](/CONTRIBUTING.md) -Existing solutions in the wild have been either **too verbose because of redundant type annotations** (hard to maintain) or **used classes** (hinders readability and requires using the **new** keyword 😱) +[⇧ back to top](#table-of-contents) -**So I created `typesafe-actions` to address all of the above pain points.** +--- -The core idea was to design an API that would mostly use the power of TypeScript **type-inference** 💪 to lift the "maintainability burden" of type annotations. In addition, I wanted to make it "look and feel" as close as possible to the idiomatic JavaScript ❤️ , so we don't have to write the redundant type annotations that which will create additional noise in your code. +## Funding issues +**Typesafe-Actions** is an independent open-source project created by people investing their free time for the benefit of our community. + +If you are using **Typesafe-Actions** please consider donating as this will guarantee the project will be updated and maintained in the long run. + +Specific issues can be funded by anyone interested in it. Reward money will be transparently distributed to the contributor handling a particular issue on the issuehunt platform. + +[![Let's fund issues in this repository](https://issuehunt.io/static/embed/issuehunt-button-v1.svg)](https://issuehunt.io/repos/110746954) [⇧ back to top](#table-of-contents) @@ -163,7 +182,9 @@ To showcase the flexibility and the power of the **type-safety** provided by thi ### Constants -**String constants limitation in TypeScript** - when using **string constants** as action `type` property, please make sure to use **simple string literal assignment with const**. This limitation is coming from the type-system, because all the **dynamic string operations** (e.g. string concatenation, template strings and also object used as a map) will widen the literal type to its super-type, `string`. As a result this will break contextual typing for **action** object in reducer cases. +**RECOMMENDATION:** When using `typesafe-actions` in your project you won't need to export and reuse **string constants**. It's because **action-creators** created by this library have **action type** property on each action-creator instance that you easily access and use to match actions in reducers, epics, sagas, and basically any other library. This will simplify your codebase and remove some boilerplate code associated with the usage of **string constants**. Check our `/codesandbox` application to see how such codebase look like in a real application. + +**Limitations of TypeScript when working with string constants** - when using **string constants** as action `type` property, please make sure to use **simple string literal assignment with const**. This limitation is coming from the type-system, because all the **dynamic string operations** (e.g. string concatenation, template strings and also object used as a map) will widen the literal type to its super-type, `string`. As a result this will break contextual typing for **action** object in reducer cases. ```ts // Example file: './constants.ts' @@ -247,6 +268,44 @@ const add = createCustomAction('todos/ADD', type => { [⇧ back to top](#table-of-contents) +### Reducers + +Here we'll start by generating a **tagged union type** of actions (`TodosAction`). It's very easy to do using `ActionType` **type-helper** provided by `typesafe-actions`. +```ts +import { ActionType, getType } from 'typesafe-actions'; + +import * as todos from './actions'; +export type TodosAction = ActionType; +``` +Now we define a regular reducer function by annotating `state` and `action` arguments with their respective types (`TodosAction` for action type) +```ts +export default (state: Todo[] = [], action: TodosAction) => { +``` +Now in switch cases using the `type` property of action (which is a **tagged union type**), we can narrow the type of `TodosAction` in the corresponding code block to a specific action type that we expect. +```ts + switch (action.type) { + case getType(todos.add): + // below action type is narrowed to: { type: "todos/ADD"; payload: Todo; } + return [...state, action.payload]; + ... +``` +> **TIP**: we are using `getType` action-helper with the respective action-creator as an argument for the corresponding switch case. This will help to reduce boilerplate and completely remove the need to use **type-constants**. But if your team prefer to use regular type-constants, you can still use them. + +I recommend to create a `RootAction` in the central point of your redux store - it will model a complete representation of all possible action types in your application. You can even merge it with third-party action types as shown below to make your model even more complete. +```ts +// types.d.ts +// example of including `react-router` actions in `RootAction` +import { RouterAction, LocationChangeAction } from 'react-router-redux'; +type ReactRouterAction = RouterAction | LocationChangeAction; +import { TodosAction } from '../features/todos'; + +export type RootAction = + | ReactRouterAction + | TodosAction; +``` + +[⇧ back to top](#table-of-contents) + ### Action-Helpers Now I wan't to show you **action-helpers** and explain why they are useful. We're going to implement a side-effect responsible for showing a success toast when user adds a new todo. @@ -317,44 +376,6 @@ if (isOfType(types.ADD, action)) { [⇧ back to top](#table-of-contents) -### Reducers - -Here we'll start by generating a **tagged union type** of actions (`TodosAction`). It's very easy to do using `ActionType` **type-helper** provided by `typesafe-actions`. -```ts -import { ActionType, getType } from 'typesafe-actions'; - -import * as todos from './actions'; -export type TodosAction = ActionType; -``` -Now we define a regular reducer function by annotating `state` and `action` arguments with their respective types (`TodosAction` for action type) -```ts -export default (state: Todo[] = [], action: TodosAction) => { -``` -Now in switch cases using the `type` property of action (which is a **tagged union type**), we can narrow the type of `TodosAction` in the corresponding code block to a specific action type that we expect. -```ts - switch (action.type) { - case getType(todos.add): - // below action type is narrowed to: { type: "todos/ADD"; payload: Todo; } - return [...state, action.payload]; - ... -``` -> **TIP**: we are using `getType` action-helper with the respective action-creator as an argument for the corresponding switch case. This will help to reduce boilerplate and completely remove the need to use **type-constants**. But if your team prefer to use regular type-constants, you can still use them. - -I recommend to create a `RootAction` in the central point of your redux store - it will model a complete representation of all possible action types in your application. You can even merge it with third-party action types as shown below to make your model even more complete. -```ts -// types.d.ts -// example of including `react-router` actions in `RootAction` -import { RouterAction, LocationChangeAction } from 'react-router-redux'; -type ReactRouterAction = RouterAction | LocationChangeAction; -import { TodosAction } from '../features/todos'; - -export type RootAction = - | ReactRouterAction - | TodosAction; -``` - -[⇧ back to top](#table-of-contents) - ### Async-Flows #### With `redux-observable` epics @@ -452,8 +473,6 @@ export type RootAction = ActionType; [⇧ back to top](#table-of-contents) ---- - #### `StateType` _Powerful type helper that will infer state object type from **reducer function** and **nested/combined reducers**._ @@ -568,8 +587,6 @@ dispatch(getTodo('some_id', 'some_meta')); [⇧ back to top](#table-of-contents) ---- - #### `createStandardAction` _Create an enhanced action-creator compatible with [Flux Standard Action](https://github.com/redux-utilities/flux-standard-action) to reduce boilerplate and enforce convention._ @@ -626,8 +643,6 @@ dispatch(notify('Hello!', { username: 'Piotr', type: 'announcement' })); [⇧ back to top](#table-of-contents) ---- - #### `createCustomAction` _Create an enhanced action-creator with unlimited number of arguments and custom properties on action object._ @@ -656,8 +671,6 @@ dispatch(add(1)); [⇧ back to top](#table-of-contents) ---- - #### `createAsyncAction` _Create an object containing three enhanced action-creators to simplify handling of async flows (e.g. network request - request/success/failure)._ @@ -729,8 +742,6 @@ if (action.type === getType(add)) { [⇧ back to top](#table-of-contents) ---- - #### `isActionOf` _Check if action is an instance of given enhanced action-creator(s) @@ -786,8 +797,6 @@ if(isActionOf([addTodo, removeTodo], action)) { [⇧ back to top](#table-of-contents) ---- - #### `isOfType` _Check if action type property is equal given type-constant(s) @@ -840,6 +849,8 @@ if(isOfType([ADD, REMOVE], action)) { [⇧ back to top](#table-of-contents) +--- + ## Migration Guides ### `v3.x.x` to `v4.x.x` From 34424d9b02d74a88937c4e08bb44fe239e792655 Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sat, 20 Apr 2019 22:16:28 +0200 Subject: [PATCH 06/22] Updated bundle size info --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 226733b..614e6df 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ _This library is part of the [React & Redux TypeScript Guide](https://github.com **Features:** -* __minimalistic__ - according to `rollup-plugin-filesize` (Bundle size: 2.6 KB, Gzipped size: 808 B) check also on [bundlephobia](https://bundlephobia.com/result?p=typesafe-actions) +* __minimalistic__ - according to `rollup-plugin-filesize` (Bundle size: 3.48 KB, Gzipped size: 1.03 KB) check also on [bundlephobia](https://bundlephobia.com/result?p=typesafe-actions) * __secure and optimized__ - no external dependencies, bundled in 3 different formats (`cjs`, `esm` and `umd` for browser) * __focus on quality__ - complete test-suite for an entire API surface containing regular runtime tests and extra type-tests to guarantee **type soundness** From c0792d266c735e3d4291177e4e18860cc9e9e178 Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sat, 20 Apr 2019 22:29:35 +0200 Subject: [PATCH 07/22] Updated scripts --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index d2846fd..4fd2b70 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ } }, "scripts": { - "doctoc": "doctoc --maxlevel 4 README.md", + "doctoc": "doctoc --maxlevel=4 README.md", "reinstall": "rm -rf node_modules/ dist/ && npm install", "prettier": "prettier --list-different 'src/**/*.ts' || (echo '\nPlease fix code formatting by running:\nnpm run prettier:fix\n'; exit 1)", "prettier:fix": "prettier --write 'src/**/*.ts'", @@ -32,8 +32,8 @@ "prebuild": "rm -rf dist/ && tsc -p ./tsconfig.declaration.json", "build": "tsc -p . && rollup -c", "postbuild": "rm -rf out", - "prepublishOnly": "npm run reinstall && npm run ci-check && npm run build", - "ci-check": "npm run prettier && npm run lint && npm run tsc && npm run test" + "ci-check": "npm run prettier && npm run lint && npm run tsc && npm run test && npm run doctoc", + "prepublishOnly": "npm run reinstall && npm run ci-check && npm run build" }, "dependencies": {}, "devDependencies": { From 74005e89c83ab51de9993fd444e576c226e15696 Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sat, 20 Apr 2019 22:43:02 +0200 Subject: [PATCH 08/22] Fixed readme issue --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 614e6df..ad7d20a 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,8 @@ _This library is part of the [React & Redux TypeScript Guide](https://github.com - [Action-Helpers](#action-helpers) - [Using action-creators instances instead of type-constants](#using-action-creators-instances-instead-of-type-constants) - [Using regular type-constants](#using-regular-type-constants) + - [Async-Flows](#async-flows) + - [With `redux-observable` epics](#with-redux-observable-epics) - [With `redux-saga` sagas](#with-redux-saga-sagas) - [API Docs](#api-docs) - [Type-helpers](#type-helpers) @@ -362,6 +364,7 @@ const addTodoToast: Epic = (action$ ``` > **TIP:** action-helpers are working in all types of conditional statements. + ```ts import { isActionOf, isOfType } from 'typesafe-actions'; @@ -965,6 +968,7 @@ const notify1 = createAction('NOTIFY'); // error: boolean | undefined; // } ``` + > with `redux-actions` you can notice the redundant nullable `payload` property and literal type of `type` property is lost (discrimination of union type would not be possible) ##### typesafe-actions @@ -975,6 +979,7 @@ const notify1 = () => action('NOTIFY'); // type: "NOTIFY"; // } ``` + > with `typesafe-actions` there is no excess nullable types and no excess properties and the action "type" property is containing a literal type **- with payload** @@ -993,6 +998,7 @@ const notify2 = createAction('NOTIFY', // error: boolean | undefined; // } ``` + > first the optional `message` parameter is lost, `username` semantic argument name is changed to some generic `t1`, `type` property is widened once again and `payload` is nullable because of broken inference ##### typesafe-actions @@ -1007,6 +1013,7 @@ const notify2 = (username: string, message?: string) => action( // payload: { message: string; }; // } ``` + > `typesafe-actions` infer very precise resulting type, notice working optional parameters and semantic argument names are preserved which is really important for great intellisense experience **- with payload and meta** @@ -1029,6 +1036,7 @@ const notify3 = createAction('NOTIFY', // error: boolean | undefined; // } ``` + > this time we got a completely broken arguments arity with no type-safety because of `any` type with all the earlier issues ##### typesafe-actions @@ -1048,6 +1056,7 @@ const notify3 = (username: string, message?: string) => action( // meta: { username: string; message: string | undefined; }; // } ``` + > `typesafe-actions` never fail to `any` type, even with this advanced scenario all types are correct and provide complete type-safety and excellent developer experience [⇧ back to top](#table-of-contents) From 4ad21b948b99f7752b16eb4f5d7438f8885793d2 Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sun, 21 Apr 2019 00:46:58 +0200 Subject: [PATCH 09/22] Updated codesandbox --- codesandbox/.gitignore | 23 + codesandbox/.prettierrc | 6 + codesandbox/package-lock.json | 12796 ++++++++++------ codesandbox/package.json | 30 +- codesandbox/src/env.ts | 1 - .../features/todos/components/TodoList.tsx | 4 +- codesandbox/src/index.js | 8 - codesandbox/src/index.tsx | 8 +- codesandbox/src/typesafe-actions/action.d.ts | 37 + .../create-action-deprecated.d.ts | 12 + .../src/typesafe-actions/create-action.d.ts | 17 + .../typesafe-actions/create-async-action.d.ts | 10 + .../create-custom-action.d.ts | 4 + .../src/typesafe-actions/create-reducer.d.ts | 70 + .../create-standard-action.d.ts | 6 + .../src/typesafe-actions/get-type.d.ts | 2 + codesandbox/src/typesafe-actions/index.d.ts | 11 + codesandbox/src/typesafe-actions/index.esm.js | 223 + codesandbox/src/typesafe-actions/index.js | 236 + codesandbox/src/typesafe-actions/index.umd.js | 2 + .../src/typesafe-actions/index.umd.js.map | 1 + .../src/typesafe-actions/is-action-of.d.ts | 14 + .../src/typesafe-actions/is-of-type.d.ts | 10 + codesandbox/src/typesafe-actions/package.json | 12 + .../src/typesafe-actions/type-helpers.d.ts | 46 + .../typesafe-actions/utils/validation.d.ts | 12 + codesandbox/tsconfig.json | 42 +- codesandbox/tslint.json | 63 +- package-lock.json | 6 +- package.json | 4 +- tsconfig.declaration.json | 1 - 31 files changed, 8851 insertions(+), 4866 deletions(-) create mode 100644 codesandbox/.gitignore create mode 100644 codesandbox/.prettierrc delete mode 100644 codesandbox/src/env.ts delete mode 100644 codesandbox/src/index.js create mode 100644 codesandbox/src/typesafe-actions/action.d.ts create mode 100644 codesandbox/src/typesafe-actions/create-action-deprecated.d.ts create mode 100644 codesandbox/src/typesafe-actions/create-action.d.ts create mode 100644 codesandbox/src/typesafe-actions/create-async-action.d.ts create mode 100644 codesandbox/src/typesafe-actions/create-custom-action.d.ts create mode 100644 codesandbox/src/typesafe-actions/create-reducer.d.ts create mode 100644 codesandbox/src/typesafe-actions/create-standard-action.d.ts create mode 100644 codesandbox/src/typesafe-actions/get-type.d.ts create mode 100644 codesandbox/src/typesafe-actions/index.d.ts create mode 100644 codesandbox/src/typesafe-actions/index.esm.js create mode 100644 codesandbox/src/typesafe-actions/index.js create mode 100644 codesandbox/src/typesafe-actions/index.umd.js create mode 100644 codesandbox/src/typesafe-actions/index.umd.js.map create mode 100644 codesandbox/src/typesafe-actions/is-action-of.d.ts create mode 100644 codesandbox/src/typesafe-actions/is-of-type.d.ts create mode 100644 codesandbox/src/typesafe-actions/package.json create mode 100644 codesandbox/src/typesafe-actions/type-helpers.d.ts create mode 100644 codesandbox/src/typesafe-actions/utils/validation.d.ts diff --git a/codesandbox/.gitignore b/codesandbox/.gitignore new file mode 100644 index 0000000..4d29575 --- /dev/null +++ b/codesandbox/.gitignore @@ -0,0 +1,23 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/codesandbox/.prettierrc b/codesandbox/.prettierrc new file mode 100644 index 0000000..686ffa2 --- /dev/null +++ b/codesandbox/.prettierrc @@ -0,0 +1,6 @@ +{ + "printWidth": 80, + "semi": true, + "singleQuote": true, + "trailingComma": "es5" +} diff --git a/codesandbox/package-lock.json b/codesandbox/package-lock.json index 7107a02..381d942 100644 --- a/codesandbox/package-lock.json +++ b/codesandbox/package-lock.json @@ -12,6 +12,123 @@ "@babel/highlight": "^7.0.0" } }, + "@babel/core": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.3.tgz", + "integrity": "sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.0", + "@babel/helpers": "^7.4.3", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.11", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "json5": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", + "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "resolve": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "@babel/generator": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", + "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "requires": { + "@babel/types": "^7.4.0", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + } + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==" + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", + "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "requires": { + "@babel/types": "^7.4.0" + } + }, + "@babel/helpers": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.3.tgz", + "integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==", + "requires": { + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0" + } + }, "@babel/highlight": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", @@ -22,6 +139,19 @@ "js-tokens": "^4.0.0" } }, + "@babel/parser": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", + "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==" + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", + "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, "@babel/polyfill": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/polyfill/-/polyfill-7.4.3.tgz", @@ -44,227 +174,160 @@ } }, "@babel/runtime": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.3.1.tgz", - "integrity": "sha512-7jGW8ppV0ant637pIqAcFfQDDH1orEPGJb8aXfUozuCU3QqX7rX4DA8iwrbPrR1hcH0FTTHz47yQnk+bl5xHQA==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.3.tgz", + "integrity": "sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA==", "requires": { - "regenerator-runtime": "^0.12.0" + "regenerator-runtime": "^0.13.2" }, "dependencies": { "regenerator-runtime": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", - "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", + "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" } } }, - "@types/history": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.2.tgz", - "integrity": "sha512-ui3WwXmjTaY73fOQ3/m3nnajU/Orhi6cEu5rzX+BrAAJxa3eITXZ5ch9suPqtM03OWhAHhPSyBGCN4UKoxO20Q==" - }, - "@types/jest": { - "version": "23.3.10", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-23.3.10.tgz", - "integrity": "sha512-DC8xTuW/6TYgvEg3HEXS7cu9OijFqprVDXXiOcdOKZCU/5PJNLZU37VVvmZHdtMiGOa8wAA/We+JzbdxFzQTRQ==" - }, - "@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" - }, - "@types/prop-types": { - "version": "15.5.9", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.5.9.tgz", - "integrity": "sha512-Nha5b+jmBI271jdTMwrHiNXM+DvThjHOfyZtMX9kj/c/LUj2xiLHsG/1L3tJ8DjAoQN48cHwUwtqBotjyXaSdQ==" - }, - "@types/react": { - "version": "16.8.4", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.4.tgz", - "integrity": "sha512-Mpz1NNMJvrjf0GcDqiK8+YeOydXfD8Mgag3UtqQ5lXYTsMnOiHcKmO48LiSWMb1rSHB9MV/jlgyNzeAVxWMZRQ==", - "requires": { - "@types/prop-types": "*", - "csstype": "^2.2.0" - } - }, - "@types/react-dom": { - "version": "16.8.2", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.8.2.tgz", - "integrity": "sha512-MX7n1wq3G/De15RGAAqnmidzhr2Y9O/ClxPxyqaNg96pGyeXUYPSvujgzEVpLo9oIP4Wn1UETl+rxTN02KEpBw==", - "requires": { - "@types/react": "*" - } - }, - "@types/react-redux": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-6.0.11.tgz", - "integrity": "sha512-I3POoeGGwNqZjbK7TfnPJS2C51TFvT0atQPz4M+xpVTrLMjsX37AAfcTF3XUOTnmxHsryEjwJN9r/ScGwSXdtg==", - "requires": { - "@types/react": "*", - "redux": "^4.0.0" - } - }, - "@types/react-router": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-4.4.1.tgz", - "integrity": "sha512-CtQfdcXyMye3vflnQQ2sHU832iDJRoAr4P+7f964KlLYupXU1I5crP1+d/WnCMo6mmtjBjqQvxrtbAbodqerMA==", - "requires": { - "@types/history": "*", - "@types/react": "*" - } - }, - "@types/react-router-dom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-4.3.1.tgz", - "integrity": "sha512-GbztJAScOmQ/7RsQfO4cd55RuH1W4g6V1gDW3j4riLlt+8yxYLqqsiMzmyuXBLzdFmDtX/uU2Bpcm0cmudv44A==", - "requires": { - "@types/history": "*", - "@types/react": "*", - "@types/react-router": "*" - } - }, - "@types/react-router-redux": { - "version": "5.0.18", - "resolved": "https://registry.npmjs.org/@types/react-router-redux/-/react-router-redux-5.0.18.tgz", - "integrity": "sha512-5SI69Virpmo+5HXWXKIzSt5hsnV7TTidL3Ddmbi+PH1CIdi40wthJwjFoqiE+gRQANur5WhjEtfyPorJ4zymHA==", - "requires": { - "@types/history": "*", - "@types/react": "*", - "@types/react-router": "*", - "redux": ">= 3.7.2" - } - }, - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" - }, - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "@babel/template": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", + "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.0", + "@babel/types": "^7.4.0" } }, - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" - }, - "acorn-dynamic-import": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", - "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", - "requires": { - "acorn": "^4.0.3" + "@babel/traverse": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz", + "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/types": "^7.4.0", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" }, "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "globals": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", + "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==" + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" } } }, - "acorn-globals": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", - "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", + "@babel/types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", + "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" }, "dependencies": { - "acorn": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", - "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==" + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" } } }, - "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" - }, - "address": { + "@cnakazawa/watch": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", - "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==" - }, - "ajv": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", - "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", + "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", - "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=" - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + }, + "dependencies": { + "exec-sh": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz", + "integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==" + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } } }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" - }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "@jest/console": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", + "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==", "requires": { - "string-width": "^2.0.0" + "@jest/source-map": "^24.3.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + } } }, - "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==" - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "@jest/core": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.7.1.tgz", + "integrity": "sha512-ivlZ8HX/FOASfHcb5DJpSPFps8ydfUYzLZfgFFqjkLijYysnIEOieg72YRhO4ZUB32xu40hsSMmaw+IGYeKONA==", "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.7.1", + "@jest/test-result": "^24.7.1", + "@jest/transform": "^24.7.1", + "@jest/types": "^24.7.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.7.0", + "jest-config": "^24.7.1", + "jest-haste-map": "^24.7.1", + "jest-message-util": "^24.7.1", + "jest-regex-util": "^24.3.0", + "jest-resolve-dependencies": "^24.7.1", + "jest-runner": "^24.7.1", + "jest-runtime": "^24.7.1", + "jest-snapshot": "^24.7.1", + "jest-util": "^24.7.1", + "jest-validate": "^24.7.0", + "jest-watcher": "^24.7.1", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "strip-ansi": "^5.0.0" }, "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -512,1055 +575,1237 @@ "snapdragon": "^0.8.1", "to-regex": "^3.0.2" } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } } } }, - "append-transform": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", - "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", - "requires": { - "default-require-extensions": "^1.0.0" - } - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "@jest/environment": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.7.1.tgz", + "integrity": "sha512-wmcTTYc4/KqA+U5h1zQd5FXXynfa7VGP2NfF+c6QeGJ7c+2nStgh65RQWNX62SC716dTtqheTRrZl0j+54oGHw==", "requires": { - "sprintf-js": "~1.0.2" + "@jest/fake-timers": "^24.7.1", + "@jest/transform": "^24.7.1", + "@jest/types": "^24.7.0", + "jest-mock": "^24.7.0" } }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "@jest/fake-timers": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.7.1.tgz", + "integrity": "sha512-4vSQJDKfR2jScOe12L9282uiwuwQv9Lk7mgrCSZHA9evB9efB/qx8i0KJxsAKtp8fgJYBJdYY7ZU6u3F4/pyjA==", "requires": { - "arr-flatten": "^1.0.1" + "@jest/types": "^24.7.0", + "jest-message-util": "^24.7.1", + "jest-mock": "^24.7.0" } }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" - }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" - }, - "array-flatten": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", - "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=" - }, - "array-includes": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", - "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", + "@jest/reporters": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.7.1.tgz", + "integrity": "sha512-bO+WYNwHLNhrjB9EbPL4kX/mCCG4ZhhfWmO3m4FSpbgr7N83MFejayz30kKjgqr7smLyeaRFCBQMbXpUgnhAJw==", "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" + "@jest/environment": "^24.7.1", + "@jest/test-result": "^24.7.1", + "@jest/transform": "^24.7.1", + "@jest/types": "^24.7.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-api": "^2.1.1", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-source-maps": "^3.0.1", + "jest-haste-map": "^24.7.1", + "jest-resolve": "^24.7.1", + "jest-runtime": "^24.7.1", + "jest-util": "^24.7.1", + "jest-worker": "^24.6.0", + "node-notifier": "^5.2.1", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "requires": { + "strip-bom": "^3.0.0" + } + }, + "handlebars": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + }, + "istanbul-api": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.5.tgz", + "integrity": "sha512-meYk1BwDp59Pfse1TvPrkKYgVqAufbdBLEVoqvu/hLLKSaQ054ZTksbNepyc223tMnWdm6AdK2URIJJRqdP87g==", + "requires": { + "async": "^2.6.1", + "compare-versions": "^3.2.1", + "fileset": "^2.0.3", + "istanbul-lib-coverage": "^2.0.4", + "istanbul-lib-hook": "^2.0.6", + "istanbul-lib-instrument": "^3.2.0", + "istanbul-lib-report": "^2.0.7", + "istanbul-lib-source-maps": "^3.0.5", + "istanbul-reports": "^2.2.3", + "js-yaml": "^3.13.0", + "make-dir": "^2.1.0", + "minimatch": "^3.0.4", + "once": "^1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-LXTBICkMARVgo579kWDm8SqfB6nvSDKNqIOBEjmJRnL04JvoMHCYGWaMddQnseJYtkEuEvO/sIcOxPLk9gERug==" + }, + "istanbul-lib-hook": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.6.tgz", + "integrity": "sha512-829DKONApZ7UCiPXcOYWSgkFXa4+vNYoNOt3F+4uDJLKL1OotAoVwvThoEj1i8jmOj7odbYcR3rnaHu+QroaXg==", + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.2.0.tgz", + "integrity": "sha512-06IM3xShbNW4NgZv5AP4QH0oHqf1/ivFo8eFys0ZjPXHGldHJQWb3riYOKXqmOqfxXBfxu4B+g/iuhOPZH0RJg==", + "requires": { + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "istanbul-lib-coverage": "^2.0.4", + "semver": "^6.0.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.7.tgz", + "integrity": "sha512-wLH6beJBFbRBLiTlMOBxmb85cnVM1Vyl36N48e4e/aTKSM3WbOx7zbVIH1SQ537fhhsPbX0/C5JB4qsmyRXXyA==", + "requires": { + "istanbul-lib-coverage": "^2.0.4", + "make-dir": "^2.1.0", + "supports-color": "^6.0.0" + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.5.tgz", + "integrity": "sha512-eDhZ7r6r1d1zQPVZehLc3D0K14vRba/eBYkz3rw16DLOrrTzve9RmnkcwrrkWVgO1FL3EK5knujVe5S8QHE9xw==", + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.4", + "make-dir": "^2.1.0", + "rimraf": "^2.6.2", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.3.tgz", + "integrity": "sha512-T6EbPuc8Cb620LWAYyZ4D8SSn06dY9i1+IgUX2lTH8gbwflMc9Obd33zHTyNX653ybjpamAHS9toKS3E6cGhTw==", + "requires": { + "handlebars": "^4.1.0" + } + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==" + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=" - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "@jest/source-map": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.3.0.tgz", + "integrity": "sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag==", "requires": { - "array-uniq": "^1.0.1" + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "@jest/test-result": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.7.1.tgz", + "integrity": "sha512-3U7wITxstdEc2HMfBX7Yx3JZgiNBubwDqQMh+BXmZXHa3G13YWF3p6cK+5g0hGkN3iufg/vGPl3hLxQXD74Npg==", "requires": { - "safer-buffer": "~2.1.0" + "@jest/console": "^24.7.1", + "@jest/types": "^24.7.0", + "@types/istanbul-lib-coverage": "^2.0.0" } }, - "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "@jest/test-sequencer": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.7.1.tgz", + "integrity": "sha512-84HQkCpVZI/G1zq53gHJvSmhUer4aMYp9tTaffW28Ih5OxfCg8hGr3nTSbL1OhVDRrFZwvF+/R9gY6JRkDUpUA==", "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "@jest/test-result": "^24.7.1", + "jest-haste-map": "^24.7.1", + "jest-runner": "^24.7.1", + "jest-runtime": "^24.7.1" } }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "@jest/transform": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.7.1.tgz", + "integrity": "sha512-EsOUqP9ULuJ66IkZQhI5LufCHlTbi7hrcllRMUEV/tOgqBVQi93+9qEvkX0n8mYpVXQ8VjwmICeRgg58mrtIEw==", "requires": { - "util": "0.10.3" + "@babel/core": "^7.1.0", + "@jest/types": "^24.7.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.7.1", + "jest-regex-util": "^24.3.0", + "jest-util": "^24.7.1", + "micromatch": "^3.1.10", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" }, "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "babel-plugin-istanbul": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.2.tgz", + "integrity": "sha512-U3ZVajC+Z69Gim7ZzmD4Wcsq76i/1hqDamBfowc1tWzWjybRy70iWfngP2ME+1CrgcgZ/+muIbPY/Yi0dxdIkQ==", "requires": { - "inherits": "2.0.1" + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.2.0", + "test-exclude": "^5.2.2" } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" - }, - "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", - "requires": { - "lodash": "^4.17.10" - } - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, - "autoprefixer": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.6.tgz", - "integrity": "sha512-C9yv/UF3X+eJTi/zvfxuyfxmLibYrntpF3qoJYrMeQwgUJOZrZvpJiMG2FMQ3qnhWtF/be4pYONBBw95ZGe3vA==", - "requires": { - "browserslist": "^2.5.1", - "caniuse-lite": "^1.0.30000748", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^6.0.13", - "postcss-value-parser": "^3.2.3" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, - "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=", - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "requires": { - "ansi-regex": "^2.0.0" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "requires": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "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": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-LXTBICkMARVgo579kWDm8SqfB6nvSDKNqIOBEjmJRnL04JvoMHCYGWaMddQnseJYtkEuEvO/sIcOxPLk9gERug==" + }, + "istanbul-lib-instrument": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.2.0.tgz", + "integrity": "sha512-06IM3xShbNW4NgZv5AP4QH0oHqf1/ivFo8eFys0ZjPXHGldHJQWb3riYOKXqmOqfxXBfxu4B+g/iuhOPZH0RJg==", + "requires": { + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "istanbul-lib-coverage": "^2.0.4", + "semver": "^6.0.0" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==" + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "test-exclude": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.2.tgz", + "integrity": "sha512-N2pvaLpT8guUpb5Fe1GJlmvmzH3x+DAKmmyEQmFP792QcLYoGE1syxztSvPD1V8yPe6VrcCt6YGQVjSRjCASsA==", + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + } + }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + } } }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "@jest/types": { + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.7.0.tgz", + "integrity": "sha512-ipJUa2rFWiKoBqMKP63Myb6h9+iT3FHRTF2M8OR6irxWzItisa8i4dcSg14IbvmXUnBlHBlUQPYUHWyX3UPpYA==", "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/yargs": "^12.0.9" } }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "@types/babel__core": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.1.tgz", + "integrity": "sha512-+hjBtgcFPYyCTo0A15+nxrCVJL7aC6Acg87TXd5OW3QhHswdrOLoles+ldL2Uk8q++7yIfl4tURtztccdeeyOw==", "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "babel-helper-builder-react-jsx": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", - "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", + "@types/babel__generator": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz", + "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "esutils": "^2.0.2" + "@babel/types": "^7.0.0" } }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "@types/babel__traverse": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.6.tgz", + "integrity": "sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw==", "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "@babel/types": "^7.3.0" } }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "@types/history": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.2.tgz", + "integrity": "sha512-ui3WwXmjTaY73fOQ3/m3nnajU/Orhi6cEu5rzX+BrAAJxa3eITXZ5ch9suPqtM03OWhAHhPSyBGCN4UKoxO20Q==" + }, + "@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + }, + "dependencies": { + "hoist-non-react-statics": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz", + "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==", + "requires": { + "react-is": "^16.7.0" + } + } } }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "@types/istanbul-lib-coverage": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.0.tgz", + "integrity": "sha512-eAtOAFZefEnfJiRFQBGw1eYqa5GTLCZ1y86N0XSI/D6EB+E8z6VPV/UL7Gi5UEclFqoQk+6NRqEDsfmDLXn8sg==" + }, + "@types/jest": { + "version": "24.0.11", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.11.tgz", + "integrity": "sha512-2kLuPC5FDnWIDvaJBzsGTBQaBbnDweznicvK7UGYzlIJP4RJR2a4A/ByLUXEyEgag6jz8eHdlWExGDtH3EYUXQ==", "requires": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "@types/jest-diff": "*" } }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "@types/jest-diff": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz", + "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==" + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=" + }, + "@types/prop-types": { + "version": "15.7.1", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.1.tgz", + "integrity": "sha512-CFzn9idOEpHrgdw8JsoTkaDDyRWk1jrzIV8djzcgpq0y9tG4B4lFT+Nxh52DVpDXV+n4+NPNv7M1Dj5uMp6XFg==" + }, + "@types/react": { + "version": "16.8.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.14.tgz", + "integrity": "sha512-26tFVJ1omGmzIdFTFmnC5zhz1GTaqCjxgUxV4KzWvsybF42P7/j4RBn6UeO3KbHPXqKWZszMXMoI65xIWm954A==", "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "@types/prop-types": "*", + "csstype": "^2.2.0" } }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "@types/react-dom": { + "version": "16.8.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.8.4.tgz", + "integrity": "sha512-eIRpEW73DCzPIMaNBDP5pPIpK1KXyZwNgfxiVagb5iGiz6da+9A5hslSX6GAQKdO7SayVCS/Fr2kjqprgAvkfA==", "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "@types/react": "*" } }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "@types/react-redux": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.0.8.tgz", + "integrity": "sha512-vIBC15E84ehN6RzdGwRVa41whp9e4CkfPm+WfD0r6y6vqBf4tQPKZeKEBfLLM8k79uSwQC7rh3rH/MFaN1IESQ==", "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "redux": "^4.0.0" } }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "@types/react-router": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-4.4.1.tgz", + "integrity": "sha512-CtQfdcXyMye3vflnQQ2sHU832iDJRoAr4P+7f964KlLYupXU1I5crP1+d/WnCMo6mmtjBjqQvxrtbAbodqerMA==", "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "@types/history": "*", + "@types/react": "*" } }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "@types/react-router-dom": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-4.3.2.tgz", + "integrity": "sha512-biesHodFxPgDxku2m08XwPeAfUYBcxAnrQG7pwFikuA3L2e3u2OKAb+Sb16bJuU3L5CTHd+Ivap+ke4mmGsHqQ==", "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "@types/history": "*", + "@types/react": "*", + "@types/react-router": "*" } }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "@types/react-router-redux": { + "version": "5.0.18", + "resolved": "https://registry.npmjs.org/@types/react-router-redux/-/react-router-redux-5.0.18.tgz", + "integrity": "sha512-5SI69Virpmo+5HXWXKIzSt5hsnV7TTidL3Ddmbi+PH1CIdi40wthJwjFoqiE+gRQANur5WhjEtfyPorJ4zymHA==", "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "@types/history": "*", + "@types/react": "*", + "@types/react-router": "*", + "redux": ">= 3.7.2" } }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==" + }, + "@types/yargs": { + "version": "12.0.12", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz", + "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==" + }, + "@typescript-eslint/eslint-plugin": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.6.0.tgz", + "integrity": "sha512-U224c29E2lo861TQZs6GSmyC0OYeRNg6bE9UVIiFBxN2MlA0nq2dCrgIVyyRbC05UOcrgf2Wk/CF2gGOPQKUSQ==", "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "@typescript-eslint/parser": "1.6.0", + "@typescript-eslint/typescript-estree": "1.6.0", + "requireindex": "^1.2.0", + "tsutils": "^3.7.0" + }, + "dependencies": { + "tsutils": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.10.0.tgz", + "integrity": "sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q==", + "requires": { + "tslib": "^1.8.1" + } + } } }, - "babel-jest": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz", - "integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==", + "@typescript-eslint/parser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-1.6.0.tgz", + "integrity": "sha512-VB9xmSbfafI+/kI4gUK3PfrkGmrJQfh0N4EScT1gZXSZyUxpsBirPL99EWZg9MmPG0pzq/gMtgkk7/rAHj4aQw==", "requires": { - "babel-plugin-istanbul": "^4.1.6", - "babel-preset-jest": "^23.2.0" + "@typescript-eslint/typescript-estree": "1.6.0", + "eslint-scope": "^4.0.0", + "eslint-visitor-keys": "^1.0.0" } }, - "babel-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", - "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", + "@typescript-eslint/typescript-estree": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-1.6.0.tgz", + "integrity": "sha512-A4CanUwfaG4oXobD5y7EXbsOHjCwn8tj1RDd820etpPAjH+Icjc2K9e/DQM1Hac5zH2BSy+u6bjvvF2wwREvYA==", "requires": { - "find-cache-dir": "^1.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1" + "lodash.unescape": "4.0.1", + "semver": "5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + } } }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "babel-runtime": "^6.22.0" + "mime-types": "~2.1.18", + "negotiator": "0.6.1" } }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==" + }, + "acorn-dynamic-import": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", "requires": { - "babel-runtime": "^6.22.0" + "acorn": "^4.0.3" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + } } }, - "babel-plugin-dynamic-import-node": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.1.0.tgz", - "integrity": "sha512-tTfZbM9Ecwj3GK50mnPrUpinTwA4xXmDiQGCk/aBYbvl1+X8YqldK86wZ1owVJ4u3mrKbRlXMma80J18qwiaTQ==", + "acorn-globals": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.0.tgz", + "integrity": "sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==", "requires": { - "babel-plugin-syntax-dynamic-import": "^6.18.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz", + "integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg==" + } } }, - "babel-plugin-istanbul": { - "version": "4.1.6", - "resolved": "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", - "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "acorn-walk": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", + "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" + }, + "address": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/address/-/address-1.0.3.tgz", + "integrity": "sha512-z55ocwKBRLryBs394Sm3ushTtBeg6VAeuku7utSoSnsJKvKcnXFIyC6vh27n3rXyxSgkJBBCAvyOn7gSUcTYjg==" + }, + "ajv": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz", + "integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==", "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.13.0", - "find-up": "^2.1.0", - "istanbul-lib-instrument": "^1.10.1", - "test-exclude": "^4.2.1" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "babel-plugin-jest-hoist": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz", - "integrity": "sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=" + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=" }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + } }, - "babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", - "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=" + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=" }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=" + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "requires": { + "string-width": "^2.0.0" + } }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" + "ansi-escapes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==" }, - "babel-plugin-syntax-flow": { - "version": "6.18.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", - "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=" + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=" }, - "babel-plugin-syntax-jsx": { - "version": "6.18.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, - "babel-plugin-syntax-object-rest-spread": { - "version": "6.13.0", - "resolved": "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", - "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "requires": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-class-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", - "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-plugin-syntax-class-properties": "^6.8.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", - "requires": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", - "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" + "color-convert": "^1.9.0" } }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-flow-strip-types": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", - "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", - "requires": { - "babel-plugin-syntax-flow": "^6.18.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", - "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" - } - }, - "babel-plugin-transform-react-constant-elements": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz", - "integrity": "sha1-LxGb9NLN1F65uqrldAU8YE9hR90=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-react-display-name": { - "version": "6.25.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", - "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-react-jsx": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", - "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", - "requires": { - "babel-helper-builder-react-jsx": "^6.24.1", - "babel-plugin-syntax-jsx": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-react-jsx-self": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", - "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", - "requires": { - "babel-plugin-syntax-jsx": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-react-jsx-source": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", - "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", - "requires": { - "babel-plugin-syntax-jsx": "^6.8.0", - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", - "requires": { - "regenerator-transform": "^0.10.0" - } - }, - "babel-plugin-transform-runtime": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", - "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-strict-mode": { - "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=", - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-preset-env": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", - "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", - "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-to-generator": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.23.0", - "babel-plugin-transform-es2015-classes": "^6.23.0", - "babel-plugin-transform-es2015-computed-properties": "^6.22.0", - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", - "babel-plugin-transform-es2015-for-of": "^6.23.0", - "babel-plugin-transform-es2015-function-name": "^6.22.0", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-umd": "^6.23.0", - "babel-plugin-transform-es2015-object-super": "^6.22.0", - "babel-plugin-transform-es2015-parameters": "^6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", - "babel-plugin-transform-exponentiation-operator": "^6.22.0", - "babel-plugin-transform-regenerator": "^6.22.0", - "browserslist": "^2.1.2", - "invariant": "^2.2.2", - "semver": "^5.3.0" - } - }, - "babel-preset-flow": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", - "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", - "requires": { - "babel-plugin-transform-flow-strip-types": "^6.22.0" - } - }, - "babel-preset-jest": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz", - "integrity": "sha1-jsegOhOPABoaj7HoETZSvxpV2kY=", - "requires": { - "babel-plugin-jest-hoist": "^23.2.0", - "babel-plugin-syntax-object-rest-spread": "^6.13.0" - } - }, - "babel-preset-react": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", - "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", - "requires": { - "babel-plugin-syntax-jsx": "^6.3.13", - "babel-plugin-transform-react-display-name": "^6.23.0", - "babel-plugin-transform-react-jsx": "^6.24.1", - "babel-plugin-transform-react-jsx-self": "^6.22.0", - "babel-plugin-transform-react-jsx-source": "^6.22.0", - "babel-preset-flow": "^6.23.0" - } - }, - "babel-preset-react-app": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-3.1.2.tgz", - "integrity": "sha512-/sh5Qd5T08PYa6t4kuCdKh9tXp6/m/Jwyx7PJTqugsYMfsDUJMlBXOs5EwFODHprzjWrmQ0SydnMZu9FY4MZYg==", - "requires": { - "babel-plugin-dynamic-import-node": "1.1.0", - "babel-plugin-syntax-dynamic-import": "6.18.0", - "babel-plugin-transform-class-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-object-rest-spread": "6.26.0", - "babel-plugin-transform-react-constant-elements": "6.23.0", - "babel-plugin-transform-react-jsx": "6.24.1", - "babel-plugin-transform-react-jsx-self": "6.22.0", - "babel-plugin-transform-react-jsx-source": "6.22.0", - "babel-plugin-transform-regenerator": "6.26.0", - "babel-plugin-transform-runtime": "6.23.0", - "babel-preset-env": "1.6.1", - "babel-preset-react": "6.24.1" - } - }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", - "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - } - }, - "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=", - "requires": { - "core-js": "^2.4.0", - "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=", - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "requires": { - "is-descriptor": "^1.0.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, "is-accessor-descriptor": { @@ -1589,6 +1834,24 @@ "kind-of": "^6.0.2" } }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", @@ -1598,1331 +1861,1252 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } } } }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "requires": { + "default-require-extensions": "^1.0.0" + } }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "requires": { - "tweetnacl": "^0.14.3" + "sprintf-js": "~1.0.2" } }, - "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "requires": { + "arr-flatten": "^1.0.1" + } }, - "binary-extensions": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", - "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==" + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, - "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==" + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, - "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" }, - "body-parser": { - "version": "1.18.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", - "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", - "requires": { - "bytes": "3.0.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "~1.6.3", - "iconv-lite": "0.4.23", - "on-finished": "~2.3.0", - "qs": "6.5.2", - "raw-body": "2.3.3", - "type-is": "~1.6.16" - }, - "dependencies": { - "iconv-lite": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - } - } + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=" }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", + "array-includes": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz", + "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=", "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" + "define-properties": "^1.1.2", + "es-abstract": "^1.7.0" } }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=" }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "array-uniq": "^1.0.1" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "requires": { - "resolve": "1.1.7" - } + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "safer-buffer": "~2.1.0" } }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", + "bn.js": "^4.0.0", "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "minimalistic-assert": "^1.0.0" } }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } } }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" + }, + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", "requires": { - "pako": "~1.0.5" + "lodash": "^4.17.10" } }, - "browserslist": { - "version": "2.11.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", - "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", - "requires": { - "caniuse-lite": "^1.0.30000792", - "electron-to-chromium": "^1.3.30" - } - }, - "bser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", - "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "autoprefixer": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.6.tgz", + "integrity": "sha512-C9yv/UF3X+eJTi/zvfxuyfxmLibYrntpF3qoJYrMeQwgUJOZrZvpJiMG2FMQ3qnhWtF/be4pYONBBw95ZGe3vA==", + "requires": { + "browserslist": "^2.5.1", + "caniuse-lite": "^1.0.30000748", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^6.0.13", + "postcss-value-parser": "^3.2.3" + } }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" }, - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "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=", "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" }, "dependencies": { - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "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": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" } }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" - }, - "camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" } }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha1-Of+DE7dci2Xc7/HzHTg+D/KkCKA=", "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - } + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "esutils": "^2.0.2" } }, - "caniuse-api": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", - "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "requires": { - "browserslist": "^1.3.6", - "caniuse-db": "^1.0.30000529", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - }, - "dependencies": { - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - } + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "caniuse-db": { - "version": "1.0.30000912", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000912.tgz", - "integrity": "sha512-uiepPdHcJ06Na9t15L5l+pp3NWQU4IETbmleghD6tqCqbIYqhHSu7nVfbK2gqPjfy+9jl/wHF1UQlyTszh9tJQ==" - }, - "caniuse-lite": { - "version": "1.0.30000912", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000912.tgz", - "integrity": "sha512-M3zAtV36U+xw5mMROlTXpAHClmPAor6GPKAMD5Yi7glCB5sbMPFtnQ3rGpk4XqPdUrrTIaVYSJZxREZWNy8QJg==" - }, - "capture-exit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", - "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "requires": { - "rsvp": "^3.3.3" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" - }, - "case-sensitive-paths-webpack-plugin": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz", - "integrity": "sha1-PSnO2MHxJL9vU4Rvs/WJRzH9yQk=" - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - }, - "dependencies": { - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - } - } + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } }, - "ci-info": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", - "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "clap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "requires": { - "chalk": "^1.1.3" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-jest": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.7.1.tgz", + "integrity": "sha512-GPnLqfk8Mtt0i4OemjWkChi73A3ALs4w2/QbG64uAj8b5mmwzxc7jbJVRZt8NJkxi6FopVHog9S3xX6UJKb2qg==", + "requires": { + "@jest/transform": "^24.7.1", + "@jest/types": "^24.7.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.6.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "babel-plugin-istanbul": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.2.tgz", + "integrity": "sha512-U3ZVajC+Z69Gim7ZzmD4Wcsq76i/1hqDamBfowc1tWzWjybRy70iWfngP2ME+1CrgcgZ/+muIbPY/Yi0dxdIkQ==", + "requires": { + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.2.0", + "test-exclude": "^5.2.2" + } }, "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "requires": { - "ansi-regex": "^2.0.0" + "locate-path": "^3.0.0" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-LXTBICkMARVgo579kWDm8SqfB6nvSDKNqIOBEjmJRnL04JvoMHCYGWaMddQnseJYtkEuEvO/sIcOxPLk9gERug==" + }, + "istanbul-lib-instrument": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.2.0.tgz", + "integrity": "sha512-06IM3xShbNW4NgZv5AP4QH0oHqf1/ivFo8eFys0ZjPXHGldHJQWb3riYOKXqmOqfxXBfxu4B+g/iuhOPZH0RJg==", "requires": { - "is-descriptor": "^0.1.0" + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "istanbul-lib-coverage": "^2.0.4", + "semver": "^6.0.0" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } - }, - "clean-css": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", - "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", - "requires": { - "source-map": "~0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "semver": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", + "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==" + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" + }, + "test-exclude": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.2.tgz", + "integrity": "sha512-N2pvaLpT8guUpb5Fe1GJlmvmzH3x+DAKmmyEQmFP792QcLYoGE1syxztSvPD1V8yPe6VrcCt6YGQVjSRjCASsA==", + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + } + } + } }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "babel-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.2.tgz", + "integrity": "sha512-jRwlFbINAeyDStqK6Dd5YuY0k5YuzQUvlz2ZamuXrXmxav3pNqe9vfJ402+2G+OmlJSXxCOpB6Uz0INM7RQe2A==", "requires": { - "restore-cursor": "^2.0.0" + "find-cache-dir": "^1.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1" } }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "babel-runtime": "^6.22.0" } }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "coa": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", - "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "requires": { - "q": "^1.1.2" + "babel-runtime": "^6.22.0" } }, - "code-point-at": { + "babel-plugin-dynamic-import-node": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-1.1.0.tgz", + "integrity": "sha512-tTfZbM9Ecwj3GK50mnPrUpinTwA4xXmDiQGCk/aBYbvl1+X8YqldK86wZ1owVJ4u3mrKbRlXMma80J18qwiaTQ==", "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" } }, - "color": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", - "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "babel-plugin-istanbul": { + "version": "4.1.6", + "resolved": "http://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", "requires": { - "clone": "^1.0.2", - "color-convert": "^1.3.0", - "color-string": "^0.3.0" + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "find-up": "^2.1.0", + "istanbul-lib-instrument": "^1.10.1", + "test-exclude": "^4.2.1" } }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "babel-plugin-jest-hoist": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz", + "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==", "requires": { - "color-name": "1.1.3" + "@types/babel__traverse": "^7.0.6" } }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" }, - "color-string": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", - "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "requires": { - "color-name": "^1.0.0" - } + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=" }, - "colormin": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", - "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "requires": { - "color": "^0.11.0", - "css-color-names": "0.0.4", - "has": "^1.0.1" - } + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=" }, - "colors": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", - "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "requires": { - "delayed-stream": "~1.0.0" - } + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=" }, - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=" }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" }, - "compressible": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", - "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", "requires": { - "mime-db": ">= 1.36.0 < 2" + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" } }, - "compression": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", - "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.14", - "debug": "2.6.9", - "on-headers": "~1.0.1", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "babel-runtime": "^6.22.0" } }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" + "babel-runtime": "^6.22.0" } }, - "connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=" - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", "requires": { - "date-now": "^0.1.4" + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, - "content-disposition": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", - "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "content-type-parser": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", - "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==" - }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "requires": { - "safe-buffer": "~5.1.1" + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "cookie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", - "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "core-js": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", - "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cosmiconfig": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", - "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "requires": { - "is-directory": "^0.3.1", - "js-yaml": "^3.4.3", - "minimist": "^1.2.0", - "object-assign": "^4.1.0", - "os-homedir": "^1.0.1", - "parse-json": "^2.2.0", - "require-from-string": "^1.1.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } + "babel-runtime": "^6.22.0" } }, - "cpx": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz", - "integrity": "sha1-GFvgGFEdhycN7czCkxceN2VauI8=", + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", "requires": { - "babel-runtime": "^6.9.2", - "chokidar": "^1.6.0", - "duplexer": "^0.1.1", - "glob": "^7.0.5", - "glob2base": "^0.0.12", - "minimatch": "^3.0.2", - "mkdirp": "^0.5.1", - "resolve": "^1.1.7", - "safe-buffer": "^5.0.1", - "shell-quote": "^1.6.1", - "subarg": "^1.0.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "babel-runtime": "^6.22.0" } }, - "create-error-class": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", - "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "requires": { - "capture-stack-trace": "^1.0.0" + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "create-hash": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" + "babel-runtime": "^6.22.0" } }, - "create-hmac": { - "version": "1.1.7", - "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" } }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } }, - "css-loader": { - "version": "0.28.7", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz", - "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==", + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", "requires": { - "babel-code-frame": "^6.11.0", - "css-selector-tokenizer": "^0.7.0", - "cssnano": ">=2.6.1 <4", - "icss-utils": "^2.1.0", - "loader-utils": "^1.0.2", - "lodash.camelcase": "^4.3.0", - "object-assign": "^4.0.1", - "postcss": "^5.0.6", - "postcss-modules-extract-imports": "^1.0.0", - "postcss-modules-local-by-default": "^1.0.1", - "postcss-modules-scope": "^1.0.0", - "postcss-modules-values": "^1.1.0", - "postcss-value-parser": "^3.3.0", - "source-list-map": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "css-selector-tokenizer": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", - "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" - }, - "dependencies": { - "regexpu-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", - "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } - } + "babel-runtime": "^6.22.0" } }, - "css-what": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", - "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==" + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } }, - "cssesc": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", - "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=" + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "requires": { + "babel-runtime": "^6.22.0" + } }, - "cssnano": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", - "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", "requires": { - "autoprefixer": "^6.3.1", - "decamelize": "^1.1.2", - "defined": "^1.0.0", - "has": "^1.0.1", - "object-assign": "^4.0.1", - "postcss": "^5.0.14", - "postcss-calc": "^5.2.0", - "postcss-colormin": "^2.1.8", - "postcss-convert-values": "^2.3.4", - "postcss-discard-comments": "^2.0.4", - "postcss-discard-duplicates": "^2.0.1", - "postcss-discard-empty": "^2.0.1", - "postcss-discard-overridden": "^0.1.1", - "postcss-discard-unused": "^2.2.1", - "postcss-filter-plugins": "^2.0.0", - "postcss-merge-idents": "^2.1.5", - "postcss-merge-longhand": "^2.0.1", - "postcss-merge-rules": "^2.0.3", - "postcss-minify-font-values": "^1.0.2", - "postcss-minify-gradients": "^1.0.1", - "postcss-minify-params": "^1.0.4", - "postcss-minify-selectors": "^2.0.4", - "postcss-normalize-charset": "^1.1.0", - "postcss-normalize-url": "^3.0.7", - "postcss-ordered-values": "^2.1.0", - "postcss-reduce-idents": "^2.2.2", - "postcss-reduce-initial": "^1.0.0", - "postcss-reduce-transforms": "^1.0.3", - "postcss-svgo": "^2.1.1", - "postcss-unique-selectors": "^2.0.2", - "postcss-value-parser": "^3.2.3", - "postcss-zindex": "^2.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "autoprefixer": { - "version": "6.7.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", - "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "requires": { - "browserslist": "^1.7.6", - "caniuse-db": "^1.0.30000634", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^5.2.16", - "postcss-value-parser": "^3.2.3" - } - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "requires": { - "caniuse-db": "^1.0.30000639", - "electron-to-chromium": "^1.2.7" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "dependencies": { - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "postcss": { - "version": "5.2.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", - "requires": { - "chalk": "^1.1.3", - "js-base64": "^2.1.9", - "source-map": "^0.5.6", - "supports-color": "^3.2.3" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } + "babel-runtime": "^6.22.0" } }, - "csso": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", - "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "requires": { - "clap": "^1.0.9", - "source-map": "^0.5.3" + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" } }, - "cssom": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", - "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==" - }, - "cssstyle": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", - "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", "requires": { - "cssom": "0.3.x" + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" } }, - "csstype": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.2.tgz", - "integrity": "sha512-Rl7PvTae0pflc1YtxtKbiSqq20Ts6vpIYOD5WBafl4y123DyHUeLrRdQP66sQW8/6gmX8jrYJLXwNeMqYVJcow==" - }, - "cuid": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.6.tgz", - "integrity": "sha512-ZFp7PS6cSYMJNch9fc3tyHdE4T8TDo3Y5qAxb0KSA9mpiYDo7z9ql1CznFuuzxea9STVIDy0tJWm2lYiX2ZU1Q==" - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", "requires": { - "array-find-index": "^1.0.1" + "babel-plugin-syntax-flow": "^6.18.0", + "babel-runtime": "^6.22.0" } }, - "cyclist": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", - "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", "requires": { - "es5-ext": "^0.10.9" + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" } }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "babel-plugin-transform-react-constant-elements": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-constant-elements/-/babel-plugin-transform-react-constant-elements-6.23.0.tgz", + "integrity": "sha1-LxGb9NLN1F65uqrldAU8YE9hR90=", "requires": { - "assert-plus": "^1.0.0" + "babel-runtime": "^6.22.0" } }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "babel-plugin-transform-react-display-name": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", + "integrity": "sha1-Z+K/Hx6ck6sI25Z5LgU5K/LMKNE=", "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } + "babel-runtime": "^6.22.0" } }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha1-hAoCjn30YN/DotKfDA2R9jduZqM=", "requires": { - "ms": "2.0.0" + "babel-helper-builder-react-jsx": "^6.24.1", + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "babel-plugin-transform-react-jsx-self": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", + "integrity": "sha1-322AqdomEqEh5t3XVYvL7PBuY24=", + "requires": { + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + "babel-plugin-transform-react-jsx-source": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", + "integrity": "sha1-ZqwSFT9c0tF7PBkmj0vwGX9E7NY=", + "requires": { + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } }, - "deepmerge": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "requires": { + "regenerator-transform": "^0.10.0" + } }, - "default-require-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", - "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", "requires": { - "strip-bom": "^2.0.0" + "babel-runtime": "^6.22.0" } }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "babel-plugin-transform-strict-mode": { + "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=", "requires": { - "object-keys": "^1.0.12" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "babel-preset-env": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", + "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^2.1.2", + "invariant": "^2.2.2", + "semver": "^5.3.0" + } + }, + "babel-preset-flow": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", + "integrity": "sha1-5xIYiHCFrpoktb5Baa/7WZgWxJ0=", + "requires": { + "babel-plugin-transform-flow-strip-types": "^6.22.0" + } + }, + "babel-preset-jest": { + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz", + "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==", + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.6.0" + } + }, + "babel-preset-react": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", + "integrity": "sha1-umnfrqRfw+xjm2pOzqbhdwLJE4A=", + "requires": { + "babel-plugin-syntax-jsx": "^6.3.13", + "babel-plugin-transform-react-display-name": "^6.23.0", + "babel-plugin-transform-react-jsx": "^6.24.1", + "babel-plugin-transform-react-jsx-self": "^6.22.0", + "babel-plugin-transform-react-jsx-source": "^6.22.0", + "babel-preset-flow": "^6.23.0" + } + }, + "babel-preset-react-app": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-3.1.2.tgz", + "integrity": "sha512-/sh5Qd5T08PYa6t4kuCdKh9tXp6/m/Jwyx7PJTqugsYMfsDUJMlBXOs5EwFODHprzjWrmQ0SydnMZu9FY4MZYg==", + "requires": { + "babel-plugin-dynamic-import-node": "1.1.0", + "babel-plugin-syntax-dynamic-import": "6.18.0", + "babel-plugin-transform-class-properties": "6.24.1", + "babel-plugin-transform-es2015-destructuring": "6.23.0", + "babel-plugin-transform-object-rest-spread": "6.26.0", + "babel-plugin-transform-react-constant-elements": "6.23.0", + "babel-plugin-transform-react-jsx": "6.24.1", + "babel-plugin-transform-react-jsx-self": "6.22.0", + "babel-plugin-transform-react-jsx-source": "6.22.0", + "babel-plugin-transform-regenerator": "6.26.0", + "babel-plugin-transform-runtime": "6.23.0", + "babel-preset-env": "1.6.1", + "babel-preset-react": "6.24.1" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "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=", + "requires": { + "core-js": "^2.4.0", + "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=", + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { "kind-of": "^6.0.0" } }, @@ -2956,2771 +3140,5290 @@ } } }, - "defined": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", - "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" + "tweetnacl": "^0.14.3" } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + "binary-extensions": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==" }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==" }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "body-parser": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", "requires": { - "repeating": "^2.0.0" - } - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=" - }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" - }, - "detect-port-alt": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", - "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", - "requires": { - "address": "^1.0.1", - "debug": "^2.6.0" + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } } }, - "diff": { + "bonjour": { "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" } }, - "dns-equal": { + "boolbase": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" - }, - "dns-packet": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "requires": { - "buffer-indexof": "^1.0.0" + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" } }, - "dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "requires": { - "utila": "~0.4" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "requires": { - "domelementtype": "~1.1.1", - "entities": "~1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" - } + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, - "dom-urls": { + "brorand": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/dom-urls/-/dom-urls-1.1.0.tgz", - "integrity": "sha1-AB3fgWKM0ecGElxxdvU8zsVdkY4=", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", "requires": { - "urijs": "^1.16.1" + "resolve": "1.1.7" } }, - "domain-browser": { + "browserify-aes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" - }, - "domelementtype": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.2.1.tgz", - "integrity": "sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA==" + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } }, - "domexception": { + "browserify-cipher": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "requires": { - "webidl-conversions": "^4.0.2" + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, - "domhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", - "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "requires": { - "domelementtype": "1" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "browserify-rsa": { + "version": "4.0.1", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" } }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "requires": { - "is-obj": "^1.0.0" + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" } }, - "dotenv": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", - "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" - }, - "dotenv-expand": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz", - "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=" - }, - "duplexer": { - "version": "0.1.1", - "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "~1.0.5" + } }, - "duplexify": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", - "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", + "browserslist": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "caniuse-lite": "^1.0.30000792", + "electron-to-chromium": "^1.3.30" } }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "node-int64": "^0.4.0" } }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "electron-to-chromium": { - "version": "1.3.85", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.85.tgz", - "integrity": "sha512-kWSDVVF9t3mft2OHVZy4K85X2beP6c6mFm3teFS/mLSDJpQwuFIWHrULCX+w6H1E55ZYmFRlT+ATAFRwhrYzsw==" - }, - "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "buffer": { + "version": "4.9.1", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "requires": { - "once": "^1.4.0" - } + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, - "enhanced-resolve": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", - "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "object-assign": "^4.0.1", - "tapable": "^0.2.7" - } + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" }, - "errno": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", - "requires": { - "prr": "~1.0.1" - } + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", "requires": { - "is-arrayish": "^0.2.1" + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + }, + "dependencies": { + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + } } }, - "es-abstract": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", - "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "requires": { - "es-to-primitive": "^1.1.1", - "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } } }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=" }, - "es5-ext": { - "version": "0.10.46", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", - "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" + "no-case": "^2.2.0", + "upper-case": "^1.1.1" } }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + } } }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" + "browserslist": "^1.3.6", + "caniuse-db": "^1.0.30000529", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + } } }, - "es6-promise": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", - "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==" + "caniuse-db": { + "version": "1.0.30000912", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000912.tgz", + "integrity": "sha512-uiepPdHcJ06Na9t15L5l+pp3NWQU4IETbmleghD6tqCqbIYqhHSu7nVfbK2gqPjfy+9jl/wHF1UQlyTszh9tJQ==" }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - } + "caniuse-lite": { + "version": "1.0.30000912", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000912.tgz", + "integrity": "sha512-M3zAtV36U+xw5mMROlTXpAHClmPAor6GPKAMD5Yi7glCB5sbMPFtnQ3rGpk4XqPdUrrTIaVYSJZxREZWNy8QJg==" }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "rsvp": "^4.8.4" } }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "requires": { - "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + "case-sensitive-paths-webpack-plugin": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.1.1.tgz", + "integrity": "sha1-PSnO2MHxJL9vU4Rvs/WJRzH9yQk=" }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, - "escodegen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", - "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "optional": true - } + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "requires": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" } }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "requires": { - "estraverse": "^4.1.0" + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + } } }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==" }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==" }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" - }, - "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", "requires": { - "original": ">=0.0.5" + "chalk": "^1.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } } }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } } }, - "exec-sh": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", - "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", "requires": { - "merge": "^1.2.0" + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } } }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "restore-cursor": "^2.0.0" } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "requires": { - "is-posix-bracket": "^0.1.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", "requires": { - "fill-range": "^2.1.0" + "q": "^1.1.2" } }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "requires": { - "homedir-polyfill": "^1.0.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, - "expect": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz", - "integrity": "sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==", + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", "requires": { - "ansi-styles": "^3.2.0", - "jest-diff": "^23.6.0", - "jest-get-type": "^22.1.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0" + "clone": "^1.0.2", + "color-convert": "^1.3.0", + "color-string": "^0.3.0" } }, - "express": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", - "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { - "accepts": "~1.3.5", - "array-flatten": "1.1.1", - "body-parser": "1.18.3", - "content-disposition": "0.5.2", - "content-type": "~1.0.4", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.1.1", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.4", - "qs": "6.5.2", - "range-parser": "~1.2.0", - "safe-buffer": "5.1.2", - "send": "0.16.2", - "serve-static": "1.13.2", - "setprototypeof": "1.1.0", - "statuses": "~1.4.0", - "type-is": "~1.6.16", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - } + "color-name": "1.1.3" } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } + "color-name": "^1.0.0" } }, - "external-editor": { - "version": "2.2.0", - "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", "requires": { - "chardet": "^0.4.0", - "iconv-lite": "^0.4.17", - "tmp": "^0.0.33" + "color": "^0.11.0", + "css-color-names": "0.0.4", + "has": "^1.0.1" } }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "requires": { - "is-extglob": "^1.0.0" - } + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" }, - "extract-text-webpack-plugin": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", - "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "requires": { - "async": "^2.4.1", - "loader-utils": "^1.1.0", - "schema-utils": "^0.3.0", - "webpack-sources": "^1.0.1" + "delayed-stream": "~1.0.0" } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==" }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" + "compare-versions": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz", + "integrity": "sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==" }, - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "requires": { - "websocket-driver": ">=0.5.1" - } + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" }, - "fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "compressible": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", + "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", "requires": { - "bser": "^2.0.0" + "mime-db": ">= 1.36.0 < 2" } }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", "requires": { - "escape-string-regexp": "^1.0.5" + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" } }, - "file-loader": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.5.tgz", - "integrity": "sha512-RzGHDatcVNpGISTvCpfUfOGpYuSR7HSsSg87ki+wF6rw1Hm0RALPTiAdsxAq1UwLf0RRhbe22/eHK6nhXspiOQ==", + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", "requires": { - "loader-utils": "^1.0.2", - "schema-utils": "^0.3.0" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" - }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, - "filesize": { - "version": "3.5.11", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", - "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==" + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=" }, - "fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" + "date-now": "^0.1.4" } }, - "finalhandler": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==" + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" + "safe-buffer": "~5.1.1" } }, - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" } }, - "find-index": { + "copy-descriptor": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", - "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=" + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "requires": { - "locate-path": "^2.0.0" - } + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" }, - "flatten": { + "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" - }, - "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" - } + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "follow-redirects": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", - "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", "requires": { - "debug": "=3.1.0" + "is-directory": "^0.3.1", + "js-yaml": "^3.4.3", + "minimist": "^1.2.0", + "object-assign": "^4.1.0", + "os-homedir": "^1.0.1", + "parse-json": "^2.2.0", + "require-from-string": "^1.1.0" }, "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "cpx": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz", + "integrity": "sha1-GFvgGFEdhycN7czCkxceN2VauI8=", + "requires": { + "babel-runtime": "^6.9.2", + "chokidar": "^1.6.0", + "duplexer": "^0.1.1", + "glob": "^7.0.5", + "glob2base": "^0.0.12", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "resolve": "^1.1.7", + "safe-buffer": "^5.0.1", + "shell-quote": "^1.6.1", + "subarg": "^1.0.0" + } }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "requires": { - "for-in": "^1.0.1" + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" } }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "requires": { + "capture-stack-trace": "^1.0.0" + } }, - "fork-ts-checker-webpack-plugin": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-0.2.10.tgz", - "integrity": "sha1-0KQIDnfp9dbjtDzc59JmWPnSUMY=", + "create-hash": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "requires": { - "babel-code-frame": "^6.22.0", - "chalk": "^1.1.3", - "chokidar": "^1.7.0", - "lodash.endswith": "^4.2.1", - "lodash.isfunction": "^3.0.8", - "lodash.isstring": "^4.0.1", - "lodash.startswith": "^4.2.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } - } - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "create-hmac": { + "version": "1.1.7", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" } }, - "fs.realpath": { + "crypto-random-string": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" }, - "fsevents": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", - "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", - "optional": true, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=" + }, + "css-loader": { + "version": "0.28.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz", + "integrity": "sha512-GxMpax8a/VgcfRrVy0gXD6yLd5ePYbXX/5zGgTVYp4wXtJklS8Z2VaUArJgc//f6/Dzil7BaJObdSv8eKKCPgg==", "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" + "babel-code-frame": "^6.11.0", + "css-selector-tokenizer": "^0.7.0", + "cssnano": ">=2.6.1 <4", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash.camelcase": "^4.3.0", + "object-assign": "^4.0.1", + "postcss": "^5.0.6", + "postcss-modules-extract-imports": "^1.0.0", + "postcss-modules-local-by-default": "^1.0.1", + "postcss-modules-scope": "^1.0.0", + "postcss-modules-values": "^1.1.0", + "postcss-value-parser": "^3.3.0", + "source-list-map": "^2.0.0" }, "dependencies": { - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "optional": true - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "optional": true + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", - "optional": true, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } } }, - "balanced-match": { + "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "optional": true + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "optional": true, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, - "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "optional": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "optional": true, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ms": "2.0.0" + "ansi-regex": "^2.0.0" } }, - "deep-extend": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", - "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", - "optional": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", - "optional": true, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "requires": { - "minipass": "^2.2.1" + "has-flag": "^1.0.0" } - }, - "fs.realpath": { + } + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + }, + "dependencies": { + "regexpu-core": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "optional": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", - "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", - "optional": true, + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", "requires": { - "safer-buffer": "^2.1.0" + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" } + } + } + }, + "css-what": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.2.tgz", + "integrity": "sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==" + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=" + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "requires": { + "autoprefixer": "^6.3.1", + "decamelize": "^1.1.2", + "defined": "^1.0.0", + "has": "^1.0.1", + "object-assign": "^4.0.1", + "postcss": "^5.0.14", + "postcss-calc": "^5.2.0", + "postcss-colormin": "^2.1.8", + "postcss-convert-values": "^2.3.4", + "postcss-discard-comments": "^2.0.4", + "postcss-discard-duplicates": "^2.0.1", + "postcss-discard-empty": "^2.0.1", + "postcss-discard-overridden": "^0.1.1", + "postcss-discard-unused": "^2.2.1", + "postcss-filter-plugins": "^2.0.0", + "postcss-merge-idents": "^2.1.5", + "postcss-merge-longhand": "^2.0.1", + "postcss-merge-rules": "^2.0.3", + "postcss-minify-font-values": "^1.0.2", + "postcss-minify-gradients": "^1.0.1", + "postcss-minify-params": "^1.0.4", + "postcss-minify-selectors": "^2.0.4", + "postcss-normalize-charset": "^1.1.0", + "postcss-normalize-url": "^3.0.7", + "postcss-ordered-values": "^2.1.0", + "postcss-reduce-idents": "^2.2.2", + "postcss-reduce-initial": "^1.0.0", + "postcss-reduce-transforms": "^1.0.3", + "postcss-svgo": "^2.1.1", + "postcss-unique-selectors": "^2.0.2", + "postcss-value-parser": "^3.2.3", + "postcss-zindex": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" }, - "ignore-walk": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "optional": true, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", "requires": { - "minimatch": "^3.0.4" + "browserslist": "^1.7.6", + "caniuse-db": "^1.0.30000634", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^5.2.16", + "postcss-value-parser": "^3.2.3" } }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "optional": true, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "optional": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "optional": true, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "requires": { - "number-is-nan": "^1.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } } }, - "isarray": { + "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "optional": true + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "optional": true, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", "requires": { - "brace-expansion": "^1.1.7" + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" } }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "optional": true - }, - "minipass": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz", - "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", - "optional": true, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" + "ansi-regex": "^2.0.0" } }, - "minizlib": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", - "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "optional": true, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "requires": { - "minimist": "0.0.8" + "has-flag": "^1.0.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "optional": true - }, - "needle": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz", - "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", - "optional": true, + } + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "requires": { + "clap": "^1.0.9", + "source-map": "^0.5.3" + } + }, + "cssom": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz", + "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==" + }, + "cssstyle": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.1.1.tgz", + "integrity": "sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==", + "requires": { + "cssom": "0.3.x" + } + }, + "csstype": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.4.tgz", + "integrity": "sha512-lAJUJP3M6HxFXbqtGRc0iZrdyeN+WzOWeY0q/VnFzI+kqVrYIzC7bWlKqCW7oCIdzoPkvfp82EVvrTlQ8zsWQg==" + }, + "cuid": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.6.tgz", + "integrity": "sha512-ZFp7PS6cSYMJNch9fc3tyHdE4T8TDo3Y5qAxb0KSA9mpiYDo7z9ql1CznFuuzxea9STVIDy0tJWm2lYiX2ZU1Q==" + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" + }, + "d": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "requires": { + "es5-ext": "^0.10.9" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" } - }, - "node-pre-gyp": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", - "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", - "optional": true, + } + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "deepmerge": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "requires": { + "strip-bom": "^2.0.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" + "kind-of": "^6.0.0" } }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "optional": true, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "kind-of": "^6.0.0" } }, - "npm-bundled": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", - "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==", - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", - "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", - "optional": true, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "optional": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "optional": true - }, - "rc": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", - "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", - "optional": true, - "requires": { - "deep-extend": "^0.5.1", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "optional": true, - "requires": { - "glob": "^7.0.5" - } - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "optional": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "optional": true - }, - "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "optional": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "optional": true - }, - "tar": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz", - "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "optional": true - }, - "wide-align": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", - "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", - "optional": true, - "requires": { - "string-width": "^1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "optional": true - }, - "yallist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", - "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", - "optional": true + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" } } }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", "requires": { - "assert-plus": "^1.0.0" + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" } }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "requires": { - "is-glob": "^2.0.0" + "repeating": "^2.0.0" } }, - "glob2base": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", - "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=" + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" + }, + "detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", "requires": { - "find-index": "^0.1.1" + "address": "^1.0.1", + "debug": "^2.6.0" } }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" + }, + "diff-sequences": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.3.0.tgz", + "integrity": "sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "requires": { - "ini": "^1.3.4" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, - "global-modules": { + "dns-equal": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" } }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "buffer-indexof": "^1.0.0" } }, - "globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "utila": "~0.4" } }, - "got": { - "version": "6.7.1", - "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz", - "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", "requires": { - "create-error-class": "^3.0.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-redirect": "^1.0.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "lowercase-keys": "^1.0.0", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "unzip-response": "^2.0.1", - "url-parse-lax": "^1.0.0" + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=" + } } }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" - }, - "gzip-size": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", - "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "dom-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/dom-urls/-/dom-urls-1.1.0.tgz", + "integrity": "sha1-AB3fgWKM0ecGElxxdvU8zsVdkY4=", "requires": { - "duplexer": "^0.1.1" + "urijs": "^1.16.1" } }, - "handle-thing": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", - "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=" + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" }, - "handlebars": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", - "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", + "domelementtype": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.2.1.tgz", + "integrity": "sha512-SQVCLFS2E7G5CRCMdn6K9bIhRj1bS6QBWZfF0TUPh4V/BbqrQ619IdSS3/izn0FZ+9l+uODzaZjb08fjOfablA==" + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "requires": { - "async": "^2.5.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } + "webidl-conversions": "^4.0.2" } }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" + "domelementtype": "1" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", "requires": { - "function-bind": "^1.1.1" + "dom-serializer": "0", + "domelementtype": "1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "requires": { - "ansi-regex": "^2.0.0" + "is-obj": "^1.0.0" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "dotenv": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-4.0.0.tgz", + "integrity": "sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0=" }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "dotenv-expand": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-4.2.0.tgz", + "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=" }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } - } + "duplexer": { + "version": "0.1.1", + "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" }, - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "duplexify": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", "requires": { + "end-of-stream": "^1.0.0", "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, - "hash.js": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", - "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, - "history": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", - "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==", - "requires": { - "invariant": "^2.2.1", - "loose-envify": "^1.2.0", - "resolve-pathname": "^2.2.0", - "value-equal": "^0.4.0", - "warning": "^3.0.0" - } + "electron-to-chromium": { + "version": "1.3.85", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.85.tgz", + "integrity": "sha512-kWSDVVF9t3mft2OHVZy4K85X2beP6c6mFm3teFS/mLSDJpQwuFIWHrULCX+w6H1E55ZYmFRlT+ATAFRwhrYzsw==" }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", "requires": { - "hash.js": "^1.0.3", + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "minimalistic-crypto-utils": "^1.0.0" } }, - "hoist-non-react-statics": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", - "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - } + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, - "homedir-polyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", - "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "requires": { - "parse-passwd": "^1.0.0" + "once": "^1.4.0" } }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "enhanced-resolve": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", + "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "object-assign": "^4.0.1", + "tapable": "^0.2.7" } }, - "html-comment-regex": { + "entities": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", - "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "requires": { - "whatwg-encoding": "^1.0.1" + "prr": "~1.0.1" } }, - "html-entities": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", - "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" - }, - "html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "requires": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" + "is-arrayish": "^0.2.1" } }, - "html-webpack-plugin": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.29.0.tgz", - "integrity": "sha1-6Yf0IYU9O2k4yMTIFxhC5f0XryM=", + "es-abstract": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", "requires": { - "bluebird": "^3.4.7", - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "toposort": "^1.0.0" - }, - "dependencies": { - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - } + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" } }, - "htmlparser2": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", - "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", "requires": { - "domelementtype": "1", - "domhandler": "2.1", - "domutils": "1.1", - "readable-stream": "1.0" - }, - "dependencies": { - "domutils": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", - "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", - "requires": { - "domelementtype": "1" - } - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - } + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" - }, - "http-errors": { - "version": "1.6.3", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "es5-ext": { + "version": "0.10.46", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz", + "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==", "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.1", + "next-tick": "1" } }, - "http-parser-js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", - "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==" - }, - "http-proxy": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", "requires": { - "eventemitter3": "^3.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" } }, - "http-proxy-middleware": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", - "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", "requires": { - "http-proxy": "^1.16.2", - "is-glob": "^3.1.0", - "lodash": "^4.17.2", - "micromatch": "^2.3.11" - }, - "dependencies": { - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "es6-promise": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", + "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==" + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" } }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "d": "1", + "es5-ext": "~0.10.14" } }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" - }, - "icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "es6-weak-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", "requires": { - "postcss": "^6.0.1" + "d": "1", + "es5-ext": "^0.10.14", + "es6-iterator": "^2.0.1", + "es6-symbol": "^3.1.1" } }, - "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, - "import-local": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", - "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "escodegen": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz", + "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==", "requires": { - "pkg-dir": "^2.0.0", - "resolve-cwd": "^2.0.0" + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + } } }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", "requires": { - "repeating": "^2.0.0" + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" } }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==" }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, - "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", - "through": "^2.3.6" + "estraverse": "^4.1.0" } }, - "internal-ip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", - "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", - "requires": { - "meow": "^3.3.0" - } + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", "requires": { - "loose-envify": "^1.0.0" + "d": "1", + "es5-ext": "~0.10.14" } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "ip": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" - }, - "ipaddr.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" }, - "is-accessor-descriptor": { + "eventsource": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", "requires": { - "kind-of": "^3.0.2" + "original": ">=0.0.5" } }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "requires": { - "binary-extensions": "^1.0.0" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "exec-sh": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", + "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", + "requires": { + "merge": "^1.2.0" + } }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "builtin-modules": "^1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" }, - "is-ci": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", - "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "requires": { - "ci-info": "^1.5.0" + "is-posix-bracket": "^0.1.0" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "requires": { - "kind-of": "^3.0.2" + "fill-range": "^2.1.0" } }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "^1.0.1" + } }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "expect": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.7.1.tgz", + "integrity": "sha512-mGfvMTPduksV3xoI0xur56pQsg2vJjNf5+a+bXOjqCkiCBbmCayrBbHS/75y9K430cfqyocPr2ZjiNiRx4SRKw==", "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "@jest/types": "^24.7.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.3.0", + "jest-matcher-utils": "^24.7.0", + "jest-message-util": "^24.7.1", + "jest-regex-util": "^24.3.0" }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "jest-get-type": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", + "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==" } } }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "requires": { - "is-primitive": "^2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "express": { + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", "requires": { - "number-is-nan": "^1.0.0" - } - }, - "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=" - }, - "is-generator-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", - "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=" - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "^1.0.0" - } - }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.3", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.4", + "qs": "6.5.2", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.2", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + } } }, - "is-npm": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", - "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "requires": { - "kind-of": "^3.0.2" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "requires": { + "is-plain-object": "^2.0.4" + } + } } }, - "is-obj": { - "version": "1.0.1", - "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "external-editor": { + "version": "2.2.0", + "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "requires": { - "is-path-inside": "^1.0.0" + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" } }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "requires": { - "path-is-inside": "^1.0.1" + "is-extglob": "^1.0.0" } }, - "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=" - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "extract-text-webpack-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - } + "async": "^2.4.1", + "loader-utils": "^1.1.0", + "schema-utils": "^0.3.0", + "webpack-sources": "^1.0.1" } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, - "is-primitive": { + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, - "is-redirect": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", - "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", "requires": { - "has": "^1.0.1" + "websocket-driver": ">=0.5.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=" - }, - "is-root": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz", - "integrity": "sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU=" - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "is-svg": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", - "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", "requires": { - "html-comment-regex": "^1.1.0" + "bser": "^2.0.0" } }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "requires": { - "has-symbols": "^1.0.0" + "escape-string-regexp": "^1.0.5" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "file-loader": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.5.tgz", + "integrity": "sha512-RzGHDatcVNpGISTvCpfUfOGpYuSR7HSsSg87ki+wF6rw1Hm0RALPTiAdsxAq1UwLf0RRhbe22/eHK6nhXspiOQ==", + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^0.3.0" + } }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + "filesize": { + "version": "3.5.11", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.5.11.tgz", + "integrity": "sha512-ZH7loueKBoDb7yG9esn1U+fgq7BzlzW6NRi5/rMdxIZ05dj7GFD/Xc5rq2CDt5Yq86CyfSYVyx4242QQNZbx1g==" }, - "isarray": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=" }, - "isobject": { + "find-up": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "isarray": "1.0.0" + "locate-path": "^2.0.0" } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" }, - "istanbul-api": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", - "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", "requires": { - "async": "^2.1.4", - "fileset": "^2.0.2", - "istanbul-lib-coverage": "^1.2.1", - "istanbul-lib-hook": "^1.2.2", - "istanbul-lib-instrument": "^1.10.2", - "istanbul-lib-report": "^1.1.5", - "istanbul-lib-source-maps": "^1.2.6", - "istanbul-reports": "^1.5.1", - "js-yaml": "^3.7.0", - "mkdirp": "^0.5.1", - "once": "^1.4.0" + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" } }, - "istanbul-lib-coverage": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", - "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==" - }, - "istanbul-lib-hook": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", - "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", "requires": { - "append-transform": "^0.4.0" + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } } }, - "istanbul-lib-instrument": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", - "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.1", - "semver": "^5.3.0" + "for-in": "^1.0.1" } }, - "istanbul-lib-report": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", - "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "fork-ts-checker-webpack-plugin": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-0.2.10.tgz", + "integrity": "sha1-0KQIDnfp9dbjtDzc59JmWPnSUMY=", "requires": { - "istanbul-lib-coverage": "^1.2.1", - "mkdirp": "^0.5.1", - "path-parse": "^1.0.5", - "supports-color": "^3.1.2" + "babel-code-frame": "^6.22.0", + "chalk": "^1.1.3", + "chokidar": "^1.7.0", + "lodash.endswith": "^4.2.1", + "lodash.isfunction": "^3.0.8", + "lodash.isstring": "^4.0.1", + "lodash.startswith": "^4.2.1", + "minimatch": "^3.0.4" }, "dependencies": { - "has-flag": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^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=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "optional": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", + "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=", + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "optional": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.1.tgz", + "integrity": "sha512-N8vBdOa+DF7zkRrDCsaOXoCs/E2fJfx9B9MrKnnSiHNh4ws7eSys6YQE4KvT1cecKmOASYQBhbKjeuDD9lT81w==", + "optional": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "optional": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.21.tgz", + "integrity": "sha512-En5V9za5mBt2oUA03WGD3TwDv0MKAruqsuxstbMUZaj9W9k/m1CV/9py3l0L5kw9Bln8fdHQmzHSYtvpvTLpKw==", + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", + "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "optional": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "optional": true + }, + "minipass": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.2.4.tgz", + "integrity": "sha512-hzXIWWet/BzWhYs2b+u7dRHlruXhwdgvlTMDKC6Cb1U7ps6Ac6yQlR39xsbjWJE377YTCtKwIXIpJ5oP+j5y8g==", + "optional": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.1.0.tgz", + "integrity": "sha512-4T6Ur/GctZ27nHfpt9THOdRZNgyJ9FZchYO1ceg5S8Q3DNLCKYy44nCZzgCJgcvx2UM8czmqak5BCxJMrq37lA==", + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "optional": true + }, + "needle": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.0.tgz", + "integrity": "sha512-eFagy6c+TYayorXw/qtAdSvaUpEbBsDwDyxYFgLZ0lTojfH7K+OdBqAF7TAFwDokJaGpubpSGG0wO3iC0XPi8w==", + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.0.tgz", + "integrity": "sha512-G7kEonQLRbcA/mOoFoxvlMrw6Q6dPf92+t/l0DFSMuSlDoWaI9JWIyPwK0jyE1bph//CUEL65/Fz1m2vJbmjQQ==", + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.3.tgz", + "integrity": "sha512-ByQ3oJ/5ETLyglU2+8dBObvhfWXX8dtPZDMePCahptliFX2iIuhyEszyFk401PZUNQH20vvdW5MLjJxkwU80Ow==", + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.10.tgz", + "integrity": "sha512-AQC0Dyhzn4EiYEfIUjCdMl0JJ61I2ER9ukf/sLxJUcZHfo+VyEfz2rMJgLZSS1v30OxPQe1cN0LZA1xbcaVfWA==", + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "optional": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "optional": true + }, + "rc": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.7.tgz", + "integrity": "sha512-LdLD8xD4zzLsAT5xyushXDNscEjB7+2ulnl8+r1pnESlYtlJtVSoCMBGr30eDRJ3+2Gq89jK9P9e4tCEH1+ywA==", + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "optional": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "optional": true + }, + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "optional": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "optional": true + }, + "tar": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.1.tgz", + "integrity": "sha512-O+v1r9yN4tOsvl90p5HAP4AEqbYhx4036AGMm075fH9F8Qwi3oJ+v4u50FkT/KkvywNGtwkk0zRI+8eYm1X/xg==", + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==", + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "optional": true + }, + "yallist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.2.tgz", + "integrity": "sha1-hFK0u36Dx8GI2AQcGoN8dz1ti7k=", + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "requires": { + "is-glob": "^2.0.0" + } + }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "requires": { + "find-index": "^0.1.1" + } + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "requires": { + "ini": "^1.3.4" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "got": { + "version": "6.7.1", + "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" + }, + "gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "requires": { + "duplexer": "^0.1.1" + } + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=" + }, + "handlebars": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", + "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", + "requires": { + "async": "^2.5.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", + "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "history": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", + "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==", + "requires": { + "invariant": "^2.2.1", + "loose-envify": "^1.2.0", + "resolve-pathname": "^2.2.0", + "value-equal": "^0.4.0", + "warning": "^3.0.0" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==" + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=" + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + } + }, + "html-webpack-plugin": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.29.0.tgz", + "integrity": "sha1-6Yf0IYU9O2k4yMTIFxhC5f0XryM=", + "requires": { + "bluebird": "^3.4.7", + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "toposort": "^1.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "requires": { + "domelementtype": "1", + "domhandler": "2.1", + "domutils": "1.1", + "readable-stream": "1.0" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "requires": { + "domelementtype": "1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, + "http-errors": { + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-parser-js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", + "integrity": "sha512-cZdEF7r4gfRIq7ezX9J0T+kQmJNOub71dWbgAXVHDct80TKP4MCETtZQ31xyv38UwgzkWPYF/Xc0ge55dW9Z9w==" + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "requires": { + "http-proxy": "^1.16.2", + "is-glob": "^3.1.0", + "lodash": "^4.17.2", + "micromatch": "^2.3.11" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "requires": { + "postcss": "^6.0.1" + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "requires": { + "meow": "^3.3.0" + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=" + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "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=" + }, + "is-generator-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", + "integrity": "sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=" + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "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=" + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "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=" + }, + "is-root": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-1.0.0.tgz", + "integrity": "sha1-B7bCM7w5TNnQK6FclmvWZg1jQtU=" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "istanbul-api": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", + "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", + "requires": { + "async": "^2.1.4", + "fileset": "^2.0.2", + "istanbul-lib-coverage": "^1.2.1", + "istanbul-lib-hook": "^1.2.2", + "istanbul-lib-instrument": "^1.10.2", + "istanbul-lib-report": "^1.1.5", + "istanbul-lib-source-maps": "^1.2.6", + "istanbul-reports": "^1.5.1", + "js-yaml": "^3.7.0", + "mkdirp": "^0.5.1", + "once": "^1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==" + }, + "istanbul-lib-hook": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", + "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", + "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", + "requires": { + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", + "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "istanbul-reports": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", + "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", + "requires": { + "handlebars": "^4.0.3" + } + }, + "jest": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.7.1.tgz", + "integrity": "sha512-AbvRar5r++izmqo5gdbAjTeA6uNRGoNRuj5vHB0OnDXo2DXWZJVuaObiGgtlvhKb+cWy2oYbQSfxv7Q7GjnAtA==", + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.7.1" + }, + "dependencies": { + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "jest-cli": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.7.1.tgz", + "integrity": "sha512-32OBoSCVPzcTslGFl6yVCMzB2SqX3IrWwZCY5mZYkb0D2WsogmU3eV2o8z7+gRQa4o4sZPX/k7GU+II7CxM6WQ==", + "requires": { + "@jest/core": "^24.7.1", + "@jest/test-result": "^24.7.1", + "@jest/types": "^24.7.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.7.1", + "jest-util": "^24.7.1", + "jest-validate": "^24.7.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^12.0.2" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "jest-changed-files": { + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.7.0.tgz", + "integrity": "sha512-33BgewurnwSfJrW7T5/ZAXGE44o7swLslwh8aUckzq2e17/2Os1V0QU506ZNik3hjs8MgnEMKNkcud442NCDTw==", + "requires": { + "@jest/types": "^24.7.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "jest-config": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.7.1.tgz", + "integrity": "sha512-8FlJNLI+X+MU37j7j8RE4DnJkvAghXmBWdArVzypW6WxfGuxiL/CCkzBg0gHtXhD2rxla3IMOSUAHylSKYJ83g==", + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.7.1", + "@jest/types": "^24.7.0", + "babel-jest": "^24.7.1", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.7.1", + "jest-environment-node": "^24.7.1", + "jest-get-type": "^24.3.0", + "jest-jasmine2": "^24.7.1", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.7.1", + "jest-util": "^24.7.1", + "jest-validate": "^24.7.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.7.0", + "realpath-native": "^1.1.0" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "jest-get-type": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", + "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "jest-diff": { + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.7.0.tgz", + "integrity": "sha512-ULQZ5B1lWpH70O4xsANC4tf4Ko6RrpwhE3PtG6ERjMg1TiYTC2Wp4IntJVGro6a8HG9luYHhhmF4grF0Pltckg==", + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.3.0", + "jest-get-type": "^24.3.0", + "pretty-format": "^24.7.0" + }, + "dependencies": { + "jest-get-type": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", + "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==" + } + } + }, + "jest-docblock": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.3.0.tgz", + "integrity": "sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg==", + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.7.1.tgz", + "integrity": "sha512-4fsS8fEfLa3lfnI1Jw6NxjhyRTgfpuOVTeUZZFyVYqeTa4hPhr2YkToUhouuLTrL2eMGOfpbdMyRx0GQ/VooKA==", + "requires": { + "@jest/types": "^24.7.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.3.0", + "jest-util": "^24.7.1", + "pretty-format": "^24.7.0" + }, + "dependencies": { + "jest-get-type": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", + "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==" + } + } + }, + "jest-environment-jsdom": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.7.1.tgz", + "integrity": "sha512-Gnhb+RqE2JuQGb3kJsLF8vfqjt3PHKSstq4Xc8ic+ax7QKo4Z0RWGucU3YV+DwKR3T9SYc+3YCUQEJs8r7+Jxg==", + "requires": { + "@jest/environment": "^24.7.1", + "@jest/fake-timers": "^24.7.1", + "@jest/types": "^24.7.0", + "jest-mock": "^24.7.0", + "jest-util": "^24.7.1", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.7.1.tgz", + "integrity": "sha512-GJJQt1p9/C6aj6yNZMvovZuxTUd+BEJprETdvTKSb4kHcw4mFj8777USQV0FJoJ4V3djpOwA5eWyPwfq//PFBA==", + "requires": { + "@jest/environment": "^24.7.1", + "@jest/fake-timers": "^24.7.1", + "@jest/types": "^24.7.0", + "jest-mock": "^24.7.0", + "jest-util": "^24.7.1" + } + }, + "jest-get-type": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==" + }, + "jest-haste-map": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.7.1.tgz", + "integrity": "sha512-g0tWkzjpHD2qa03mTKhlydbmmYiA2KdcJe762SbfFo/7NIMgBWAA0XqQlApPwkWOF7Cxoi/gUqL0i6DIoLpMBw==", + "requires": { + "@jest/types": "^24.7.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.4.0", + "jest-util": "^24.7.1", + "jest-worker": "^24.6.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.8.tgz", + "integrity": "sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA==", + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "optional": true + } + } + }, + "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "requires": { - "has-flag": "^1.0.0" + "kind-of": "^6.0.0" } - } - } - }, - "istanbul-lib-source-maps": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", - "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", - "requires": { - "debug": "^3.1.0", - "istanbul-lib-coverage": "^1.2.1", - "mkdirp": "^0.5.1", - "rimraf": "^2.6.1", - "source-map": "^0.5.3" - }, - "dependencies": { - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "requires": { - "ms": "^2.1.1" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "istanbul-reports": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", - "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", - "requires": { - "handlebars": "^4.0.3" - } - }, - "jest": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-23.6.0.tgz", - "integrity": "sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw==", - "requires": { - "import-local": "^1.0.0", - "jest-cli": "^23.6.0" - }, - "dependencies": { - "jest-cli": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.6.0.tgz", - "integrity": "sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ==", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "import-local": "^1.0.0", - "is-ci": "^1.0.10", - "istanbul-api": "^1.3.1", - "istanbul-lib-coverage": "^1.2.0", - "istanbul-lib-instrument": "^1.10.1", - "istanbul-lib-source-maps": "^1.2.4", - "jest-changed-files": "^23.4.2", - "jest-config": "^23.6.0", - "jest-environment-jsdom": "^23.4.0", - "jest-get-type": "^22.1.0", - "jest-haste-map": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0", - "jest-resolve-dependencies": "^23.6.0", - "jest-runner": "^23.6.0", - "jest-runtime": "^23.6.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "jest-watcher": "^23.4.0", - "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", - "node-notifier": "^5.2.1", - "prompts": "^0.1.9", - "realpath-native": "^1.0.0", - "rimraf": "^2.5.4", - "slash": "^1.0.0", - "string-length": "^2.0.0", - "strip-ansi": "^4.0.0", - "which": "^1.2.12", - "yargs": "^11.0.0" + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } } - } - } - }, - "jest-changed-files": { - "version": "23.4.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz", - "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==", - "requires": { - "throat": "^4.0.0" - } - }, - "jest-config": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.6.0.tgz", - "integrity": "sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ==", - "requires": { - "babel-core": "^6.0.0", - "babel-jest": "^23.6.0", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^23.4.0", - "jest-environment-node": "^23.4.0", - "jest-get-type": "^22.1.0", - "jest-jasmine2": "^23.6.0", - "jest-regex-util": "^23.3.0", - "jest-resolve": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "micromatch": "^2.3.11", - "pretty-format": "^23.6.0" - } - }, - "jest-diff": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.6.0.tgz", - "integrity": "sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==", - "requires": { - "chalk": "^2.0.1", - "diff": "^3.2.0", - "jest-get-type": "^22.1.0", - "pretty-format": "^23.6.0" - } - }, - "jest-docblock": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", - "integrity": "sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=", - "requires": { - "detect-newline": "^2.1.0" - } - }, - "jest-each": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.6.0.tgz", - "integrity": "sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg==", - "requires": { - "chalk": "^2.0.1", - "pretty-format": "^23.6.0" - } - }, - "jest-environment-jsdom": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", - "integrity": "sha1-BWp5UrP+pROsYqFAosNox52eYCM=", - "requires": { - "jest-mock": "^23.2.0", - "jest-util": "^23.4.0", - "jsdom": "^11.5.1" - } - }, - "jest-environment-node": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", - "integrity": "sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=", - "requires": { - "jest-mock": "^23.2.0", - "jest-util": "^23.4.0" - } - }, - "jest-get-type": { - "version": "22.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", - "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==" - }, - "jest-haste-map": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.6.0.tgz", - "integrity": "sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg==", - "requires": { - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.1.11", - "invariant": "^2.2.4", - "jest-docblock": "^23.2.0", - "jest-serializer": "^23.0.1", - "jest-worker": "^23.2.0", - "micromatch": "^2.3.11", - "sane": "^2.0.0" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "nan": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", + "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==", + "optional": true + } } }, "jest-jasmine2": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz", - "integrity": "sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ==", - "requires": { - "babel-traverse": "^6.0.0", + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.7.1.tgz", + "integrity": "sha512-Y/9AOJDV1XS44wNwCaThq4Pw3gBPiOv/s6NcbOAkVRRUEPu+36L2xoPsqQXsDrxoBerqeyslpn2TpCI8Zr6J2w==", + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.7.1", + "@jest/test-result": "^24.7.1", + "@jest/types": "^24.7.0", "chalk": "^2.0.1", "co": "^4.6.0", - "expect": "^23.6.0", - "is-generator-fn": "^1.0.0", - "jest-diff": "^23.6.0", - "jest-each": "^23.6.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "pretty-format": "^23.6.0" + "expect": "^24.7.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.7.1", + "jest-matcher-utils": "^24.7.0", + "jest-message-util": "^24.7.1", + "jest-runtime": "^24.7.1", + "jest-snapshot": "^24.7.1", + "jest-util": "^24.7.1", + "pretty-format": "^24.7.0", + "throat": "^4.0.0" + }, + "dependencies": { + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==" + } } }, "jest-leak-detector": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz", - "integrity": "sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg==", + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.7.0.tgz", + "integrity": "sha512-zV0qHKZGXtmPVVzT99CVEcHE9XDf+8LwiE0Ob7jjezERiGVljmqKFWpV2IkG+rkFIEUHFEkMiICu7wnoPM/RoQ==", "requires": { - "pretty-format": "^23.6.0" + "pretty-format": "^24.7.0" } }, "jest-matcher-utils": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz", - "integrity": "sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==", + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.7.0.tgz", + "integrity": "sha512-158ieSgk3LNXeUhbVJYRXyTPSCqNgVXOp/GT7O94mYd3pk/8+odKTyR1JLtNOQSPzNi8NFYVONtvSWA/e1RDXg==", "requires": { "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", - "pretty-format": "^23.6.0" + "jest-diff": "^24.7.0", + "jest-get-type": "^24.3.0", + "pretty-format": "^24.7.0" + }, + "dependencies": { + "jest-get-type": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", + "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==" + } } }, "jest-matchers": { @@ -5786,110 +8489,395 @@ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-20.0.3.tgz", "integrity": "sha1-hburXRM+RGJbGfr4xqpRItCF12I=" }, - "pretty-format": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-20.0.3.tgz", - "integrity": "sha1-Ag41ClYKH+GpjcO+tsz/s4beixQ=", + "pretty-format": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-20.0.3.tgz", + "integrity": "sha1-Ag41ClYKH+GpjcO+tsz/s4beixQ=", + "requires": { + "ansi-regex": "^2.1.1", + "ansi-styles": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "jest-message-util": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.7.1.tgz", + "integrity": "sha512-dk0gqVtyqezCHbcbk60CdIf+8UHgD+lmRHifeH3JRcnAqh4nEyPytSc9/L1+cQyxC+ceaeP696N4ATe7L+omcg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.7.1", + "@jest/types": "^24.7.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "ansi-regex": "^2.1.1", - "ansi-styles": "^3.0.0" + "kind-of": "^3.0.2" }, "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { - "color-convert": "^1.9.0" + "is-buffer": "^1.1.5" } } } }, - "strip-ansi": { + "isobject": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "requires": { - "ansi-regex": "^2.0.0" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } }, - "supports-color": { + "slash": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" } } }, - "jest-message-util": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", - "integrity": "sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=", + "jest-mock": { + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.7.0.tgz", + "integrity": "sha512-6taW4B4WUcEiT2V9BbOmwyGuwuAFT2G8yghF7nyNW1/2gq5+6aTqSPcS9lS6ArvEkX55vbPAS/Jarx5LSm4Fng==", "requires": { - "@babel/code-frame": "^7.0.0-beta.35", - "chalk": "^2.0.1", - "micromatch": "^2.3.11", - "slash": "^1.0.0", - "stack-utils": "^1.0.1" + "@jest/types": "^24.7.0" } }, - "jest-mock": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", - "integrity": "sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=" + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==" }, "jest-regex-util": { - "version": "23.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", - "integrity": "sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=" + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz", + "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==" }, "jest-resolve": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.6.0.tgz", - "integrity": "sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==", + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.7.1.tgz", + "integrity": "sha512-Bgrc+/UUZpGJ4323sQyj85hV9d+ANyPNu6XfRDUcyFNX1QrZpSoM0kE4Mb2vZMAYTJZsBFzYe8X1UaOkOELSbw==", "requires": { + "@jest/types": "^24.7.0", "browser-resolve": "^1.11.3", "chalk": "^2.0.1", - "realpath-native": "^1.0.0" + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" } }, "jest-resolve-dependencies": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz", - "integrity": "sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA==", + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.7.1.tgz", + "integrity": "sha512-2Eyh5LJB2liNzfk4eo7bD1ZyBbqEJIyyrFtZG555cSWW9xVHxII2NuOkSl1yUYTAYCAmM2f2aIT5A7HzNmubyg==", "requires": { - "jest-regex-util": "^23.3.0", - "jest-snapshot": "^23.6.0" + "@jest/types": "^24.7.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.7.1" } }, "jest-runner": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.6.0.tgz", - "integrity": "sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA==", - "requires": { + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.7.1.tgz", + "integrity": "sha512-aNFc9liWU/xt+G9pobdKZ4qTeG/wnJrJna3VqunziDNsWT3EBpmxXZRBMKCsNMyfy+A/XHiV+tsMLufdsNdgCw==", + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.7.1", + "@jest/test-result": "^24.7.1", + "@jest/types": "^24.7.0", + "chalk": "^2.4.2", "exit": "^0.1.2", - "graceful-fs": "^4.1.11", - "jest-config": "^23.6.0", - "jest-docblock": "^23.2.0", - "jest-haste-map": "^23.6.0", - "jest-jasmine2": "^23.6.0", - "jest-leak-detector": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-runtime": "^23.6.0", - "jest-util": "^23.4.0", - "jest-worker": "^23.2.0", + "graceful-fs": "^4.1.15", + "jest-config": "^24.7.1", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.7.1", + "jest-jasmine2": "^24.7.1", + "jest-leak-detector": "^24.7.0", + "jest-message-util": "^24.7.1", + "jest-resolve": "^24.7.1", + "jest-runtime": "^24.7.1", + "jest-util": "^24.7.1", + "jest-worker": "^24.6.0", "source-map-support": "^0.5.6", "throat": "^4.0.0" }, "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-support": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", - "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -5898,33 +8886,40 @@ } }, "jest-runtime": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.6.0.tgz", - "integrity": "sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw==", - "requires": { - "babel-core": "^6.0.0", - "babel-plugin-istanbul": "^4.1.6", + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.7.1.tgz", + "integrity": "sha512-0VAbyBy7tll3R+82IPJpf6QZkokzXPIS71aDeqh+WzPRXRCNz6StQ45otFariPdJ4FmXpDiArdhZrzNAC3sj6A==", + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.7.1", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.7.1", + "@jest/types": "^24.7.0", + "@types/yargs": "^12.0.2", "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", "exit": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.11", - "jest-config": "^23.6.0", - "jest-haste-map": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-regex-util": "^23.3.0", - "jest-resolve": "^23.6.0", - "jest-snapshot": "^23.6.0", - "jest-util": "^23.4.0", - "jest-validate": "^23.6.0", - "micromatch": "^2.3.11", - "realpath-native": "^1.0.0", - "slash": "^1.0.0", - "strip-bom": "3.0.0", - "write-file-atomic": "^2.1.0", - "yargs": "^11.0.0" + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.7.1", + "jest-haste-map": "^24.7.1", + "jest-message-util": "^24.7.1", + "jest-mock": "^24.7.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.7.1", + "jest-snapshot": "^24.7.1", + "jest-util": "^24.7.1", + "jest-validate": "^24.7.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^12.0.2" }, "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -5933,42 +8928,71 @@ } }, "jest-serializer": { - "version": "23.0.1", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz", - "integrity": "sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=" + "version": "24.4.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.4.0.tgz", + "integrity": "sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q==" }, "jest-snapshot": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz", - "integrity": "sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==", + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.7.1.tgz", + "integrity": "sha512-8Xk5O4p+JsZZn4RCNUS3pxA+ORKpEKepE+a5ejIKrId9CwrVN0NY+vkqEkXqlstA5NMBkNahXkR/4qEBy0t5yA==", "requires": { - "babel-types": "^6.0.0", + "@babel/types": "^7.0.0", + "@jest/types": "^24.7.0", "chalk": "^2.0.1", - "jest-diff": "^23.6.0", - "jest-matcher-utils": "^23.6.0", - "jest-message-util": "^23.4.0", - "jest-resolve": "^23.6.0", + "expect": "^24.7.1", + "jest-diff": "^24.7.0", + "jest-matcher-utils": "^24.7.0", + "jest-message-util": "^24.7.1", + "jest-resolve": "^24.7.1", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "pretty-format": "^23.6.0", + "pretty-format": "^24.7.0", "semver": "^5.5.0" } }, "jest-util": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", - "integrity": "sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=", - "requires": { - "callsites": "^2.0.0", + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.7.1.tgz", + "integrity": "sha512-/KilOue2n2rZ5AnEBYoxOXkeTu6vi7cjgQ8MXEkih0oeAXT6JkS3fr7/j8+engCjciOU1Nq5loMSKe0A1oeX0A==", + "requires": { + "@jest/console": "^24.7.1", + "@jest/fake-timers": "^24.7.1", + "@jest/source-map": "^24.3.0", + "@jest/test-result": "^24.7.1", + "@jest/types": "^24.7.0", + "callsites": "^3.0.0", "chalk": "^2.0.1", - "graceful-fs": "^4.1.11", - "is-ci": "^1.0.10", - "jest-message-util": "^23.4.0", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", "mkdirp": "^0.5.1", - "slash": "^1.0.0", + "slash": "^2.0.0", "source-map": "^0.6.0" }, "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==" + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -5977,32 +9001,61 @@ } }, "jest-validate": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz", - "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==", + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.7.0.tgz", + "integrity": "sha512-cgai/gts9B2chz1rqVdmLhzYxQbgQurh1PEQSvSgPZ8KGa1AqXsqC45W5wKEwzxKrWqypuQrQxnF4+G9VejJJA==", "requires": { + "@jest/types": "^24.7.0", + "camelcase": "^5.0.0", "chalk": "^2.0.1", - "jest-get-type": "^22.1.0", + "jest-get-type": "^24.3.0", "leven": "^2.1.0", - "pretty-format": "^23.6.0" + "pretty-format": "^24.7.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "jest-get-type": { + "version": "24.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", + "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==" + } } }, "jest-watcher": { - "version": "23.4.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz", - "integrity": "sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=", + "version": "24.7.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.7.1.tgz", + "integrity": "sha512-Wd6TepHLRHVKLNPacEsBwlp9raeBIO+01xrN24Dek4ggTS8HHnOzYSFnvp+6MtkkJ3KfMzy220KTi95e2rRkrw==", "requires": { + "@jest/test-result": "^24.7.1", + "@jest/types": "^24.7.0", + "@types/yargs": "^12.0.9", "ansi-escapes": "^3.0.0", "chalk": "^2.0.1", + "jest-util": "^24.7.1", "string-length": "^2.0.0" } }, "jest-worker": { - "version": "23.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", - "integrity": "sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=", + "version": "24.6.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", + "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", "requires": { - "merge-stream": "^1.0.1" + "merge-stream": "^1.0.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, "js-base64": { @@ -6072,6 +9125,11 @@ "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -6151,9 +9209,9 @@ } }, "kleur": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz", - "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==" }, "latest-version": { "version": "3.1.0", @@ -6303,6 +9361,11 @@ "lodash._reinterpolate": "~3.0.0" } }, + "lodash.unescape": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz", + "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=" + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -6377,6 +9440,14 @@ "tmpl": "1.0.x" } }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "requires": { + "p-defer": "^1.0.0" + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -6701,6 +9772,11 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, "no-case": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", @@ -6756,6 +9832,11 @@ } } }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=" + }, "node-notifier": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.3.0.tgz", @@ -7025,11 +10106,29 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "requires": { + "p-reduce": "^1.0.0" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" + }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -7051,6 +10150,11 @@ "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" + }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -7236,6 +10340,14 @@ "pinkie": "^2.0.0" } }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, "pkg-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", @@ -9115,18 +12227,20 @@ } }, "pretty-format": { - "version": "23.6.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", - "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.7.0.tgz", + "integrity": "sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA==", "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" + "@jest/types": "^24.7.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" } } }, @@ -9159,12 +12273,12 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" }, "prompts": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", - "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.0.4.tgz", + "integrity": "sha512-HTzM3UWp/99A0gk51gAegwo1QRYA7xjcZufMNe33rCclFszUYAuHe1fIN/3ZmiHeGPkUsNaRyQm1hHOfM0PKxA==", "requires": { - "kleur": "^2.0.1", - "sisteransi": "^0.1.1" + "kleur": "^3.0.2", + "sisteransi": "^1.0.0" } }, "prop-types": { @@ -9363,14 +12477,14 @@ } }, "react": { - "version": "16.8.3", - "resolved": "https://registry.npmjs.org/react/-/react-16.8.3.tgz", - "integrity": "sha512-3UoSIsEq8yTJuSu0luO1QQWYbgGEILm+eJl2QN/VLDi7hL+EN18M3q3oVZwmVzzBJ3DkM7RMdRwBmZZ+b4IzSA==", + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz", + "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.13.3" + "scheduler": "^0.13.6" } }, "react-dev-utils": { @@ -9431,14 +12545,14 @@ } }, "react-dom": { - "version": "16.8.3", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.3.tgz", - "integrity": "sha512-ttMem9yJL4/lpItZAQ2NTFAbV7frotHk5DZEHXUOws2rMmrsvh1Na7ThGT0dTzUIl6pqTOi5tYREfL8AEna3lA==", + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz", + "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", - "scheduler": "^0.13.3" + "scheduler": "^0.13.6" } }, "react-error-overlay": { @@ -9447,21 +12561,21 @@ "integrity": "sha512-xXUbDAZkU08aAkjtUvldqbvI04ogv+a1XdHxvYuHPYKIVk/42BIOD0zSKTHAWV4+gDy3yGm283z2072rA2gdtw==" }, "react-is": { - "version": "16.8.3", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.3.tgz", - "integrity": "sha512-Y4rC1ZJmsxxkkPuMLwvKvlL1Zfpbcu+Bf4ZigkHup3v9EfdYhAlWAaVyA19olXq2o2mGn0w+dFKvk3pVVlYcIA==" + "version": "16.8.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", + "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==" }, "react-redux": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-6.0.1.tgz", - "integrity": "sha512-T52I52Kxhbqy/6TEfBv85rQSDz6+Y28V/pf52vDWs1YRXG19mcFOGfHnY2HsNFHyhP+ST34Aih98fvt6tqwVcQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.0.2.tgz", + "integrity": "sha512-uKRuMgQt8dWbcz0U75oFK5tDo3boyAKrqvf/j94vpqRFFZfyDDy4kofUgloFIGyuKTq2Zz51zgK9RzOTFXk5ew==", "requires": { - "@babel/runtime": "^7.3.1", + "@babel/runtime": "^7.4.3", "hoist-non-react-statics": "^3.3.0", "invariant": "^2.2.4", "loose-envify": "^1.4.0", "prop-types": "^15.7.2", - "react-is": "^16.8.2" + "react-is": "^16.8.6" }, "dependencies": { "hoist-non-react-statics": { @@ -9484,6 +12598,16 @@ } } }, + "react-redux-typescript-scripts": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/react-redux-typescript-scripts/-/react-redux-typescript-scripts-1.5.0.tgz", + "integrity": "sha512-1AB/AU8vE0T0rLfPOvgIaI1UbnV91Q3A7Kt6joRLkrvYYB3Yfv1ojdqkE5WlitWeHDoImNzvi8BdTYuFPd2tHw==", + "requires": { + "@typescript-eslint/eslint-plugin": "1.6.0", + "@typescript-eslint/parser": "1.6.0", + "tslint-react": "4.0.0" + } + }, "react-router": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.3.1.tgz", @@ -10078,6 +13202,14 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" }, + "tslint-react": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/tslint-react/-/tslint-react-3.6.0.tgz", + "integrity": "sha512-AIv1QcsSnj7e9pFir6cJ6vIncTqxfqeFF3Lzh8SuuBljueYzEAtByuB6zMaD27BL0xhMEqsZ9s5eHuCONydjBw==", + "requires": { + "tsutils": "^2.13.1" + } + }, "watch": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/watch/-/watch-0.10.0.tgz", @@ -10452,9 +13584,9 @@ } }, "realpath-native": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.2.tgz", - "integrity": "sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", "requires": { "util.promisify": "^1.0.0" } @@ -10528,9 +13660,9 @@ } }, "redux-observable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redux-observable/-/redux-observable-1.0.0.tgz", - "integrity": "sha512-6bXnpqWTBeLaLQjXHyN1giXq4nLxCmv+SUkdmiwBgvmVxvDbdmydvL1Z7DGo0WItyzI/kqXQKiucUuTxnrPRkA==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/redux-observable/-/redux-observable-1.1.0.tgz", + "integrity": "sha512-G0nxgmTZwTK3Z3KoQIL8VQu9n0YCUwEP3wc3zxKQ8zAZm+iYkoZvBqAnBJfLi4EsD1E64KR4s4jFH/dFXpV9Og==" }, "regenerate": { "version": "1.4.0", @@ -10742,6 +13874,11 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" }, + "requireindex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==" + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -10829,9 +13966,9 @@ } }, "rsvp": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", - "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==" + "version": "4.8.4", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.4.tgz", + "integrity": "sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA==" }, "run-async": { "version": "2.3.0", @@ -10889,19 +14026,19 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sane": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", - "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "requires": { + "@cnakazawa/watch": "^1.0.3", "anymatch": "^2.0.0", - "capture-exit": "^1.2.0", - "exec-sh": "^0.2.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", "fb-watchman": "^2.0.0", - "fsevents": "^1.2.3", "micromatch": "^3.1.4", "minimist": "^1.1.1", - "walker": "~1.0.5", - "watch": "~0.18.0" + "walker": "~1.0.5" }, "dependencies": { "arr-diff": { @@ -10941,6 +14078,37 @@ } } }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "exec-sh": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz", + "integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==" + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -11078,6 +14246,14 @@ } } }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", @@ -11156,6 +14332,15 @@ "version": "1.2.0", "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } } } }, @@ -11165,9 +14350,9 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "scheduler": { - "version": "0.13.3", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.3.tgz", - "integrity": "sha512-UxN5QRYWtpR1egNWzJcVLk8jlegxAugswQc984lD3kU7NuobsO37/sRfbpTdBjtnD5TBNFA2Q2oLV5+UmPSmEQ==", + "version": "0.13.6", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz", + "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -11372,9 +14557,9 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "sisteransi": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz", - "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.0.tgz", + "integrity": "sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ==" }, "slash": { "version": "1.0.0", @@ -12391,25 +15576,34 @@ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, "tslint": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.13.0.tgz", - "integrity": "sha512-ECOOQRxXCYnUUePG5h/+Z1Zouobk3KFpIHA9aKBB/nnMxs97S1JJPDGt5J4cGm1y9U9VmVlfboOxA8n1kSNzGw==", + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.16.0.tgz", + "integrity": "sha512-UxG2yNxJ5pgGwmMzPMYh/CCnCnh0HfPgtlVRDs1ykZklufFBL1ZoTlWFRz2NQjcoEiDoRp+JyT0lhBbbH/obyA==", "requires": { - "babel-code-frame": "^6.22.0", + "@babel/code-frame": "^7.0.0", "builtin-modules": "^1.1.1", "chalk": "^2.3.0", "commander": "^2.12.1", "diff": "^3.2.0", "glob": "^7.1.1", - "js-yaml": "^3.7.0", + "js-yaml": "^3.13.0", "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "resolve": "^1.3.2", "semver": "^5.3.0", "tslib": "^1.8.0", - "tsutils": "^2.27.2" + "tsutils": "^2.29.0" }, "dependencies": { + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "resolve": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", @@ -12426,11 +15620,21 @@ "integrity": "sha512-NKWNkThwqE4Snn4Cm6SZB7lV5RMDDFsBwz6fWUkTxOKGjMx8ycOHnjIbhn7dZd5XmssW3CwqUjlANR6EhP9YQw==" }, "tslint-react": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/tslint-react/-/tslint-react-3.6.0.tgz", - "integrity": "sha512-AIv1QcsSnj7e9pFir6cJ6vIncTqxfqeFF3Lzh8SuuBljueYzEAtByuB6zMaD27BL0xhMEqsZ9s5eHuCONydjBw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tslint-react/-/tslint-react-4.0.0.tgz", + "integrity": "sha512-9fNE0fm9zNDx1+b6hgy8rgDN2WsQLRiIrn3+fbqm0tazBVF6jiaCFAITxmU+WSFWYE03Xhp1joCircXOe1WVAQ==", "requires": { - "tsutils": "^2.13.1" + "tsutils": "^3.9.1" + }, + "dependencies": { + "tsutils": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.10.0.tgz", + "integrity": "sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q==", + "requires": { + "tslib": "^1.8.1" + } + } } }, "tsutils": { @@ -12482,14 +15686,12 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "typesafe-actions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typesafe-actions/-/typesafe-actions-4.0.0.tgz", - "integrity": "sha512-VWIQZpUgEqddDbNi1c9eq5T6nzQVGP01HA74O4PXnyzDrewBL6L6usSigH8ZEpqmM/pw59BKttXeiCu6bF7RNA==" + "version": "file:src/typesafe-actions" }, "typescript": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.3.tgz", - "integrity": "sha512-FFgHdPt4T/duxx6Ndf7hwgMZZjZpB+U0nMNGVCYPq0rEzWKjEDobm4J6yb3CS7naZ0yURFqdw9Gwc7UOh/P9oQ==" + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.4.tgz", + "integrity": "sha512-xt5RsIRCEaf6+j9AyOBgvVuAec0i92rgCaS3S+UVf5Z/vF2Hvtsw08wtUTJqp4djwznoAgjSxeCcU4r+CcDBJA==" }, "uglify-js": { "version": "3.4.9", @@ -12800,6 +16002,11 @@ "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" }, + "utility-types": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.5.0.tgz", + "integrity": "sha512-1XdYkHN+Dcgh1PQEER1CF5BXkGLvf7Owor6tYSyEs+lbHi4obz4ZeJZQVZyinKvFaGwriBKRlEk5hiApfhglQg==" + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -12876,22 +16083,6 @@ "loose-envify": "^1.0.0" } }, - "watch": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", - "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", - "requires": { - "exec-sh": "^0.2.0", - "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } - } - }, "watchpack": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", @@ -13774,30 +16965,159 @@ "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==" }, "yargs": { - "version": "11.1.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-11.1.0.tgz", - "integrity": "sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==", + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", "requires": { "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", + "os-locale": "^3.0.0", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", "string-width": "^2.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", + "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } } }, "yargs-parser": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", - "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", "requires": { - "camelcase": "^4.1.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + } } } } diff --git a/codesandbox/package.json b/codesandbox/package.json index 65fa9ea..f14cbbc 100644 --- a/codesandbox/package.json +++ b/codesandbox/package.json @@ -19,29 +19,31 @@ }, "dependencies": { "@babel/polyfill": "7.4.3", - "@types/jest": "23.3.10", - "@types/react": "16.8.4", - "@types/react-dom": "16.8.2", - "@types/react-redux": "6.0.11", - "@types/react-router-dom": "4.3.1", + "@types/jest": "24.0.11", + "@types/react": "16.8.14", + "@types/react-dom": "16.8.4", + "@types/react-redux": "7.0.8", + "@types/react-router-dom": "4.3.2", "@types/react-router-redux": "5.0.18", "cuid": "2.1.6", - "jest": "23.6.0", - "react": "16.8.3", - "react-dom": "16.8.3", - "react-redux": "6.0.1", + "jest": "24.7.1", + "react": "16.8.6", + "react-dom": "16.8.6", + "react-redux": "7.0.2", + "react-redux-typescript-scripts": "1.5.0", "react-router-dom": "4.3.1", "react-router-redux": "5.0.0-alpha.9", "react-scripts-ts": "3.1.0", "redux": "4.0.1", - "redux-observable": "1.0.0", + "redux-observable": "1.1.0", "reselect": "4.0.0", "rxjs": "6.4.0", "tslib": "1.9.3", - "tslint": "5.13.0", - "tslint-react": "3.6.0", - "typesafe-actions": "4.0.0", - "typescript": "3.4.3" + "tslint": "5.16.0", + "tslint-react": "4.0.0", + "typesafe-actions": "file:src/typesafe-actions", + "typescript": "3.4.4", + "utility-types": "3.5.0" }, "devDependencies": {} } diff --git a/codesandbox/src/env.ts b/codesandbox/src/env.ts deleted file mode 100644 index 5cfcf70..0000000 --- a/codesandbox/src/env.ts +++ /dev/null @@ -1 +0,0 @@ -process.env.LOCAL_STORAGE_VERSION = 1; diff --git a/codesandbox/src/features/todos/components/TodoList.tsx b/codesandbox/src/features/todos/components/TodoList.tsx index 759af8f..ea1f3e2 100644 --- a/codesandbox/src/features/todos/components/TodoList.tsx +++ b/codesandbox/src/features/todos/components/TodoList.tsx @@ -3,7 +3,7 @@ import * as React from 'react'; import { connect } from 'react-redux'; import * as selectors from '../selectors'; -import { removeTodo } from '../actions'; +import * as actions from '../actions'; import TodoListItem from './TodoListItem'; @@ -12,7 +12,7 @@ const mapStateToProps = (state: RootState) => ({ todos: selectors.getTodos(state.todos), }); const dispatchProps = { - removeTodo, + removeTodo: actions.removeTodo, }; type Props = ReturnType & typeof dispatchProps; diff --git a/codesandbox/src/index.js b/codesandbox/src/index.js deleted file mode 100644 index fae3e35..0000000 --- a/codesandbox/src/index.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; -import './index.css'; -import App from './App'; -import registerServiceWorker from './registerServiceWorker'; - -ReactDOM.render(, document.getElementById('root')); -registerServiceWorker(); diff --git a/codesandbox/src/index.tsx b/codesandbox/src/index.tsx index 5f490b7..6df768d 100644 --- a/codesandbox/src/index.tsx +++ b/codesandbox/src/index.tsx @@ -1,11 +1,7 @@ -// tslint:disable-next-line:no-import-side-effect +// tslint:disable-next-line: no-import-side-effect import '@babel/polyfill'; -// console.log('polyfills'); - -// tslint:disable-next-line:no-import-side-effect +// tslint:disable-next-line: no-import-side-effect import 'tslib'; -// tslint:disable-next-line:no-import-side-effect -import './env'; import * as React from 'react'; import { render } from 'react-dom'; diff --git a/codesandbox/src/typesafe-actions/action.d.ts b/codesandbox/src/typesafe-actions/action.d.ts new file mode 100644 index 0000000..5467671 --- /dev/null +++ b/codesandbox/src/typesafe-actions/action.d.ts @@ -0,0 +1,37 @@ +import { StringType } from './type-helpers'; +export declare function action(type: T, payload: undefined, meta: undefined, error: E): { + type: T; + error: E; +}; +export declare function action(type: T, payload: undefined, meta: M, error: E): { + type: T; + meta: M; + error: E; +}; +export declare function action(type: T, payload: P, meta: undefined, error: E): { + type: T; + payload: P; + error: E; +}; +export declare function action(type: T, payload: P, meta: M, error: E): { + type: T; + payload: P; + meta: M; + error: E; +}; +export declare function action(type: T, payload: undefined, meta: M): { + type: T; + meta: M; +}; +export declare function action(type: T, payload: P, meta: M): { + type: T; + payload: P; + meta: M; +}; +export declare function action(type: T, payload: P): { + type: T; + payload: P; +}; +export declare function action(type: T): { + type: T; +}; diff --git a/codesandbox/src/typesafe-actions/create-action-deprecated.d.ts b/codesandbox/src/typesafe-actions/create-action-deprecated.d.ts new file mode 100644 index 0000000..4f89330 --- /dev/null +++ b/codesandbox/src/typesafe-actions/create-action-deprecated.d.ts @@ -0,0 +1,12 @@ +import { StringType } from './type-helpers'; +interface FSA { + type: T; + payload?: P; + meta?: M; + error?: E; +} +export declare function createActionDeprecated FSA>(actionType: T, creatorFunction: AC): AC; +export declare function createActionDeprecated { + type: T; +}>(actionType: T): AC; +export {}; diff --git a/codesandbox/src/typesafe-actions/create-action.d.ts b/codesandbox/src/typesafe-actions/create-action.d.ts new file mode 100644 index 0000000..ee83974 --- /dev/null +++ b/codesandbox/src/typesafe-actions/create-action.d.ts @@ -0,0 +1,17 @@ +import { StringType, ActionCreator } from './type-helpers'; +export declare type PayloadMetaAction = P extends undefined ? M extends undefined ? { + type: T; +} : { + type: T; + meta: M; +} : M extends undefined ? { + type: T; + payload: P; +} : { + type: T; + payload: P; + meta: M; +}; +export declare function createAction = () => { + type: T; +}>(type: T, createHandler?: (actionCallback:

(payload?: P, meta?: M) => PayloadMetaAction) => AC): AC; diff --git a/codesandbox/src/typesafe-actions/create-async-action.d.ts b/codesandbox/src/typesafe-actions/create-async-action.d.ts new file mode 100644 index 0000000..c8911f6 --- /dev/null +++ b/codesandbox/src/typesafe-actions/create-async-action.d.ts @@ -0,0 +1,10 @@ +import { StringType, ActionBuilderConstructor } from './type-helpers'; +export interface AsyncActionBuilder { + (): AsyncActionBuilderConstructor; +} +export declare type AsyncActionBuilderConstructor = { + request: ActionBuilderConstructor; + success: ActionBuilderConstructor; + failure: ActionBuilderConstructor; +}; +export declare function createAsyncAction(requestType: T1, successType: T2, failureType: T3): AsyncActionBuilder; diff --git a/codesandbox/src/typesafe-actions/create-custom-action.d.ts b/codesandbox/src/typesafe-actions/create-custom-action.d.ts new file mode 100644 index 0000000..e7895cf --- /dev/null +++ b/codesandbox/src/typesafe-actions/create-custom-action.d.ts @@ -0,0 +1,4 @@ +import { ActionCreator, StringType } from './type-helpers'; +export declare function createCustomAction = () => { + type: T; +}>(type: T, createHandler?: (type: T) => AC): AC; diff --git a/codesandbox/src/typesafe-actions/create-reducer.d.ts b/codesandbox/src/typesafe-actions/create-reducer.d.ts new file mode 100644 index 0000000..52739a9 --- /dev/null +++ b/codesandbox/src/typesafe-actions/create-reducer.d.ts @@ -0,0 +1,70 @@ +import { RootAction } from '.'; +export declare function createReducer(initialState: S): ((state: S, action: A) => S) & { + addHandler: A, TCreatorAction extends A extends ReturnType ? A : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { + addHandler: ["type"], TTypeAction extends Exclude extends { + type: TType; + } ? { + type: TType; + } & Exclude : never, TCreator extends (...args: any[]) => Exclude, TCreatorAction extends Exclude extends ReturnType ? ReturnType & Exclude : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { + addHandler: , TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { + type: TType; + } ? { + type: TType; + } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { + addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { + type: TType; + } ? { + type: TType; + } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { + addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { + type: TType; + } ? { + type: TType; + } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { + addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { + type: TType; + } ? { + type: TType; + } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { + addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { + type: TType; + } ? { + type: TType; + } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { + addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { + type: TType; + } ? { + type: TType; + } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { + addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { + type: TType; + } ? { + type: TType; + } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { + addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { + type: TType; + } ? { + type: TType; + } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { + addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { + type: TType; + } ? { + type: TType; + } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { + addHandler: any; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; +}; diff --git a/codesandbox/src/typesafe-actions/create-standard-action.d.ts b/codesandbox/src/typesafe-actions/create-standard-action.d.ts new file mode 100644 index 0000000..610723b --- /dev/null +++ b/codesandbox/src/typesafe-actions/create-standard-action.d.ts @@ -0,0 +1,6 @@ +import { StringType, ActionBuilderConstructor, ActionBuilderMap } from './type-helpers'; +export interface ActionBuilder { +

(): ActionBuilderConstructor; + map(fn: (payload: P, meta: M) => R): ActionBuilderMap; +} +export declare function createStandardAction(type: T): ActionBuilder; diff --git a/codesandbox/src/typesafe-actions/get-type.d.ts b/codesandbox/src/typesafe-actions/get-type.d.ts new file mode 100644 index 0000000..1230a5b --- /dev/null +++ b/codesandbox/src/typesafe-actions/get-type.d.ts @@ -0,0 +1,2 @@ +import { StringType, ActionCreator, TypeMeta } from './type-helpers'; +export declare function getType(actionCreator: ActionCreator & TypeMeta): T; diff --git a/codesandbox/src/typesafe-actions/index.d.ts b/codesandbox/src/typesafe-actions/index.d.ts new file mode 100644 index 0000000..49d6938 --- /dev/null +++ b/codesandbox/src/typesafe-actions/index.d.ts @@ -0,0 +1,11 @@ +export { action } from './action'; +export { createAction } from './create-action'; +export { createStandardAction } from './create-standard-action'; +export { createCustomAction } from './create-custom-action'; +export { createAsyncAction } from './create-async-action'; +export { createReducer } from './create-reducer'; +export { getType } from './get-type'; +export { isOfType } from './is-of-type'; +export { isActionOf } from './is-action-of'; +export { ActionType, StateType, ActionCreator, TypeMeta } from './type-helpers'; +export { createActionDeprecated } from './create-action-deprecated'; diff --git a/codesandbox/src/typesafe-actions/index.esm.js b/codesandbox/src/typesafe-actions/index.esm.js new file mode 100644 index 0000000..b9e8b3f --- /dev/null +++ b/codesandbox/src/typesafe-actions/index.esm.js @@ -0,0 +1,223 @@ +function checkIsEmpty(arg, argPosition) { + if (argPosition === void 0) { argPosition = 1; } + return arg == null; +} +function throwIsEmpty(argPosition) { + if (argPosition === void 0) { argPosition = 1; } + throw new Error("Argument " + argPosition + " is empty."); +} +function checkValidActionCreator(arg) { + return typeof arg === 'function' && 'getType' in arg; +} +function checkInvalidActionCreator(arg) { + return !checkValidActionCreator(arg); +} +function throwInvalidActionCreator(argPosition) { + if (argPosition === void 0) { argPosition = 1; } + throw new Error("Argument " + argPosition + " is invalid, it should be an action-creator instance from \"typesafe-actions\""); +} +function checkInvalidActionCreatorInArray(arg, idx) { + if (arg == null) { + throw new Error("Argument contains array with empty element at index " + idx); + } + else if (arg.getType == null) { + throw new Error("Argument contains array with invalid element at index " + idx + ", it should be an action-creator instance from \"typesafe-actions\""); + } +} +function checkValidActionType(arg) { + return typeof arg === 'string' || typeof arg === 'symbol'; +} +function checkInvalidActionType(arg) { + return !checkValidActionType(arg); +} +function throwInvalidActionType(argPosition) { + if (argPosition === void 0) { argPosition = 1; } + throw new Error("Argument " + argPosition + " is invalid, it should be an action type of type: string | symbol"); +} +function checkInvalidActionTypeInArray(arg, idx) { + if (arg == null) { + throw new Error("Argument contains array with empty element at index " + idx); + } + else if (typeof arg !== 'string' && typeof arg !== 'symbol') { + throw new Error("Argument contains array with invalid element at index " + idx + ", it should be of type: string | symbol"); + } +} +function throwInvalidActionTypeOrActionCreator(argPosition) { + if (argPosition === void 0) { argPosition = 1; } + throw new Error("Argument " + argPosition + " is invalid, it should be an action-creator instance from \"typesafe-actions\" or action type of type: string | symbol"); +} + +function action(type, payload, meta, error) { + if (checkIsEmpty(type)) { + throwIsEmpty(1); + } + if (checkInvalidActionType(type)) { + throwInvalidActionCreator(1); + } + return { type: type, payload: payload, meta: meta, error: error }; +} + +function createAction(type, createHandler) { + var actionCreator = createHandler == null + ? (function () { return action(type); }) + : createHandler(action.bind(null, type)); + return Object.assign(actionCreator, { + getType: function () { return type; }, + toString: function () { return type; }, + }); +} + +function createCustomAction(type, createHandler) { + if (checkIsEmpty(type)) { + throwIsEmpty(1); + } + if (checkInvalidActionType(type)) { + throwInvalidActionType(1); + } + var actionCreator = createHandler != null ? createHandler(type) : (function () { return ({ type: type }); }); + return Object.assign(actionCreator, { + getType: function () { return type; }, + toString: function () { return type; }, + }); +} + +function createStandardAction(type) { + if (checkIsEmpty(type)) { + throwIsEmpty(1); + } + if (checkInvalidActionType(type)) { + throwInvalidActionType(1); + } + function constructor() { + return createCustomAction(type, function (_type) { return function (payload, meta) { return ({ + type: _type, + payload: payload, + meta: meta, + }); }; }); + } + function map(fn) { + return createCustomAction(type, function (_type) { return function (payload, meta) { + return Object.assign(fn(payload, meta), { type: _type }); + }; }); + } + return Object.assign(constructor, { map: map }); +} + +function createAsyncAction(requestType, successType, failureType) { + [requestType, successType, failureType].forEach(checkInvalidActionTypeInArray); + function constructor() { + return { + request: createCustomAction(requestType, function (type) { return function (payload) { return ({ + type: type, + payload: payload, + }); }; }), + success: createCustomAction(successType, function (type) { return function (payload) { return ({ + type: type, + payload: payload, + }); }; }), + failure: createCustomAction(failureType, function (type) { return function (payload) { return ({ + type: type, + payload: payload, + }); }; }), + }; + } + return Object.assign(constructor); +} + +function getType(actionCreator) { + if (checkIsEmpty(actionCreator)) { + throwIsEmpty(1); + } + if (checkInvalidActionCreator(actionCreator)) { + throwInvalidActionCreator(1); + } + return actionCreator.getType(); +} + +function createReducer(initialState) { + var handlers = {}; + var reducer = function (state, action) { + if (state === void 0) { state = initialState; } + if (handlers.hasOwnProperty(action.type)) { + return handlers[action.type](state, action); + } + else { + return state; + } + }; + var addHandler = (function (actionsTypes, actionsHandler) { + var creatorsOrTypes = Array.isArray(actionsTypes) + ? actionsTypes + : [actionsTypes]; + creatorsOrTypes + .map(function (acOrType) { + return checkValidActionCreator(acOrType) + ? getType(acOrType) + : checkValidActionType(acOrType) + ? acOrType + : throwInvalidActionTypeOrActionCreator(); + }) + .forEach(function (type) { return (handlers[type] = actionsHandler); }); + return chain; + }); + var chain = Object.assign(reducer, { + addHandler: addHandler, + }); + return chain; +} + +function isOfType(actionTypeOrTypes, action) { + if (checkIsEmpty(actionTypeOrTypes)) { + throwIsEmpty(1); + } + var actionTypes = Array.isArray(actionTypeOrTypes) + ? actionTypeOrTypes + : [actionTypeOrTypes]; + actionTypes.forEach(checkInvalidActionTypeInArray); + var assertFn = function (_action) { return actionTypes.includes(_action.type); }; + if (action === undefined) { + return assertFn; + } + return assertFn(action); +} + +function isActionOf(actionCreatorOrCreators, action) { + if (checkIsEmpty(actionCreatorOrCreators)) { + throwIsEmpty(1); + } + var actionCreators = Array.isArray(actionCreatorOrCreators) + ? actionCreatorOrCreators + : [actionCreatorOrCreators]; + actionCreators.forEach(checkInvalidActionCreatorInArray); + var assertFn = function (_action) { + return actionCreators.some(function (actionCreator) { return _action.type === actionCreator.getType(); }); + }; + if (action === undefined) { + return assertFn; + } + return assertFn(action); +} + +function createActionDeprecated(actionType, creatorFunction) { + var actionCreator; + if (creatorFunction != null) { + if (typeof creatorFunction !== 'function') { + throw new Error('second argument is not a function'); + } + actionCreator = creatorFunction; + } + else { + actionCreator = (function () { return ({ type: actionType }); }); + } + if (actionType != null) { + if (typeof actionType !== 'string' && typeof actionType !== 'symbol') { + throw new Error('first argument should be type of: string | symbol'); + } + } + else { + throw new Error('first argument is missing'); + } + return actionCreator; +} + +export { action, createAction, createStandardAction, createCustomAction, createAsyncAction, createReducer, getType, isOfType, isActionOf, createActionDeprecated }; diff --git a/codesandbox/src/typesafe-actions/index.js b/codesandbox/src/typesafe-actions/index.js new file mode 100644 index 0000000..f6cb39b --- /dev/null +++ b/codesandbox/src/typesafe-actions/index.js @@ -0,0 +1,236 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function checkIsEmpty(arg, argPosition) { + if (argPosition === void 0) { argPosition = 1; } + return arg == null; +} +function throwIsEmpty(argPosition) { + if (argPosition === void 0) { argPosition = 1; } + throw new Error("Argument " + argPosition + " is empty."); +} +function checkValidActionCreator(arg) { + return typeof arg === 'function' && 'getType' in arg; +} +function checkInvalidActionCreator(arg) { + return !checkValidActionCreator(arg); +} +function throwInvalidActionCreator(argPosition) { + if (argPosition === void 0) { argPosition = 1; } + throw new Error("Argument " + argPosition + " is invalid, it should be an action-creator instance from \"typesafe-actions\""); +} +function checkInvalidActionCreatorInArray(arg, idx) { + if (arg == null) { + throw new Error("Argument contains array with empty element at index " + idx); + } + else if (arg.getType == null) { + throw new Error("Argument contains array with invalid element at index " + idx + ", it should be an action-creator instance from \"typesafe-actions\""); + } +} +function checkValidActionType(arg) { + return typeof arg === 'string' || typeof arg === 'symbol'; +} +function checkInvalidActionType(arg) { + return !checkValidActionType(arg); +} +function throwInvalidActionType(argPosition) { + if (argPosition === void 0) { argPosition = 1; } + throw new Error("Argument " + argPosition + " is invalid, it should be an action type of type: string | symbol"); +} +function checkInvalidActionTypeInArray(arg, idx) { + if (arg == null) { + throw new Error("Argument contains array with empty element at index " + idx); + } + else if (typeof arg !== 'string' && typeof arg !== 'symbol') { + throw new Error("Argument contains array with invalid element at index " + idx + ", it should be of type: string | symbol"); + } +} +function throwInvalidActionTypeOrActionCreator(argPosition) { + if (argPosition === void 0) { argPosition = 1; } + throw new Error("Argument " + argPosition + " is invalid, it should be an action-creator instance from \"typesafe-actions\" or action type of type: string | symbol"); +} + +function action(type, payload, meta, error) { + if (checkIsEmpty(type)) { + throwIsEmpty(1); + } + if (checkInvalidActionType(type)) { + throwInvalidActionCreator(1); + } + return { type: type, payload: payload, meta: meta, error: error }; +} + +function createAction(type, createHandler) { + var actionCreator = createHandler == null + ? (function () { return action(type); }) + : createHandler(action.bind(null, type)); + return Object.assign(actionCreator, { + getType: function () { return type; }, + toString: function () { return type; }, + }); +} + +function createCustomAction(type, createHandler) { + if (checkIsEmpty(type)) { + throwIsEmpty(1); + } + if (checkInvalidActionType(type)) { + throwInvalidActionType(1); + } + var actionCreator = createHandler != null ? createHandler(type) : (function () { return ({ type: type }); }); + return Object.assign(actionCreator, { + getType: function () { return type; }, + toString: function () { return type; }, + }); +} + +function createStandardAction(type) { + if (checkIsEmpty(type)) { + throwIsEmpty(1); + } + if (checkInvalidActionType(type)) { + throwInvalidActionType(1); + } + function constructor() { + return createCustomAction(type, function (_type) { return function (payload, meta) { return ({ + type: _type, + payload: payload, + meta: meta, + }); }; }); + } + function map(fn) { + return createCustomAction(type, function (_type) { return function (payload, meta) { + return Object.assign(fn(payload, meta), { type: _type }); + }; }); + } + return Object.assign(constructor, { map: map }); +} + +function createAsyncAction(requestType, successType, failureType) { + [requestType, successType, failureType].forEach(checkInvalidActionTypeInArray); + function constructor() { + return { + request: createCustomAction(requestType, function (type) { return function (payload) { return ({ + type: type, + payload: payload, + }); }; }), + success: createCustomAction(successType, function (type) { return function (payload) { return ({ + type: type, + payload: payload, + }); }; }), + failure: createCustomAction(failureType, function (type) { return function (payload) { return ({ + type: type, + payload: payload, + }); }; }), + }; + } + return Object.assign(constructor); +} + +function getType(actionCreator) { + if (checkIsEmpty(actionCreator)) { + throwIsEmpty(1); + } + if (checkInvalidActionCreator(actionCreator)) { + throwInvalidActionCreator(1); + } + return actionCreator.getType(); +} + +function createReducer(initialState) { + var handlers = {}; + var reducer = function (state, action) { + if (state === void 0) { state = initialState; } + if (handlers.hasOwnProperty(action.type)) { + return handlers[action.type](state, action); + } + else { + return state; + } + }; + var addHandler = (function (actionsTypes, actionsHandler) { + var creatorsOrTypes = Array.isArray(actionsTypes) + ? actionsTypes + : [actionsTypes]; + creatorsOrTypes + .map(function (acOrType) { + return checkValidActionCreator(acOrType) + ? getType(acOrType) + : checkValidActionType(acOrType) + ? acOrType + : throwInvalidActionTypeOrActionCreator(); + }) + .forEach(function (type) { return (handlers[type] = actionsHandler); }); + return chain; + }); + var chain = Object.assign(reducer, { + addHandler: addHandler, + }); + return chain; +} + +function isOfType(actionTypeOrTypes, action) { + if (checkIsEmpty(actionTypeOrTypes)) { + throwIsEmpty(1); + } + var actionTypes = Array.isArray(actionTypeOrTypes) + ? actionTypeOrTypes + : [actionTypeOrTypes]; + actionTypes.forEach(checkInvalidActionTypeInArray); + var assertFn = function (_action) { return actionTypes.includes(_action.type); }; + if (action === undefined) { + return assertFn; + } + return assertFn(action); +} + +function isActionOf(actionCreatorOrCreators, action) { + if (checkIsEmpty(actionCreatorOrCreators)) { + throwIsEmpty(1); + } + var actionCreators = Array.isArray(actionCreatorOrCreators) + ? actionCreatorOrCreators + : [actionCreatorOrCreators]; + actionCreators.forEach(checkInvalidActionCreatorInArray); + var assertFn = function (_action) { + return actionCreators.some(function (actionCreator) { return _action.type === actionCreator.getType(); }); + }; + if (action === undefined) { + return assertFn; + } + return assertFn(action); +} + +function createActionDeprecated(actionType, creatorFunction) { + var actionCreator; + if (creatorFunction != null) { + if (typeof creatorFunction !== 'function') { + throw new Error('second argument is not a function'); + } + actionCreator = creatorFunction; + } + else { + actionCreator = (function () { return ({ type: actionType }); }); + } + if (actionType != null) { + if (typeof actionType !== 'string' && typeof actionType !== 'symbol') { + throw new Error('first argument should be type of: string | symbol'); + } + } + else { + throw new Error('first argument is missing'); + } + return actionCreator; +} + +exports.action = action; +exports.createAction = createAction; +exports.createStandardAction = createStandardAction; +exports.createCustomAction = createCustomAction; +exports.createAsyncAction = createAsyncAction; +exports.createReducer = createReducer; +exports.getType = getType; +exports.isOfType = isOfType; +exports.isActionOf = isActionOf; +exports.createActionDeprecated = createActionDeprecated; diff --git a/codesandbox/src/typesafe-actions/index.umd.js b/codesandbox/src/typesafe-actions/index.umd.js new file mode 100644 index 0000000..3d1efe5 --- /dev/null +++ b/codesandbox/src/typesafe-actions/index.umd.js @@ -0,0 +1,2 @@ +!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.TypesafeActions={})}(this,function(n){"use strict";function t(n,t){return void 0===t&&(t=1),null==n}function r(n){throw void 0===n&&(n=1),new Error("Argument "+n+" is empty.")}function e(n){return"function"==typeof n&&"getType"in n}function o(n){throw void 0===n&&(n=1),new Error("Argument "+n+' is invalid, it should be an action-creator instance from "typesafe-actions"')}function i(n,t){if(null==n)throw new Error("Argument contains array with empty element at index "+t);if(null==n.getType)throw new Error("Argument contains array with invalid element at index "+t+', it should be an action-creator instance from "typesafe-actions"')}function u(n){return"string"==typeof n||"symbol"==typeof n}function c(n){return!u(n)}function a(n){throw void 0===n&&(n=1),new Error("Argument "+n+" is invalid, it should be an action type of type: string | symbol")}function f(n,t){if(null==n)throw new Error("Argument contains array with empty element at index "+t);if("string"!=typeof n&&"symbol"!=typeof n)throw new Error("Argument contains array with invalid element at index "+t+", it should be of type: string | symbol")}function s(n,e,i,u){return t(n)&&r(1),c(n)&&o(1),{type:n,payload:e,meta:i,error:u}}function y(n,e){t(n)&&r(1),c(n)&&a(1);var o=null!=e?e(n):function(){return{type:n}};return Object.assign(o,{getType:function(){return n},toString:function(){return n}})}function p(n){return t(n)&&r(1),e(n)||o(1),n.getType()}n.action=s,n.createAction=function(n,t){var r=null==t?function(){return s(n)}:t(s.bind(null,n));return Object.assign(r,{getType:function(){return n},toString:function(){return n}})},n.createStandardAction=function(n){return t(n)&&r(1),c(n)&&a(1),Object.assign(function(){return y(n,function(n){return function(t,r){return{type:n,payload:t,meta:r}}})},{map:function(t){return y(n,function(n){return function(r,e){return Object.assign(t(r,e),{type:n})}})}})},n.createCustomAction=y,n.createAsyncAction=function(n,t,r){return[n,t,r].forEach(f),Object.assign(function(){return{request:y(n,function(n){return function(t){return{type:n,payload:t}}}),success:y(t,function(n){return function(t){return{type:n,payload:t}}}),failure:y(r,function(n){return function(t){return{type:n,payload:t}}})}})},n.createReducer=function(n){var t={},r=Object.assign(function(r,e){return void 0===r&&(r=n),t.hasOwnProperty(e.type)?t[e.type](r,e):r},{addHandler:function(n,o){return(Array.isArray(n)?n:[n]).map(function(n){return e(n)?p(n):u(n)?n:function(n){throw void 0===n&&(n=1),new Error("Argument "+n+' is invalid, it should be an action-creator instance from "typesafe-actions" or action type of type: string | symbol')}()}).forEach(function(n){return t[n]=o}),r}});return r},n.getType=p,n.isOfType=function(n,e){t(n)&&r(1);var o=Array.isArray(n)?n:[n];o.forEach(f);var i=function(n){return o.includes(n.type)};return void 0===e?i:i(e)},n.isActionOf=function(n,e){t(n)&&r(1);var o=Array.isArray(n)?n:[n];o.forEach(i);var u=function(n){return o.some(function(t){return n.type===t.getType()})};return void 0===e?u:u(e)},n.createActionDeprecated=function(n,t){var r;if(null!=t){if("function"!=typeof t)throw new Error("second argument is not a function");r=t}else r=function(){return{type:n}};if(null==n)throw new Error("first argument is missing");if("string"!=typeof n&&"symbol"!=typeof n)throw new Error("first argument should be type of: string | symbol");return r},Object.defineProperty(n,"__esModule",{value:!0})}); +//# sourceMappingURL=index.umd.js.map diff --git a/codesandbox/src/typesafe-actions/index.umd.js.map b/codesandbox/src/typesafe-actions/index.umd.js.map new file mode 100644 index 0000000..49be7f7 --- /dev/null +++ b/codesandbox/src/typesafe-actions/index.umd.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.umd.js","sources":["../src/utils/validation.ts","../src/action.ts","../src/create-custom-action.ts","../src/get-type.ts","../src/create-action.ts","../src/create-standard-action.ts","../src/create-async-action.ts","../src/create-reducer.ts","../src/is-of-type.ts","../src/is-action-of.ts","../src/create-action-deprecated.ts"],"sourcesContent":["import { ActionCreator, TypeMeta, StringType } from '../type-helpers';\n\nexport function checkIsEmpty(arg: unknown, argPosition: number = 1) {\n return arg == null;\n}\n\nexport function throwIsEmpty(argPosition: number = 1): never {\n throw new Error(`Argument ${argPosition} is empty.`);\n}\n\nexport function checkValidActionCreator(\n arg: unknown\n): arg is ActionCreator {\n return typeof arg === 'function' && 'getType' in arg;\n}\n\nexport function checkInvalidActionCreator(arg: unknown) {\n return !checkValidActionCreator(arg);\n}\n\nexport function throwInvalidActionCreator(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\"`\n );\n}\n\nexport function checkInvalidActionCreatorInArray(\n arg: ActionCreator & TypeMeta,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (arg.getType == null) {\n throw new Error(\n // tslint:disable-next-line:max-line-length\n `Argument contains array with invalid element at index ${idx}, it should be an action-creator instance from \"typesafe-actions\"`\n );\n }\n}\n\nexport function checkValidActionType(arg: unknown): arg is string | symbol {\n return typeof arg === 'string' || typeof arg === 'symbol';\n}\n\nexport function checkInvalidActionType(arg: unknown): arg is string | symbol {\n return !checkValidActionType(arg);\n}\n\nexport function throwInvalidActionType(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action type of type: string | symbol`\n );\n}\n\nexport function checkInvalidActionTypeInArray(\n arg: StringType,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (typeof arg !== 'string' && typeof arg !== 'symbol') {\n throw new Error(\n `Argument contains array with invalid element at index ${idx}, it should be of type: string | symbol`\n );\n }\n}\n\nexport function throwInvalidActionTypeOrActionCreator(\n argPosition: number = 1\n): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\" or action type of type: string | symbol`\n );\n}\n","import { StringType } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionCreator,\n} from './utils/validation';\n\nexport function action(\n type: T,\n payload: undefined,\n meta: undefined,\n error: E\n): { type: T; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M,\n error: E\n): { type: T; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: undefined,\n error: E\n): { type: T; payload: P; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: M,\n error: E\n): { type: T; payload: P; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M\n): { type: T; meta: M };\n\nexport function action(\n type: T,\n payload: P,\n meta: M\n): { type: T; payload: P; meta: M };\n\nexport function action(\n type: T,\n payload: P\n): { type: T; payload: P };\n\nexport function action(type: T): { type: T };\n\n/**\n * @description flux standard action factory\n * @example\n * ```\n * const add = (amount: number, meta?: MetaShape) => action('INCREMENT', amount, meta);\n * ```\n */\nexport function action<\n T extends StringType,\n P = undefined,\n M = undefined,\n E = undefined\n>(type: T, payload?: P, meta?: M, error?: E) {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionCreator(1);\n }\n\n return { type, payload, meta, error } as any;\n}\n","import { ActionCreator, StringType } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\n/**\n * @description create custom action-creator using constructor function with injected type argument\n */\nexport function createCustomAction<\n T extends StringType,\n AC extends ActionCreator = () => { type: T }\n>(type: T, createHandler?: (type: T) => AC): AC {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n const actionCreator: AC =\n createHandler != null ? createHandler(type) : ((() => ({ type })) as AC);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import { StringType, ActionCreator, TypeMeta } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionCreator,\n throwInvalidActionCreator,\n} from './utils/validation';\n\n/**\n * @description get the \"type literal\" of a given action-creator\n */\nexport function getType(\n actionCreator: ActionCreator & TypeMeta\n): T {\n if (checkIsEmpty(actionCreator)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionCreator(actionCreator)) {\n throwInvalidActionCreator(1);\n }\n\n return actionCreator.getType!();\n}\n","import { StringType, ActionCreator } from './type-helpers';\nimport { action } from './action';\n\nexport type PayloadMetaAction = P extends undefined\n ? M extends undefined\n ? { type: T }\n : { type: T; meta: M }\n : M extends undefined\n ? { type: T; payload: P }\n : { type: T; payload: P; meta: M };\n\n/**\n * @description typesafe action-creator factory\n */\nexport function createAction<\n T extends StringType,\n AC extends ActionCreator = () => { type: T }\n>(\n type: T,\n createHandler?: (\n actionCallback:

(\n payload?: P,\n meta?: M\n ) => PayloadMetaAction\n ) => AC\n): AC {\n // validation is already done in action function\n\n const actionCreator: AC =\n createHandler == null\n ? ((() => action(type)) as AC)\n : createHandler(action.bind(null, type) as Parameters<\n typeof createHandler\n >[0]);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import {\n StringType,\n ActionBuilderConstructor,\n ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\nexport interface ActionBuilder {\n

(): ActionBuilderConstructor;\n map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap;\n}\n\n/**\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createStandardAction(\n type: T\n): ActionBuilder {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n function constructor(): ActionBuilderConstructor {\n return createCustomAction(type, _type => (payload: P, meta: M) => ({\n type: _type,\n payload,\n meta,\n })) as ActionBuilderConstructor;\n }\n\n function map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap {\n return createCustomAction(type, _type => (payload: P, meta: M) =>\n Object.assign(fn(payload, meta), { type: _type })\n ) as ActionBuilderMap;\n }\n\n return Object.assign(constructor, { map });\n}\n","import {\n StringType,\n ActionBuilderConstructor,\n // ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport { checkInvalidActionTypeInArray } from './utils/validation';\n\nexport interface AsyncActionBuilder<\n T1 extends StringType,\n T2 extends StringType,\n T3 extends StringType\n> {\n // tslint:disable-next-line:callable-types\n (): AsyncActionBuilderConstructor;\n // withMappers(\n // requestMapper: (a?: A1) => P1,\n // successMapper: (a?: A2) => P2,\n // failureMapper: (a?: A3) => P3\n // ): AsyncActionBuilderWithMappers;\n}\n\nexport type AsyncActionBuilderConstructor<\n T1 extends StringType,\n T2 extends StringType,\n T3 extends StringType,\n P1,\n P2,\n P3\n> = {\n request: ActionBuilderConstructor;\n success: ActionBuilderConstructor;\n failure: ActionBuilderConstructor;\n};\n\n/**\n * implementation\n */\nexport function createAsyncAction<\n T1 extends StringType,\n T2 extends StringType,\n T3 extends StringType\n>(\n requestType: T1,\n successType: T2,\n failureType: T3\n): AsyncActionBuilder {\n [requestType, successType, failureType].forEach(\n checkInvalidActionTypeInArray\n );\n\n function constructor(): AsyncActionBuilderConstructor<\n T1,\n T2,\n T3,\n P1,\n P2,\n P3\n > {\n return {\n request: createCustomAction(requestType, type => (payload?: P1) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n success: createCustomAction(successType, type => (payload?: P2) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n failure: createCustomAction(failureType, type => (payload?: P3) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n };\n }\n\n return Object.assign(constructor);\n}\n\n// export type AsyncActionBuilderWithMappers<\n// T1 extends StringType,\n// T2 extends StringType,\n// T3 extends StringType,\n// A1 = undefined,\n// P1 = undefined,\n// A2 = undefined,\n// P2 = undefined,\n// A3 = undefined,\n// P3 = undefined\n// > = {\n// request: ActionBuilderMap;\n// success: ActionBuilderMap;\n// failure: ActionBuilderMap;\n// };\n\n// function withMappers(\n// requestMapper: (a?: A1) => P1,\n// successMapper: (a?: A2) => P2,\n// failureMapper: (a?: A3) => P3\n// ): AsyncActionBuilderWithMappers {\n// return {\n// request: createCustomAction(requestType, type => (payload?: A1) => ({\n// type,\n// payload: requestMapper != null ? requestMapper(payload) : undefined,\n// })) as MapBuilder,\n// success: createCustomAction(successType, type => (payload?: A2) => ({\n// type,\n// payload: successMapper != null ? successMapper(payload) : undefined,\n// })) as MapBuilder,\n// failure: createCustomAction(failureType, type => (payload?: A3) => ({\n// type,\n// payload: failureMapper != null ? failureMapper(payload) : undefined,\n// })) as MapBuilder,\n// };\n// }\n","// @ts-ignore\nimport { RootAction } from '.';\nimport { getType } from './get-type';\nimport {\n checkValidActionCreator,\n checkValidActionType,\n throwInvalidActionTypeOrActionCreator,\n} from './utils/validation';\n\nexport function createReducer(\n initialState: S\n) {\n type AddHandler = <\n TType extends TAllActions['type'],\n TTypeAction extends TAllActions extends { type: TType }\n ? TAllActions\n : never,\n TCreator extends (...args: any[]) => TAllActions,\n TCreatorAction extends TAllActions extends ReturnType\n ? TAllActions\n : never,\n TActionIntersection extends TTypeAction extends TCreatorAction\n ? TTypeAction\n : never\n >(\n actionsTypes: TType | TCreator | TType[] | TCreator[],\n actionsHandler: (state: S, action: TActionIntersection) => S\n ) => Exclude extends never\n ? Reducer\n : Reducer & {\n addHandler: AddHandler<\n Exclude\n >;\n };\n\n type AddHandlerChain = { addHandler: AddHandler };\n\n const handlers: Record = {};\n\n type Reducer = (state: S, action: A) => S;\n const reducer: Reducer = (state = initialState, action) => {\n if (handlers.hasOwnProperty(action.type)) {\n return handlers[action.type](state, action);\n } else {\n return state;\n }\n };\n\n const addHandler = ((actionsTypes, actionsHandler: Reducer) => {\n const creatorsOrTypes = Array.isArray(actionsTypes)\n ? actionsTypes\n : [actionsTypes];\n\n creatorsOrTypes\n .map(acOrType =>\n checkValidActionCreator(acOrType)\n ? getType(acOrType)\n : checkValidActionType(acOrType)\n ? acOrType\n : throwInvalidActionTypeOrActionCreator()\n )\n .forEach(type => (handlers[type] = actionsHandler));\n return chain;\n }) as AddHandler;\n\n const chain: Reducer & AddHandlerChain = Object.assign(reducer, {\n addHandler,\n });\n\n return chain;\n}\n","import {\n checkInvalidActionTypeInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[],\n action: A\n): action is A extends { type: T } ? A : never;\n\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[]\n): (\n action: A\n) => action is A extends { type: T } ? A : never;\n\n/**\n * implementation\n */\nexport function isOfType(\n actionTypeOrTypes: T | T[],\n action?: A\n) {\n if (checkIsEmpty(actionTypeOrTypes)) {\n throwIsEmpty(1);\n }\n\n const actionTypes = Array.isArray(actionTypeOrTypes)\n ? actionTypeOrTypes\n : [actionTypeOrTypes];\n\n actionTypes.forEach(checkInvalidActionTypeInArray);\n\n const assertFn = (_action: A) => actionTypes.includes(_action.type);\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","import { TypeMeta } from './type-helpers';\nimport {\n checkInvalidActionCreatorInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n\nexport type ActionCreator = ((\n ...args: any[]\n) => T) &\n TypeMeta;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[],\n action: { type: string }\n): action is ReturnType;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[]\n): (action: { type: string }) => action is ReturnType;\n\n/**\n * implementation\n */\nexport function isActionOf>(\n actionCreatorOrCreators: AC | AC[],\n action?: { type: string }\n) {\n if (checkIsEmpty(actionCreatorOrCreators)) {\n throwIsEmpty(1);\n }\n\n const actionCreators = Array.isArray(actionCreatorOrCreators)\n ? actionCreatorOrCreators\n : [actionCreatorOrCreators];\n\n actionCreators.forEach(checkInvalidActionCreatorInArray);\n\n const assertFn = (_action: { type: string }) =>\n actionCreators.some(\n actionCreator => _action.type === actionCreator.getType!()\n );\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","/**\n * DEPRECATED\n */\n\nimport { StringType } from './type-helpers';\n\ninterface FSA {\n type: T;\n payload?: P;\n meta?: M;\n error?: E;\n}\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends StringType,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction: AC): AC;\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends StringType,\n AC extends () => { type: T }\n>(actionType: T): AC;\n\n/**\n * implementation\n */\nexport function createActionDeprecated<\n T extends StringType,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction?: AC): AC {\n let actionCreator: AC;\n\n if (creatorFunction != null) {\n if (typeof creatorFunction !== 'function') {\n throw new Error('second argument is not a function');\n }\n\n actionCreator = creatorFunction as AC;\n } else {\n actionCreator = (() => ({ type: actionType })) as AC;\n }\n\n if (actionType != null) {\n if (typeof actionType !== 'string' && typeof actionType !== 'symbol') {\n throw new Error('first argument should be type of: string | symbol');\n }\n } else {\n throw new Error('first argument is missing');\n }\n\n return actionCreator;\n}\n"],"names":["checkIsEmpty","arg","argPosition","throwIsEmpty","Error","checkValidActionCreator","throwInvalidActionCreator","checkInvalidActionCreatorInArray","idx","getType","checkValidActionType","checkInvalidActionType","throwInvalidActionType","checkInvalidActionTypeInArray","action","type","payload","meta","error","createCustomAction","createHandler","actionCreator","Object","assign","toString","bind","_type","map","fn","requestType","successType","failureType","forEach","request","success","failure","initialState","handlers","chain","state","hasOwnProperty","addHandler","actionsTypes","actionsHandler","Array","isArray","acOrType","throwInvalidActionTypeOrActionCreator","actionTypeOrTypes","actionTypes","assertFn","_action","includes","undefined","actionCreatorOrCreators","actionCreators","some","actionType","creatorFunction"],"mappings":"2MAEgBA,EAAaC,EAAcC,GACzC,oBADyCA,KAC3B,MAAPD,WAGOE,EAAaD,GAC3B,mBAD2BA,KACrB,IAAIE,MAAM,YAAYF,yBAGdG,EACdJ,GAEA,MAAsB,mBAARA,GAAsB,YAAaA,WAOnCK,EAA0BJ,GACxC,mBADwCA,KAClC,IAAIE,MACR,YAAYF,2FAIAK,EACdN,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,MAAfP,EAAIQ,QACb,MAAM,IAAIL,MAER,yDAAyDI,gFAK/CE,EAAqBT,GACnC,MAAsB,iBAARA,GAAmC,iBAARA,WAG3BU,EAAuBV,GACrC,OAAQS,EAAqBT,YAGfW,EAAuBV,GACrC,mBADqCA,KAC/B,IAAIE,MACR,YAAYF,gFAIAW,EACdZ,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,iBAARP,GAAmC,iBAARA,EAC3C,MAAM,IAAIG,MACR,yDAAyDI,sDCJ/CM,EAKdC,EAASC,EAAaC,EAAUC,GAShC,OARIlB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBT,EAA0B,IAGnBS,OAAMC,UAASC,OAAMC,kBCjEhBC,EAGdJ,EAASK,GACLpB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAGzB,IAAMS,EACa,MAAjBD,EAAwBA,EAAcL,cAAgB,OAAGA,SAE3D,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,cClBJN,EACdY,GAUA,OARIrB,EAAaqB,IACflB,EAAa,GHEPE,EGCsBgB,IAC5Bf,EAA0B,GAGrBe,EAAcZ,6CCJrBM,EACAK,GASA,IAAMC,EACa,MAAjBD,aACY,OAAAN,EAAOC,IACfK,EAAcN,EAAOW,KAAK,KAAMV,IAItC,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,sCCdlBA,GA0BA,OAxBIf,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAmBlBU,OAAOC,OAhBd,WACE,OAAOJ,EAAmBJ,EAAM,SAAAW,GAAS,OAAA,SAACV,EAAYC,GAAY,OAChEF,KAAMW,EACNV,UACAC,aAYgCU,IARpC,SACEC,GAEA,OAAOT,EAAmBJ,EAAM,SAAAW,GAAS,OAAA,SAACV,EAAYC,GACpD,OAAAK,OAAOC,OAAOK,EAAGZ,EAASC,IAASF,KAAMW,+DCH7CG,EACAC,EACAC,GA8BA,OA5BCF,EAAaC,EAAaC,GAAaC,QACtCnB,GA2BKS,OAAOC,OAxBd,WAQE,OACEU,QAASd,EAAmBU,EAAa,SAAAd,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFkB,QAASf,EAAmBW,EAAa,SAAAf,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFmB,QAAShB,EAAmBY,EAAa,SAAAhB,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,2CC5DNoB,GA2BA,IAAMC,KA4BAC,EAAmChB,OAAOC,OAzBvB,SAACgB,EAAsBzB,GAC9C,oBADwByB,KACpBF,EAASG,eAAe1B,EAAOC,MAC1BsB,EAASvB,EAAOC,MAAMwB,EAAOzB,GAE7ByB,IAsBTE,oBAlBmBC,EAAcC,GAcjC,OAbwBC,MAAMC,QAAQH,GAClCA,GACCA,IAGFf,IAAI,SAAAmB,GACH,OAAAzC,EAAwByC,GACpBrC,EAAQqC,GACRpC,EAAqBoC,GACrBA,WPcV5C,GAEA,mBAFAA,KAEM,IAAIE,MACR,YAAYF,0HOhBJ6C,KAELf,QAAQ,SAAAjB,GAAQ,OAACsB,EAAStB,GAAQ4B,IAC9BL,KAOT,OAAOA,mCCzCPU,EACAlC,GAEId,EAAagD,IACf7C,EAAa,GAGf,IAAM8C,EAAcL,MAAMC,QAAQG,GAC9BA,GACCA,GAELC,EAAYjB,QAAQnB,GAEpB,IAAMqC,EAAW,SAACC,GAAe,OAAAF,EAAYG,SAASD,EAAQpC,OAG9D,YAAesC,IAAXvC,EACKoC,EAGFA,EAASpC,0BCfhBwC,EACAxC,GAEId,EAAasD,IACfnD,EAAa,GAGf,IAAMoD,EAAiBX,MAAMC,QAAQS,GACjCA,GACCA,GAELC,EAAevB,QAAQzB,GAEvB,IAAM2C,EAAW,SAACC,GAChB,OAAAI,EAAeC,KACb,SAAAnC,GAAiB,OAAA8B,EAAQpC,OAASM,EAAcZ,aAIpD,YAAe4C,IAAXvC,EACKoC,EAGFA,EAASpC,sCCnBhB2C,EAAeC,GACf,IAAIrC,EAEJ,GAAuB,MAAnBqC,EAAyB,CAC3B,GAA+B,mBAApBA,EACT,MAAM,IAAItD,MAAM,qCAGlBiB,EAAgBqC,OAEhBrC,aAAuB,OAAGN,KAAM0C,IAGlC,GAAkB,MAAdA,EAKF,MAAM,IAAIrD,MAAM,6BAJhB,GAA0B,iBAAfqD,GAAiD,iBAAfA,EAC3C,MAAM,IAAIrD,MAAM,qDAMpB,OAAOiB"} \ No newline at end of file diff --git a/codesandbox/src/typesafe-actions/is-action-of.d.ts b/codesandbox/src/typesafe-actions/is-action-of.d.ts new file mode 100644 index 0000000..084b7b3 --- /dev/null +++ b/codesandbox/src/typesafe-actions/is-action-of.d.ts @@ -0,0 +1,14 @@ +import { TypeMeta } from './type-helpers'; +export declare type ActionCreator = ((...args: any[]) => T) & TypeMeta; +export declare function isActionOf>(actionCreator: AC | AC[], action: { + type: string; +}): action is ReturnType; +export declare function isActionOf>(actionCreator: AC | AC[]): (action: { + type: string; +}) => action is ReturnType; diff --git a/codesandbox/src/typesafe-actions/is-of-type.d.ts b/codesandbox/src/typesafe-actions/is-of-type.d.ts new file mode 100644 index 0000000..20ae560 --- /dev/null +++ b/codesandbox/src/typesafe-actions/is-of-type.d.ts @@ -0,0 +1,10 @@ +export declare function isOfType(type: T | T[], action: A): action is A extends { + type: T; +} ? A : never; +export declare function isOfType(type: T | T[]): (action: A) => action is A extends { + type: T; +} ? A : never; diff --git a/codesandbox/src/typesafe-actions/package.json b/codesandbox/src/typesafe-actions/package.json new file mode 100644 index 0000000..a5bb50b --- /dev/null +++ b/codesandbox/src/typesafe-actions/package.json @@ -0,0 +1,12 @@ +{ + "name": "typesafe-actions", + "version": "0.0.0", + "description": "", + "main": "index.esm.js", + "module": "index.esm.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC" +} diff --git a/codesandbox/src/typesafe-actions/type-helpers.d.ts b/codesandbox/src/typesafe-actions/type-helpers.d.ts new file mode 100644 index 0000000..2fa08c4 --- /dev/null +++ b/codesandbox/src/typesafe-actions/type-helpers.d.ts @@ -0,0 +1,46 @@ +export interface TypeMeta { + getType?: () => T; +} +export declare type ActionCreator = (...args: any[]) => { + type: T; +}; +export declare type ActionType = ActionCreatorOrMap extends ActionCreator ? ReturnType : ActionCreatorOrMap extends Record ? { + [K in keyof ActionCreatorOrMap]: ActionType; +}[keyof ActionCreatorOrMap] : ActionCreatorOrMap extends infer R ? never : never; +export declare type StateType = ReducerOrMap extends (...args: any[]) => any ? ReturnType : ReducerOrMap extends object ? { + [K in keyof ReducerOrMap]: StateType; +} : never; +export declare type StringType = string; +export declare type EmptyAction = { + type: T; +}; +export declare type PayloadAction = { + type: T; + payload: P; +}; +export declare type MetaAction = { + type: T; + meta: M; +}; +export declare type PayloadMetaAction = { + type: T; + payload: P; + meta: M; +}; +export interface FluxStandardAction { + type: T; + payload: P; + meta: M; + error?: true; +} +export declare type EmptyAC = () => EmptyAction; +export declare type PayloadAC = (payload: P) => PayloadAction; +export declare type PayloadMetaAC = (payload: P, meta: M) => PayloadMetaAction; +export declare type ActionBuilderConstructor = [TMeta] extends [undefined] ? [TPayload] extends [undefined] ? unknown extends TPayload ? PayloadAC : unknown extends TMeta ? PayloadMetaAC : EmptyAC : PayloadAC : PayloadMetaAC; +export declare type ActionBuilderMap = [TMetaArg] extends [undefined] ? [TPayloadArg] extends [undefined] ? () => { + type: T; +} & TCustomAction : (payload: TPayloadArg) => { + type: T; +} & TCustomAction : (payload: TPayloadArg, meta: TMetaArg) => { + type: T; +} & TCustomAction; diff --git a/codesandbox/src/typesafe-actions/utils/validation.d.ts b/codesandbox/src/typesafe-actions/utils/validation.d.ts new file mode 100644 index 0000000..282adbd --- /dev/null +++ b/codesandbox/src/typesafe-actions/utils/validation.d.ts @@ -0,0 +1,12 @@ +import { ActionCreator, TypeMeta, StringType } from '../type-helpers'; +export declare function checkIsEmpty(arg: unknown, argPosition?: number): boolean; +export declare function throwIsEmpty(argPosition?: number): never; +export declare function checkValidActionCreator(arg: unknown): arg is ActionCreator; +export declare function checkInvalidActionCreator(arg: unknown): boolean; +export declare function throwInvalidActionCreator(argPosition?: number): never; +export declare function checkInvalidActionCreatorInArray(arg: ActionCreator & TypeMeta, idx: number): void | never; +export declare function checkValidActionType(arg: unknown): arg is string | symbol; +export declare function checkInvalidActionType(arg: unknown): arg is string | symbol; +export declare function throwInvalidActionType(argPosition?: number): never; +export declare function checkInvalidActionTypeInArray(arg: StringType, idx: number): void | never; +export declare function throwInvalidActionTypeOrActionCreator(argPosition?: number): never; diff --git a/codesandbox/tsconfig.json b/codesandbox/tsconfig.json index 02e4071..6784a98 100644 --- a/codesandbox/tsconfig.json +++ b/codesandbox/tsconfig.json @@ -1,34 +1,14 @@ { + "include": ["src", "typings"], + "exclude": ["src/**/*.spec.*"], + "extends": "./node_modules/react-redux-typescript-scripts/tsconfig.json", "compilerOptions": { - "baseUrl": "./", - "paths": {}, - "outDir": "out/", - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "allowJs": true, - "declaration": false, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "importHelpers": true, - "noEmitHelpers": true, - "jsx": "react", - "lib": ["dom", "es2016", "es2017"], - "types": ["jest"], - "target": "es5", - "module": "esnext", - "moduleResolution": "node", - "noEmitOnError": true, - "noFallthroughCasesInSwitch": true, - "noImplicitAny": true, - "noImplicitReturns": true, - "noImplicitThis": true, - "noUnusedLocals": true, - "strict": true, - "strictFunctionTypes": false, - "pretty": true, - "removeComments": true, - "sourceMap": true - }, - "include": ["src/**/*", "typings/*"], - "exclude": ["src/**/*.spec.*"] + "baseUrl": "./", // relative paths base + "paths": { + "typesafe-actions": ["src/typesafe-actions/index"] + }, + "allowJs": false, + "checkJs": false, + "jsx": "react" + } } diff --git a/codesandbox/tslint.json b/codesandbox/tslint.json index 0e15a89..53f400d 100644 --- a/codesandbox/tslint.json +++ b/codesandbox/tslint.json @@ -1,63 +1,6 @@ { - "extends": ["tslint:latest", "tslint-react"], - "rules": { - "arrow-parens": false, - "arrow-return-shorthand": [false], - "comment-format": [true, "check-space"], - "interface-over-type-literal": false, - "interface-name": false, - "max-line-length": [true, 120], - "member-access": false, - "member-ordering": [true, { "order": "fields-first" }], - "newline-before-return": false, - "no-any": false, - "no-empty-interface": false, - "no-import-side-effect": [true], - "no-inferrable-types": [true, "ignore-params", "ignore-properties"], - "no-invalid-this": [true, "check-function-in-method"], - "no-namespace": false, - "no-null-keyword": false, - "no-require-imports": false, - "no-shadowed-variable": false, - "no-submodule-imports": [true, "@src", "rxjs"], - "no-this-assignment": [true, { "allow-destructuring": true }], - "no-trailing-whitespace": true, - "object-literal-sort-keys": false, - "object-literal-shorthand": false, - "one-variable-per-declaration": [false], - "only-arrow-functions": [true, "allow-declarations"], - "ordered-imports": [false], - "prefer-method-signature": false, - "prefer-template": [true, "allow-single-concat"], - "quotemark": [true, "single", "jsx-double"], - "semicolon": [true, "always", "ignore-bound-class-methods"], - "trailing-comma": [ - true, - { - "singleline": "never", - "multiline": { - "objects": "always", - "arrays": "always", - "functions": "ignore", - "typeLiterals": "ignore" - }, - "esSpecCompliant": true - } - ], - "triple-equals": [true, "allow-null-check"], - "type-literal-delimiter": true, - "typedef": [true, "parameter", "property-declaration"], - "variable-name": [ - true, - "ban-keywords", - "check-format", - "allow-pascal-case", - "allow-leading-underscore" - ], - "no-implicit-dependencies": [false], - "whitespace": [true, "check-branch", "check-operator"], - // tslint-react - "jsx-no-multiline-js": false, - "jsx-no-lambda": false + "extends": ["./node_modules/react-redux-typescript-scripts/tslint.json"], + "linterOptions": { + "exclude": ["./src/typesafe-actions/**/*"] } } diff --git a/package-lock.json b/package-lock.json index f8edc5d..c9a2acb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9107,9 +9107,9 @@ } }, "typescript": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.3.tgz", - "integrity": "sha512-FFgHdPt4T/duxx6Ndf7hwgMZZjZpB+U0nMNGVCYPq0rEzWKjEDobm4J6yb3CS7naZ0yURFqdw9Gwc7UOh/P9oQ==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.4.tgz", + "integrity": "sha512-xt5RsIRCEaf6+j9AyOBgvVuAec0i92rgCaS3S+UVf5Z/vF2Hvtsw08wtUTJqp4djwznoAgjSxeCcU4r+CcDBJA==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index 4fd2b70..3c34ba2 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "test:update": "jest --config jest.config.json --no-cache -u && dts-jest-remap ./src/*.spec.ts --rename '{{basename}}.snap.{{extname}}'", "prebuild": "rm -rf dist/ && tsc -p ./tsconfig.declaration.json", "build": "tsc -p . && rollup -c", - "postbuild": "rm -rf out", + "postbuild": "cp -a dist/. codesandbox/src/typesafe-actions/ && rm -rf out", "ci-check": "npm run prettier && npm run lint && npm run tsc && npm run test && npm run doctoc", "prepublishOnly": "npm run reinstall && npm run ci-check && npm run build" }, @@ -51,7 +51,7 @@ "rollup-plugin-uglify": "3.0.0", "ts-jest": "24.0.2", "tslint": "5.16.0", - "typescript": "3.4.3" + "typescript": "3.4.4" }, "keywords": [ "typescript", diff --git a/tsconfig.declaration.json b/tsconfig.declaration.json index a4d51f9..45d76fd 100644 --- a/tsconfig.declaration.json +++ b/tsconfig.declaration.json @@ -5,7 +5,6 @@ "declaration": true, "emitDeclarationOnly": true, "module": "esnext", - "noUnusedLocals": true, "outDir": "./dist/" } } From 674c0870729af24db550a0bd5af92e9d5697959b Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sun, 21 Apr 2019 04:28:48 +0200 Subject: [PATCH 10/22] Refactored type helpers and exported as public API Resolved #123 --- src/__snapshots__/create-reducer.spec.ts.snap | 34 +++- src/action.ts | 20 +- src/create-action-deprecated.ts | 10 +- src/create-action.ts | 10 +- src/create-async-action.ts | 20 +- src/create-custom-action.ts | 4 +- src/create-reducer.spec.ts | 8 +- src/create-reducer.ts | 70 +++---- src/create-standard-action.ts | 6 +- src/get-type.ts | 4 +- src/index.ts | 17 +- src/type-helpers.ts | 186 +++++++++--------- src/utils/validation.ts | 8 +- 13 files changed, 216 insertions(+), 181 deletions(-) diff --git a/src/__snapshots__/create-reducer.spec.ts.snap b/src/__snapshots__/create-reducer.spec.ts.snap index ad05db9..f547cea 100644 --- a/src/__snapshots__/create-reducer.spec.ts.snap +++ b/src/__snapshots__/create-reducer.spec.ts.snap @@ -1,10 +1,22 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 1`] = `"number"`; - -exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 2`] = `"number"`; - -exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 3`] = `"number"`; +exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 1`] = ` +"Argument of type 'PayloadAction<\\"ADD\\", number>' is not assignable to parameter of type 'EmptyAction<\\"INCREMENT\\">'. + Types of property 'type' are incompatible. + Type '\\"ADD\\"' is not assignable to type '\\"INCREMENT\\"'." +`; + +exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 2`] = ` +"Argument of type 'PayloadAction<\\"ADD\\", number>' is not assignable to parameter of type 'EmptyAction<\\"INCREMENT\\">'. + Types of property 'type' are incompatible. + Type '\\"ADD\\"' is not assignable to type '\\"INCREMENT\\"'." +`; + +exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 3`] = ` +"Argument of type 'PayloadAction<\\"ADD\\", number>' is not assignable to parameter of type 'EmptyAction<\\"INCREMENT\\">'. + Types of property 'type' are incompatible. + Type '\\"ADD\\"' is not assignable to type '\\"INCREMENT\\"'." +`; exports[`With Action Creators fn(0, increment()) (type) should match snapshot 1`] = `"number"`; @@ -12,11 +24,17 @@ exports[`With Action Creators fn(0, increment()) (type) should match snapshot 2` exports[`With Action Creators fn(0, increment()) (type) should match snapshot 3`] = `"number"`; -exports[`With Action Types fn(0, add(4)) (type) should match snapshot 1`] = `"number"`; +exports[`With Action Types fn(0, {} as any) (type) should match snapshot 1`] = `"number"`; + +exports[`With Action Types fn(0, {} as any) (type) should match snapshot 2`] = `"number"`; + +exports[`With Action Types fn(0, {} as any) (type) should match snapshot 3`] = `"number"`; + +exports[`With Action Types fn(0, add(4)) (type) should match snapshot 1`] = `"Argument of type 'PayloadAction<\\"ADD\\", number>' is not assignable to parameter of type 'EmptyAction<\\"INCREMENT\\">'."`; -exports[`With Action Types fn(0, add(4)) (type) should match snapshot 2`] = `"number"`; +exports[`With Action Types fn(0, add(4)) (type) should match snapshot 2`] = `"Argument of type 'PayloadAction<\\"ADD\\", number>' is not assignable to parameter of type 'EmptyAction<\\"INCREMENT\\">'."`; -exports[`With Action Types fn(0, add(4)) (type) should match snapshot 3`] = `"number"`; +exports[`With Action Types fn(0, add(4)) (type) should match snapshot 3`] = `"Argument of type 'PayloadAction<\\"ADD\\", number>' is not assignable to parameter of type 'EmptyAction<\\"INCREMENT\\">'."`; exports[`With Action Types fn(0, increment()) (type) should match snapshot 1`] = `"number"`; diff --git a/src/action.ts b/src/action.ts index 5918d87..09cf1c1 100644 --- a/src/action.ts +++ b/src/action.ts @@ -1,4 +1,4 @@ -import { StringType } from './type-helpers'; +import { TypeConstant } from './type-helpers'; import { checkIsEmpty, throwIsEmpty, @@ -6,52 +6,52 @@ import { throwInvalidActionCreator, } from './utils/validation'; -export function action( +export function action( type: T, payload: undefined, meta: undefined, error: E ): { type: T; error: E }; -export function action( +export function action( type: T, payload: undefined, meta: M, error: E ): { type: T; meta: M; error: E }; -export function action( +export function action( type: T, payload: P, meta: undefined, error: E ): { type: T; payload: P; error: E }; -export function action( +export function action( type: T, payload: P, meta: M, error: E ): { type: T; payload: P; meta: M; error: E }; -export function action( +export function action( type: T, payload: undefined, meta: M ): { type: T; meta: M }; -export function action( +export function action( type: T, payload: P, meta: M ): { type: T; payload: P; meta: M }; -export function action( +export function action( type: T, payload: P ): { type: T; payload: P }; -export function action(type: T): { type: T }; +export function action(type: T): { type: T }; /** * @description flux standard action factory @@ -61,7 +61,7 @@ export function action(type: T): { type: T }; * ``` */ export function action< - T extends StringType, + T extends TypeConstant, P = undefined, M = undefined, E = undefined diff --git a/src/create-action-deprecated.ts b/src/create-action-deprecated.ts index 8338640..0e8afa7 100644 --- a/src/create-action-deprecated.ts +++ b/src/create-action-deprecated.ts @@ -2,9 +2,9 @@ * DEPRECATED */ -import { StringType } from './type-helpers'; +import { TypeConstant } from './type-helpers'; -interface FSA { +interface FSA { type: T; payload?: P; meta?: M; @@ -16,7 +16,7 @@ interface FSA { * @description create an action-creator of a given function that contains hidden "type" metadata */ export function createActionDeprecated< - T extends StringType, + T extends TypeConstant, AC extends (...args: any[]) => FSA >(actionType: T, creatorFunction: AC): AC; @@ -25,7 +25,7 @@ export function createActionDeprecated< * @description create an action-creator of a given function that contains hidden "type" metadata */ export function createActionDeprecated< - T extends StringType, + T extends TypeConstant, AC extends () => { type: T } >(actionType: T): AC; @@ -33,7 +33,7 @@ export function createActionDeprecated< * implementation */ export function createActionDeprecated< - T extends StringType, + T extends TypeConstant, AC extends (...args: any[]) => FSA >(actionType: T, creatorFunction?: AC): AC { let actionCreator: AC; diff --git a/src/create-action.ts b/src/create-action.ts index d948fc8..cd08e6b 100644 --- a/src/create-action.ts +++ b/src/create-action.ts @@ -1,7 +1,11 @@ -import { StringType, ActionCreator } from './type-helpers'; +import { TypeConstant, ActionCreator } from './type-helpers'; import { action } from './action'; -export type PayloadMetaAction = P extends undefined +export type PayloadMetaAction< + T extends TypeConstant, + P, + M +> = P extends undefined ? M extends undefined ? { type: T } : { type: T; meta: M } @@ -13,7 +17,7 @@ export type PayloadMetaAction = P extends undefined * @description typesafe action-creator factory */ export function createAction< - T extends StringType, + T extends TypeConstant, AC extends ActionCreator = () => { type: T } >( type: T, diff --git a/src/create-async-action.ts b/src/create-async-action.ts index 65b26d7..ad761b3 100644 --- a/src/create-async-action.ts +++ b/src/create-async-action.ts @@ -1,5 +1,5 @@ import { - StringType, + TypeConstant, ActionBuilderConstructor, // ActionBuilderMap, } from './type-helpers'; @@ -7,9 +7,9 @@ import { createCustomAction } from './create-custom-action'; import { checkInvalidActionTypeInArray } from './utils/validation'; export interface AsyncActionBuilder< - T1 extends StringType, - T2 extends StringType, - T3 extends StringType + T1 extends TypeConstant, + T2 extends TypeConstant, + T3 extends TypeConstant > { // tslint:disable-next-line:callable-types (): AsyncActionBuilderConstructor; @@ -21,9 +21,9 @@ export interface AsyncActionBuilder< } export type AsyncActionBuilderConstructor< - T1 extends StringType, - T2 extends StringType, - T3 extends StringType, + T1 extends TypeConstant, + T2 extends TypeConstant, + T3 extends TypeConstant, P1, P2, P3 @@ -37,9 +37,9 @@ export type AsyncActionBuilderConstructor< * implementation */ export function createAsyncAction< - T1 extends StringType, - T2 extends StringType, - T3 extends StringType + T1 extends TypeConstant, + T2 extends TypeConstant, + T3 extends TypeConstant >( requestType: T1, successType: T2, diff --git a/src/create-custom-action.ts b/src/create-custom-action.ts index 7894501..027d89e 100644 --- a/src/create-custom-action.ts +++ b/src/create-custom-action.ts @@ -1,4 +1,4 @@ -import { ActionCreator, StringType } from './type-helpers'; +import { ActionCreator, TypeConstant } from './type-helpers'; import { checkIsEmpty, throwIsEmpty, @@ -10,7 +10,7 @@ import { * @description create custom action-creator using constructor function with injected type argument */ export function createCustomAction< - T extends StringType, + T extends TypeConstant, AC extends ActionCreator = () => { type: T } >(type: T, createHandler?: (type: T) => AC): AC { if (checkIsEmpty(type)) { diff --git a/src/create-reducer.spec.ts b/src/create-reducer.spec.ts index 66db905..9f9ec36 100644 --- a/src/create-reducer.spec.ts +++ b/src/create-reducer.spec.ts @@ -1,10 +1,12 @@ -import { ActionType, createStandardAction, createReducer } from '.'; +import { createStandardAction } from './create-standard-action'; +import { createReducer } from './create-reducer'; +import { ActionType } from './type-helpers'; const add = createStandardAction('ADD')(); const increment = createStandardAction('INCREMENT')(); const actions = { add, increment }; -declare module '.' { +declare module './' { export type RootAction = ActionType; } @@ -64,6 +66,8 @@ describe('With Action Types', () => { }); [counterReducer1, counterReducer2, counterReducer3].forEach(fn => { + // @dts-jest:pass:snap + fn(0, {} as any); // => 0 // @dts-jest:pass:snap fn(0, increment()); // => 1 // @dts-jest:pass:snap diff --git a/src/create-reducer.ts b/src/create-reducer.ts index 7a44d5c..49fe5e5 100644 --- a/src/create-reducer.ts +++ b/src/create-reducer.ts @@ -1,44 +1,41 @@ // @ts-ignore -import { RootAction } from '.'; +import { RootAction } from './'; import { getType } from './get-type'; import { checkValidActionCreator, checkValidActionType, throwInvalidActionTypeOrActionCreator, } from './utils/validation'; +import { Reducer, Action } from './type-helpers'; -export function createReducer( +type AddHandler = < + TType extends TAllActions['type'], + TTypeAction extends TAllActions extends { type: TType } ? TAllActions : never, + TCreator extends (...args: any[]) => TAllActions, + TCreatorAction extends TAllActions extends ReturnType + ? TAllActions + : never, + TActionIntersection extends TTypeAction extends TCreatorAction + ? TTypeAction + : never +>( + actionsTypes: TType | TCreator | TType[] | TCreator[], + actionsHandler: (state: S, action: TActionIntersection) => S +) => Exclude extends never + ? Reducer + : Reducer & { + addHandler: AddHandler< + S, + Exclude + >; + }; + +export function createReducer( initialState: S ) { - type AddHandler = < - TType extends TAllActions['type'], - TTypeAction extends TAllActions extends { type: TType } - ? TAllActions - : never, - TCreator extends (...args: any[]) => TAllActions, - TCreatorAction extends TAllActions extends ReturnType - ? TAllActions - : never, - TActionIntersection extends TTypeAction extends TCreatorAction - ? TTypeAction - : never - >( - actionsTypes: TType | TCreator | TType[] | TCreator[], - actionsHandler: (state: S, action: TActionIntersection) => S - ) => Exclude extends never - ? Reducer - : Reducer & { - addHandler: AddHandler< - Exclude - >; - }; - - type AddHandlerChain = { addHandler: AddHandler }; + const handlers: Record S> = {}; - const handlers: Record = {}; - - type Reducer = (state: S, action: A) => S; - const reducer: Reducer = (state = initialState, action) => { + const reducer: Reducer = (state = initialState, action) => { if (handlers.hasOwnProperty(action.type)) { return handlers[action.type](state, action); } else { @@ -46,7 +43,7 @@ export function createReducer( } }; - const addHandler = ((actionsTypes, actionsHandler: Reducer) => { + const addHandler = ((actionsTypes, actionsHandler) => { const creatorsOrTypes = Array.isArray(actionsTypes) ? actionsTypes : [actionsTypes]; @@ -60,12 +57,15 @@ export function createReducer( : throwInvalidActionTypeOrActionCreator() ) .forEach(type => (handlers[type] = actionsHandler)); - return chain; - }) as AddHandler; - const chain: Reducer & AddHandlerChain = Object.assign(reducer, { + return chainApi; + }) as AddHandler; + + const chainApi: Reducer & { + addHandler: AddHandler; + } = Object.assign(reducer, { addHandler, }); - return chain; + return chainApi; } diff --git a/src/create-standard-action.ts b/src/create-standard-action.ts index 61d553f..95f281d 100644 --- a/src/create-standard-action.ts +++ b/src/create-standard-action.ts @@ -1,5 +1,5 @@ import { - StringType, + TypeConstant, ActionBuilderConstructor, ActionBuilderMap, } from './type-helpers'; @@ -11,7 +11,7 @@ import { throwInvalidActionType, } from './utils/validation'; -export interface ActionBuilder { +export interface ActionBuilder {

(): ActionBuilderConstructor; map( fn: (payload: P, meta: M) => R @@ -21,7 +21,7 @@ export interface ActionBuilder { /** * @description create an action-creator of a given function that contains hidden "type" metadata */ -export function createStandardAction( +export function createStandardAction( type: T ): ActionBuilder { if (checkIsEmpty(type)) { diff --git a/src/get-type.ts b/src/get-type.ts index 2ffccd6..5b4f8ff 100644 --- a/src/get-type.ts +++ b/src/get-type.ts @@ -1,4 +1,4 @@ -import { StringType, ActionCreator, TypeMeta } from './type-helpers'; +import { TypeConstant, ActionCreator, TypeMeta } from './type-helpers'; import { checkIsEmpty, throwIsEmpty, @@ -9,7 +9,7 @@ import { /** * @description get the "type literal" of a given action-creator */ -export function getType( +export function getType( actionCreator: ActionCreator & TypeMeta ): T { if (checkIsEmpty(actionCreator)) { diff --git a/src/index.ts b/src/index.ts index e98d62b..1797069 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,7 +20,22 @@ export { isOfType } from './is-of-type'; export { isActionOf } from './is-action-of'; // type-helpers -export { ActionType, StateType, ActionCreator, TypeMeta } from './type-helpers'; +export { + TypeConstant, + Action, + ActionCreator, + Reducer, + EmptyAction, + PayloadAction, + MetaAction, + PayloadMetaAction, + EmptyAC, + PayloadAC, + PayloadMetaAC, + TypeMeta, + ActionType, + StateType, +} from './type-helpers'; // deprecated export { createActionDeprecated } from './create-action-deprecated'; diff --git a/src/type-helpers.ts b/src/type-helpers.ts index ac39414..a4aa2bc 100644 --- a/src/type-helpers.ts +++ b/src/type-helpers.ts @@ -2,151 +2,145 @@ * PUBLIC API */ -export interface TypeMeta { - getType?: () => T; -} - -export type ActionCreator = ( - ...args: any[] -) => { type: T }; - /** - * @desc Infers Action union-type from action-creator map object + * @desc Type representing Type Constant */ -export type ActionType< - ActionCreatorOrMap extends any -> = ActionCreatorOrMap extends ActionCreator - ? ReturnType - : ActionCreatorOrMap extends Record - ? { - [K in keyof ActionCreatorOrMap]: ActionType - }[keyof ActionCreatorOrMap] - : ActionCreatorOrMap extends infer R // should be just never but compiler yell with circularly references itself error - ? never - : never; +export type TypeConstant = string; /** - * @desc Infers State object from reducer map object + * @desc Type representing Generic Action */ -export type StateType = ReducerOrMap extends ( - ...args: any[] -) => any - ? ReturnType - : ReducerOrMap extends object - ? { [K in keyof ReducerOrMap]: StateType } - : never; +export type Action = { + type: TType; +}; /** - * INTERNAL API + * @desc Type representing Generic ActionCreator */ +export type ActionCreator = ( + ...args: any[] +) => Action; /** - * @private - * @desc Representing action-type of string + * @desc Type representing Generic Reducer */ -export type StringType = string; +export type Reducer = ( + state: TState | undefined, + action: TAction +) => TState; /** - * @private * @desc Action without Payload - * @type T - ActionType */ -export type EmptyAction = { - type: T; +export type EmptyAction = { + type: TType; }; /** - * @private * @desc Action with only Payload - * @type T - ActionType - * @type P - Payload */ -export type PayloadAction = { - type: T; - payload: P; +export type PayloadAction = { + type: TType; + payload: TPayload; }; /** - * @private * @desc Action with only Meta - * @type T - ActionType - * @type P - Payload - * @type M - Meta */ -export type MetaAction = { - type: T; - meta: M; +export type MetaAction = { + type: TType; + meta: TMeta; }; /** - * @private * @desc Action with both Payload and Meta - * @type T - ActionType - * @type P - Payload - * @type M - Meta - */ -export type PayloadMetaAction = { - type: T; - payload: P; - meta: M; + */ +export type PayloadMetaAction = { + type: TType; + payload: TPayload; + meta: TMeta; }; /** - * TODO: NOT USED - * @private - * @desc Flux Standard Action - * @type T - ActionType - * @type P - Payload - * @type M - Meta - */ -export interface FluxStandardAction< - T extends StringType, - P = undefined, - M = undefined -> { - type: T; - payload: P; - meta: M; - error?: true; + * @desc Action Creator producing EmptyAction + */ +export type EmptyAC = () => EmptyAction; + +/** + * @desc Action Creator producing PayloadAction + */ +export type PayloadAC = ( + payload: TPayload +) => PayloadAction; + +/** + * @desc Action Creator producing PayloadMetaAction + */ +export type PayloadMetaAC = ( + payload: TPayload, + meta: TMeta +) => PayloadMetaAction; + +/** + * @desc Type representing type getter on Action Creator instance + */ +export interface TypeMeta { + getType?: () => TType; } -/** @private */ -export type EmptyAC = () => EmptyAction; +/** + * @desc Infers Action union-type from action-creator map object + */ +export type ActionType< + TActionCreatorOrMap extends any +> = TActionCreatorOrMap extends ActionCreator + ? ReturnType + : TActionCreatorOrMap extends Record + ? { + [K in keyof TActionCreatorOrMap]: ActionType + }[keyof TActionCreatorOrMap] + : TActionCreatorOrMap extends infer R // TODO: should be just never but compiler yell with circularly references itself error + ? never + : never; -/** @private */ -export type PayloadAC = ( - payload: P -) => PayloadAction; +/** + * @desc Infers State object from reducer map object + */ +export type StateType< + TReducerOrMap extends any +> = TReducerOrMap extends Reducer + ? ReturnType + : TReducerOrMap extends Record + ? { [K in keyof TReducerOrMap]: StateType } + : never; -/** @private */ -export type PayloadMetaAC = ( - payload: P, - meta: M -) => PayloadMetaAction; +/** + * INTERNAL API + */ /** @private */ export type ActionBuilderConstructor< - T extends StringType, + TType extends TypeConstant, TPayload extends any = undefined, TMeta extends any = undefined > = [TMeta] extends [undefined] ? [TPayload] extends [undefined] ? unknown extends TPayload - ? PayloadAC + ? PayloadAC : unknown extends TMeta - ? PayloadMetaAC - : EmptyAC - : PayloadAC - : PayloadMetaAC; + ? PayloadMetaAC + : EmptyAC + : PayloadAC + : PayloadMetaAC; /** @private */ export type ActionBuilderMap< - T extends StringType, - TCustomAction extends any, + TType extends TypeConstant, + TActionProps extends any, TPayloadArg extends any = undefined, TMetaArg extends any = undefined > = [TMetaArg] extends [undefined] ? [TPayloadArg] extends [undefined] - ? () => { type: T } & TCustomAction - : (payload: TPayloadArg) => { type: T } & TCustomAction - : (payload: TPayloadArg, meta: TMetaArg) => { type: T } & TCustomAction; + ? () => { type: TType } & TActionProps + : (payload: TPayloadArg) => { type: TType } & TActionProps + : (payload: TPayloadArg, meta: TMetaArg) => { type: TType } & TActionProps; diff --git a/src/utils/validation.ts b/src/utils/validation.ts index cd4b3a6..de99ed7 100644 --- a/src/utils/validation.ts +++ b/src/utils/validation.ts @@ -1,4 +1,4 @@ -import { ActionCreator, TypeMeta, StringType } from '../type-helpers'; +import { ActionCreator, TypeMeta, TypeConstant } from '../type-helpers'; export function checkIsEmpty(arg: unknown, argPosition: number = 1) { return arg == null; @@ -10,7 +10,7 @@ export function throwIsEmpty(argPosition: number = 1): never { export function checkValidActionCreator( arg: unknown -): arg is ActionCreator { +): arg is ActionCreator { return typeof arg === 'function' && 'getType' in arg; } @@ -25,7 +25,7 @@ export function throwInvalidActionCreator(argPosition: number = 1): never { } export function checkInvalidActionCreatorInArray( - arg: ActionCreator & TypeMeta, + arg: ActionCreator & TypeMeta, idx: number ): void | never { if (arg == null) { @@ -55,7 +55,7 @@ export function throwInvalidActionType(argPosition: number = 1): never { } export function checkInvalidActionTypeInArray( - arg: StringType, + arg: TypeConstant, idx: number ): void | never { if (arg == null) { From 1fd50de2753b81d140a4d46c315a984ed6f9aac7 Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sun, 21 Apr 2019 04:31:25 +0200 Subject: [PATCH 11/22] Updated TA build in sandbox --- codesandbox/src/typesafe-actions/action.d.ts | 18 ++--- .../create-action-deprecated.d.ts | 8 +- .../src/typesafe-actions/create-action.d.ts | 6 +- .../typesafe-actions/create-async-action.d.ts | 8 +- .../create-custom-action.d.ts | 4 +- .../src/typesafe-actions/create-reducer.d.ts | 79 +++---------------- .../create-standard-action.d.ts | 6 +- .../src/typesafe-actions/get-type.d.ts | 4 +- codesandbox/src/typesafe-actions/index.d.ts | 2 +- codesandbox/src/typesafe-actions/index.esm.js | 6 +- codesandbox/src/typesafe-actions/index.js | 6 +- .../src/typesafe-actions/index.umd.js.map | 2 +- .../src/typesafe-actions/type-helpers.d.ts | 76 +++++++++--------- .../typesafe-actions/utils/validation.d.ts | 8 +- 14 files changed, 85 insertions(+), 148 deletions(-) diff --git a/codesandbox/src/typesafe-actions/action.d.ts b/codesandbox/src/typesafe-actions/action.d.ts index 5467671..2a1c302 100644 --- a/codesandbox/src/typesafe-actions/action.d.ts +++ b/codesandbox/src/typesafe-actions/action.d.ts @@ -1,37 +1,37 @@ -import { StringType } from './type-helpers'; -export declare function action(type: T, payload: undefined, meta: undefined, error: E): { +import { TypeConstant } from './type-helpers'; +export declare function action(type: T, payload: undefined, meta: undefined, error: E): { type: T; error: E; }; -export declare function action(type: T, payload: undefined, meta: M, error: E): { +export declare function action(type: T, payload: undefined, meta: M, error: E): { type: T; meta: M; error: E; }; -export declare function action(type: T, payload: P, meta: undefined, error: E): { +export declare function action(type: T, payload: P, meta: undefined, error: E): { type: T; payload: P; error: E; }; -export declare function action(type: T, payload: P, meta: M, error: E): { +export declare function action(type: T, payload: P, meta: M, error: E): { type: T; payload: P; meta: M; error: E; }; -export declare function action(type: T, payload: undefined, meta: M): { +export declare function action(type: T, payload: undefined, meta: M): { type: T; meta: M; }; -export declare function action(type: T, payload: P, meta: M): { +export declare function action(type: T, payload: P, meta: M): { type: T; payload: P; meta: M; }; -export declare function action(type: T, payload: P): { +export declare function action(type: T, payload: P): { type: T; payload: P; }; -export declare function action(type: T): { +export declare function action(type: T): { type: T; }; diff --git a/codesandbox/src/typesafe-actions/create-action-deprecated.d.ts b/codesandbox/src/typesafe-actions/create-action-deprecated.d.ts index 4f89330..a72d19d 100644 --- a/codesandbox/src/typesafe-actions/create-action-deprecated.d.ts +++ b/codesandbox/src/typesafe-actions/create-action-deprecated.d.ts @@ -1,12 +1,12 @@ -import { StringType } from './type-helpers'; -interface FSA { +import { TypeConstant } from './type-helpers'; +interface FSA { type: T; payload?: P; meta?: M; error?: E; } -export declare function createActionDeprecated FSA>(actionType: T, creatorFunction: AC): AC; -export declare function createActionDeprecated { +export declare function createActionDeprecated FSA>(actionType: T, creatorFunction: AC): AC; +export declare function createActionDeprecated { type: T; }>(actionType: T): AC; export {}; diff --git a/codesandbox/src/typesafe-actions/create-action.d.ts b/codesandbox/src/typesafe-actions/create-action.d.ts index ee83974..c50741b 100644 --- a/codesandbox/src/typesafe-actions/create-action.d.ts +++ b/codesandbox/src/typesafe-actions/create-action.d.ts @@ -1,5 +1,5 @@ -import { StringType, ActionCreator } from './type-helpers'; -export declare type PayloadMetaAction = P extends undefined ? M extends undefined ? { +import { TypeConstant, ActionCreator } from './type-helpers'; +export declare type PayloadMetaAction = P extends undefined ? M extends undefined ? { type: T; } : { type: T; @@ -12,6 +12,6 @@ export declare type PayloadMetaAction = P extends un payload: P; meta: M; }; -export declare function createAction = () => { +export declare function createAction = () => { type: T; }>(type: T, createHandler?: (actionCallback:

(payload?: P, meta?: M) => PayloadMetaAction) => AC): AC; diff --git a/codesandbox/src/typesafe-actions/create-async-action.d.ts b/codesandbox/src/typesafe-actions/create-async-action.d.ts index c8911f6..04df07c 100644 --- a/codesandbox/src/typesafe-actions/create-async-action.d.ts +++ b/codesandbox/src/typesafe-actions/create-async-action.d.ts @@ -1,10 +1,10 @@ -import { StringType, ActionBuilderConstructor } from './type-helpers'; -export interface AsyncActionBuilder { +import { TypeConstant, ActionBuilderConstructor } from './type-helpers'; +export interface AsyncActionBuilder { (): AsyncActionBuilderConstructor; } -export declare type AsyncActionBuilderConstructor = { +export declare type AsyncActionBuilderConstructor = { request: ActionBuilderConstructor; success: ActionBuilderConstructor; failure: ActionBuilderConstructor; }; -export declare function createAsyncAction(requestType: T1, successType: T2, failureType: T3): AsyncActionBuilder; +export declare function createAsyncAction(requestType: T1, successType: T2, failureType: T3): AsyncActionBuilder; diff --git a/codesandbox/src/typesafe-actions/create-custom-action.d.ts b/codesandbox/src/typesafe-actions/create-custom-action.d.ts index e7895cf..a268ad5 100644 --- a/codesandbox/src/typesafe-actions/create-custom-action.d.ts +++ b/codesandbox/src/typesafe-actions/create-custom-action.d.ts @@ -1,4 +1,4 @@ -import { ActionCreator, StringType } from './type-helpers'; -export declare function createCustomAction = () => { +import { ActionCreator, TypeConstant } from './type-helpers'; +export declare function createCustomAction = () => { type: T; }>(type: T, createHandler?: (type: T) => AC): AC; diff --git a/codesandbox/src/typesafe-actions/create-reducer.d.ts b/codesandbox/src/typesafe-actions/create-reducer.d.ts index 52739a9..c044b64 100644 --- a/codesandbox/src/typesafe-actions/create-reducer.d.ts +++ b/codesandbox/src/typesafe-actions/create-reducer.d.ts @@ -1,70 +1,11 @@ -import { RootAction } from '.'; -export declare function createReducer(initialState: S): ((state: S, action: A) => S) & { - addHandler: A, TCreatorAction extends A extends ReturnType ? A : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { - addHandler: ["type"], TTypeAction extends Exclude extends { - type: TType; - } ? { - type: TType; - } & Exclude : never, TCreator extends (...args: any[]) => Exclude, TCreatorAction extends Exclude extends ReturnType ? ReturnType & Exclude : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { - addHandler: , TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { - type: TType; - } ? { - type: TType; - } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { - addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { - type: TType; - } ? { - type: TType; - } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { - addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { - type: TType; - } ? { - type: TType; - } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { - addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { - type: TType; - } ? { - type: TType; - } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { - addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { - type: TType; - } ? { - type: TType; - } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { - addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { - type: TType; - } ? { - type: TType; - } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { - addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { - type: TType; - } ? { - type: TType; - } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { - addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { - type: TType; - } ? { - type: TType; - } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { - addHandler: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { - type: TType; - } ? { - type: TType; - } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends never ? (state: S, action: A) => S : ((state: S, action: A) => S) & { - addHandler: any; - }; - }; - }; - }; - }; - }; - }; - }; - }; - }; - }; +import { RootAction } from './'; +import { Reducer, Action } from './type-helpers'; +declare type AddHandler = TAllActions, TCreatorAction extends TAllActions extends ReturnType ? TAllActions : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude extends never ? Reducer : Reducer & { + addHandler: AddHandler>; }; +export declare function createReducer(initialState: S): Reducer & { + addHandler: AddHandler; +}; +export {}; diff --git a/codesandbox/src/typesafe-actions/create-standard-action.d.ts b/codesandbox/src/typesafe-actions/create-standard-action.d.ts index 610723b..bf99567 100644 --- a/codesandbox/src/typesafe-actions/create-standard-action.d.ts +++ b/codesandbox/src/typesafe-actions/create-standard-action.d.ts @@ -1,6 +1,6 @@ -import { StringType, ActionBuilderConstructor, ActionBuilderMap } from './type-helpers'; -export interface ActionBuilder { +import { TypeConstant, ActionBuilderConstructor, ActionBuilderMap } from './type-helpers'; +export interface ActionBuilder {

(): ActionBuilderConstructor; map(fn: (payload: P, meta: M) => R): ActionBuilderMap; } -export declare function createStandardAction(type: T): ActionBuilder; +export declare function createStandardAction(type: T): ActionBuilder; diff --git a/codesandbox/src/typesafe-actions/get-type.d.ts b/codesandbox/src/typesafe-actions/get-type.d.ts index 1230a5b..ad4bdae 100644 --- a/codesandbox/src/typesafe-actions/get-type.d.ts +++ b/codesandbox/src/typesafe-actions/get-type.d.ts @@ -1,2 +1,2 @@ -import { StringType, ActionCreator, TypeMeta } from './type-helpers'; -export declare function getType(actionCreator: ActionCreator & TypeMeta): T; +import { TypeConstant, ActionCreator, TypeMeta } from './type-helpers'; +export declare function getType(actionCreator: ActionCreator & TypeMeta): T; diff --git a/codesandbox/src/typesafe-actions/index.d.ts b/codesandbox/src/typesafe-actions/index.d.ts index 49d6938..7f4b94e 100644 --- a/codesandbox/src/typesafe-actions/index.d.ts +++ b/codesandbox/src/typesafe-actions/index.d.ts @@ -7,5 +7,5 @@ export { createReducer } from './create-reducer'; export { getType } from './get-type'; export { isOfType } from './is-of-type'; export { isActionOf } from './is-action-of'; -export { ActionType, StateType, ActionCreator, TypeMeta } from './type-helpers'; +export { TypeConstant, Action, ActionCreator, Reducer, EmptyAction, PayloadAction, MetaAction, PayloadMetaAction, EmptyAC, PayloadAC, PayloadMetaAC, TypeMeta, ActionType, StateType, } from './type-helpers'; export { createActionDeprecated } from './create-action-deprecated'; diff --git a/codesandbox/src/typesafe-actions/index.esm.js b/codesandbox/src/typesafe-actions/index.esm.js index b9e8b3f..02cb244 100644 --- a/codesandbox/src/typesafe-actions/index.esm.js +++ b/codesandbox/src/typesafe-actions/index.esm.js @@ -158,12 +158,12 @@ function createReducer(initialState) { : throwInvalidActionTypeOrActionCreator(); }) .forEach(function (type) { return (handlers[type] = actionsHandler); }); - return chain; + return chainApi; }); - var chain = Object.assign(reducer, { + var chainApi = Object.assign(reducer, { addHandler: addHandler, }); - return chain; + return chainApi; } function isOfType(actionTypeOrTypes, action) { diff --git a/codesandbox/src/typesafe-actions/index.js b/codesandbox/src/typesafe-actions/index.js index f6cb39b..8136b31 100644 --- a/codesandbox/src/typesafe-actions/index.js +++ b/codesandbox/src/typesafe-actions/index.js @@ -162,12 +162,12 @@ function createReducer(initialState) { : throwInvalidActionTypeOrActionCreator(); }) .forEach(function (type) { return (handlers[type] = actionsHandler); }); - return chain; + return chainApi; }); - var chain = Object.assign(reducer, { + var chainApi = Object.assign(reducer, { addHandler: addHandler, }); - return chain; + return chainApi; } function isOfType(actionTypeOrTypes, action) { diff --git a/codesandbox/src/typesafe-actions/index.umd.js.map b/codesandbox/src/typesafe-actions/index.umd.js.map index 49be7f7..8b0345d 100644 --- a/codesandbox/src/typesafe-actions/index.umd.js.map +++ b/codesandbox/src/typesafe-actions/index.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"index.umd.js","sources":["../src/utils/validation.ts","../src/action.ts","../src/create-custom-action.ts","../src/get-type.ts","../src/create-action.ts","../src/create-standard-action.ts","../src/create-async-action.ts","../src/create-reducer.ts","../src/is-of-type.ts","../src/is-action-of.ts","../src/create-action-deprecated.ts"],"sourcesContent":["import { ActionCreator, TypeMeta, StringType } from '../type-helpers';\n\nexport function checkIsEmpty(arg: unknown, argPosition: number = 1) {\n return arg == null;\n}\n\nexport function throwIsEmpty(argPosition: number = 1): never {\n throw new Error(`Argument ${argPosition} is empty.`);\n}\n\nexport function checkValidActionCreator(\n arg: unknown\n): arg is ActionCreator {\n return typeof arg === 'function' && 'getType' in arg;\n}\n\nexport function checkInvalidActionCreator(arg: unknown) {\n return !checkValidActionCreator(arg);\n}\n\nexport function throwInvalidActionCreator(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\"`\n );\n}\n\nexport function checkInvalidActionCreatorInArray(\n arg: ActionCreator & TypeMeta,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (arg.getType == null) {\n throw new Error(\n // tslint:disable-next-line:max-line-length\n `Argument contains array with invalid element at index ${idx}, it should be an action-creator instance from \"typesafe-actions\"`\n );\n }\n}\n\nexport function checkValidActionType(arg: unknown): arg is string | symbol {\n return typeof arg === 'string' || typeof arg === 'symbol';\n}\n\nexport function checkInvalidActionType(arg: unknown): arg is string | symbol {\n return !checkValidActionType(arg);\n}\n\nexport function throwInvalidActionType(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action type of type: string | symbol`\n );\n}\n\nexport function checkInvalidActionTypeInArray(\n arg: StringType,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (typeof arg !== 'string' && typeof arg !== 'symbol') {\n throw new Error(\n `Argument contains array with invalid element at index ${idx}, it should be of type: string | symbol`\n );\n }\n}\n\nexport function throwInvalidActionTypeOrActionCreator(\n argPosition: number = 1\n): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\" or action type of type: string | symbol`\n );\n}\n","import { StringType } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionCreator,\n} from './utils/validation';\n\nexport function action(\n type: T,\n payload: undefined,\n meta: undefined,\n error: E\n): { type: T; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M,\n error: E\n): { type: T; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: undefined,\n error: E\n): { type: T; payload: P; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: M,\n error: E\n): { type: T; payload: P; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M\n): { type: T; meta: M };\n\nexport function action(\n type: T,\n payload: P,\n meta: M\n): { type: T; payload: P; meta: M };\n\nexport function action(\n type: T,\n payload: P\n): { type: T; payload: P };\n\nexport function action(type: T): { type: T };\n\n/**\n * @description flux standard action factory\n * @example\n * ```\n * const add = (amount: number, meta?: MetaShape) => action('INCREMENT', amount, meta);\n * ```\n */\nexport function action<\n T extends StringType,\n P = undefined,\n M = undefined,\n E = undefined\n>(type: T, payload?: P, meta?: M, error?: E) {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionCreator(1);\n }\n\n return { type, payload, meta, error } as any;\n}\n","import { ActionCreator, StringType } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\n/**\n * @description create custom action-creator using constructor function with injected type argument\n */\nexport function createCustomAction<\n T extends StringType,\n AC extends ActionCreator = () => { type: T }\n>(type: T, createHandler?: (type: T) => AC): AC {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n const actionCreator: AC =\n createHandler != null ? createHandler(type) : ((() => ({ type })) as AC);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import { StringType, ActionCreator, TypeMeta } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionCreator,\n throwInvalidActionCreator,\n} from './utils/validation';\n\n/**\n * @description get the \"type literal\" of a given action-creator\n */\nexport function getType(\n actionCreator: ActionCreator & TypeMeta\n): T {\n if (checkIsEmpty(actionCreator)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionCreator(actionCreator)) {\n throwInvalidActionCreator(1);\n }\n\n return actionCreator.getType!();\n}\n","import { StringType, ActionCreator } from './type-helpers';\nimport { action } from './action';\n\nexport type PayloadMetaAction = P extends undefined\n ? M extends undefined\n ? { type: T }\n : { type: T; meta: M }\n : M extends undefined\n ? { type: T; payload: P }\n : { type: T; payload: P; meta: M };\n\n/**\n * @description typesafe action-creator factory\n */\nexport function createAction<\n T extends StringType,\n AC extends ActionCreator = () => { type: T }\n>(\n type: T,\n createHandler?: (\n actionCallback:

(\n payload?: P,\n meta?: M\n ) => PayloadMetaAction\n ) => AC\n): AC {\n // validation is already done in action function\n\n const actionCreator: AC =\n createHandler == null\n ? ((() => action(type)) as AC)\n : createHandler(action.bind(null, type) as Parameters<\n typeof createHandler\n >[0]);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import {\n StringType,\n ActionBuilderConstructor,\n ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\nexport interface ActionBuilder {\n

(): ActionBuilderConstructor;\n map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap;\n}\n\n/**\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createStandardAction(\n type: T\n): ActionBuilder {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n function constructor(): ActionBuilderConstructor {\n return createCustomAction(type, _type => (payload: P, meta: M) => ({\n type: _type,\n payload,\n meta,\n })) as ActionBuilderConstructor;\n }\n\n function map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap {\n return createCustomAction(type, _type => (payload: P, meta: M) =>\n Object.assign(fn(payload, meta), { type: _type })\n ) as ActionBuilderMap;\n }\n\n return Object.assign(constructor, { map });\n}\n","import {\n StringType,\n ActionBuilderConstructor,\n // ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport { checkInvalidActionTypeInArray } from './utils/validation';\n\nexport interface AsyncActionBuilder<\n T1 extends StringType,\n T2 extends StringType,\n T3 extends StringType\n> {\n // tslint:disable-next-line:callable-types\n (): AsyncActionBuilderConstructor;\n // withMappers(\n // requestMapper: (a?: A1) => P1,\n // successMapper: (a?: A2) => P2,\n // failureMapper: (a?: A3) => P3\n // ): AsyncActionBuilderWithMappers;\n}\n\nexport type AsyncActionBuilderConstructor<\n T1 extends StringType,\n T2 extends StringType,\n T3 extends StringType,\n P1,\n P2,\n P3\n> = {\n request: ActionBuilderConstructor;\n success: ActionBuilderConstructor;\n failure: ActionBuilderConstructor;\n};\n\n/**\n * implementation\n */\nexport function createAsyncAction<\n T1 extends StringType,\n T2 extends StringType,\n T3 extends StringType\n>(\n requestType: T1,\n successType: T2,\n failureType: T3\n): AsyncActionBuilder {\n [requestType, successType, failureType].forEach(\n checkInvalidActionTypeInArray\n );\n\n function constructor(): AsyncActionBuilderConstructor<\n T1,\n T2,\n T3,\n P1,\n P2,\n P3\n > {\n return {\n request: createCustomAction(requestType, type => (payload?: P1) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n success: createCustomAction(successType, type => (payload?: P2) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n failure: createCustomAction(failureType, type => (payload?: P3) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n };\n }\n\n return Object.assign(constructor);\n}\n\n// export type AsyncActionBuilderWithMappers<\n// T1 extends StringType,\n// T2 extends StringType,\n// T3 extends StringType,\n// A1 = undefined,\n// P1 = undefined,\n// A2 = undefined,\n// P2 = undefined,\n// A3 = undefined,\n// P3 = undefined\n// > = {\n// request: ActionBuilderMap;\n// success: ActionBuilderMap;\n// failure: ActionBuilderMap;\n// };\n\n// function withMappers(\n// requestMapper: (a?: A1) => P1,\n// successMapper: (a?: A2) => P2,\n// failureMapper: (a?: A3) => P3\n// ): AsyncActionBuilderWithMappers {\n// return {\n// request: createCustomAction(requestType, type => (payload?: A1) => ({\n// type,\n// payload: requestMapper != null ? requestMapper(payload) : undefined,\n// })) as MapBuilder,\n// success: createCustomAction(successType, type => (payload?: A2) => ({\n// type,\n// payload: successMapper != null ? successMapper(payload) : undefined,\n// })) as MapBuilder,\n// failure: createCustomAction(failureType, type => (payload?: A3) => ({\n// type,\n// payload: failureMapper != null ? failureMapper(payload) : undefined,\n// })) as MapBuilder,\n// };\n// }\n","// @ts-ignore\nimport { RootAction } from '.';\nimport { getType } from './get-type';\nimport {\n checkValidActionCreator,\n checkValidActionType,\n throwInvalidActionTypeOrActionCreator,\n} from './utils/validation';\n\nexport function createReducer(\n initialState: S\n) {\n type AddHandler = <\n TType extends TAllActions['type'],\n TTypeAction extends TAllActions extends { type: TType }\n ? TAllActions\n : never,\n TCreator extends (...args: any[]) => TAllActions,\n TCreatorAction extends TAllActions extends ReturnType\n ? TAllActions\n : never,\n TActionIntersection extends TTypeAction extends TCreatorAction\n ? TTypeAction\n : never\n >(\n actionsTypes: TType | TCreator | TType[] | TCreator[],\n actionsHandler: (state: S, action: TActionIntersection) => S\n ) => Exclude extends never\n ? Reducer\n : Reducer & {\n addHandler: AddHandler<\n Exclude\n >;\n };\n\n type AddHandlerChain = { addHandler: AddHandler };\n\n const handlers: Record = {};\n\n type Reducer = (state: S, action: A) => S;\n const reducer: Reducer = (state = initialState, action) => {\n if (handlers.hasOwnProperty(action.type)) {\n return handlers[action.type](state, action);\n } else {\n return state;\n }\n };\n\n const addHandler = ((actionsTypes, actionsHandler: Reducer) => {\n const creatorsOrTypes = Array.isArray(actionsTypes)\n ? actionsTypes\n : [actionsTypes];\n\n creatorsOrTypes\n .map(acOrType =>\n checkValidActionCreator(acOrType)\n ? getType(acOrType)\n : checkValidActionType(acOrType)\n ? acOrType\n : throwInvalidActionTypeOrActionCreator()\n )\n .forEach(type => (handlers[type] = actionsHandler));\n return chain;\n }) as AddHandler;\n\n const chain: Reducer & AddHandlerChain = Object.assign(reducer, {\n addHandler,\n });\n\n return chain;\n}\n","import {\n checkInvalidActionTypeInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[],\n action: A\n): action is A extends { type: T } ? A : never;\n\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[]\n): (\n action: A\n) => action is A extends { type: T } ? A : never;\n\n/**\n * implementation\n */\nexport function isOfType(\n actionTypeOrTypes: T | T[],\n action?: A\n) {\n if (checkIsEmpty(actionTypeOrTypes)) {\n throwIsEmpty(1);\n }\n\n const actionTypes = Array.isArray(actionTypeOrTypes)\n ? actionTypeOrTypes\n : [actionTypeOrTypes];\n\n actionTypes.forEach(checkInvalidActionTypeInArray);\n\n const assertFn = (_action: A) => actionTypes.includes(_action.type);\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","import { TypeMeta } from './type-helpers';\nimport {\n checkInvalidActionCreatorInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n\nexport type ActionCreator = ((\n ...args: any[]\n) => T) &\n TypeMeta;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[],\n action: { type: string }\n): action is ReturnType;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[]\n): (action: { type: string }) => action is ReturnType;\n\n/**\n * implementation\n */\nexport function isActionOf>(\n actionCreatorOrCreators: AC | AC[],\n action?: { type: string }\n) {\n if (checkIsEmpty(actionCreatorOrCreators)) {\n throwIsEmpty(1);\n }\n\n const actionCreators = Array.isArray(actionCreatorOrCreators)\n ? actionCreatorOrCreators\n : [actionCreatorOrCreators];\n\n actionCreators.forEach(checkInvalidActionCreatorInArray);\n\n const assertFn = (_action: { type: string }) =>\n actionCreators.some(\n actionCreator => _action.type === actionCreator.getType!()\n );\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","/**\n * DEPRECATED\n */\n\nimport { StringType } from './type-helpers';\n\ninterface FSA {\n type: T;\n payload?: P;\n meta?: M;\n error?: E;\n}\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends StringType,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction: AC): AC;\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends StringType,\n AC extends () => { type: T }\n>(actionType: T): AC;\n\n/**\n * implementation\n */\nexport function createActionDeprecated<\n T extends StringType,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction?: AC): AC {\n let actionCreator: AC;\n\n if (creatorFunction != null) {\n if (typeof creatorFunction !== 'function') {\n throw new Error('second argument is not a function');\n }\n\n actionCreator = creatorFunction as AC;\n } else {\n actionCreator = (() => ({ type: actionType })) as AC;\n }\n\n if (actionType != null) {\n if (typeof actionType !== 'string' && typeof actionType !== 'symbol') {\n throw new Error('first argument should be type of: string | symbol');\n }\n } else {\n throw new Error('first argument is missing');\n }\n\n return actionCreator;\n}\n"],"names":["checkIsEmpty","arg","argPosition","throwIsEmpty","Error","checkValidActionCreator","throwInvalidActionCreator","checkInvalidActionCreatorInArray","idx","getType","checkValidActionType","checkInvalidActionType","throwInvalidActionType","checkInvalidActionTypeInArray","action","type","payload","meta","error","createCustomAction","createHandler","actionCreator","Object","assign","toString","bind","_type","map","fn","requestType","successType","failureType","forEach","request","success","failure","initialState","handlers","chain","state","hasOwnProperty","addHandler","actionsTypes","actionsHandler","Array","isArray","acOrType","throwInvalidActionTypeOrActionCreator","actionTypeOrTypes","actionTypes","assertFn","_action","includes","undefined","actionCreatorOrCreators","actionCreators","some","actionType","creatorFunction"],"mappings":"2MAEgBA,EAAaC,EAAcC,GACzC,oBADyCA,KAC3B,MAAPD,WAGOE,EAAaD,GAC3B,mBAD2BA,KACrB,IAAIE,MAAM,YAAYF,yBAGdG,EACdJ,GAEA,MAAsB,mBAARA,GAAsB,YAAaA,WAOnCK,EAA0BJ,GACxC,mBADwCA,KAClC,IAAIE,MACR,YAAYF,2FAIAK,EACdN,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,MAAfP,EAAIQ,QACb,MAAM,IAAIL,MAER,yDAAyDI,gFAK/CE,EAAqBT,GACnC,MAAsB,iBAARA,GAAmC,iBAARA,WAG3BU,EAAuBV,GACrC,OAAQS,EAAqBT,YAGfW,EAAuBV,GACrC,mBADqCA,KAC/B,IAAIE,MACR,YAAYF,gFAIAW,EACdZ,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,iBAARP,GAAmC,iBAARA,EAC3C,MAAM,IAAIG,MACR,yDAAyDI,sDCJ/CM,EAKdC,EAASC,EAAaC,EAAUC,GAShC,OARIlB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBT,EAA0B,IAGnBS,OAAMC,UAASC,OAAMC,kBCjEhBC,EAGdJ,EAASK,GACLpB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAGzB,IAAMS,EACa,MAAjBD,EAAwBA,EAAcL,cAAgB,OAAGA,SAE3D,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,cClBJN,EACdY,GAUA,OARIrB,EAAaqB,IACflB,EAAa,GHEPE,EGCsBgB,IAC5Bf,EAA0B,GAGrBe,EAAcZ,6CCJrBM,EACAK,GASA,IAAMC,EACa,MAAjBD,aACY,OAAAN,EAAOC,IACfK,EAAcN,EAAOW,KAAK,KAAMV,IAItC,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,sCCdlBA,GA0BA,OAxBIf,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAmBlBU,OAAOC,OAhBd,WACE,OAAOJ,EAAmBJ,EAAM,SAAAW,GAAS,OAAA,SAACV,EAAYC,GAAY,OAChEF,KAAMW,EACNV,UACAC,aAYgCU,IARpC,SACEC,GAEA,OAAOT,EAAmBJ,EAAM,SAAAW,GAAS,OAAA,SAACV,EAAYC,GACpD,OAAAK,OAAOC,OAAOK,EAAGZ,EAASC,IAASF,KAAMW,+DCH7CG,EACAC,EACAC,GA8BA,OA5BCF,EAAaC,EAAaC,GAAaC,QACtCnB,GA2BKS,OAAOC,OAxBd,WAQE,OACEU,QAASd,EAAmBU,EAAa,SAAAd,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFkB,QAASf,EAAmBW,EAAa,SAAAf,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFmB,QAAShB,EAAmBY,EAAa,SAAAhB,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,2CC5DNoB,GA2BA,IAAMC,KA4BAC,EAAmChB,OAAOC,OAzBvB,SAACgB,EAAsBzB,GAC9C,oBADwByB,KACpBF,EAASG,eAAe1B,EAAOC,MAC1BsB,EAASvB,EAAOC,MAAMwB,EAAOzB,GAE7ByB,IAsBTE,oBAlBmBC,EAAcC,GAcjC,OAbwBC,MAAMC,QAAQH,GAClCA,GACCA,IAGFf,IAAI,SAAAmB,GACH,OAAAzC,EAAwByC,GACpBrC,EAAQqC,GACRpC,EAAqBoC,GACrBA,WPcV5C,GAEA,mBAFAA,KAEM,IAAIE,MACR,YAAYF,0HOhBJ6C,KAELf,QAAQ,SAAAjB,GAAQ,OAACsB,EAAStB,GAAQ4B,IAC9BL,KAOT,OAAOA,mCCzCPU,EACAlC,GAEId,EAAagD,IACf7C,EAAa,GAGf,IAAM8C,EAAcL,MAAMC,QAAQG,GAC9BA,GACCA,GAELC,EAAYjB,QAAQnB,GAEpB,IAAMqC,EAAW,SAACC,GAAe,OAAAF,EAAYG,SAASD,EAAQpC,OAG9D,YAAesC,IAAXvC,EACKoC,EAGFA,EAASpC,0BCfhBwC,EACAxC,GAEId,EAAasD,IACfnD,EAAa,GAGf,IAAMoD,EAAiBX,MAAMC,QAAQS,GACjCA,GACCA,GAELC,EAAevB,QAAQzB,GAEvB,IAAM2C,EAAW,SAACC,GAChB,OAAAI,EAAeC,KACb,SAAAnC,GAAiB,OAAA8B,EAAQpC,OAASM,EAAcZ,aAIpD,YAAe4C,IAAXvC,EACKoC,EAGFA,EAASpC,sCCnBhB2C,EAAeC,GACf,IAAIrC,EAEJ,GAAuB,MAAnBqC,EAAyB,CAC3B,GAA+B,mBAApBA,EACT,MAAM,IAAItD,MAAM,qCAGlBiB,EAAgBqC,OAEhBrC,aAAuB,OAAGN,KAAM0C,IAGlC,GAAkB,MAAdA,EAKF,MAAM,IAAIrD,MAAM,6BAJhB,GAA0B,iBAAfqD,GAAiD,iBAAfA,EAC3C,MAAM,IAAIrD,MAAM,qDAMpB,OAAOiB"} \ No newline at end of file +{"version":3,"file":"index.umd.js","sources":["../src/utils/validation.ts","../src/action.ts","../src/create-custom-action.ts","../src/get-type.ts","../src/create-action.ts","../src/create-standard-action.ts","../src/create-async-action.ts","../src/create-reducer.ts","../src/is-of-type.ts","../src/is-action-of.ts","../src/create-action-deprecated.ts"],"sourcesContent":["import { ActionCreator, TypeMeta, TypeConstant } from '../type-helpers';\n\nexport function checkIsEmpty(arg: unknown, argPosition: number = 1) {\n return arg == null;\n}\n\nexport function throwIsEmpty(argPosition: number = 1): never {\n throw new Error(`Argument ${argPosition} is empty.`);\n}\n\nexport function checkValidActionCreator(\n arg: unknown\n): arg is ActionCreator {\n return typeof arg === 'function' && 'getType' in arg;\n}\n\nexport function checkInvalidActionCreator(arg: unknown) {\n return !checkValidActionCreator(arg);\n}\n\nexport function throwInvalidActionCreator(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\"`\n );\n}\n\nexport function checkInvalidActionCreatorInArray(\n arg: ActionCreator & TypeMeta,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (arg.getType == null) {\n throw new Error(\n // tslint:disable-next-line:max-line-length\n `Argument contains array with invalid element at index ${idx}, it should be an action-creator instance from \"typesafe-actions\"`\n );\n }\n}\n\nexport function checkValidActionType(arg: unknown): arg is string | symbol {\n return typeof arg === 'string' || typeof arg === 'symbol';\n}\n\nexport function checkInvalidActionType(arg: unknown): arg is string | symbol {\n return !checkValidActionType(arg);\n}\n\nexport function throwInvalidActionType(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action type of type: string | symbol`\n );\n}\n\nexport function checkInvalidActionTypeInArray(\n arg: TypeConstant,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (typeof arg !== 'string' && typeof arg !== 'symbol') {\n throw new Error(\n `Argument contains array with invalid element at index ${idx}, it should be of type: string | symbol`\n );\n }\n}\n\nexport function throwInvalidActionTypeOrActionCreator(\n argPosition: number = 1\n): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\" or action type of type: string | symbol`\n );\n}\n","import { TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionCreator,\n} from './utils/validation';\n\nexport function action(\n type: T,\n payload: undefined,\n meta: undefined,\n error: E\n): { type: T; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M,\n error: E\n): { type: T; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: undefined,\n error: E\n): { type: T; payload: P; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: M,\n error: E\n): { type: T; payload: P; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M\n): { type: T; meta: M };\n\nexport function action(\n type: T,\n payload: P,\n meta: M\n): { type: T; payload: P; meta: M };\n\nexport function action(\n type: T,\n payload: P\n): { type: T; payload: P };\n\nexport function action(type: T): { type: T };\n\n/**\n * @description flux standard action factory\n * @example\n * ```\n * const add = (amount: number, meta?: MetaShape) => action('INCREMENT', amount, meta);\n * ```\n */\nexport function action<\n T extends TypeConstant,\n P = undefined,\n M = undefined,\n E = undefined\n>(type: T, payload?: P, meta?: M, error?: E) {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionCreator(1);\n }\n\n return { type, payload, meta, error } as any;\n}\n","import { ActionCreator, TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\n/**\n * @description create custom action-creator using constructor function with injected type argument\n */\nexport function createCustomAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(type: T, createHandler?: (type: T) => AC): AC {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n const actionCreator: AC =\n createHandler != null ? createHandler(type) : ((() => ({ type })) as AC);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import { TypeConstant, ActionCreator, TypeMeta } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionCreator,\n throwInvalidActionCreator,\n} from './utils/validation';\n\n/**\n * @description get the \"type literal\" of a given action-creator\n */\nexport function getType(\n actionCreator: ActionCreator & TypeMeta\n): T {\n if (checkIsEmpty(actionCreator)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionCreator(actionCreator)) {\n throwInvalidActionCreator(1);\n }\n\n return actionCreator.getType!();\n}\n","import { TypeConstant, ActionCreator } from './type-helpers';\nimport { action } from './action';\n\nexport type PayloadMetaAction<\n T extends TypeConstant,\n P,\n M\n> = P extends undefined\n ? M extends undefined\n ? { type: T }\n : { type: T; meta: M }\n : M extends undefined\n ? { type: T; payload: P }\n : { type: T; payload: P; meta: M };\n\n/**\n * @description typesafe action-creator factory\n */\nexport function createAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(\n type: T,\n createHandler?: (\n actionCallback:

(\n payload?: P,\n meta?: M\n ) => PayloadMetaAction\n ) => AC\n): AC {\n // validation is already done in action function\n\n const actionCreator: AC =\n createHandler == null\n ? ((() => action(type)) as AC)\n : createHandler(action.bind(null, type) as Parameters<\n typeof createHandler\n >[0]);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\nexport interface ActionBuilder {\n

(): ActionBuilderConstructor;\n map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap;\n}\n\n/**\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createStandardAction(\n type: T\n): ActionBuilder {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n function constructor(): ActionBuilderConstructor {\n return createCustomAction(type, _type => (payload: P, meta: M) => ({\n type: _type,\n payload,\n meta,\n })) as ActionBuilderConstructor;\n }\n\n function map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap {\n return createCustomAction(type, _type => (payload: P, meta: M) =>\n Object.assign(fn(payload, meta), { type: _type })\n ) as ActionBuilderMap;\n }\n\n return Object.assign(constructor, { map });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n // ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport { checkInvalidActionTypeInArray } from './utils/validation';\n\nexport interface AsyncActionBuilder<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n> {\n // tslint:disable-next-line:callable-types\n (): AsyncActionBuilderConstructor;\n // withMappers(\n // requestMapper: (a?: A1) => P1,\n // successMapper: (a?: A2) => P2,\n // failureMapper: (a?: A3) => P3\n // ): AsyncActionBuilderWithMappers;\n}\n\nexport type AsyncActionBuilderConstructor<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant,\n P1,\n P2,\n P3\n> = {\n request: ActionBuilderConstructor;\n success: ActionBuilderConstructor;\n failure: ActionBuilderConstructor;\n};\n\n/**\n * implementation\n */\nexport function createAsyncAction<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n>(\n requestType: T1,\n successType: T2,\n failureType: T3\n): AsyncActionBuilder {\n [requestType, successType, failureType].forEach(\n checkInvalidActionTypeInArray\n );\n\n function constructor(): AsyncActionBuilderConstructor<\n T1,\n T2,\n T3,\n P1,\n P2,\n P3\n > {\n return {\n request: createCustomAction(requestType, type => (payload?: P1) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n success: createCustomAction(successType, type => (payload?: P2) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n failure: createCustomAction(failureType, type => (payload?: P3) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n };\n }\n\n return Object.assign(constructor);\n}\n\n// export type AsyncActionBuilderWithMappers<\n// T1 extends StringType,\n// T2 extends StringType,\n// T3 extends StringType,\n// A1 = undefined,\n// P1 = undefined,\n// A2 = undefined,\n// P2 = undefined,\n// A3 = undefined,\n// P3 = undefined\n// > = {\n// request: ActionBuilderMap;\n// success: ActionBuilderMap;\n// failure: ActionBuilderMap;\n// };\n\n// function withMappers(\n// requestMapper: (a?: A1) => P1,\n// successMapper: (a?: A2) => P2,\n// failureMapper: (a?: A3) => P3\n// ): AsyncActionBuilderWithMappers {\n// return {\n// request: createCustomAction(requestType, type => (payload?: A1) => ({\n// type,\n// payload: requestMapper != null ? requestMapper(payload) : undefined,\n// })) as MapBuilder,\n// success: createCustomAction(successType, type => (payload?: A2) => ({\n// type,\n// payload: successMapper != null ? successMapper(payload) : undefined,\n// })) as MapBuilder,\n// failure: createCustomAction(failureType, type => (payload?: A3) => ({\n// type,\n// payload: failureMapper != null ? failureMapper(payload) : undefined,\n// })) as MapBuilder,\n// };\n// }\n","// @ts-ignore\nimport { RootAction } from './';\nimport { getType } from './get-type';\nimport {\n checkValidActionCreator,\n checkValidActionType,\n throwInvalidActionTypeOrActionCreator,\n} from './utils/validation';\nimport { Reducer, Action } from './type-helpers';\n\ntype AddHandler = <\n TType extends TAllActions['type'],\n TTypeAction extends TAllActions extends { type: TType } ? TAllActions : never,\n TCreator extends (...args: any[]) => TAllActions,\n TCreatorAction extends TAllActions extends ReturnType\n ? TAllActions\n : never,\n TActionIntersection extends TTypeAction extends TCreatorAction\n ? TTypeAction\n : never\n>(\n actionsTypes: TType | TCreator | TType[] | TCreator[],\n actionsHandler: (state: S, action: TActionIntersection) => S\n) => Exclude extends never\n ? Reducer\n : Reducer & {\n addHandler: AddHandler<\n S,\n Exclude\n >;\n };\n\nexport function createReducer(\n initialState: S\n) {\n const handlers: Record S> = {};\n\n const reducer: Reducer = (state = initialState, action) => {\n if (handlers.hasOwnProperty(action.type)) {\n return handlers[action.type](state, action);\n } else {\n return state;\n }\n };\n\n const addHandler = ((actionsTypes, actionsHandler) => {\n const creatorsOrTypes = Array.isArray(actionsTypes)\n ? actionsTypes\n : [actionsTypes];\n\n creatorsOrTypes\n .map(acOrType =>\n checkValidActionCreator(acOrType)\n ? getType(acOrType)\n : checkValidActionType(acOrType)\n ? acOrType\n : throwInvalidActionTypeOrActionCreator()\n )\n .forEach(type => (handlers[type] = actionsHandler));\n\n return chainApi;\n }) as AddHandler;\n\n const chainApi: Reducer & {\n addHandler: AddHandler;\n } = Object.assign(reducer, {\n addHandler,\n });\n\n return chainApi;\n}\n","import {\n checkInvalidActionTypeInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[],\n action: A\n): action is A extends { type: T } ? A : never;\n\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[]\n): (\n action: A\n) => action is A extends { type: T } ? A : never;\n\n/**\n * implementation\n */\nexport function isOfType(\n actionTypeOrTypes: T | T[],\n action?: A\n) {\n if (checkIsEmpty(actionTypeOrTypes)) {\n throwIsEmpty(1);\n }\n\n const actionTypes = Array.isArray(actionTypeOrTypes)\n ? actionTypeOrTypes\n : [actionTypeOrTypes];\n\n actionTypes.forEach(checkInvalidActionTypeInArray);\n\n const assertFn = (_action: A) => actionTypes.includes(_action.type);\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","import { TypeMeta } from './type-helpers';\nimport {\n checkInvalidActionCreatorInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n\nexport type ActionCreator = ((\n ...args: any[]\n) => T) &\n TypeMeta;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[],\n action: { type: string }\n): action is ReturnType;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[]\n): (action: { type: string }) => action is ReturnType;\n\n/**\n * implementation\n */\nexport function isActionOf>(\n actionCreatorOrCreators: AC | AC[],\n action?: { type: string }\n) {\n if (checkIsEmpty(actionCreatorOrCreators)) {\n throwIsEmpty(1);\n }\n\n const actionCreators = Array.isArray(actionCreatorOrCreators)\n ? actionCreatorOrCreators\n : [actionCreatorOrCreators];\n\n actionCreators.forEach(checkInvalidActionCreatorInArray);\n\n const assertFn = (_action: { type: string }) =>\n actionCreators.some(\n actionCreator => _action.type === actionCreator.getType!()\n );\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","/**\n * DEPRECATED\n */\n\nimport { TypeConstant } from './type-helpers';\n\ninterface FSA {\n type: T;\n payload?: P;\n meta?: M;\n error?: E;\n}\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction: AC): AC;\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends () => { type: T }\n>(actionType: T): AC;\n\n/**\n * implementation\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction?: AC): AC {\n let actionCreator: AC;\n\n if (creatorFunction != null) {\n if (typeof creatorFunction !== 'function') {\n throw new Error('second argument is not a function');\n }\n\n actionCreator = creatorFunction as AC;\n } else {\n actionCreator = (() => ({ type: actionType })) as AC;\n }\n\n if (actionType != null) {\n if (typeof actionType !== 'string' && typeof actionType !== 'symbol') {\n throw new Error('first argument should be type of: string | symbol');\n }\n } else {\n throw new Error('first argument is missing');\n }\n\n return actionCreator;\n}\n"],"names":["checkIsEmpty","arg","argPosition","throwIsEmpty","Error","checkValidActionCreator","throwInvalidActionCreator","checkInvalidActionCreatorInArray","idx","getType","checkValidActionType","checkInvalidActionType","throwInvalidActionType","checkInvalidActionTypeInArray","action","type","payload","meta","error","createCustomAction","createHandler","actionCreator","Object","assign","toString","bind","_type","map","fn","requestType","successType","failureType","forEach","request","success","failure","initialState","handlers","chainApi","state","hasOwnProperty","addHandler","actionsTypes","actionsHandler","Array","isArray","acOrType","throwInvalidActionTypeOrActionCreator","actionTypeOrTypes","actionTypes","assertFn","_action","includes","undefined","actionCreatorOrCreators","actionCreators","some","actionType","creatorFunction"],"mappings":"2MAEgBA,EAAaC,EAAcC,GACzC,oBADyCA,KAC3B,MAAPD,WAGOE,EAAaD,GAC3B,mBAD2BA,KACrB,IAAIE,MAAM,YAAYF,yBAGdG,EACdJ,GAEA,MAAsB,mBAARA,GAAsB,YAAaA,WAOnCK,EAA0BJ,GACxC,mBADwCA,KAClC,IAAIE,MACR,YAAYF,2FAIAK,EACdN,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,MAAfP,EAAIQ,QACb,MAAM,IAAIL,MAER,yDAAyDI,gFAK/CE,EAAqBT,GACnC,MAAsB,iBAARA,GAAmC,iBAARA,WAG3BU,EAAuBV,GACrC,OAAQS,EAAqBT,YAGfW,EAAuBV,GACrC,mBADqCA,KAC/B,IAAIE,MACR,YAAYF,gFAIAW,EACdZ,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,iBAARP,GAAmC,iBAARA,EAC3C,MAAM,IAAIG,MACR,yDAAyDI,sDCJ/CM,EAKdC,EAASC,EAAaC,EAAUC,GAShC,OARIlB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBT,EAA0B,IAGnBS,OAAMC,UAASC,OAAMC,kBCjEhBC,EAGdJ,EAASK,GACLpB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAGzB,IAAMS,EACa,MAAjBD,EAAwBA,EAAcL,cAAgB,OAAGA,SAE3D,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,cClBJN,EACdY,GAUA,OARIrB,EAAaqB,IACflB,EAAa,GHEPE,EGCsBgB,IAC5Bf,EAA0B,GAGrBe,EAAcZ,6CCArBM,EACAK,GASA,IAAMC,EACa,MAAjBD,aACY,OAAAN,EAAOC,IACfK,EAAcN,EAAOW,KAAK,KAAMV,IAItC,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,sCClBlBA,GA0BA,OAxBIf,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAmBlBU,OAAOC,OAhBd,WACE,OAAOJ,EAAmBJ,EAAM,SAAAW,GAAS,OAAA,SAACV,EAAYC,GAAY,OAChEF,KAAMW,EACNV,UACAC,aAYgCU,IARpC,SACEC,GAEA,OAAOT,EAAmBJ,EAAM,SAAAW,GAAS,OAAA,SAACV,EAAYC,GACpD,OAAAK,OAAOC,OAAOK,EAAGZ,EAASC,IAASF,KAAMW,+DCH7CG,EACAC,EACAC,GA8BA,OA5BCF,EAAaC,EAAaC,GAAaC,QACtCnB,GA2BKS,OAAOC,OAxBd,WAQE,OACEU,QAASd,EAAmBU,EAAa,SAAAd,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFkB,QAASf,EAAmBW,EAAa,SAAAf,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFmB,QAAShB,EAAmBY,EAAa,SAAAhB,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,2CCrCNoB,GAEA,IAAMC,KA4BAC,EAEFhB,OAAOC,OA5BoB,SAACgB,EAAsBzB,GACpD,oBAD8ByB,KAC1BF,EAASG,eAAe1B,EAAOC,MAC1BsB,EAASvB,EAAOC,MAAMwB,EAAOzB,GAE7ByB,IAyBTE,oBArBmBC,EAAcC,GAejC,OAdwBC,MAAMC,QAAQH,GAClCA,GACCA,IAGFf,IAAI,SAAAmB,GACH,OAAAzC,EAAwByC,GACpBrC,EAAQqC,GACRpC,EAAqBoC,GACrBA,WPiBV5C,GAEA,mBAFAA,KAEM,IAAIE,MACR,YAAYF,0HOnBJ6C,KAELf,QAAQ,SAAAjB,GAAQ,OAACsB,EAAStB,GAAQ4B,IAE9BL,KAST,OAAOA,mCCzCPU,EACAlC,GAEId,EAAagD,IACf7C,EAAa,GAGf,IAAM8C,EAAcL,MAAMC,QAAQG,GAC9BA,GACCA,GAELC,EAAYjB,QAAQnB,GAEpB,IAAMqC,EAAW,SAACC,GAAe,OAAAF,EAAYG,SAASD,EAAQpC,OAG9D,YAAesC,IAAXvC,EACKoC,EAGFA,EAASpC,0BCfhBwC,EACAxC,GAEId,EAAasD,IACfnD,EAAa,GAGf,IAAMoD,EAAiBX,MAAMC,QAAQS,GACjCA,GACCA,GAELC,EAAevB,QAAQzB,GAEvB,IAAM2C,EAAW,SAACC,GAChB,OAAAI,EAAeC,KACb,SAAAnC,GAAiB,OAAA8B,EAAQpC,OAASM,EAAcZ,aAIpD,YAAe4C,IAAXvC,EACKoC,EAGFA,EAASpC,sCCnBhB2C,EAAeC,GACf,IAAIrC,EAEJ,GAAuB,MAAnBqC,EAAyB,CAC3B,GAA+B,mBAApBA,EACT,MAAM,IAAItD,MAAM,qCAGlBiB,EAAgBqC,OAEhBrC,aAAuB,OAAGN,KAAM0C,IAGlC,GAAkB,MAAdA,EAKF,MAAM,IAAIrD,MAAM,6BAJhB,GAA0B,iBAAfqD,GAAiD,iBAAfA,EAC3C,MAAM,IAAIrD,MAAM,qDAMpB,OAAOiB"} \ No newline at end of file diff --git a/codesandbox/src/typesafe-actions/type-helpers.d.ts b/codesandbox/src/typesafe-actions/type-helpers.d.ts index 2fa08c4..0fc0092 100644 --- a/codesandbox/src/typesafe-actions/type-helpers.d.ts +++ b/codesandbox/src/typesafe-actions/type-helpers.d.ts @@ -1,46 +1,42 @@ -export interface TypeMeta { - getType?: () => T; -} -export declare type ActionCreator = (...args: any[]) => { - type: T; +export declare type TypeConstant = string; +export declare type Action = { + type: TType; }; -export declare type ActionType = ActionCreatorOrMap extends ActionCreator ? ReturnType : ActionCreatorOrMap extends Record ? { - [K in keyof ActionCreatorOrMap]: ActionType; -}[keyof ActionCreatorOrMap] : ActionCreatorOrMap extends infer R ? never : never; -export declare type StateType = ReducerOrMap extends (...args: any[]) => any ? ReturnType : ReducerOrMap extends object ? { - [K in keyof ReducerOrMap]: StateType; -} : never; -export declare type StringType = string; -export declare type EmptyAction = { - type: T; +export declare type ActionCreator = (...args: any[]) => Action; +export declare type Reducer = (state: TState | undefined, action: TAction) => TState; +export declare type EmptyAction = { + type: TType; }; -export declare type PayloadAction = { - type: T; - payload: P; +export declare type PayloadAction = { + type: TType; + payload: TPayload; }; -export declare type MetaAction = { - type: T; - meta: M; +export declare type MetaAction = { + type: TType; + meta: TMeta; }; -export declare type PayloadMetaAction = { - type: T; - payload: P; - meta: M; +export declare type PayloadMetaAction = { + type: TType; + payload: TPayload; + meta: TMeta; }; -export interface FluxStandardAction { - type: T; - payload: P; - meta: M; - error?: true; +export declare type EmptyAC = () => EmptyAction; +export declare type PayloadAC = (payload: TPayload) => PayloadAction; +export declare type PayloadMetaAC = (payload: TPayload, meta: TMeta) => PayloadMetaAction; +export interface TypeMeta { + getType?: () => TType; } -export declare type EmptyAC = () => EmptyAction; -export declare type PayloadAC = (payload: P) => PayloadAction; -export declare type PayloadMetaAC = (payload: P, meta: M) => PayloadMetaAction; -export declare type ActionBuilderConstructor = [TMeta] extends [undefined] ? [TPayload] extends [undefined] ? unknown extends TPayload ? PayloadAC : unknown extends TMeta ? PayloadMetaAC : EmptyAC : PayloadAC : PayloadMetaAC; -export declare type ActionBuilderMap = [TMetaArg] extends [undefined] ? [TPayloadArg] extends [undefined] ? () => { - type: T; -} & TCustomAction : (payload: TPayloadArg) => { - type: T; -} & TCustomAction : (payload: TPayloadArg, meta: TMetaArg) => { - type: T; -} & TCustomAction; +export declare type ActionType = TActionCreatorOrMap extends ActionCreator ? ReturnType : TActionCreatorOrMap extends Record ? { + [K in keyof TActionCreatorOrMap]: ActionType; +}[keyof TActionCreatorOrMap] : TActionCreatorOrMap extends infer R ? never : never; +export declare type StateType = TReducerOrMap extends Reducer ? ReturnType : TReducerOrMap extends Record ? { + [K in keyof TReducerOrMap]: StateType; +} : never; +export declare type ActionBuilderConstructor = [TMeta] extends [undefined] ? [TPayload] extends [undefined] ? unknown extends TPayload ? PayloadAC : unknown extends TMeta ? PayloadMetaAC : EmptyAC : PayloadAC : PayloadMetaAC; +export declare type ActionBuilderMap = [TMetaArg] extends [undefined] ? [TPayloadArg] extends [undefined] ? () => { + type: TType; +} & TActionProps : (payload: TPayloadArg) => { + type: TType; +} & TActionProps : (payload: TPayloadArg, meta: TMetaArg) => { + type: TType; +} & TActionProps; diff --git a/codesandbox/src/typesafe-actions/utils/validation.d.ts b/codesandbox/src/typesafe-actions/utils/validation.d.ts index 282adbd..f4811aa 100644 --- a/codesandbox/src/typesafe-actions/utils/validation.d.ts +++ b/codesandbox/src/typesafe-actions/utils/validation.d.ts @@ -1,12 +1,12 @@ -import { ActionCreator, TypeMeta, StringType } from '../type-helpers'; +import { ActionCreator, TypeMeta, TypeConstant } from '../type-helpers'; export declare function checkIsEmpty(arg: unknown, argPosition?: number): boolean; export declare function throwIsEmpty(argPosition?: number): never; -export declare function checkValidActionCreator(arg: unknown): arg is ActionCreator; +export declare function checkValidActionCreator(arg: unknown): arg is ActionCreator; export declare function checkInvalidActionCreator(arg: unknown): boolean; export declare function throwInvalidActionCreator(argPosition?: number): never; -export declare function checkInvalidActionCreatorInArray(arg: ActionCreator & TypeMeta, idx: number): void | never; +export declare function checkInvalidActionCreatorInArray(arg: ActionCreator & TypeMeta, idx: number): void | never; export declare function checkValidActionType(arg: unknown): arg is string | symbol; export declare function checkInvalidActionType(arg: unknown): arg is string | symbol; export declare function throwInvalidActionType(argPosition?: number): never; -export declare function checkInvalidActionTypeInArray(arg: StringType, idx: number): void | never; +export declare function checkInvalidActionTypeInArray(arg: TypeConstant, idx: number): void | never; export declare function throwInvalidActionTypeOrActionCreator(argPosition?: number): never; From cef1a51ad1747493c0c91d6d261daef9d1dc6342 Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sun, 21 Apr 2019 04:31:57 +0200 Subject: [PATCH 12/22] Refactored sandbox reducer to createReducer APi --- codesandbox/src/features/todos/reducer.ts | 65 +++++++-------------- codesandbox/src/features/todos/selectors.ts | 4 +- codesandbox/src/store/types.d.ts | 4 ++ 3 files changed, 28 insertions(+), 45 deletions(-) diff --git a/codesandbox/src/features/todos/reducer.ts b/codesandbox/src/features/todos/reducer.ts index 29c7fbc..37bad7a 100644 --- a/codesandbox/src/features/todos/reducer.ts +++ b/codesandbox/src/features/todos/reducer.ts @@ -1,50 +1,29 @@ -import { RootAction } from 'MyTypes'; import { Todo } from 'MyModels'; import { combineReducers } from 'redux'; -import { getType } from 'typesafe-actions'; +import { createReducer } from 'typesafe-actions'; -import * as actions from './actions'; +import { loadTodosAsync, addTodo, removeTodo } from './actions'; -export type SandboxState = Readonly<{ - isLoadingTodos: boolean; - todos: Todo[]; -}>; +export const isLoadingTodos = createReducer(false as boolean) + .addHandler([loadTodosAsync.request], (state, action) => true) + .addHandler( + [loadTodosAsync.success, loadTodosAsync.failure], + (state, action) => false + ); -export default combineReducers({ - isLoadingTodos: (state = false, action) => { - switch (action.type) { - case getType(actions.loadTodosAsync.request): - return true; - - case getType(actions.loadTodosAsync.success): - case getType(actions.loadTodosAsync.failure): - return false; - - default: - return state; - } - }, - todos: ( - state = [ - { - id: '0', - title: 'You can add new todos using the form or load saved snapshot...', - }, - ], - action - ) => { - switch (action.type) { - case getType(actions.addTodo): - return [...state, action.payload]; - - case getType(actions.removeTodo): - return state.filter(i => i.id !== action.payload); - - case getType(actions.loadTodosAsync.success): - return action.payload; - - default: - return state; - } +export const todos = createReducer([ + { + id: '0', + title: 'You can add new todos using the form or load saved snapshot...', }, +] as readonly Todo[]) + .addHandler(loadTodosAsync.success, (state, action) => action.payload) + .addHandler(addTodo, (state, action) => [...state, action.payload]) + .addHandler(removeTodo, (state, action) => + state.filter(i => i.id !== action.payload) + ); + +export default combineReducers({ + isLoadingTodos, + todos, }); diff --git a/codesandbox/src/features/todos/selectors.ts b/codesandbox/src/features/todos/selectors.ts index 2d1bb02..995096d 100644 --- a/codesandbox/src/features/todos/selectors.ts +++ b/codesandbox/src/features/todos/selectors.ts @@ -1,5 +1,5 @@ // import { createSelector } from 'reselect'; -import { SandboxState } from './reducer'; +import { TodosState } from './reducer'; -export const getTodos = (state: SandboxState) => state.todos; +export const getTodos = (state: TodosState) => state.todos; diff --git a/codesandbox/src/store/types.d.ts b/codesandbox/src/store/types.d.ts index bce3c5a..2af1985 100644 --- a/codesandbox/src/store/types.d.ts +++ b/codesandbox/src/store/types.d.ts @@ -5,3 +5,7 @@ declare module 'MyTypes' { export type RootAction = ActionType; export type RootState = StateType; } + +declare module 'typesafe-actions' { + export type RootAction = ActionType; +} From 3655efcf1a6d97691342a219438b327f6e37eaed Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sun, 21 Apr 2019 05:11:24 +0200 Subject: [PATCH 13/22] Fixed type issue with returned reducer --- .../src/typesafe-actions/create-reducer.d.ts | 8 ++--- .../src/typesafe-actions/index.umd.js.map | 2 +- src/__snapshots__/create-reducer.spec.ts.snap | 34 ++++++++----------- src/create-reducer.spec.ts | 5 ++- src/create-reducer.ts | 27 +++++++++------ 5 files changed, 40 insertions(+), 36 deletions(-) diff --git a/codesandbox/src/typesafe-actions/create-reducer.d.ts b/codesandbox/src/typesafe-actions/create-reducer.d.ts index c044b64..5a84eb5 100644 --- a/codesandbox/src/typesafe-actions/create-reducer.d.ts +++ b/codesandbox/src/typesafe-actions/create-reducer.d.ts @@ -1,11 +1,11 @@ import { RootAction } from './'; import { Reducer, Action } from './type-helpers'; -declare type AddHandler = = TAllActions, TCreatorAction extends TAllActions extends ReturnType ? TAllActions : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude extends never ? Reducer : Reducer & { - addHandler: AddHandler>; +} ? TNotHandledActions : never, TCreator extends (...args: any[]) => TNotHandledActions, TCreatorAction extends TNotHandledActions extends ReturnType ? TNotHandledActions : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude extends never ? Reducer : Reducer & { + addHandler: AddHandler>; }; export declare function createReducer(initialState: S): Reducer & { - addHandler: AddHandler; + addHandler: AddHandler; }; export {}; diff --git a/codesandbox/src/typesafe-actions/index.umd.js.map b/codesandbox/src/typesafe-actions/index.umd.js.map index 8b0345d..258e34c 100644 --- a/codesandbox/src/typesafe-actions/index.umd.js.map +++ b/codesandbox/src/typesafe-actions/index.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"index.umd.js","sources":["../src/utils/validation.ts","../src/action.ts","../src/create-custom-action.ts","../src/get-type.ts","../src/create-action.ts","../src/create-standard-action.ts","../src/create-async-action.ts","../src/create-reducer.ts","../src/is-of-type.ts","../src/is-action-of.ts","../src/create-action-deprecated.ts"],"sourcesContent":["import { ActionCreator, TypeMeta, TypeConstant } from '../type-helpers';\n\nexport function checkIsEmpty(arg: unknown, argPosition: number = 1) {\n return arg == null;\n}\n\nexport function throwIsEmpty(argPosition: number = 1): never {\n throw new Error(`Argument ${argPosition} is empty.`);\n}\n\nexport function checkValidActionCreator(\n arg: unknown\n): arg is ActionCreator {\n return typeof arg === 'function' && 'getType' in arg;\n}\n\nexport function checkInvalidActionCreator(arg: unknown) {\n return !checkValidActionCreator(arg);\n}\n\nexport function throwInvalidActionCreator(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\"`\n );\n}\n\nexport function checkInvalidActionCreatorInArray(\n arg: ActionCreator & TypeMeta,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (arg.getType == null) {\n throw new Error(\n // tslint:disable-next-line:max-line-length\n `Argument contains array with invalid element at index ${idx}, it should be an action-creator instance from \"typesafe-actions\"`\n );\n }\n}\n\nexport function checkValidActionType(arg: unknown): arg is string | symbol {\n return typeof arg === 'string' || typeof arg === 'symbol';\n}\n\nexport function checkInvalidActionType(arg: unknown): arg is string | symbol {\n return !checkValidActionType(arg);\n}\n\nexport function throwInvalidActionType(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action type of type: string | symbol`\n );\n}\n\nexport function checkInvalidActionTypeInArray(\n arg: TypeConstant,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (typeof arg !== 'string' && typeof arg !== 'symbol') {\n throw new Error(\n `Argument contains array with invalid element at index ${idx}, it should be of type: string | symbol`\n );\n }\n}\n\nexport function throwInvalidActionTypeOrActionCreator(\n argPosition: number = 1\n): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\" or action type of type: string | symbol`\n );\n}\n","import { TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionCreator,\n} from './utils/validation';\n\nexport function action(\n type: T,\n payload: undefined,\n meta: undefined,\n error: E\n): { type: T; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M,\n error: E\n): { type: T; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: undefined,\n error: E\n): { type: T; payload: P; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: M,\n error: E\n): { type: T; payload: P; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M\n): { type: T; meta: M };\n\nexport function action(\n type: T,\n payload: P,\n meta: M\n): { type: T; payload: P; meta: M };\n\nexport function action(\n type: T,\n payload: P\n): { type: T; payload: P };\n\nexport function action(type: T): { type: T };\n\n/**\n * @description flux standard action factory\n * @example\n * ```\n * const add = (amount: number, meta?: MetaShape) => action('INCREMENT', amount, meta);\n * ```\n */\nexport function action<\n T extends TypeConstant,\n P = undefined,\n M = undefined,\n E = undefined\n>(type: T, payload?: P, meta?: M, error?: E) {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionCreator(1);\n }\n\n return { type, payload, meta, error } as any;\n}\n","import { ActionCreator, TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\n/**\n * @description create custom action-creator using constructor function with injected type argument\n */\nexport function createCustomAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(type: T, createHandler?: (type: T) => AC): AC {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n const actionCreator: AC =\n createHandler != null ? createHandler(type) : ((() => ({ type })) as AC);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import { TypeConstant, ActionCreator, TypeMeta } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionCreator,\n throwInvalidActionCreator,\n} from './utils/validation';\n\n/**\n * @description get the \"type literal\" of a given action-creator\n */\nexport function getType(\n actionCreator: ActionCreator & TypeMeta\n): T {\n if (checkIsEmpty(actionCreator)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionCreator(actionCreator)) {\n throwInvalidActionCreator(1);\n }\n\n return actionCreator.getType!();\n}\n","import { TypeConstant, ActionCreator } from './type-helpers';\nimport { action } from './action';\n\nexport type PayloadMetaAction<\n T extends TypeConstant,\n P,\n M\n> = P extends undefined\n ? M extends undefined\n ? { type: T }\n : { type: T; meta: M }\n : M extends undefined\n ? { type: T; payload: P }\n : { type: T; payload: P; meta: M };\n\n/**\n * @description typesafe action-creator factory\n */\nexport function createAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(\n type: T,\n createHandler?: (\n actionCallback:

(\n payload?: P,\n meta?: M\n ) => PayloadMetaAction\n ) => AC\n): AC {\n // validation is already done in action function\n\n const actionCreator: AC =\n createHandler == null\n ? ((() => action(type)) as AC)\n : createHandler(action.bind(null, type) as Parameters<\n typeof createHandler\n >[0]);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\nexport interface ActionBuilder {\n

(): ActionBuilderConstructor;\n map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap;\n}\n\n/**\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createStandardAction(\n type: T\n): ActionBuilder {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n function constructor(): ActionBuilderConstructor {\n return createCustomAction(type, _type => (payload: P, meta: M) => ({\n type: _type,\n payload,\n meta,\n })) as ActionBuilderConstructor;\n }\n\n function map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap {\n return createCustomAction(type, _type => (payload: P, meta: M) =>\n Object.assign(fn(payload, meta), { type: _type })\n ) as ActionBuilderMap;\n }\n\n return Object.assign(constructor, { map });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n // ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport { checkInvalidActionTypeInArray } from './utils/validation';\n\nexport interface AsyncActionBuilder<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n> {\n // tslint:disable-next-line:callable-types\n (): AsyncActionBuilderConstructor;\n // withMappers(\n // requestMapper: (a?: A1) => P1,\n // successMapper: (a?: A2) => P2,\n // failureMapper: (a?: A3) => P3\n // ): AsyncActionBuilderWithMappers;\n}\n\nexport type AsyncActionBuilderConstructor<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant,\n P1,\n P2,\n P3\n> = {\n request: ActionBuilderConstructor;\n success: ActionBuilderConstructor;\n failure: ActionBuilderConstructor;\n};\n\n/**\n * implementation\n */\nexport function createAsyncAction<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n>(\n requestType: T1,\n successType: T2,\n failureType: T3\n): AsyncActionBuilder {\n [requestType, successType, failureType].forEach(\n checkInvalidActionTypeInArray\n );\n\n function constructor(): AsyncActionBuilderConstructor<\n T1,\n T2,\n T3,\n P1,\n P2,\n P3\n > {\n return {\n request: createCustomAction(requestType, type => (payload?: P1) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n success: createCustomAction(successType, type => (payload?: P2) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n failure: createCustomAction(failureType, type => (payload?: P3) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n };\n }\n\n return Object.assign(constructor);\n}\n\n// export type AsyncActionBuilderWithMappers<\n// T1 extends StringType,\n// T2 extends StringType,\n// T3 extends StringType,\n// A1 = undefined,\n// P1 = undefined,\n// A2 = undefined,\n// P2 = undefined,\n// A3 = undefined,\n// P3 = undefined\n// > = {\n// request: ActionBuilderMap;\n// success: ActionBuilderMap;\n// failure: ActionBuilderMap;\n// };\n\n// function withMappers(\n// requestMapper: (a?: A1) => P1,\n// successMapper: (a?: A2) => P2,\n// failureMapper: (a?: A3) => P3\n// ): AsyncActionBuilderWithMappers {\n// return {\n// request: createCustomAction(requestType, type => (payload?: A1) => ({\n// type,\n// payload: requestMapper != null ? requestMapper(payload) : undefined,\n// })) as MapBuilder,\n// success: createCustomAction(successType, type => (payload?: A2) => ({\n// type,\n// payload: successMapper != null ? successMapper(payload) : undefined,\n// })) as MapBuilder,\n// failure: createCustomAction(failureType, type => (payload?: A3) => ({\n// type,\n// payload: failureMapper != null ? failureMapper(payload) : undefined,\n// })) as MapBuilder,\n// };\n// }\n","// @ts-ignore\nimport { RootAction } from './';\nimport { getType } from './get-type';\nimport {\n checkValidActionCreator,\n checkValidActionType,\n throwInvalidActionTypeOrActionCreator,\n} from './utils/validation';\nimport { Reducer, Action } from './type-helpers';\n\ntype AddHandler = <\n TType extends TAllActions['type'],\n TTypeAction extends TAllActions extends { type: TType } ? TAllActions : never,\n TCreator extends (...args: any[]) => TAllActions,\n TCreatorAction extends TAllActions extends ReturnType\n ? TAllActions\n : never,\n TActionIntersection extends TTypeAction extends TCreatorAction\n ? TTypeAction\n : never\n>(\n actionsTypes: TType | TCreator | TType[] | TCreator[],\n actionsHandler: (state: S, action: TActionIntersection) => S\n) => Exclude extends never\n ? Reducer\n : Reducer & {\n addHandler: AddHandler<\n S,\n Exclude\n >;\n };\n\nexport function createReducer(\n initialState: S\n) {\n const handlers: Record S> = {};\n\n const reducer: Reducer = (state = initialState, action) => {\n if (handlers.hasOwnProperty(action.type)) {\n return handlers[action.type](state, action);\n } else {\n return state;\n }\n };\n\n const addHandler = ((actionsTypes, actionsHandler) => {\n const creatorsOrTypes = Array.isArray(actionsTypes)\n ? actionsTypes\n : [actionsTypes];\n\n creatorsOrTypes\n .map(acOrType =>\n checkValidActionCreator(acOrType)\n ? getType(acOrType)\n : checkValidActionType(acOrType)\n ? acOrType\n : throwInvalidActionTypeOrActionCreator()\n )\n .forEach(type => (handlers[type] = actionsHandler));\n\n return chainApi;\n }) as AddHandler;\n\n const chainApi: Reducer & {\n addHandler: AddHandler;\n } = Object.assign(reducer, {\n addHandler,\n });\n\n return chainApi;\n}\n","import {\n checkInvalidActionTypeInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[],\n action: A\n): action is A extends { type: T } ? A : never;\n\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[]\n): (\n action: A\n) => action is A extends { type: T } ? A : never;\n\n/**\n * implementation\n */\nexport function isOfType(\n actionTypeOrTypes: T | T[],\n action?: A\n) {\n if (checkIsEmpty(actionTypeOrTypes)) {\n throwIsEmpty(1);\n }\n\n const actionTypes = Array.isArray(actionTypeOrTypes)\n ? actionTypeOrTypes\n : [actionTypeOrTypes];\n\n actionTypes.forEach(checkInvalidActionTypeInArray);\n\n const assertFn = (_action: A) => actionTypes.includes(_action.type);\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","import { TypeMeta } from './type-helpers';\nimport {\n checkInvalidActionCreatorInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n\nexport type ActionCreator = ((\n ...args: any[]\n) => T) &\n TypeMeta;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[],\n action: { type: string }\n): action is ReturnType;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[]\n): (action: { type: string }) => action is ReturnType;\n\n/**\n * implementation\n */\nexport function isActionOf>(\n actionCreatorOrCreators: AC | AC[],\n action?: { type: string }\n) {\n if (checkIsEmpty(actionCreatorOrCreators)) {\n throwIsEmpty(1);\n }\n\n const actionCreators = Array.isArray(actionCreatorOrCreators)\n ? actionCreatorOrCreators\n : [actionCreatorOrCreators];\n\n actionCreators.forEach(checkInvalidActionCreatorInArray);\n\n const assertFn = (_action: { type: string }) =>\n actionCreators.some(\n actionCreator => _action.type === actionCreator.getType!()\n );\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","/**\n * DEPRECATED\n */\n\nimport { TypeConstant } from './type-helpers';\n\ninterface FSA {\n type: T;\n payload?: P;\n meta?: M;\n error?: E;\n}\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction: AC): AC;\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends () => { type: T }\n>(actionType: T): AC;\n\n/**\n * implementation\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction?: AC): AC {\n let actionCreator: AC;\n\n if (creatorFunction != null) {\n if (typeof creatorFunction !== 'function') {\n throw new Error('second argument is not a function');\n }\n\n actionCreator = creatorFunction as AC;\n } else {\n actionCreator = (() => ({ type: actionType })) as AC;\n }\n\n if (actionType != null) {\n if (typeof actionType !== 'string' && typeof actionType !== 'symbol') {\n throw new Error('first argument should be type of: string | symbol');\n }\n } else {\n throw new Error('first argument is missing');\n }\n\n return actionCreator;\n}\n"],"names":["checkIsEmpty","arg","argPosition","throwIsEmpty","Error","checkValidActionCreator","throwInvalidActionCreator","checkInvalidActionCreatorInArray","idx","getType","checkValidActionType","checkInvalidActionType","throwInvalidActionType","checkInvalidActionTypeInArray","action","type","payload","meta","error","createCustomAction","createHandler","actionCreator","Object","assign","toString","bind","_type","map","fn","requestType","successType","failureType","forEach","request","success","failure","initialState","handlers","chainApi","state","hasOwnProperty","addHandler","actionsTypes","actionsHandler","Array","isArray","acOrType","throwInvalidActionTypeOrActionCreator","actionTypeOrTypes","actionTypes","assertFn","_action","includes","undefined","actionCreatorOrCreators","actionCreators","some","actionType","creatorFunction"],"mappings":"2MAEgBA,EAAaC,EAAcC,GACzC,oBADyCA,KAC3B,MAAPD,WAGOE,EAAaD,GAC3B,mBAD2BA,KACrB,IAAIE,MAAM,YAAYF,yBAGdG,EACdJ,GAEA,MAAsB,mBAARA,GAAsB,YAAaA,WAOnCK,EAA0BJ,GACxC,mBADwCA,KAClC,IAAIE,MACR,YAAYF,2FAIAK,EACdN,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,MAAfP,EAAIQ,QACb,MAAM,IAAIL,MAER,yDAAyDI,gFAK/CE,EAAqBT,GACnC,MAAsB,iBAARA,GAAmC,iBAARA,WAG3BU,EAAuBV,GACrC,OAAQS,EAAqBT,YAGfW,EAAuBV,GACrC,mBADqCA,KAC/B,IAAIE,MACR,YAAYF,gFAIAW,EACdZ,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,iBAARP,GAAmC,iBAARA,EAC3C,MAAM,IAAIG,MACR,yDAAyDI,sDCJ/CM,EAKdC,EAASC,EAAaC,EAAUC,GAShC,OARIlB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBT,EAA0B,IAGnBS,OAAMC,UAASC,OAAMC,kBCjEhBC,EAGdJ,EAASK,GACLpB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAGzB,IAAMS,EACa,MAAjBD,EAAwBA,EAAcL,cAAgB,OAAGA,SAE3D,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,cClBJN,EACdY,GAUA,OARIrB,EAAaqB,IACflB,EAAa,GHEPE,EGCsBgB,IAC5Bf,EAA0B,GAGrBe,EAAcZ,6CCArBM,EACAK,GASA,IAAMC,EACa,MAAjBD,aACY,OAAAN,EAAOC,IACfK,EAAcN,EAAOW,KAAK,KAAMV,IAItC,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,sCClBlBA,GA0BA,OAxBIf,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAmBlBU,OAAOC,OAhBd,WACE,OAAOJ,EAAmBJ,EAAM,SAAAW,GAAS,OAAA,SAACV,EAAYC,GAAY,OAChEF,KAAMW,EACNV,UACAC,aAYgCU,IARpC,SACEC,GAEA,OAAOT,EAAmBJ,EAAM,SAAAW,GAAS,OAAA,SAACV,EAAYC,GACpD,OAAAK,OAAOC,OAAOK,EAAGZ,EAASC,IAASF,KAAMW,+DCH7CG,EACAC,EACAC,GA8BA,OA5BCF,EAAaC,EAAaC,GAAaC,QACtCnB,GA2BKS,OAAOC,OAxBd,WAQE,OACEU,QAASd,EAAmBU,EAAa,SAAAd,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFkB,QAASf,EAAmBW,EAAa,SAAAf,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFmB,QAAShB,EAAmBY,EAAa,SAAAhB,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,2CCrCNoB,GAEA,IAAMC,KA4BAC,EAEFhB,OAAOC,OA5BoB,SAACgB,EAAsBzB,GACpD,oBAD8ByB,KAC1BF,EAASG,eAAe1B,EAAOC,MAC1BsB,EAASvB,EAAOC,MAAMwB,EAAOzB,GAE7ByB,IAyBTE,oBArBmBC,EAAcC,GAejC,OAdwBC,MAAMC,QAAQH,GAClCA,GACCA,IAGFf,IAAI,SAAAmB,GACH,OAAAzC,EAAwByC,GACpBrC,EAAQqC,GACRpC,EAAqBoC,GACrBA,WPiBV5C,GAEA,mBAFAA,KAEM,IAAIE,MACR,YAAYF,0HOnBJ6C,KAELf,QAAQ,SAAAjB,GAAQ,OAACsB,EAAStB,GAAQ4B,IAE9BL,KAST,OAAOA,mCCzCPU,EACAlC,GAEId,EAAagD,IACf7C,EAAa,GAGf,IAAM8C,EAAcL,MAAMC,QAAQG,GAC9BA,GACCA,GAELC,EAAYjB,QAAQnB,GAEpB,IAAMqC,EAAW,SAACC,GAAe,OAAAF,EAAYG,SAASD,EAAQpC,OAG9D,YAAesC,IAAXvC,EACKoC,EAGFA,EAASpC,0BCfhBwC,EACAxC,GAEId,EAAasD,IACfnD,EAAa,GAGf,IAAMoD,EAAiBX,MAAMC,QAAQS,GACjCA,GACCA,GAELC,EAAevB,QAAQzB,GAEvB,IAAM2C,EAAW,SAACC,GAChB,OAAAI,EAAeC,KACb,SAAAnC,GAAiB,OAAA8B,EAAQpC,OAASM,EAAcZ,aAIpD,YAAe4C,IAAXvC,EACKoC,EAGFA,EAASpC,sCCnBhB2C,EAAeC,GACf,IAAIrC,EAEJ,GAAuB,MAAnBqC,EAAyB,CAC3B,GAA+B,mBAApBA,EACT,MAAM,IAAItD,MAAM,qCAGlBiB,EAAgBqC,OAEhBrC,aAAuB,OAAGN,KAAM0C,IAGlC,GAAkB,MAAdA,EAKF,MAAM,IAAIrD,MAAM,6BAJhB,GAA0B,iBAAfqD,GAAiD,iBAAfA,EAC3C,MAAM,IAAIrD,MAAM,qDAMpB,OAAOiB"} \ No newline at end of file +{"version":3,"file":"index.umd.js","sources":["../src/utils/validation.ts","../src/action.ts","../src/create-custom-action.ts","../src/get-type.ts","../src/create-action.ts","../src/create-standard-action.ts","../src/create-async-action.ts","../src/create-reducer.ts","../src/is-of-type.ts","../src/is-action-of.ts","../src/create-action-deprecated.ts"],"sourcesContent":["import { ActionCreator, TypeMeta, TypeConstant } from '../type-helpers';\n\nexport function checkIsEmpty(arg: unknown, argPosition: number = 1) {\n return arg == null;\n}\n\nexport function throwIsEmpty(argPosition: number = 1): never {\n throw new Error(`Argument ${argPosition} is empty.`);\n}\n\nexport function checkValidActionCreator(\n arg: unknown\n): arg is ActionCreator {\n return typeof arg === 'function' && 'getType' in arg;\n}\n\nexport function checkInvalidActionCreator(arg: unknown) {\n return !checkValidActionCreator(arg);\n}\n\nexport function throwInvalidActionCreator(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\"`\n );\n}\n\nexport function checkInvalidActionCreatorInArray(\n arg: ActionCreator & TypeMeta,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (arg.getType == null) {\n throw new Error(\n // tslint:disable-next-line:max-line-length\n `Argument contains array with invalid element at index ${idx}, it should be an action-creator instance from \"typesafe-actions\"`\n );\n }\n}\n\nexport function checkValidActionType(arg: unknown): arg is string | symbol {\n return typeof arg === 'string' || typeof arg === 'symbol';\n}\n\nexport function checkInvalidActionType(arg: unknown): arg is string | symbol {\n return !checkValidActionType(arg);\n}\n\nexport function throwInvalidActionType(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action type of type: string | symbol`\n );\n}\n\nexport function checkInvalidActionTypeInArray(\n arg: TypeConstant,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (typeof arg !== 'string' && typeof arg !== 'symbol') {\n throw new Error(\n `Argument contains array with invalid element at index ${idx}, it should be of type: string | symbol`\n );\n }\n}\n\nexport function throwInvalidActionTypeOrActionCreator(\n argPosition: number = 1\n): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\" or action type of type: string | symbol`\n );\n}\n","import { TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionCreator,\n} from './utils/validation';\n\nexport function action(\n type: T,\n payload: undefined,\n meta: undefined,\n error: E\n): { type: T; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M,\n error: E\n): { type: T; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: undefined,\n error: E\n): { type: T; payload: P; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: M,\n error: E\n): { type: T; payload: P; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M\n): { type: T; meta: M };\n\nexport function action(\n type: T,\n payload: P,\n meta: M\n): { type: T; payload: P; meta: M };\n\nexport function action(\n type: T,\n payload: P\n): { type: T; payload: P };\n\nexport function action(type: T): { type: T };\n\n/**\n * @description flux standard action factory\n * @example\n * ```\n * const add = (amount: number, meta?: MetaShape) => action('INCREMENT', amount, meta);\n * ```\n */\nexport function action<\n T extends TypeConstant,\n P = undefined,\n M = undefined,\n E = undefined\n>(type: T, payload?: P, meta?: M, error?: E) {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionCreator(1);\n }\n\n return { type, payload, meta, error } as any;\n}\n","import { ActionCreator, TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\n/**\n * @description create custom action-creator using constructor function with injected type argument\n */\nexport function createCustomAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(type: T, createHandler?: (type: T) => AC): AC {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n const actionCreator: AC =\n createHandler != null ? createHandler(type) : ((() => ({ type })) as AC);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import { TypeConstant, ActionCreator, TypeMeta } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionCreator,\n throwInvalidActionCreator,\n} from './utils/validation';\n\n/**\n * @description get the \"type literal\" of a given action-creator\n */\nexport function getType(\n actionCreator: ActionCreator & TypeMeta\n): T {\n if (checkIsEmpty(actionCreator)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionCreator(actionCreator)) {\n throwInvalidActionCreator(1);\n }\n\n return actionCreator.getType!();\n}\n","import { TypeConstant, ActionCreator } from './type-helpers';\nimport { action } from './action';\n\nexport type PayloadMetaAction<\n T extends TypeConstant,\n P,\n M\n> = P extends undefined\n ? M extends undefined\n ? { type: T }\n : { type: T; meta: M }\n : M extends undefined\n ? { type: T; payload: P }\n : { type: T; payload: P; meta: M };\n\n/**\n * @description typesafe action-creator factory\n */\nexport function createAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(\n type: T,\n createHandler?: (\n actionCallback:

(\n payload?: P,\n meta?: M\n ) => PayloadMetaAction\n ) => AC\n): AC {\n // validation is already done in action function\n\n const actionCreator: AC =\n createHandler == null\n ? ((() => action(type)) as AC)\n : createHandler(action.bind(null, type) as Parameters<\n typeof createHandler\n >[0]);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\nexport interface ActionBuilder {\n

(): ActionBuilderConstructor;\n map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap;\n}\n\n/**\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createStandardAction(\n type: T\n): ActionBuilder {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n function constructor(): ActionBuilderConstructor {\n return createCustomAction(type, _type => (payload: P, meta: M) => ({\n type: _type,\n payload,\n meta,\n })) as ActionBuilderConstructor;\n }\n\n function map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap {\n return createCustomAction(type, _type => (payload: P, meta: M) =>\n Object.assign(fn(payload, meta), { type: _type })\n ) as ActionBuilderMap;\n }\n\n return Object.assign(constructor, { map });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n // ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport { checkInvalidActionTypeInArray } from './utils/validation';\n\nexport interface AsyncActionBuilder<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n> {\n // tslint:disable-next-line:callable-types\n (): AsyncActionBuilderConstructor;\n // withMappers(\n // requestMapper: (a?: A1) => P1,\n // successMapper: (a?: A2) => P2,\n // failureMapper: (a?: A3) => P3\n // ): AsyncActionBuilderWithMappers;\n}\n\nexport type AsyncActionBuilderConstructor<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant,\n P1,\n P2,\n P3\n> = {\n request: ActionBuilderConstructor;\n success: ActionBuilderConstructor;\n failure: ActionBuilderConstructor;\n};\n\n/**\n * implementation\n */\nexport function createAsyncAction<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n>(\n requestType: T1,\n successType: T2,\n failureType: T3\n): AsyncActionBuilder {\n [requestType, successType, failureType].forEach(\n checkInvalidActionTypeInArray\n );\n\n function constructor(): AsyncActionBuilderConstructor<\n T1,\n T2,\n T3,\n P1,\n P2,\n P3\n > {\n return {\n request: createCustomAction(requestType, type => (payload?: P1) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n success: createCustomAction(successType, type => (payload?: P2) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n failure: createCustomAction(failureType, type => (payload?: P3) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n };\n }\n\n return Object.assign(constructor);\n}\n\n// export type AsyncActionBuilderWithMappers<\n// T1 extends StringType,\n// T2 extends StringType,\n// T3 extends StringType,\n// A1 = undefined,\n// P1 = undefined,\n// A2 = undefined,\n// P2 = undefined,\n// A3 = undefined,\n// P3 = undefined\n// > = {\n// request: ActionBuilderMap;\n// success: ActionBuilderMap;\n// failure: ActionBuilderMap;\n// };\n\n// function withMappers(\n// requestMapper: (a?: A1) => P1,\n// successMapper: (a?: A2) => P2,\n// failureMapper: (a?: A3) => P3\n// ): AsyncActionBuilderWithMappers {\n// return {\n// request: createCustomAction(requestType, type => (payload?: A1) => ({\n// type,\n// payload: requestMapper != null ? requestMapper(payload) : undefined,\n// })) as MapBuilder,\n// success: createCustomAction(successType, type => (payload?: A2) => ({\n// type,\n// payload: successMapper != null ? successMapper(payload) : undefined,\n// })) as MapBuilder,\n// failure: createCustomAction(failureType, type => (payload?: A3) => ({\n// type,\n// payload: failureMapper != null ? failureMapper(payload) : undefined,\n// })) as MapBuilder,\n// };\n// }\n","// @ts-ignore\nimport { RootAction } from './';\nimport { getType } from './get-type';\nimport {\n checkValidActionCreator,\n checkValidActionType,\n throwInvalidActionTypeOrActionCreator,\n} from './utils/validation';\nimport { Reducer, Action } from './type-helpers';\n\ntype AddHandler<\n S,\n TAllActions extends Action,\n TNotHandledActions extends Action\n> = <\n TType extends TNotHandledActions['type'],\n TTypeAction extends TNotHandledActions extends { type: TType }\n ? TNotHandledActions\n : never,\n TCreator extends (...args: any[]) => TNotHandledActions,\n TCreatorAction extends TNotHandledActions extends ReturnType\n ? TNotHandledActions\n : never,\n TActionIntersection extends TTypeAction extends TCreatorAction\n ? TTypeAction\n : never\n>(\n actionsTypes: TType | TCreator | TType[] | TCreator[],\n actionsHandler: (state: S, action: TActionIntersection) => S\n) => Exclude extends never\n ? Reducer\n : Reducer & {\n addHandler: AddHandler<\n S,\n TAllActions,\n Exclude\n >;\n };\n\nexport function createReducer(\n initialState: S\n) {\n const handlers: Record S> = {};\n\n const reducer: Reducer = (state = initialState, action) => {\n if (handlers.hasOwnProperty(action.type)) {\n return handlers[action.type](state, action);\n } else {\n return state;\n }\n };\n\n const addHandler = ((actionsTypes, actionsHandler) => {\n const creatorsOrTypes = Array.isArray(actionsTypes)\n ? actionsTypes\n : [actionsTypes];\n\n creatorsOrTypes\n .map(acOrType =>\n checkValidActionCreator(acOrType)\n ? getType(acOrType)\n : checkValidActionType(acOrType)\n ? acOrType\n : throwInvalidActionTypeOrActionCreator()\n )\n .forEach(type => (handlers[type] = actionsHandler));\n\n return chainApi;\n }) as AddHandler;\n\n const chainApi: Reducer & {\n addHandler: AddHandler;\n } = Object.assign(reducer, {\n addHandler,\n });\n\n return chainApi;\n}\n","import {\n checkInvalidActionTypeInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[],\n action: A\n): action is A extends { type: T } ? A : never;\n\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[]\n): (\n action: A\n) => action is A extends { type: T } ? A : never;\n\n/**\n * implementation\n */\nexport function isOfType(\n actionTypeOrTypes: T | T[],\n action?: A\n) {\n if (checkIsEmpty(actionTypeOrTypes)) {\n throwIsEmpty(1);\n }\n\n const actionTypes = Array.isArray(actionTypeOrTypes)\n ? actionTypeOrTypes\n : [actionTypeOrTypes];\n\n actionTypes.forEach(checkInvalidActionTypeInArray);\n\n const assertFn = (_action: A) => actionTypes.includes(_action.type);\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","import { TypeMeta } from './type-helpers';\nimport {\n checkInvalidActionCreatorInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n\nexport type ActionCreator = ((\n ...args: any[]\n) => T) &\n TypeMeta;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[],\n action: { type: string }\n): action is ReturnType;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[]\n): (action: { type: string }) => action is ReturnType;\n\n/**\n * implementation\n */\nexport function isActionOf>(\n actionCreatorOrCreators: AC | AC[],\n action?: { type: string }\n) {\n if (checkIsEmpty(actionCreatorOrCreators)) {\n throwIsEmpty(1);\n }\n\n const actionCreators = Array.isArray(actionCreatorOrCreators)\n ? actionCreatorOrCreators\n : [actionCreatorOrCreators];\n\n actionCreators.forEach(checkInvalidActionCreatorInArray);\n\n const assertFn = (_action: { type: string }) =>\n actionCreators.some(\n actionCreator => _action.type === actionCreator.getType!()\n );\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","/**\n * DEPRECATED\n */\n\nimport { TypeConstant } from './type-helpers';\n\ninterface FSA {\n type: T;\n payload?: P;\n meta?: M;\n error?: E;\n}\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction: AC): AC;\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends () => { type: T }\n>(actionType: T): AC;\n\n/**\n * implementation\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction?: AC): AC {\n let actionCreator: AC;\n\n if (creatorFunction != null) {\n if (typeof creatorFunction !== 'function') {\n throw new Error('second argument is not a function');\n }\n\n actionCreator = creatorFunction as AC;\n } else {\n actionCreator = (() => ({ type: actionType })) as AC;\n }\n\n if (actionType != null) {\n if (typeof actionType !== 'string' && typeof actionType !== 'symbol') {\n throw new Error('first argument should be type of: string | symbol');\n }\n } else {\n throw new Error('first argument is missing');\n }\n\n return actionCreator;\n}\n"],"names":["checkIsEmpty","arg","argPosition","throwIsEmpty","Error","checkValidActionCreator","throwInvalidActionCreator","checkInvalidActionCreatorInArray","idx","getType","checkValidActionType","checkInvalidActionType","throwInvalidActionType","checkInvalidActionTypeInArray","action","type","payload","meta","error","createCustomAction","createHandler","actionCreator","Object","assign","toString","bind","_type","map","fn","requestType","successType","failureType","forEach","request","success","failure","initialState","handlers","chainApi","state","hasOwnProperty","addHandler","actionsTypes","actionsHandler","Array","isArray","acOrType","throwInvalidActionTypeOrActionCreator","actionTypeOrTypes","actionTypes","assertFn","_action","includes","undefined","actionCreatorOrCreators","actionCreators","some","actionType","creatorFunction"],"mappings":"2MAEgBA,EAAaC,EAAcC,GACzC,oBADyCA,KAC3B,MAAPD,WAGOE,EAAaD,GAC3B,mBAD2BA,KACrB,IAAIE,MAAM,YAAYF,yBAGdG,EACdJ,GAEA,MAAsB,mBAARA,GAAsB,YAAaA,WAOnCK,EAA0BJ,GACxC,mBADwCA,KAClC,IAAIE,MACR,YAAYF,2FAIAK,EACdN,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,MAAfP,EAAIQ,QACb,MAAM,IAAIL,MAER,yDAAyDI,gFAK/CE,EAAqBT,GACnC,MAAsB,iBAARA,GAAmC,iBAARA,WAG3BU,EAAuBV,GACrC,OAAQS,EAAqBT,YAGfW,EAAuBV,GACrC,mBADqCA,KAC/B,IAAIE,MACR,YAAYF,gFAIAW,EACdZ,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,iBAARP,GAAmC,iBAARA,EAC3C,MAAM,IAAIG,MACR,yDAAyDI,sDCJ/CM,EAKdC,EAASC,EAAaC,EAAUC,GAShC,OARIlB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBT,EAA0B,IAGnBS,OAAMC,UAASC,OAAMC,kBCjEhBC,EAGdJ,EAASK,GACLpB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAGzB,IAAMS,EACa,MAAjBD,EAAwBA,EAAcL,cAAgB,OAAGA,SAE3D,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,cClBJN,EACdY,GAUA,OARIrB,EAAaqB,IACflB,EAAa,GHEPE,EGCsBgB,IAC5Bf,EAA0B,GAGrBe,EAAcZ,6CCArBM,EACAK,GASA,IAAMC,EACa,MAAjBD,aACY,OAAAN,EAAOC,IACfK,EAAcN,EAAOW,KAAK,KAAMV,IAItC,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,sCClBlBA,GA0BA,OAxBIf,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAmBlBU,OAAOC,OAhBd,WACE,OAAOJ,EAAmBJ,EAAM,SAAAW,GAAS,OAAA,SAACV,EAAYC,GAAY,OAChEF,KAAMW,EACNV,UACAC,aAYgCU,IARpC,SACEC,GAEA,OAAOT,EAAmBJ,EAAM,SAAAW,GAAS,OAAA,SAACV,EAAYC,GACpD,OAAAK,OAAOC,OAAOK,EAAGZ,EAASC,IAASF,KAAMW,+DCH7CG,EACAC,EACAC,GA8BA,OA5BCF,EAAaC,EAAaC,GAAaC,QACtCnB,GA2BKS,OAAOC,OAxBd,WAQE,OACEU,QAASd,EAAmBU,EAAa,SAAAd,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFkB,QAASf,EAAmBW,EAAa,SAAAf,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFmB,QAAShB,EAAmBY,EAAa,SAAAhB,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,2CC9BNoB,GAEA,IAAMC,KA4BAC,EAEFhB,OAAOC,OA5BoB,SAACgB,EAAsBzB,GACpD,oBAD8ByB,KAC1BF,EAASG,eAAe1B,EAAOC,MAC1BsB,EAASvB,EAAOC,MAAMwB,EAAOzB,GAE7ByB,IAyBTE,oBArBmBC,EAAcC,GAejC,OAdwBC,MAAMC,QAAQH,GAClCA,GACCA,IAGFf,IAAI,SAAAmB,GACH,OAAAzC,EAAwByC,GACpBrC,EAAQqC,GACRpC,EAAqBoC,GACrBA,WPUV5C,GAEA,mBAFAA,KAEM,IAAIE,MACR,YAAYF,0HOZJ6C,KAELf,QAAQ,SAAAjB,GAAQ,OAACsB,EAAStB,GAAQ4B,IAE9BL,KAST,OAAOA,mCChDPU,EACAlC,GAEId,EAAagD,IACf7C,EAAa,GAGf,IAAM8C,EAAcL,MAAMC,QAAQG,GAC9BA,GACCA,GAELC,EAAYjB,QAAQnB,GAEpB,IAAMqC,EAAW,SAACC,GAAe,OAAAF,EAAYG,SAASD,EAAQpC,OAG9D,YAAesC,IAAXvC,EACKoC,EAGFA,EAASpC,0BCfhBwC,EACAxC,GAEId,EAAasD,IACfnD,EAAa,GAGf,IAAMoD,EAAiBX,MAAMC,QAAQS,GACjCA,GACCA,GAELC,EAAevB,QAAQzB,GAEvB,IAAM2C,EAAW,SAACC,GAChB,OAAAI,EAAeC,KACb,SAAAnC,GAAiB,OAAA8B,EAAQpC,OAASM,EAAcZ,aAIpD,YAAe4C,IAAXvC,EACKoC,EAGFA,EAASpC,sCCnBhB2C,EAAeC,GACf,IAAIrC,EAEJ,GAAuB,MAAnBqC,EAAyB,CAC3B,GAA+B,mBAApBA,EACT,MAAM,IAAItD,MAAM,qCAGlBiB,EAAgBqC,OAEhBrC,aAAuB,OAAGN,KAAM0C,IAGlC,GAAkB,MAAdA,EAKF,MAAM,IAAIrD,MAAM,6BAJhB,GAA0B,iBAAfqD,GAAiD,iBAAfA,EAC3C,MAAM,IAAIrD,MAAM,qDAMpB,OAAOiB"} \ No newline at end of file diff --git a/src/__snapshots__/create-reducer.spec.ts.snap b/src/__snapshots__/create-reducer.spec.ts.snap index f547cea..336d851 100644 --- a/src/__snapshots__/create-reducer.spec.ts.snap +++ b/src/__snapshots__/create-reducer.spec.ts.snap @@ -1,22 +1,16 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 1`] = ` -"Argument of type 'PayloadAction<\\"ADD\\", number>' is not assignable to parameter of type 'EmptyAction<\\"INCREMENT\\">'. - Types of property 'type' are incompatible. - Type '\\"ADD\\"' is not assignable to type '\\"INCREMENT\\"'." -`; - -exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 2`] = ` -"Argument of type 'PayloadAction<\\"ADD\\", number>' is not assignable to parameter of type 'EmptyAction<\\"INCREMENT\\">'. - Types of property 'type' are incompatible. - Type '\\"ADD\\"' is not assignable to type '\\"INCREMENT\\"'." -`; - -exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 3`] = ` -"Argument of type 'PayloadAction<\\"ADD\\", number>' is not assignable to parameter of type 'EmptyAction<\\"INCREMENT\\">'. - Types of property 'type' are incompatible. - Type '\\"ADD\\"' is not assignable to type '\\"INCREMENT\\"'." -`; +exports[`With Action Creators fn(0, {} as any) (type) should match snapshot 1`] = `"number"`; + +exports[`With Action Creators fn(0, {} as any) (type) should match snapshot 2`] = `"number"`; + +exports[`With Action Creators fn(0, {} as any) (type) should match snapshot 3`] = `"number"`; + +exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 1`] = `"number"`; + +exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 2`] = `"number"`; + +exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 3`] = `"number"`; exports[`With Action Creators fn(0, increment()) (type) should match snapshot 1`] = `"number"`; @@ -30,11 +24,11 @@ exports[`With Action Types fn(0, {} as any) (type) should match snapshot 2`] = ` exports[`With Action Types fn(0, {} as any) (type) should match snapshot 3`] = `"number"`; -exports[`With Action Types fn(0, add(4)) (type) should match snapshot 1`] = `"Argument of type 'PayloadAction<\\"ADD\\", number>' is not assignable to parameter of type 'EmptyAction<\\"INCREMENT\\">'."`; +exports[`With Action Types fn(0, add(4)) (type) should match snapshot 1`] = `"number"`; -exports[`With Action Types fn(0, add(4)) (type) should match snapshot 2`] = `"Argument of type 'PayloadAction<\\"ADD\\", number>' is not assignable to parameter of type 'EmptyAction<\\"INCREMENT\\">'."`; +exports[`With Action Types fn(0, add(4)) (type) should match snapshot 2`] = `"number"`; -exports[`With Action Types fn(0, add(4)) (type) should match snapshot 3`] = `"Argument of type 'PayloadAction<\\"ADD\\", number>' is not assignable to parameter of type 'EmptyAction<\\"INCREMENT\\">'."`; +exports[`With Action Types fn(0, add(4)) (type) should match snapshot 3`] = `"number"`; exports[`With Action Types fn(0, increment()) (type) should match snapshot 1`] = `"number"`; diff --git a/src/create-reducer.spec.ts b/src/create-reducer.spec.ts index 9f9ec36..1c809fa 100644 --- a/src/create-reducer.spec.ts +++ b/src/create-reducer.spec.ts @@ -1,6 +1,7 @@ +import * as T from './type-helpers'; // type-tests global +import { ActionType } from './type-helpers'; import { createStandardAction } from './create-standard-action'; import { createReducer } from './create-reducer'; -import { ActionType } from './type-helpers'; const add = createStandardAction('ADD')(); const increment = createStandardAction('INCREMENT')(); @@ -34,6 +35,8 @@ describe('With Action Creators', () => { }); [counterReducer1, counterReducer2, counterReducer3].forEach(fn => { + // @dts-jest:pass:snap + fn(0, {} as any); // => 0 // @dts-jest:pass:snap fn(0, increment()); // => 1 // @dts-jest:pass:snap diff --git a/src/create-reducer.ts b/src/create-reducer.ts index 49fe5e5..7de55bf 100644 --- a/src/create-reducer.ts +++ b/src/create-reducer.ts @@ -8,12 +8,18 @@ import { } from './utils/validation'; import { Reducer, Action } from './type-helpers'; -type AddHandler = < - TType extends TAllActions['type'], - TTypeAction extends TAllActions extends { type: TType } ? TAllActions : never, - TCreator extends (...args: any[]) => TAllActions, - TCreatorAction extends TAllActions extends ReturnType - ? TAllActions +type AddHandler< + S, + TAllActions extends Action, + TNotHandledActions extends Action +> = < + TType extends TNotHandledActions['type'], + TTypeAction extends TNotHandledActions extends { type: TType } + ? TNotHandledActions + : never, + TCreator extends (...args: any[]) => TNotHandledActions, + TCreatorAction extends TNotHandledActions extends ReturnType + ? TNotHandledActions : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction @@ -21,12 +27,13 @@ type AddHandler = < >( actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S -) => Exclude extends never +) => Exclude extends never ? Reducer : Reducer & { addHandler: AddHandler< S, - Exclude + TAllActions, + Exclude >; }; @@ -59,10 +66,10 @@ export function createReducer( .forEach(type => (handlers[type] = actionsHandler)); return chainApi; - }) as AddHandler; + }) as AddHandler; const chainApi: Reducer & { - addHandler: AddHandler; + addHandler: AddHandler; } = Object.assign(reducer, { addHandler, }); From e799fe5e1515f5c3c03731662bd4846edaec3ccb Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sun, 21 Apr 2019 05:32:55 +0200 Subject: [PATCH 14/22] wip --- package-lock.json | 9413 +++++++---------- package.json | 8 +- src/__snapshots__/action.spec.ts.snap | 52 +- .../create-action-deprecated.spec.ts.snap | 10 +- src/__snapshots__/create-action.spec.ts.snap | 24 +- .../create-async-action.spec.ts.snap | 30 +- .../create-custom-action.spec.ts.snap | 16 +- src/__snapshots__/create-reducer.spec.ts.snap | 36 +- .../create-standard-action.spec.ts.snap | 54 +- src/__snapshots__/get-type.spec.ts.snap | 6 +- src/__snapshots__/is-action-of.spec.ts.snap | 42 +- src/__snapshots__/is-of-type.spec.ts.snap | 42 +- src/__snapshots__/type-helpers.spec.ts.snap | 78 +- src/create-reducer.spec.snap.ts | 79 + src/create-reducer.spec.ts | 3 +- src/is-action-of.spec.snap.ts | 111 +- src/is-of-type.spec.snap.ts | 115 +- src/type-helpers.spec.snap.ts | 123 +- .../__snapshots__/validation.spec.ts.snap | 10 +- 19 files changed, 4041 insertions(+), 6211 deletions(-) create mode 100644 src/create-reducer.spec.snap.ts diff --git a/package-lock.json b/package-lock.json index c9a2acb..e576a4c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,113 +13,6 @@ "@babel/highlight": "^7.0.0" } }, - "@babel/core": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.3.tgz", - "integrity": "sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.0", - "@babel/helpers": "^7.4.3", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "convert-source-map": "^1.1.0", - "debug": "^4.1.0", - "json5": "^2.1.0", - "lodash": "^4.17.11", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - } - } - }, - "@babel/generator": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", - "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", - "dev": true, - "requires": { - "@babel/types": "^7.4.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - } - }, - "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", - "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", - "dev": true - }, - "@babel/helper-split-export-declaration": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", - "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", - "dev": true, - "requires": { - "@babel/types": "^7.4.0" - } - }, - "@babel/helpers": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.3.tgz", - "integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==", - "dev": true, - "requires": { - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0" - } - }, "@babel/highlight": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", @@ -139,147 +32,145 @@ } } }, - "@babel/parser": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", - "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", + "@textlint/ast-node-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.2.1.tgz", + "integrity": "sha512-Pqg1LTJpF929Ovi/lCaPqlyz8yDwBFbQulC0jyQcbRAoTxYS4AZMc48Ug2yk0so5hISQXKrlAxyVBmBVl9EKGA==", "dev": true }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "@textlint/markdown-to-ast": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.0.9.tgz", + "integrity": "sha512-hfAWBvTeUGh5t5kTn2U3uP3qOSM1BSrxzl1jF3nn0ywfZXpRBZr5yRjXnl4DzIYawCtZOshmRi/tI3/x4TE1jQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@textlint/ast-node-types": "^4.0.3", + "debug": "^2.1.3", + "remark-frontmatter": "^1.2.0", + "remark-parse": "^5.0.0", + "structured-source": "^3.0.2", + "traverse": "^0.6.6", + "unified": "^6.1.6" } }, - "@babel/template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", - "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/jest": { + "version": "21.1.10", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-21.1.10.tgz", + "integrity": "sha512-qDyqzbcyNgW2RgWbl606xCYQ+5fK9khOW5+Hl3wH7RggVES0dB6GcZvpmPs/XIty5qpu1xYCwpiK+iRkJ3xFBw==", + "dev": true + }, + "@types/node": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.1.0.tgz", + "integrity": "sha512-sELcX/cJHwRp8kn4hYSvBxKGJ+ubl3MvS8VJQe5gz/sp7CifYxsiCxIJ35wMIYyGVMgfO2AzRa8UcVReAcJRlw==", + "dev": true + }, + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.0", - "@babel/types": "^7.4.0" + "acorn": "^4.0.4" } }, - "@babel/traverse": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz", - "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==", + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.0", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/types": "^7.4.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.11" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "@babel/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", - "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "anchor-markdown-header": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz", + "integrity": "sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=", "dev": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", - "to-fast-properties": "^2.0.0" + "emoji-regex": "~6.1.0" } }, - "@cnakazawa/watch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", - "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "dev": true, "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" + "string-width": "^2.0.0" }, "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "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" + } } } }, - "@jest/console": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", - "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==", + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "@jest/source-map": "^24.3.0", - "chalk": "^2.0.1", - "slash": "^2.0.0" + "color-convert": "^1.9.0" } }, - "@jest/core": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.7.1.tgz", - "integrity": "sha512-ivlZ8HX/FOASfHcb5DJpSPFps8ydfUYzLZfgFFqjkLijYysnIEOieg72YRhO4ZUB32xu40hsSMmaw+IGYeKONA==", + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/reporters": "^24.7.1", - "@jest/test-result": "^24.7.1", - "@jest/transform": "^24.7.1", - "@jest/types": "^24.7.0", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-changed-files": "^24.7.0", - "jest-config": "^24.7.1", - "jest-haste-map": "^24.7.1", - "jest-message-util": "^24.7.1", - "jest-regex-util": "^24.3.0", - "jest-resolve-dependencies": "^24.7.1", - "jest-runner": "^24.7.1", - "jest-runtime": "^24.7.1", - "jest-snapshot": "^24.7.1", - "jest-util": "^24.7.1", - "jest-validate": "^24.7.0", - "jest-watcher": "^24.7.1", - "micromatch": "^3.1.10", - "p-each-series": "^1.0.0", - "pirates": "^4.0.1", - "realpath-native": "^1.1.0", - "rimraf": "^2.5.4", - "strip-ansi": "^5.0.0" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", @@ -356,7 +247,7 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { @@ -376,7 +267,7 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { @@ -553,338 +444,461 @@ "snapdragon": "^0.8.1", "to-regex": "^3.0.2" } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } } } }, - "@jest/environment": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.7.1.tgz", - "integrity": "sha512-wmcTTYc4/KqA+U5h1zQd5FXXynfa7VGP2NfF+c6QeGJ7c+2nStgh65RQWNX62SC716dTtqheTRrZl0j+54oGHw==", + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", "dev": true, "requires": { - "@jest/fake-timers": "^24.7.1", - "@jest/transform": "^24.7.1", - "@jest/types": "^24.7.0", - "jest-mock": "^24.7.0" + "default-require-extensions": "^1.0.0" } }, - "@jest/fake-timers": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.7.1.tgz", - "integrity": "sha512-4vSQJDKfR2jScOe12L9282uiwuwQv9Lk7mgrCSZHA9evB9efB/qx8i0KJxsAKtp8fgJYBJdYY7ZU6u3F4/pyjA==", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "@jest/types": "^24.7.0", - "jest-message-util": "^24.7.1", - "jest-mock": "^24.7.0" + "sprintf-js": "~1.0.2" } }, - "@jest/reporters": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.7.1.tgz", - "integrity": "sha512-bO+WYNwHLNhrjB9EbPL4kX/mCCG4ZhhfWmO3m4FSpbgr7N83MFejayz30kKjgqr7smLyeaRFCBQMbXpUgnhAJw==", + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "@jest/environment": "^24.7.1", - "@jest/test-result": "^24.7.1", - "@jest/transform": "^24.7.1", - "@jest/types": "^24.7.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.2", - "istanbul-api": "^2.1.1", - "istanbul-lib-coverage": "^2.0.2", - "istanbul-lib-instrument": "^3.0.1", - "istanbul-lib-source-maps": "^3.0.1", - "jest-haste-map": "^24.7.1", - "jest-resolve": "^24.7.1", - "jest-runtime": "^24.7.1", - "jest-util": "^24.7.1", - "jest-worker": "^24.6.0", - "node-notifier": "^5.2.1", - "slash": "^2.0.0", - "source-map": "^0.6.0", - "string-length": "^2.0.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "arr-flatten": "^1.0.1" } }, - "@jest/source-map": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.3.0.tgz", - "integrity": "sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag==", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.1.15", - "source-map": "^0.6.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true }, - "@jest/test-result": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.7.1.tgz", - "integrity": "sha512-3U7wITxstdEc2HMfBX7Yx3JZgiNBubwDqQMh+BXmZXHa3G13YWF3p6cK+5g0hGkN3iufg/vGPl3hLxQXD74Npg==", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/types": "^24.7.0", - "@types/istanbul-lib-coverage": "^2.0.0" - } + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", + "dev": true + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", + "dev": true + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", + "dev": true }, - "@jest/test-sequencer": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.7.1.tgz", - "integrity": "sha512-84HQkCpVZI/G1zq53gHJvSmhUer4aMYp9tTaffW28Ih5OxfCg8hGr3nTSbL1OhVDRrFZwvF+/R9gY6JRkDUpUA==", + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "@jest/test-result": "^24.7.1", - "jest-haste-map": "^24.7.1", - "jest-runner": "^24.7.1", - "jest-runtime": "^24.7.1" + "array-uniq": "^1.0.1" } }, - "@jest/transform": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.7.1.tgz", - "integrity": "sha512-EsOUqP9ULuJ66IkZQhI5LufCHlTbi7hrcllRMUEV/tOgqBVQi93+9qEvkX0n8mYpVXQ8VjwmICeRgg58mrtIEw==", + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^24.7.0", - "babel-plugin-istanbul": "^5.1.0", - "chalk": "^2.0.1", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.1.15", - "jest-haste-map": "^24.7.1", - "jest-regex-util": "^24.3.0", - "jest-util": "^24.7.1", - "micromatch": "^3.1.10", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "2.4.1" + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", + "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "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": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "ansi-regex": "^2.0.0" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "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": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-jest": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-21.2.0.tgz", + "integrity": "sha512-O0W2qLoWu1QOoOGgxiR2JID4O6WSpxPiQanrkyi9SSlM0PJ60Ptzlck47lhtnr9YZO3zYOsxHwnyeWJ6AffoBQ==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "^4.0.0", + "babel-preset-jest": "^21.2.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "find-up": "^2.1.0", + "istanbul-lib-instrument": "^1.10.1", + "test-exclude": "^4.2.1" + } + }, + "babel-plugin-jest-hoist": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz", + "integrity": "sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ==", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-strict-mode": { + "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": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-jest": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz", + "integrity": "sha512-hm9cBnr2h3J7yXoTtAVV0zg+3vg0Q/gT2GYuzlreTU0EPkJRtlNgKJJ3tBKEn0+VjAi3JykV6xCJkuUYttEEfA==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^21.2.0", + "babel-plugin-syntax-object-rest-spread": "^6.13.0" + } + }, + "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": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "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.4.0", + "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": "^4.17.4" + } + }, + "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": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "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": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "bail": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz", + "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -916,26 +930,6 @@ "kind-of": "^6.0.2" } }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", @@ -947,3936 +941,1824 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true } } }, - "@jest/types": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.7.0.tgz", - "integrity": "sha512-ipJUa2rFWiKoBqMKP63Myb6h9+iT3FHRTF2M8OR6irxWzItisa8i4dcSg14IbvmXUnBlHBlUQPYUHWyX3UPpYA==", + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/yargs": "^12.0.9" + "tweetnacl": "^0.14.3" } }, - "@textlint/ast-node-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.2.1.tgz", - "integrity": "sha512-Pqg1LTJpF929Ovi/lCaPqlyz8yDwBFbQulC0jyQcbRAoTxYS4AZMc48Ug2yk0so5hISQXKrlAxyVBmBVl9EKGA==", + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", "dev": true }, - "@textlint/markdown-to-ast": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/@textlint/markdown-to-ast/-/markdown-to-ast-6.0.9.tgz", - "integrity": "sha512-hfAWBvTeUGh5t5kTn2U3uP3qOSM1BSrxzl1jF3nn0ywfZXpRBZr5yRjXnl4DzIYawCtZOshmRi/tI3/x4TE1jQ==", - "dev": true, - "requires": { - "@textlint/ast-node-types": "^4.0.3", - "debug": "^2.1.3", - "remark-frontmatter": "^1.2.0", - "remark-parse": "^5.0.0", - "structured-source": "^3.0.2", - "traverse": "^0.6.6", - "unified": "^6.1.6" - } + "boundary": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", + "integrity": "sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=", + "dev": true }, - "@types/babel__core": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.1.tgz", - "integrity": "sha512-+hjBtgcFPYyCTo0A15+nxrCVJL7aC6Acg87TXd5OW3QhHswdrOLoles+ldL2Uk8q++7yIfl4tURtztccdeeyOw==", + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "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" + } + } } }, - "@types/babel__generator": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz", - "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "@types/babel__template": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", - "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, - "@types/babel__traverse": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.6.tgz", - "integrity": "sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw==", + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", "dev": true, "requires": { - "@babel/types": "^7.3.0" + "resolve": "1.1.7" } }, - "@types/estree": { - "version": "0.0.39", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, - "@types/istanbul-lib-coverage": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.0.tgz", - "integrity": "sha512-eAtOAFZefEnfJiRFQBGw1eYqa5GTLCZ1y86N0XSI/D6EB+E8z6VPV/UL7Gi5UEclFqoQk+6NRqEDsfmDLXn8sg==", + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, - "@types/jest": { - "version": "24.0.11", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.11.tgz", - "integrity": "sha512-2kLuPC5FDnWIDvaJBzsGTBQaBbnDweznicvK7UGYzlIJP4RJR2a4A/ByLUXEyEgag6jz8eHdlWExGDtH3EYUXQ==", + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", "dev": true, "requires": { - "@types/jest-diff": "*" + "caller-callsite": "^2.0.0" } }, - "@types/jest-diff": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jest-diff/-/jest-diff-20.0.1.tgz", - "integrity": "sha512-yALhelO3i0hqZwhjtcr6dYyaLoCHbAMshwtj6cGxTvHZAKXHsYGdff6E8EPw3xLKY0ELUTQ69Q1rQiJENnccMA==", + "callsites": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", "dev": true }, - "@types/node": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.1.0.tgz", - "integrity": "sha512-sELcX/cJHwRp8kn4hYSvBxKGJ+ubl3MvS8VJQe5gz/sp7CifYxsiCxIJ35wMIYyGVMgfO2AzRa8UcVReAcJRlw==", + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, - "@types/stack-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", - "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "capture-exit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", + "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=", + "dev": true, + "requires": { + "rsvp": "^3.3.3" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "@types/yargs": { - "version": "12.0.12", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz", - "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==", + "chalk": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", + "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "character-entities": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", + "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==", "dev": true }, - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", + "character-entities-legacy": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", + "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==", "dev": true }, - "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "character-reference-invalid": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz", + "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==", "dev": true }, - "acorn-globals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.1.tgz", - "integrity": "sha512-gJSiKY8dBIjV/0jagZIFBdVMtfQyA5QHCvAT48H2q8REQoW8Fs5AOjqBql1LgSXgrMWdevcE+8cdZ33NtVbIBA==", + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" }, "dependencies": { - "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", - "dev": true + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } } } }, - "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", "dev": true }, - "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } } }, - "anchor-markdown-header": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/anchor-markdown-header/-/anchor-markdown-header-0.5.7.tgz", - "integrity": "sha1-BFBj125qH5zTJ6V6ASaqD97Dcac=", - "dev": true, - "requires": { - "emoji-regex": "~6.1.0" - } + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", + "dev": true }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "string-width": "^2.0.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.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=", + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "1.0.2", + "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" } } } }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "collapse-white-space": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", + "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==", "dev": true }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { - "color-convert": "^1.9.0" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - } - } - }, - "append-transform": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", - "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", - "dev": true, - "requires": { - "default-require-extensions": "^2.0.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "^1.0.1" - } - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-equal": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", - "dev": true, - "requires": { - "lodash": "^4.17.11" - } - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", - "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "babel-jest": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.7.1.tgz", - "integrity": "sha512-GPnLqfk8Mtt0i4OemjWkChi73A3ALs4w2/QbG64uAj8b5mmwzxc7jbJVRZt8NJkxi6FopVHog9S3xX6UJKb2qg==", - "dev": true, - "requires": { - "@jest/transform": "^24.7.1", - "@jest/types": "^24.7.0", - "@types/babel__core": "^7.1.0", - "babel-plugin-istanbul": "^5.1.0", - "babel-preset-jest": "^24.6.0", - "chalk": "^2.4.2", - "slash": "^2.0.0" - }, - "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - } - } - }, - "babel-plugin-istanbul": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.2.tgz", - "integrity": "sha512-U3ZVajC+Z69Gim7ZzmD4Wcsq76i/1hqDamBfowc1tWzWjybRy70iWfngP2ME+1CrgcgZ/+muIbPY/Yi0dxdIkQ==", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "istanbul-lib-instrument": "^3.2.0", - "test-exclude": "^5.2.2" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - } - } - }, - "babel-plugin-jest-hoist": { - "version": "24.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz", - "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==", - "dev": true, - "requires": { - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-jest": { - "version": "24.6.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz", - "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==", - "dev": true, - "requires": { - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "babel-plugin-jest-hoist": "^24.6.0" - } - }, - "bail": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.3.tgz", - "integrity": "sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg==", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "boundary": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/boundary/-/boundary-1.0.1.tgz", - "integrity": "sha1-TWfcJgLAzBbdm85+v4fpSCkPWBI=", - "dev": true - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - }, - "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "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" - } - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - } - }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", - "dev": true - }, - "browser-resolve": { - "version": "1.11.3", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", - "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", - "dev": true, - "requires": { - "resolve": "1.1.7" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", - "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "http://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "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 - }, - "capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "dev": true, - "requires": { - "rsvp": "^4.8.4" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.0.tgz", - "integrity": "sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "character-entities": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.2.tgz", - "integrity": "sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ==", - "dev": true - }, - "character-entities-legacy": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz", - "integrity": "sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA==", - "dev": true - }, - "character-reference-invalid": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz", - "integrity": "sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ==", - "dev": true - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "cli-boxes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", - "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=", - "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.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, - "collapse-white-space": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.4.tgz", - "integrity": "sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw==", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, - "requires": { - "color-name": "^1.1.1" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colors": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", - "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", - "dev": true - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "compare-versions": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz", - "integrity": "sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==", - "dev": true - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cosmiconfig": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz", - "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.9.0", - "parse-json": "^4.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } - } - }, - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "cssom": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", - "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==", - "dev": true - }, - "cssstyle": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", - "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", - "dev": true, - "requires": { - "cssom": "0.3.x" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "dev": true, - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - }, - "dependencies": { - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "dev": true, - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - } - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-assign": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz", - "integrity": "sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI=", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "default-require-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", - "dev": true, - "requires": { - "strip-bom": "^3.0.0" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "dev": true - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true - }, - "diff-sequences": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.3.0.tgz", - "integrity": "sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==", - "dev": true - }, - "doctoc": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-1.4.0.tgz", - "integrity": "sha512-8IAq3KdMkxhXCUF+xdZxdJxwuz8N2j25sMgqiu4U4JWluN9tRKMlAalxGASszQjlZaBprdD2YfXpL3VPWUD4eg==", - "dev": true, - "requires": { - "@textlint/markdown-to-ast": "~6.0.9", - "anchor-markdown-header": "^0.5.5", - "htmlparser2": "~3.9.2", - "minimist": "~1.2.0", - "underscore": "~1.8.3", - "update-section": "^0.3.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, - "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dev": true, - "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "dev": true, - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dts-jest": { - "version": "23.0.0", - "resolved": "https://registry.npmjs.org/dts-jest/-/dts-jest-23.0.0.tgz", - "integrity": "sha512-QDCJukM529nBuQxz87K5YeQetr7bCJ8vw5e7W4Q37xTCiTh/imHZ2vJQiLKTve1oYIH9oo8iYjfnlOmHu5CQXA==", - "dev": true, - "requires": { - "globby": "^6.1.0", - "jest-snapshot-parser": "^1.0.0", - "lodash.intersection": "^4.4.0", - "make-dir": "^1.0.0", - "pretty-format": "^21.0.0", - "ts-comment": "^1.1.0", - "tslib": "^1.7.1", - "yargs": "^9.0.0" - } - }, - "duplexer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", - "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "emoji-regex": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.3.tgz", - "integrity": "sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI=", - "dev": true - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", - "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", - "dev": true, - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - }, - "dependencies": { - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, - "estree-walker": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", - "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", - "dev": true - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "dev": true - }, - "exec-sh": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz", - "integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==", - "dev": true - }, - "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": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "^0.1.0" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "^2.1.0" - } - }, - "expect": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-24.7.1.tgz", - "integrity": "sha512-mGfvMTPduksV3xoI0xur56pQsg2vJjNf5+a+bXOjqCkiCBbmCayrBbHS/75y9K430cfqyocPr2ZjiNiRx4SRKw==", - "dev": true, - "requires": { - "@jest/types": "^24.7.0", - "ansi-styles": "^3.2.0", - "jest-get-type": "^24.3.0", - "jest-matcher-utils": "^24.7.0", - "jest-message-util": "^24.7.1", - "jest-regex-util": "^24.3.0" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "^1.0.0" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fault": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.2.tgz", - "integrity": "sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw==", - "dev": true, - "requires": { - "format": "^0.2.2" - } - }, - "fb-watchman": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", - "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", - "dev": true, - "requires": { - "bser": "^2.0.0" - } - }, - "filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "dev": true - }, - "fileset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", - "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, - "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" - } - }, - "filesize": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", - "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", - "dev": true - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true, - "requires": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^1.1.3", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - } - }, - "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" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", - "dev": true - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.8.tgz", - "integrity": "sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "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 - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "^2.0.0" - } - }, - "globals": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", - "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", - "dev": true - }, - "globby": { - "version": "6.1.0", - "resolved": "http://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "color-name": "^1.1.1" } }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "colors": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", + "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", "dev": true }, - "gzip-size": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", - "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "dev": true, "requires": { - "duplexer": "^0.1.1" + "delayed-stream": "~1.0.0" } }, - "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", - "dev": true, - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "dev": true, - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", "dev": true, "requires": { - "function-bind": "^1.1.1" + "safe-buffer": "~5.1.1" } }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "core-js": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", + "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", "dev": true }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "cosmiconfig": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.0.7.tgz", + "integrity": "sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==", "dev": true, "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { + "parse-json": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" } } } }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "cpx": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz", + "integrity": "sha1-GFvgGFEdhycN7czCkxceN2VauI8=", + "dev": true, + "requires": { + "babel-runtime": "^6.9.2", + "chokidar": "^1.6.0", + "duplexer": "^0.1.1", + "glob": "^7.0.5", + "glob2base": "^0.0.12", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "resolve": "^1.1.7", + "safe-buffer": "^5.0.1", + "shell-quote": "^1.6.1", + "subarg": "^1.0.0" + } + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "cssom": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", + "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==", "dev": true }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", "dev": true, "requires": { - "whatwg-encoding": "^1.0.1" + "cssom": "0.3.x" } }, - "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { - "domelementtype": "^1.3.0", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" + "assert-plus": "^1.0.0" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "ms": "2.0.0" } }, - "husky": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", - "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-assign": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz", + "integrity": "sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI=", "dev": true, "requires": { - "cosmiconfig": "^5.0.7", - "execa": "^1.0.0", - "find-up": "^3.0.0", - "get-stdin": "^6.0.0", - "is-ci": "^2.0.0", - "pkg-dir": "^3.0.0", - "please-upgrade-node": "^3.1.1", - "read-pkg": "^4.0.1", - "run-node": "^1.0.0", - "slash": "^2.0.0" + "is-obj": "^1.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "^2.0.0" }, "dependencies": { - "ci-info": { + "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "is-utf8": "^0.2.0" } - }, - "execa": { + } + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "kind-of": "^6.0.0" } }, - "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "kind-of": "^6.0.0" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true - }, - "read-pkg": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", - "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", - "dev": true, - "requires": { - "normalize-package-data": "^2.3.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0" - } } } }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", "dev": true, "requires": { - "safer-buffer": ">= 2.1.2 < 3" + "repeating": "^2.0.0" } }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "doctoc": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/doctoc/-/doctoc-1.4.0.tgz", + "integrity": "sha512-8IAq3KdMkxhXCUF+xdZxdJxwuz8N2j25sMgqiu4U4JWluN9tRKMlAalxGASszQjlZaBprdD2YfXpL3VPWUD4eg==", "dev": true, "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "@textlint/markdown-to-ast": "~6.0.9", + "anchor-markdown-header": "^0.5.5", + "htmlparser2": "~3.9.2", + "minimist": "~1.2.0", + "underscore": "~1.8.3", + "update-section": "^0.3.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } } }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dom-serializer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", + "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "dev": true, + "requires": { + "domelementtype": "^1.3.0", + "entities": "^1.1.1" + } + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dts-jest": { + "version": "22.0.4", + "resolved": "https://registry.npmjs.org/dts-jest/-/dts-jest-22.0.4.tgz", + "integrity": "sha512-guGnIhzDzAA2KPha9voM07VJYrZsnLlUItVRTE4KacsdDgWmFaMYevShGchJJNG7c2D67P+zDllv4vPEaS3x1A==", + "dev": true, + "requires": { + "globby": "^6.1.0", + "jest-snapshot-parser": "^1.0.0", + "lodash.intersection": "^4.4.0", + "make-dir": "^1.0.0", + "pretty-format": "^21.0.0", + "ts-comment": "^1.1.0", + "tslib": "^1.7.1", + "yargs": "^9.0.0" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "emoji-regex": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.1.3.tgz", + "integrity": "sha1-7HmjlpsC0uzytyJUJ5v5m8eoOTI=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" + "once": "^1.4.0" } }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", "dev": true }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", "dev": true, "requires": { - "once": "^1.3.0", - "wrappy": "1" + "prr": "~1.0.1" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { - "loose-envify": "^1.0.0" + "is-arrayish": "^0.2.1" } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "escodegen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", + "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", "dev": true, "requires": { - "kind-of": "^3.0.2" + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } } }, - "is-alphabetical": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", - "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==", + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, - "is-alphanumerical": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", - "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", - "dev": true, - "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - } + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "estree-walker": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", + "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", "dev": true }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "exec-sh": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", + "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", "dev": true, "requires": { - "builtin-modules": "^1.0.0" + "merge": "^1.2.0" } }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", - "dev": true + "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": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "ci-info": "^2.0.0" + "is-posix-bracket": "^0.1.0" } }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "fill-range": "^2.1.0" } }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true + "expect": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-21.2.1.tgz", + "integrity": "sha512-orfQQqFRTX0jH7znRIGi8ZMR8kTNpXklTTz8+HGTpmTKZo3Occ6JNB5FXMb8cRuiiC/GyDqsr30zUa66ACYlYw==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "jest-diff": "^21.2.1", + "jest-get-type": "^21.2.0", + "jest-matcher-utils": "^21.2.1", + "jest-message-util": "^21.2.1", + "jest-regex-util": "^21.2.0" + } }, - "is-decimal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", - "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==", + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } } } }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "dev": true - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-primitive": "^2.0.0" + "is-extglob": "^1.0.0" } }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "fault": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.2.tgz", + "integrity": "sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw==", "dev": true, "requires": { - "is-extglob": "^1.0.0" + "format": "^0.2.2" } }, - "is-hexadecimal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", - "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==", - "dev": true - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", "dev": true, "requires": { - "kind-of": "^3.0.2" + "bser": "^2.0.0" } }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", "dev": true, "requires": { - "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } + "glob": "^7.0.3", + "minimatch": "^3.0.3" } }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "dev": true - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", "dev": true }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { - "has": "^1.0.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "find-index": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", + "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", "dev": true }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "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": { - "has-symbols": "^1.0.0" + "locate-path": "^2.0.0" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-whitespace-character": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz", - "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-word-character": { + "for-in": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz", - "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "isarray": "1.0.0" + "for-in": "^1.0.1" } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, - "istanbul-api": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.5.tgz", - "integrity": "sha512-meYk1BwDp59Pfse1TvPrkKYgVqAufbdBLEVoqvu/hLLKSaQ054ZTksbNepyc223tMnWdm6AdK2URIJJRqdP87g==", - "dev": true, - "requires": { - "async": "^2.6.1", - "compare-versions": "^3.2.1", - "fileset": "^2.0.3", - "istanbul-lib-coverage": "^2.0.4", - "istanbul-lib-hook": "^2.0.6", - "istanbul-lib-instrument": "^3.2.0", - "istanbul-lib-report": "^2.0.7", - "istanbul-lib-source-maps": "^3.0.5", - "istanbul-reports": "^2.2.3", - "js-yaml": "^3.13.0", - "make-dir": "^2.1.0", - "minimatch": "^3.0.4", - "once": "^1.4.0" - }, - "dependencies": { - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - } + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, - "istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-LXTBICkMARVgo579kWDm8SqfB6nvSDKNqIOBEjmJRnL04JvoMHCYGWaMddQnseJYtkEuEvO/sIcOxPLk9gERug==", + "format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs=", "dev": true }, - "istanbul-lib-hook": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.6.tgz", - "integrity": "sha512-829DKONApZ7UCiPXcOYWSgkFXa4+vNYoNOt3F+4uDJLKL1OotAoVwvThoEj1i8jmOj7odbYcR3rnaHu+QroaXg==", + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { - "append-transform": "^1.0.0" + "map-cache": "^0.2.2" } }, - "istanbul-lib-instrument": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.2.0.tgz", - "integrity": "sha512-06IM3xShbNW4NgZv5AP4QH0oHqf1/ivFo8eFys0ZjPXHGldHJQWb3riYOKXqmOqfxXBfxu4B+g/iuhOPZH0RJg==", + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "dev": true, "requires": { - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "istanbul-lib-coverage": "^2.0.4", - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", - "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", - "dev": true - } + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "istanbul-lib-report": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.7.tgz", - "integrity": "sha512-wLH6beJBFbRBLiTlMOBxmb85cnVM1Vyl36N48e4e/aTKSM3WbOx7zbVIH1SQ537fhhsPbX0/C5JB4qsmyRXXyA==", + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.8.tgz", + "integrity": "sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA==", "dev": true, + "optional": true, "requires": { - "istanbul-lib-coverage": "^2.0.4", - "make-dir": "^2.1.0", - "supports-color": "^6.0.0" + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" }, "dependencies": { - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, "dev": true, + "optional": true, "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "code-point-at": { + "version": "1.1.0", + "bundled": true, "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.5.tgz", - "integrity": "sha512-eDhZ7r6r1d1zQPVZehLc3D0K14vRba/eBYkz3rw16DLOrrTzve9RmnkcwrrkWVgO1FL3EK5knujVe5S8QHE9xw==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.4", - "make-dir": "^2.1.0", - "rimraf": "^2.6.2", - "source-map": "^0.6.1" - }, - "dependencies": { + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, "debug": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "bundled": true, "dev": true, + "optional": true, "requires": { "ms": "^2.1.1" } }, - "make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "deep-extend": { + "version": "0.6.0", + "bundled": true, "dev": true, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true + "optional": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "istanbul-reports": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.3.tgz", - "integrity": "sha512-T6EbPuc8Cb620LWAYyZ4D8SSn06dY9i1+IgUX2lTH8gbwflMc9Obd33zHTyNX653ybjpamAHS9toKS3E6cGhTw==", - "dev": true, - "requires": { - "handlebars": "^4.1.0" - } - }, - "jest": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-24.7.1.tgz", - "integrity": "sha512-AbvRar5r++izmqo5gdbAjTeA6uNRGoNRuj5vHB0OnDXo2DXWZJVuaObiGgtlvhKb+cWy2oYbQSfxv7Q7GjnAtA==", - "dev": true, - "requires": { - "import-local": "^2.0.0", - "jest-cli": "^24.7.1" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "detect-libc": { + "version": "1.0.3", + "bundled": true, "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } + "optional": true }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "fs-minipass": { + "version": "1.2.5", + "bundled": true, "dev": true, + "optional": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "minipass": "^2.2.1" } }, - "execa": { + "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, "dev": true, + "optional": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "glob": { + "version": "7.1.3", + "bundled": true, "dev": true, + "optional": true, "requires": { - "locate-path": "^3.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, "dev": true, + "optional": true, "requires": { - "pump": "^3.0.0" + "safer-buffer": ">= 2.1.2 < 3" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "jest-cli": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.7.1.tgz", - "integrity": "sha512-32OBoSCVPzcTslGFl6yVCMzB2SqX3IrWwZCY5mZYkb0D2WsogmU3eV2o8z7+gRQa4o4sZPX/k7GU+II7CxM6WQ==", + "ignore-walk": { + "version": "3.0.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "@jest/core": "^24.7.1", - "@jest/test-result": "^24.7.1", - "@jest/types": "^24.7.0", - "chalk": "^2.0.1", - "exit": "^0.1.2", - "import-local": "^2.0.0", - "is-ci": "^2.0.0", - "jest-config": "^24.7.1", - "jest-util": "^24.7.1", - "jest-validate": "^24.7.0", - "prompts": "^2.0.1", - "realpath-native": "^1.1.0", - "yargs": "^12.0.2" - } - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, "dev": true, + "optional": true, "requires": { - "invert-kv": "^2.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "number-is-nan": "^1.0.0" } }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, "dev": true, + "optional": true, "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" + "brace-expansion": "^1.1.7" } }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "minipass": { + "version": "2.3.5", + "bundled": true, "dev": true, + "optional": true, "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" } }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "minizlib": { + "version": "1.2.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "p-try": "^2.0.0" + "minipass": "^2.2.1" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "mkdirp": { + "version": "0.5.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "p-limit": "^2.0.0" + "minimist": "0.0.8" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "needle": { + "version": "2.3.0", + "bundled": true, "dev": true, + "optional": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" } }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, "dev": true, + "optional": true, "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" } - } - } - }, - "jest-changed-files": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.7.0.tgz", - "integrity": "sha512-33BgewurnwSfJrW7T5/ZAXGE44o7swLslwh8aUckzq2e17/2Os1V0QU506ZNik3hjs8MgnEMKNkcud442NCDTw==", - "dev": true, - "requires": { - "@jest/types": "^24.7.0", - "execa": "^1.0.0", - "throat": "^4.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + }, + "nopt": { + "version": "4.0.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "abbrev": "1", + "osenv": "^0.1.4" } }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, "dev": true, + "optional": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "npmlog": { + "version": "4.1.2", + "bundled": true, "dev": true, + "optional": true, "requires": { - "pump": "^3.0.0" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } - } - } - }, - "jest-config": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.7.1.tgz", - "integrity": "sha512-8FlJNLI+X+MU37j7j8RE4DnJkvAghXmBWdArVzypW6WxfGuxiL/CCkzBg0gHtXhD2rxla3IMOSUAHylSKYJ83g==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^24.7.1", - "@jest/types": "^24.7.0", - "babel-jest": "^24.7.1", - "chalk": "^2.0.1", - "glob": "^7.1.1", - "jest-environment-jsdom": "^24.7.1", - "jest-environment-node": "^24.7.1", - "jest-get-type": "^24.3.0", - "jest-jasmine2": "^24.7.1", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.7.1", - "jest-util": "^24.7.1", - "jest-validate": "^24.7.0", - "micromatch": "^3.1.10", - "pretty-format": "^24.7.0", - "realpath-native": "^1.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "object-assign": { + "version": "4.1.1", + "bundled": true, "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } + "optional": true }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "once": { + "version": "1.4.0", + "bundled": true, "dev": true, + "optional": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "wrappy": "1" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, "dev": true, + "optional": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, "dev": true, + "optional": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "minimist": { + "version": "1.2.0", + "bundled": true, "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } + "optional": true } } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "readable-stream": { + "version": "2.3.6", + "bundled": true, "dev": true, + "optional": true, "requires": { - "kind-of": "^6.0.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "rimraf": { + "version": "2.6.3", + "bundled": true, "dev": true, + "optional": true, "requires": { - "kind-of": "^6.0.0" + "glob": "^7.1.3" } }, - "is-descriptor": { + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "bundled": true, "dev": true, + "optional": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" } }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "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 + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "glob2base": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", + "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", + "dev": true, + "requires": { + "find-index": "^0.1.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", + "dev": true, + "requires": { + "duplexer": "^0.1.1" + } + }, + "handlebars": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "dev": true, + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -4897,1185 +2779,967 @@ } } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "pretty-format": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.7.0.tgz", - "integrity": "sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "@jest/types": "^24.7.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" + "is-buffer": "^1.1.5" } } } }, - "jest-diff": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.7.0.tgz", - "integrity": "sha512-ULQZ5B1lWpH70O4xsANC4tf4Ko6RrpwhE3PtG6ERjMg1TiYTC2Wp4IntJVGro6a8HG9luYHhhmF4grF0Pltckg==", + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", "dev": true, "requires": { - "chalk": "^2.0.1", - "diff-sequences": "^24.3.0", - "jest-get-type": "^24.3.0", - "pretty-format": "^24.7.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "pretty-format": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.7.0.tgz", - "integrity": "sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA==", - "dev": true, - "requires": { - "@jest/types": "^24.7.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - } + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" } }, - "jest-docblock": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.3.0.tgz", - "integrity": "sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg==", - "dev": true, - "requires": { - "detect-newline": "^2.1.0" - } + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true }, - "jest-each": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.7.1.tgz", - "integrity": "sha512-4fsS8fEfLa3lfnI1Jw6NxjhyRTgfpuOVTeUZZFyVYqeTa4hPhr2YkToUhouuLTrL2eMGOfpbdMyRx0GQ/VooKA==", + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "requires": { - "@jest/types": "^24.7.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.3.0", - "jest-util": "^24.7.1", - "pretty-format": "^24.7.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "pretty-format": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.7.0.tgz", - "integrity": "sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA==", - "dev": true, - "requires": { - "@jest/types": "^24.7.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - } + "whatwg-encoding": "^1.0.1" } }, - "jest-environment-jsdom": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.7.1.tgz", - "integrity": "sha512-Gnhb+RqE2JuQGb3kJsLF8vfqjt3PHKSstq4Xc8ic+ax7QKo4Z0RWGucU3YV+DwKR3T9SYc+3YCUQEJs8r7+Jxg==", + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", "dev": true, "requires": { - "@jest/environment": "^24.7.1", - "@jest/fake-timers": "^24.7.1", - "@jest/types": "^24.7.0", - "jest-mock": "^24.7.0", - "jest-util": "^24.7.1", - "jsdom": "^11.5.1" + "domelementtype": "^1.3.0", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^2.0.2" } }, - "jest-environment-node": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.7.1.tgz", - "integrity": "sha512-GJJQt1p9/C6aj6yNZMvovZuxTUd+BEJprETdvTKSb4kHcw4mFj8777USQV0FJoJ4V3djpOwA5eWyPwfq//PFBA==", + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { - "@jest/environment": "^24.7.1", - "@jest/fake-timers": "^24.7.1", - "@jest/types": "^24.7.0", - "jest-mock": "^24.7.0", - "jest-util": "^24.7.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, - "jest-get-type": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", - "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==", - "dev": true - }, - "jest-haste-map": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.7.1.tgz", - "integrity": "sha512-g0tWkzjpHD2qa03mTKhlydbmmYiA2KdcJe762SbfFo/7NIMgBWAA0XqQlApPwkWOF7Cxoi/gUqL0i6DIoLpMBw==", + "husky": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", + "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", "dev": true, "requires": { - "@jest/types": "^24.7.0", - "anymatch": "^2.0.0", - "fb-watchman": "^2.0.0", - "fsevents": "^1.2.7", - "graceful-fs": "^4.1.15", - "invariant": "^2.2.4", - "jest-serializer": "^24.4.0", - "jest-util": "^24.7.1", - "jest-worker": "^24.6.0", - "micromatch": "^3.1.10", - "sane": "^4.0.3", - "walker": "^1.0.7" + "cosmiconfig": "^5.0.7", + "execa": "^1.0.0", + "find-up": "^3.0.0", + "get-stdin": "^6.0.0", + "is-ci": "^2.0.0", + "pkg-dir": "^3.0.0", + "please-upgrade-node": "^3.1.1", + "read-pkg": "^4.0.1", + "run-node": "^1.0.0", + "slash": "^2.0.0" }, "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "locate-path": "^3.0.0" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "pump": "^3.0.0" } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "ci-info": "^2.0.0" } }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" } }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "p-try": "^2.0.0" } }, - "is-number": { + "p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "p-limit": "^2.0.0" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", "dev": true }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "read-pkg": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-4.0.1.tgz", + "integrity": "sha1-ljYlN48+HE1IyFhytabsfV0JMjc=", "dev": true, "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "normalize-package-data": "^2.3.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0" } } } }, - "jest-jasmine2": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.7.1.tgz", - "integrity": "sha512-Y/9AOJDV1XS44wNwCaThq4Pw3gBPiOv/s6NcbOAkVRRUEPu+36L2xoPsqQXsDrxoBerqeyslpn2TpCI8Zr6J2w==", + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^24.7.1", - "@jest/test-result": "^24.7.1", - "@jest/types": "^24.7.0", - "chalk": "^2.0.1", - "co": "^4.6.0", - "expect": "^24.7.1", - "is-generator-fn": "^2.0.0", - "jest-each": "^24.7.1", - "jest-matcher-utils": "^24.7.0", - "jest-message-util": "^24.7.1", - "jest-runtime": "^24.7.1", - "jest-snapshot": "^24.7.1", - "jest-util": "^24.7.1", - "pretty-format": "^24.7.0", - "throat": "^4.0.0" + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-alphabetical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.2.tgz", + "integrity": "sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg==", + "dev": true + }, + "is-alphanumerical": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz", + "integrity": "sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg==", + "dev": true, + "requires": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-decimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.2.tgz", + "integrity": "sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true - }, - "pretty-format": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.7.0.tgz", - "integrity": "sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA==", - "dev": true, - "requires": { - "@jest/types": "^24.7.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } } } }, - "jest-leak-detector": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.7.0.tgz", - "integrity": "sha512-zV0qHKZGXtmPVVzT99CVEcHE9XDf+8LwiE0Ob7jjezERiGVljmqKFWpV2IkG+rkFIEUHFEkMiICu7wnoPM/RoQ==", + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { - "pretty-format": "^24.7.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "pretty-format": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.7.0.tgz", - "integrity": "sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA==", - "dev": true, - "requires": { - "@jest/types": "^24.7.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - } + "number-is-nan": "^1.0.0" } }, - "jest-matcher-utils": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.7.0.tgz", - "integrity": "sha512-158ieSgk3LNXeUhbVJYRXyTPSCqNgVXOp/GT7O94mYd3pk/8+odKTyR1JLtNOQSPzNi8NFYVONtvSWA/e1RDXg==", + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "chalk": "^2.0.1", - "jest-diff": "^24.7.0", - "jest-get-type": "^24.3.0", - "pretty-format": "^24.7.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "pretty-format": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.7.0.tgz", - "integrity": "sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA==", - "dev": true, - "requires": { - "@jest/types": "^24.7.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - } + "is-extglob": "^1.0.0" } }, - "jest-message-util": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.7.1.tgz", - "integrity": "sha512-dk0gqVtyqezCHbcbk60CdIf+8UHgD+lmRHifeH3JRcnAqh4nEyPytSc9/L1+cQyxC+ceaeP696N4ATe7L+omcg==", + "is-hexadecimal": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz", + "integrity": "sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A==", + "dev": true + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/test-result": "^24.7.1", - "@jest/types": "^24.7.0", - "@types/stack-utils": "^1.0.1", - "chalk": "^2.0.1", - "micromatch": "^3.1.10", - "slash": "^2.0.0", - "stack-utils": "^1.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - } - }, - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-accessor-descriptor": { + "kind-of": "^3.0.2" + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-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-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-whitespace-character": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz", + "integrity": "sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-word-character": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.2.tgz", + "integrity": "sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", + "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", + "dev": true, + "requires": { + "async": "^2.1.4", + "fileset": "^2.0.2", + "istanbul-lib-coverage": "^1.2.1", + "istanbul-lib-hook": "^1.2.2", + "istanbul-lib-instrument": "^1.10.2", + "istanbul-lib-report": "^1.1.5", + "istanbul-lib-source-maps": "^1.2.6", + "istanbul-reports": "^1.5.1", + "js-yaml": "^3.7.0", + "mkdirp": "^0.5.1", + "once": "^1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", + "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", + "dev": true, + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", + "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "kind-of": "^6.0.0" + "has-flag": "^1.0.0" } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", + "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "ms": "^2.1.1" } }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", + "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", + "dev": true, + "requires": { + "handlebars": "^4.0.3" + } + }, + "jest": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-21.2.1.tgz", + "integrity": "sha512-mXN0ppPvWYoIcC+R+ctKxAJ28xkt/Z5Js875padm4GbgUn6baeR5N4Ng6LjatIRpUQDZVJABT7Y4gucFjPryfw==", + "dev": true, + "requires": { + "jest-cli": "^21.2.1" + }, + "dependencies": { + "jest-cli": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-21.2.1.tgz", + "integrity": "sha512-T1BzrbFxDIW/LLYQqVfo94y/hhaj1NzVQkZgBumAC+sxbjMROI7VkihOdxNR758iYbQykL2ZOWUBurFgkQrzdg==", "dev": true, "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "istanbul-api": "^1.1.1", + "istanbul-lib-coverage": "^1.0.1", + "istanbul-lib-instrument": "^1.4.2", + "istanbul-lib-source-maps": "^1.1.0", + "jest-changed-files": "^21.2.0", + "jest-config": "^21.2.1", + "jest-environment-jsdom": "^21.2.1", + "jest-haste-map": "^21.2.0", + "jest-message-util": "^21.2.1", + "jest-regex-util": "^21.2.0", + "jest-resolve-dependencies": "^21.2.0", + "jest-runner": "^21.2.1", + "jest-runtime": "^21.2.1", + "jest-snapshot": "^21.2.1", + "jest-util": "^21.2.1", + "micromatch": "^2.3.11", + "node-notifier": "^5.0.2", + "pify": "^3.0.0", + "slash": "^1.0.0", + "string-length": "^2.0.0", + "strip-ansi": "^4.0.0", + "which": "^1.2.12", + "worker-farm": "^1.3.1", + "yargs": "^9.0.0" } }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } } } }, - "jest-mock": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.7.0.tgz", - "integrity": "sha512-6taW4B4WUcEiT2V9BbOmwyGuwuAFT2G8yghF7nyNW1/2gq5+6aTqSPcS9lS6ArvEkX55vbPAS/Jarx5LSm4Fng==", + "jest-changed-files": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-21.2.0.tgz", + "integrity": "sha512-+lCNP1IZLwN1NOIvBcV5zEL6GENK6TXrDj4UxWIeLvIsIDa+gf6J7hkqsW2qVVt/wvH65rVvcPwqXdps5eclTQ==", + "dev": true, + "requires": { + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-21.2.1.tgz", + "integrity": "sha512-fJru5HtlD/5l2o25eY9xT0doK3t2dlglrqoGpbktduyoI0T5CwuB++2YfoNZCrgZipTwPuAGonYv0q7+8yDc/A==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^21.2.1", + "jest-environment-node": "^21.2.1", + "jest-get-type": "^21.2.0", + "jest-jasmine2": "^21.2.1", + "jest-regex-util": "^21.2.0", + "jest-resolve": "^21.2.0", + "jest-util": "^21.2.1", + "jest-validate": "^21.2.1", + "pretty-format": "^21.2.1" + } + }, + "jest-diff": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz", + "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^21.2.0", + "pretty-format": "^21.2.1" + } + }, + "jest-docblock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", + "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", + "dev": true + }, + "jest-environment-jsdom": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz", + "integrity": "sha512-mecaeNh0eWmzNrUNMWARysc0E9R96UPBamNiOCYL28k7mksb1d0q6DD38WKP7ABffjnXyUWJPVaWRgUOivwXwg==", "dev": true, "requires": { - "@jest/types": "^24.7.0" + "jest-mock": "^21.2.0", + "jest-util": "^21.2.1", + "jsdom": "^9.12.0" } }, - "jest-pnp-resolver": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", - "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "jest-environment-node": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-21.2.1.tgz", + "integrity": "sha512-R211867wx9mVBVHzrjGRGTy5cd05K7eqzQl/WyZixR/VkJ4FayS8qkKXZyYnwZi6Rxo6WEV81cDbiUx/GfuLNw==", + "dev": true, + "requires": { + "jest-mock": "^21.2.0", + "jest-util": "^21.2.1" + } + }, + "jest-get-type": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-21.2.0.tgz", + "integrity": "sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==", + "dev": true + }, + "jest-haste-map": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz", + "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==", + "dev": true, + "requires": { + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.11", + "jest-docblock": "^21.2.0", + "micromatch": "^2.3.11", + "sane": "^2.0.0", + "worker-farm": "^1.3.1" + } + }, + "jest-jasmine2": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz", + "integrity": "sha512-lw8FXXIEekD+jYNlStfgNsUHpfMWhWWCgHV7n0B7mA/vendH7vBFs8xybjQsDzJSduptBZJHqQX9SMssya9+3A==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "expect": "^21.2.1", + "graceful-fs": "^4.1.11", + "jest-diff": "^21.2.1", + "jest-matcher-utils": "^21.2.1", + "jest-message-util": "^21.2.1", + "jest-snapshot": "^21.2.1", + "p-cancelable": "^0.3.0" + } + }, + "jest-matcher-utils": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz", + "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^21.2.0", + "pretty-format": "^21.2.1" + } + }, + "jest-message-util": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-21.2.1.tgz", + "integrity": "sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0" + }, + "dependencies": { + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "jest-mock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-21.2.0.tgz", + "integrity": "sha512-aZDfyVf0LEoABWiY6N0d+O963dUQSyUa4qgzurHR3TBDPen0YxKCJ6l2i7lQGh1tVdsuvdrCZ4qPj+A7PievCw==", "dev": true }, "jest-regex-util": { - "version": "24.3.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz", - "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-21.2.0.tgz", + "integrity": "sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ==", "dev": true }, "jest-resolve": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.7.1.tgz", - "integrity": "sha512-Bgrc+/UUZpGJ4323sQyj85hV9d+ANyPNu6XfRDUcyFNX1QrZpSoM0kE4Mb2vZMAYTJZsBFzYe8X1UaOkOELSbw==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-21.2.0.tgz", + "integrity": "sha512-vefQ/Lr+VdNvHUZFQXWtOqHX3HEdOc2MtSahBO89qXywEbUxGPB9ZLP9+BHinkxb60UT2Q/tTDOS6rYc6Mwigw==", "dev": true, "requires": { - "@jest/types": "^24.7.0", - "browser-resolve": "^1.11.3", + "browser-resolve": "^1.11.2", "chalk": "^2.0.1", - "jest-pnp-resolver": "^1.2.1", - "realpath-native": "^1.1.0" + "is-builtin-module": "^1.0.0" } }, "jest-resolve-dependencies": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.7.1.tgz", - "integrity": "sha512-2Eyh5LJB2liNzfk4eo7bD1ZyBbqEJIyyrFtZG555cSWW9xVHxII2NuOkSl1yUYTAYCAmM2f2aIT5A7HzNmubyg==", + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-21.2.0.tgz", + "integrity": "sha512-ok8ybRFU5ScaAcfufIQrCbdNJSRZ85mkxJ1EhUp8Bhav1W1/jv/rl1Q6QoVQHObNxmKnbHVKrfLZbCbOsXQ+bQ==", "dev": true, "requires": { - "@jest/types": "^24.7.0", - "jest-regex-util": "^24.3.0", - "jest-snapshot": "^24.7.1" + "jest-regex-util": "^21.2.0" } }, "jest-runner": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.7.1.tgz", - "integrity": "sha512-aNFc9liWU/xt+G9pobdKZ4qTeG/wnJrJna3VqunziDNsWT3EBpmxXZRBMKCsNMyfy+A/XHiV+tsMLufdsNdgCw==", - "dev": true, - "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.7.1", - "@jest/test-result": "^24.7.1", - "@jest/types": "^24.7.0", - "chalk": "^2.4.2", - "exit": "^0.1.2", - "graceful-fs": "^4.1.15", - "jest-config": "^24.7.1", - "jest-docblock": "^24.3.0", - "jest-haste-map": "^24.7.1", - "jest-jasmine2": "^24.7.1", - "jest-leak-detector": "^24.7.0", - "jest-message-util": "^24.7.1", - "jest-resolve": "^24.7.1", - "jest-runtime": "^24.7.1", - "jest-util": "^24.7.1", - "jest-worker": "^24.6.0", - "source-map-support": "^0.5.6", - "throat": "^4.0.0" + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-21.2.1.tgz", + "integrity": "sha512-Anb72BOQlHqF/zETqZ2K20dbYsnqW/nZO7jV8BYENl+3c44JhMrA8zd1lt52+N7ErnsQMd2HHKiVwN9GYSXmrg==", + "dev": true, + "requires": { + "jest-config": "^21.2.1", + "jest-docblock": "^21.2.0", + "jest-haste-map": "^21.2.0", + "jest-jasmine2": "^21.2.1", + "jest-message-util": "^21.2.1", + "jest-runtime": "^21.2.1", + "jest-util": "^21.2.1", + "pify": "^3.0.0", + "throat": "^4.0.0", + "worker-farm": "^1.3.1" }, "dependencies": { - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true } } }, "jest-runtime": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.7.1.tgz", - "integrity": "sha512-0VAbyBy7tll3R+82IPJpf6QZkokzXPIS71aDeqh+WzPRXRCNz6StQ45otFariPdJ4FmXpDiArdhZrzNAC3sj6A==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-21.2.1.tgz", + "integrity": "sha512-6omlpA3+NSE+rHwD0PQjNEjZeb2z+oRmuehMfM1tWQVum+E0WV3pFt26Am0DUfQkkPyTABvxITRjCUclYgSOsA==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/environment": "^24.7.1", - "@jest/source-map": "^24.3.0", - "@jest/transform": "^24.7.1", - "@jest/types": "^24.7.0", - "@types/yargs": "^12.0.2", + "babel-core": "^6.0.0", + "babel-jest": "^21.2.0", + "babel-plugin-istanbul": "^4.0.0", "chalk": "^2.0.1", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.1.15", - "jest-config": "^24.7.1", - "jest-haste-map": "^24.7.1", - "jest-message-util": "^24.7.1", - "jest-mock": "^24.7.0", - "jest-regex-util": "^24.3.0", - "jest-resolve": "^24.7.1", - "jest-snapshot": "^24.7.1", - "jest-util": "^24.7.1", - "jest-validate": "^24.7.0", - "realpath-native": "^1.1.0", - "slash": "^2.0.0", - "strip-bom": "^3.0.0", - "yargs": "^12.0.2" + "convert-source-map": "^1.4.0", + "graceful-fs": "^4.1.11", + "jest-config": "^21.2.1", + "jest-haste-map": "^21.2.0", + "jest-regex-util": "^21.2.0", + "jest-resolve": "^21.2.0", + "jest-util": "^21.2.1", + "json-stable-stringify": "^1.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "^2.1.0", + "yargs": "^9.0.0" }, "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", - "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { + "slash": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", - "dev": true - }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true - }, - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } - }, - "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } } } }, - "jest-serializer": { - "version": "24.4.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.4.0.tgz", - "integrity": "sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q==", - "dev": true - }, "jest-snapshot": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.7.1.tgz", - "integrity": "sha512-8Xk5O4p+JsZZn4RCNUS3pxA+ORKpEKepE+a5ejIKrId9CwrVN0NY+vkqEkXqlstA5NMBkNahXkR/4qEBy0t5yA==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-21.2.1.tgz", + "integrity": "sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg==", "dev": true, "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^24.7.0", "chalk": "^2.0.1", - "expect": "^24.7.1", - "jest-diff": "^24.7.0", - "jest-matcher-utils": "^24.7.0", - "jest-message-util": "^24.7.1", - "jest-resolve": "^24.7.1", + "jest-diff": "^21.2.1", + "jest-matcher-utils": "^21.2.1", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "pretty-format": "^24.7.0", - "semver": "^5.5.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "pretty-format": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.7.0.tgz", - "integrity": "sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA==", - "dev": true, - "requires": { - "@jest/types": "^24.7.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - } + "pretty-format": "^21.2.1" } }, "jest-snapshot-parser": { @@ -6088,119 +3752,36 @@ } }, "jest-util": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.7.1.tgz", - "integrity": "sha512-/KilOue2n2rZ5AnEBYoxOXkeTu6vi7cjgQ8MXEkih0oeAXT6JkS3fr7/j8+engCjciOU1Nq5loMSKe0A1oeX0A==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-21.2.1.tgz", + "integrity": "sha512-r20W91rmHY3fnCoO7aOAlyfC51x2yeV3xF+prGsJAUsYhKeV670ZB8NO88Lwm7ASu8SdH0S+U+eFf498kjhA4g==", "dev": true, "requires": { - "@jest/console": "^24.7.1", - "@jest/fake-timers": "^24.7.1", - "@jest/source-map": "^24.3.0", - "@jest/test-result": "^24.7.1", - "@jest/types": "^24.7.0", - "callsites": "^3.0.0", + "callsites": "^2.0.0", "chalk": "^2.0.1", - "graceful-fs": "^4.1.15", - "is-ci": "^2.0.0", - "mkdirp": "^0.5.1", - "slash": "^2.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "graceful-fs": "^4.1.11", + "jest-message-util": "^21.2.1", + "jest-mock": "^21.2.0", + "jest-validate": "^21.2.1", + "mkdirp": "^0.5.1" } }, "jest-validate": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.7.0.tgz", - "integrity": "sha512-cgai/gts9B2chz1rqVdmLhzYxQbgQurh1PEQSvSgPZ8KGa1AqXsqC45W5wKEwzxKrWqypuQrQxnF4+G9VejJJA==", - "dev": true, - "requires": { - "@jest/types": "^24.7.0", - "camelcase": "^5.0.0", - "chalk": "^2.0.1", - "jest-get-type": "^24.3.0", - "leven": "^2.1.0", - "pretty-format": "^24.7.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "pretty-format": { - "version": "24.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.7.0.tgz", - "integrity": "sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA==", - "dev": true, - "requires": { - "@jest/types": "^24.7.0", - "ansi-regex": "^4.0.0", - "ansi-styles": "^3.2.0", - "react-is": "^16.8.4" - } - } - } - }, - "jest-watcher": { - "version": "24.7.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.7.1.tgz", - "integrity": "sha512-Wd6TepHLRHVKLNPacEsBwlp9raeBIO+01xrN24Dek4ggTS8HHnOzYSFnvp+6MtkkJ3KfMzy220KTi95e2rRkrw==", - "dev": true, - "requires": { - "@jest/test-result": "^24.7.1", - "@jest/types": "^24.7.0", - "@types/yargs": "^12.0.9", - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.1", - "jest-util": "^24.7.1", - "string-length": "^2.0.0" - } - }, - "jest-worker": { - "version": "24.6.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", - "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz", + "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==", "dev": true, - "requires": { - "merge-stream": "^1.0.1", - "supports-color": "^6.1.0" - }, - "dependencies": { - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^21.2.0", + "leven": "^2.1.0", + "pretty-format": "^21.2.1" } }, "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, "js-yaml": { @@ -6220,43 +3801,36 @@ "dev": true }, "jsdom": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", - "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", + "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", "dev": true, "requires": { - "abab": "^2.0.0", - "acorn": "^5.5.3", - "acorn-globals": "^4.1.0", + "abab": "^1.0.3", + "acorn": "^4.0.4", + "acorn-globals": "^3.1.0", "array-equal": "^1.0.0", + "content-type-parser": "^1.0.1", "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": "^1.0.0", - "data-urls": "^1.0.0", - "domexception": "^1.0.1", - "escodegen": "^1.9.1", - "html-encoding-sniffer": "^1.0.2", - "left-pad": "^1.3.0", - "nwsapi": "^2.0.7", - "parse5": "4.0.0", - "pn": "^1.1.0", - "request": "^2.87.0", - "request-promise-native": "^1.0.5", - "sax": "^1.2.4", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.3.4", - "w3c-hr-time": "^1.0.1", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.3", - "whatwg-mimetype": "^2.1.0", - "whatwg-url": "^6.4.1", - "ws": "^5.2.0", - "xml-name-validator": "^3.0.0" + "cssstyle": ">= 0.2.37 < 0.3.0", + "escodegen": "^1.6.1", + "html-encoding-sniffer": "^1.0.1", + "nwmatcher": ">= 1.3.9 < 2.0.0", + "parse5": "^1.5.1", + "request": "^2.79.0", + "sax": "^1.2.1", + "symbol-tree": "^3.2.1", + "tough-cookie": "^2.3.2", + "webidl-conversions": "^4.0.0", + "whatwg-encoding": "^1.0.1", + "whatwg-url": "^4.3.0", + "xml-name-validator": "^2.0.1" } }, "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", "dev": true }, "json-parse-better-errors": { @@ -6277,6 +3851,15 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -6284,22 +3867,26 @@ "dev": true }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "minimist": "^1.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } + "graceful-fs": "^4.1.6" } }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -6321,12 +3908,6 @@ "is-buffer": "^1.1.5" } }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", @@ -6336,12 +3917,6 @@ "invert-kv": "^1.0.0" } }, - "left-pad": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", - "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", - "dev": true - }, "leven": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", @@ -6392,12 +3967,6 @@ "integrity": "sha1-ChG6Yx0OlcI8fy9Mu5ppLtF45wU=", "dev": true }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "dev": true - }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -6451,12 +4020,6 @@ } } }, - "make-error": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", - "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", - "dev": true - }, "makeerror": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", @@ -6466,15 +4029,6 @@ "tmpl": "1.0.x" } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -6505,14 +4059,11 @@ "mimic-fn": "^1.0.0" } }, - "merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "dev": true, - "requires": { - "readable-stream": "^2.0.1" - } + "merge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", + "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", + "dev": true }, "micromatch": { "version": "2.3.11", @@ -6688,12 +4239,6 @@ "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, "node-notifier": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.0.tgz", @@ -6743,10 +4288,10 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "nwsapi": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.3.tgz", - "integrity": "sha512-RowAaJGEgYXEZfQ7tvvdtAQUKPyTR6T6wNu0fwlNsGQYr/h3yQc6oI8WnVZh3Y/Sylwc+dtAlvPqfFZjhTyk3A==", + "nwmatcher": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", + "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", "dev": true }, "oauth-sign": { @@ -6783,12 +4328,6 @@ } } }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -6806,16 +4345,6 @@ } } }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } - }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -6884,6 +4413,12 @@ } } }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, "os-locale": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", @@ -6895,20 +4430,17 @@ "mem": "^1.1.0" } }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "p-each-series": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", - "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", - "dev": true, - "requires": { - "p-reduce": "^1.0.0" - } + "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", @@ -6916,12 +4448,6 @@ "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -6940,12 +4466,6 @@ "p-limit": "^1.1.0" } }, - "p-reduce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", - "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", - "dev": true - }, "p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -6988,9 +4508,9 @@ } }, "parse5": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", - "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", "dev": true }, "pascalcase": { @@ -7023,214 +4543,500 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "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": "^2.0.0" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + } + } + }, + "please-upgrade-node": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz", + "integrity": "sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "prettier": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.17.0.tgz", + "integrity": "sha512-sXe5lSt2WQlCbydGETgfm1YBShgOX4HxQkFPvbxkcwgDvGDeqVau8h+12+lmSVlP3rHPz0oavfddSZg/q+Szjw==", + "dev": true + }, + "pretty-format": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", + "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { - "pify": "^2.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "http://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true + "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": "^2.3.2", + "path-type": "^2.0.0" + } }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "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": { - "pinkie": "^2.0.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" } }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { - "node-modules-regexp": "^1.0.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dev": true, "requires": { - "find-up": "^3.0.0" + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" }, "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { - "locate-path": "^3.0.0" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "kind-of": "^6.0.0" } }, - "p-limit": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "p-try": "^2.0.0" + "kind-of": "^6.0.0" } }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "p-limit": "^2.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "p-try": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", - "dev": true - } - } - }, - "please-upgrade-node": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz", - "integrity": "sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ==", - "dev": true, - "requires": { - "semver-compare": "^1.0.0" - } - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", - "dev": true - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "dev": true - }, - "prettier": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.17.0.tgz", - "integrity": "sha512-sXe5lSt2WQlCbydGETgfm1YBShgOX4HxQkFPvbxkcwgDvGDeqVau8h+12+lmSVlP3rHPz0oavfddSZg/q+Szjw==", - "dev": true - }, - "pretty-format": { - "version": "21.2.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", - "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0", - "ansi-styles": "^3.2.0" - } - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "prompts": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.0.4.tgz", - "integrity": "sha512-HTzM3UWp/99A0gk51gAegwo1QRYA7xjcZufMNe33rCclFszUYAuHe1fIN/3ZmiHeGPkUsNaRyQm1hHOfM0PKxA==", - "dev": true, - "requires": { - "kleur": "^3.0.2", - "sisteransi": "^1.0.0" - } - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, - "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "randomatic": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", - "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -7251,68 +5057,47 @@ } } }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "is-buffer": "^1.1.5" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } - } - } - }, - "react-is": { - "version": "16.8.6", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", - "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==", - "dev": true - }, - "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": "^2.3.2", - "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.0.0", - "read-pkg": "^2.0.0" - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "realpath-native": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", - "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", - "dev": true, - "requires": { - "util.promisify": "^1.0.0" + } } }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", @@ -7383,6 +5168,15 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, "replace-ext": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", @@ -7435,26 +5229,6 @@ } } }, - "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "dev": true, - "requires": { - "lodash": "^4.17.11" - } - }, - "request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", - "dev": true, - "requires": { - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -7473,15 +5247,6 @@ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", @@ -7925,9 +5690,9 @@ } }, "rsvp": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.4.tgz", - "integrity": "sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", "dev": true }, "run-node": { @@ -7958,20 +5723,20 @@ "dev": true }, "sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", + "integrity": "sha1-tNwYYcIbQn6SlQej51HiosuKs/o=", "dev": true, "requires": { - "@cnakazawa/watch": "^1.0.3", "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", + "capture-exit": "^1.2.0", + "exec-sh": "^0.2.0", "fb-watchman": "^2.0.0", + "fsevents": "^1.2.3", "micromatch": "^3.1.4", "minimist": "^1.1.1", - "walker": "~1.0.5" + "walker": "~1.0.5", + "watch": "~0.18.0" }, "dependencies": { "arr-diff": { @@ -8015,34 +5780,6 @@ } } }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -8194,15 +5931,6 @@ } } }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", @@ -8355,6 +6083,18 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "dev": true, + "requires": { + "array-filter": "~0.0.0", + "array-map": "~0.0.0", + "array-reduce": "~0.0.0", + "jsonify": "~0.0.0" + } + }, "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", @@ -8367,12 +6107,6 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, - "sisteransi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.0.tgz", - "integrity": "sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ==", - "dev": true - }, "slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", @@ -8507,21 +6241,12 @@ } }, "source-map-support": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", - "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", "dev": true, "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } + "source-map": "^0.5.6" } }, "source-map-url": { @@ -8600,12 +6325,6 @@ "tweetnacl": "~0.14.0" } }, - "stack-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", - "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", - "dev": true - }, "state-toggle": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.1.tgz", @@ -8633,12 +6352,6 @@ } } }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", @@ -8714,6 +6427,23 @@ "boundary": "^1.0.1" } }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "dev": true, + "requires": { + "minimist": "^1.1.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "supports-color": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", @@ -8739,123 +6469,90 @@ } }, "test-exclude": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.2.tgz", - "integrity": "sha512-N2pvaLpT8guUpb5Fe1GJlmvmzH3x+DAKmmyEQmFP792QcLYoGE1syxztSvPD1V8yPe6VrcCt6YGQVjSRjCASsA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", + "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", "dev": true, "requires": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "read-pkg-up": "^4.0.0", - "require-main-filename": "^2.0.0" + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" }, "dependencies": { "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", "dev": true, "requires": { - "locate-path": "^3.0.0" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", "dev": true, "requires": { "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", "dev": true, "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "pinkie-promise": "^2.0.0" } }, "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", "dev": true, "requires": { - "pify": "^3.0.0" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", "dev": true, "requires": { - "load-json-file": "^4.0.0", + "load-json-file": "^1.0.0", "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "path-type": "^1.0.0" } }, "read-pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", "dev": true, "requires": { - "find-up": "^3.0.0", - "read-pkg": "^3.0.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" } }, - "require-main-filename": { + "strip-bom": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } } } }, @@ -8872,9 +6569,9 @@ "dev": true }, "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, "to-object-path": { @@ -8936,13 +6633,10 @@ } }, "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true }, "traverse": { "version": "0.6.6", @@ -8992,26 +6686,83 @@ } }, "ts-jest": { - "version": "24.0.2", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-24.0.2.tgz", - "integrity": "sha512-h6ZCZiA1EQgjczxq+uGLXQlNgeg02WWJBbeT8j6nyIBRQdglqbvzDoHahTEIiS6Eor6x8mK6PfZ7brQ9Q6tzHw==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "buffer-from": "1.x", - "fast-json-stable-stringify": "2.x", - "json5": "2.x", - "make-error": "1.x", - "mkdirp": "0.x", - "resolve": "1.x", - "semver": "^5.5", - "yargs-parser": "10.x" + "version": "21.2.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-21.2.4.tgz", + "integrity": "sha512-Plk49Us+DcncpQcC8fhYwDUdhW96QB0Dv02etOLhzq+2HAvXfrEUys3teZ/BeyQ+r1rHxfGdNj4dB0Q5msZR3g==", + "dev": true, + "requires": { + "babel-core": "^6.24.1", + "babel-plugin-istanbul": "^4.1.4", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-preset-jest": "^21.2.0", + "cpx": "^1.5.0", + "fs-extra": "^4.0.2", + "jest-config": "^21.2.1", + "pkg-dir": "^2.0.0", + "source-map-support": "^0.5.0", + "yargs": "^10.0.3" }, "dependencies": { + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "yargs": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.1.2.tgz", + "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^8.1.0" + } + }, "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.1.0.tgz", + "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "dev": true, "requires": { "camelcase": "^4.1.0" @@ -9113,9 +6864,9 @@ "dev": true }, "uglify-js": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.4.tgz", - "integrity": "sha512-GpKo28q/7Bm5BcX9vOu4S46FwisbPbAmkkqPnGIpKvKTM96I85N6XHQV+k4I6FA2wxgLhcsSyHoNhzucwCflvA==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.6.tgz", + "integrity": "sha512-YDKRX8F0Y+Jr7LhoVk0n4G7ltR3Y7qFAj+DtVBthlOgCcIj1hyMigCfousVfn9HKmvJ+qiFlLDwaHx44/e5ZKw==", "dev": true, "optional": true, "requires": { @@ -9243,6 +6994,12 @@ "unist-util-is": "^2.1.2" } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -9322,16 +7079,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -9386,15 +7133,6 @@ "unist-util-stringify-position": "^1.1.1" } }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "dev": true, - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, "walker": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", @@ -9404,6 +7142,24 @@ "makeerror": "1.0.x" } }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "dev": true, + "requires": { + "exec-sh": "^0.2.0", + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", @@ -9419,21 +7175,22 @@ "iconv-lite": "0.4.24" } }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, "whatwg-url": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", - "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", + "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", "dev": true, "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + }, + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + } } }, "which": { @@ -9484,6 +7241,15 @@ "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -9529,9 +7295,9 @@ "dev": true }, "write-file-atomic": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", - "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", + "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -9539,15 +7305,6 @@ "signal-exit": "^3.0.2" } }, - "ws": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", - "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, "x-is-string": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/x-is-string/-/x-is-string-0.1.0.tgz", @@ -9555,9 +7312,9 @@ "dev": true }, "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", "dev": true }, "xtend": { diff --git a/package.json b/package.json index 3c34ba2..e1211a8 100644 --- a/package.json +++ b/package.json @@ -37,11 +37,11 @@ }, "dependencies": {}, "devDependencies": { - "@types/jest": "24.0.11", + "@types/jest": "21.1.10", "doctoc": "1.4.0", - "dts-jest": "23.0.0", + "dts-jest": "22.0.4", "husky": "1.3.1", - "jest": "24.7.1", + "jest": "21.2.1", "prettier": "1.17.0", "rollup": "0.59.1", "rollup-plugin-commonjs": "9.3.4", @@ -49,7 +49,7 @@ "rollup-plugin-node-resolve": "3.3.0", "rollup-plugin-sourcemaps": "0.4.2", "rollup-plugin-uglify": "3.0.0", - "ts-jest": "24.0.2", + "ts-jest": "21.2.4", "tslint": "5.16.0", "typescript": "3.4.4" }, diff --git a/src/__snapshots__/action.spec.ts.snap b/src/__snapshots__/action.spec.ts.snap index d5e1c40..385bf0f 100644 --- a/src/__snapshots__/action.spec.ts.snap +++ b/src/__snapshots__/action.spec.ts.snap @@ -1,53 +1,53 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`with error withError(true) (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; error: boolean; }"`; +exports[`withError(true) 1`] = `"{ type: \\"ACTION\\"; error: boolean; }"`; -exports[`with meta withMeta('info') (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; meta: string; }"`; +exports[`withMeta('info') 1`] = `"{ type: \\"ACTION\\"; meta: string; }"`; -exports[`with optional error withOptionalError() (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; error: boolean | undefined; }"`; +exports[`withOptionalError() 1`] = `"{ type: \\"ACTION\\"; error: boolean | undefined; }"`; -exports[`with optional error withOptionalError(true) (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; error: boolean | undefined; }"`; +exports[`withOptionalError(true) 1`] = `"{ type: \\"ACTION\\"; error: boolean | undefined; }"`; -exports[`with optional meta withOptionalMeta('info') (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; meta: string | undefined; }"`; +exports[`withOptionalMeta('info') 1`] = `"{ type: \\"ACTION\\"; meta: string | undefined; }"`; -exports[`with optional meta withOptionalMeta() (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; meta: string | undefined; }"`; +exports[`withOptionalMeta() 1`] = `"{ type: \\"ACTION\\"; meta: string | undefined; }"`; -exports[`with optional payload and meta withOptionalPayloadAndMeta('info') (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string; }"`; +exports[`withOptionalPayload('Hello!') 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; }"`; -exports[`with optional payload and meta withOptionalPayloadAndMeta('info', 'Hello!') (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string; }"`; +exports[`withOptionalPayload() 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; }"`; -exports[`with optional payload and optional meta withOptionalPayloadAndOptionalMeta('Hello!') (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string | undefined; }"`; +exports[`withOptionalPayloadAndMeta('info') 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string; }"`; -exports[`with optional payload and optional meta withOptionalPayloadAndOptionalMeta('Hello!', 'info') (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string | undefined; }"`; +exports[`withOptionalPayloadAndMeta('info', 'Hello!') 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string; }"`; -exports[`with optional payload and optional meta withOptionalPayloadAndOptionalMeta() (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string | undefined; }"`; +exports[`withOptionalPayloadAndOptionalMeta('Hello!') 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string | undefined; }"`; -exports[`with optional payload withOptionalPayload('Hello!') (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; }"`; +exports[`withOptionalPayloadAndOptionalMeta('Hello!', 'info') 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string | undefined; }"`; -exports[`with optional payload withOptionalPayload() (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; }"`; +exports[`withOptionalPayloadAndOptionalMeta() 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string | undefined; }"`; -exports[`with optional payload, optional meta, and optional error withOptionalPayloadOptionalMetaAndOptionalError('Hello!') (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string | undefined; error: boolean | undefined; }"`; +exports[`withOptionalPayloadOptionalMetaAndOptionalError('Hello!') 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string | undefined; error: boolean | undefined; }"`; -exports[`with optional payload, optional meta, and optional error withOptionalPayloadOptionalMetaAndOptionalError('Hello!', 'info') (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string | undefined; error: boolean | undefined; }"`; +exports[`withOptionalPayloadOptionalMetaAndOptionalError('Hello!', 'info') 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string | undefined; error: boolean | undefined; }"`; -exports[`with optional payload, optional meta, and optional error withOptionalPayloadOptionalMetaAndOptionalError('Hello!', 'info', true) (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string | undefined; error: boolean | undefined; }"`; +exports[`withOptionalPayloadOptionalMetaAndOptionalError('Hello!', 'info', true) 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string | undefined; error: boolean | undefined; }"`; -exports[`with optional payload, optional meta, and optional error withOptionalPayloadOptionalMetaAndOptionalError() (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string | undefined; error: boolean | undefined; }"`; +exports[`withOptionalPayloadOptionalMetaAndOptionalError() 1`] = `"{ type: \\"ACTION\\"; payload: string | undefined; meta: string | undefined; error: boolean | undefined; }"`; -exports[`with payload and meta withPayloadAndMeta('Hello!', 'info') (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string; meta: string; }"`; +exports[`withPayload('Hello!') 1`] = `"{ type: \\"ACTION\\"; payload: string; }"`; -exports[`with payload and optional meta withPayloadAndOptionalMeta('Hello!') (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string; meta: string | undefined; }"`; +exports[`withPayloadAndMeta('Hello!', 'info') 1`] = `"{ type: \\"ACTION\\"; payload: string; meta: string; }"`; -exports[`with payload and optional meta withPayloadAndOptionalMeta('Hello!', 'info') (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string; meta: string | undefined; }"`; +exports[`withPayloadAndOptionalMeta('Hello!') 1`] = `"{ type: \\"ACTION\\"; payload: string; meta: string | undefined; }"`; -exports[`with payload withPayload('Hello!') (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string; }"`; +exports[`withPayloadAndOptionalMeta('Hello!', 'info') 1`] = `"{ type: \\"ACTION\\"; payload: string; meta: string | undefined; }"`; -exports[`with payload, meta, and error withPayloadMetaAndError('Hello!', 'info', true) (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string; meta: string; error: boolean; }"`; +exports[`withPayloadMetaAndError('Hello!', 'info', true) 1`] = `"{ type: \\"ACTION\\"; payload: string; meta: string; error: boolean; }"`; -exports[`with payload, meta, and optional error withPayloadMetaAndOptionalError('Hello!', 'info') (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string; meta: string; error: boolean | undefined; }"`; +exports[`withPayloadMetaAndOptionalError('Hello!', 'info') 1`] = `"{ type: \\"ACTION\\"; payload: string; meta: string; error: boolean | undefined; }"`; -exports[`with payload, meta, and optional error withPayloadMetaAndOptionalError('Hello!', 'info', true) (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; payload: string; meta: string; error: boolean | undefined; }"`; +exports[`withPayloadMetaAndOptionalError('Hello!', 'info', true) 1`] = `"{ type: \\"ACTION\\"; payload: string; meta: string; error: boolean | undefined; }"`; -exports[`with symbol withSymbol() (type) should match snapshot 1`] = `"{ type: any; }"`; +exports[`withSymbol() 1`] = `"{ type: any; }"`; -exports[`with type only withTypeOnly() (type) should match snapshot 1`] = `"{ type: \\"ACTION\\"; }"`; +exports[`withTypeOnly() 1`] = `"{ type: \\"ACTION\\"; }"`; diff --git a/src/__snapshots__/create-action-deprecated.spec.ts.snap b/src/__snapshots__/create-action-deprecated.spec.ts.snap index c408570..0d04bd1 100644 --- a/src/__snapshots__/create-action-deprecated.spec.ts.snap +++ b/src/__snapshots__/create-action-deprecated.spec.ts.snap @@ -1,11 +1,11 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`with meta withMeta('Error message') (type) should match snapshot 1`] = `"{ type: \\"CREATE_ACTION_DEPRECATED\\"; meta: string; }"`; +exports[`increment() 1`] = `"{ type: any; }"`; -exports[`with payload and meta withPayloadAndMeta('Piotr', 'Hello!') (type) should match snapshot 1`] = `"{ type: \\"CREATE_ACTION_DEPRECATED\\"; payload: { message: string; }; meta: { username: string; message: string; }; }"`; +exports[`withMeta('Error message') 1`] = `"{ type: \\"CREATE_ACTION_DEPRECATED\\"; meta: string; }"`; -exports[`with payload withPayload(10) (type) should match snapshot 1`] = `"{ type: \\"CREATE_ACTION_DEPRECATED\\"; payload: number; }"`; +exports[`withPayload(10) 1`] = `"{ type: \\"CREATE_ACTION_DEPRECATED\\"; payload: number; }"`; -exports[`with symbol increment() (type) should match snapshot 1`] = `"{ type: any; }"`; +exports[`withPayloadAndMeta('Piotr', 'Hello!') 1`] = `"{ type: \\"CREATE_ACTION_DEPRECATED\\"; payload: { message: string; }; meta: { username: string; message: string; }; }"`; -exports[`with type only withTypeOnly() (type) should match snapshot 1`] = `"{ type: \\"CREATE_ACTION_DEPRECATED\\"; }"`; +exports[`withTypeOnly() 1`] = `"{ type: \\"CREATE_ACTION_DEPRECATED\\"; }"`; diff --git a/src/__snapshots__/create-action.spec.ts.snap b/src/__snapshots__/create-action.spec.ts.snap index 60178a1..26f0022 100644 --- a/src/__snapshots__/create-action.spec.ts.snap +++ b/src/__snapshots__/create-action.spec.ts.snap @@ -1,25 +1,25 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`toString() method return a type actionCreator.toString() (type) should match snapshot 1`] = `"string"`; +exports[`actionCreator.toString() 1`] = `"string"`; -exports[`type-safe usage with higher-order function setUserSetting('settingA', 'foo') (type) should match snapshot 1`] = `"{ type: \\"SET_USER_SETTING\\"; payload: { setting: \\"settingA\\"; newValue: string; }; }"`; +exports[`setUserSetting('settingA', 'foo') 1`] = `"{ type: \\"SET_USER_SETTING\\"; payload: { setting: \\"settingA\\"; newValue: string; }; }"`; -exports[`type-safe usage with higher-order function setUserSetting('settingA', 0) (type) should match snapshot 1`] = `"Argument of type '0' is not assignable to parameter of type 'string'."`; +exports[`setUserSetting('settingA', 0) 1`] = `"Argument of type '0' is not assignable to parameter of type 'string'."`; -exports[`type-safe usage with higher-order function setUserSetting('settingB', 'foo') (type) should match snapshot 1`] = `"Argument of type '\\"foo\\"' is not assignable to parameter of type 'number'."`; +exports[`setUserSetting('settingB', 'foo') 1`] = `"Argument of type '\\"foo\\"' is not assignable to parameter of type 'number'."`; -exports[`type-safe usage with higher-order function setUserSetting('settingB', 0) (type) should match snapshot 1`] = `"{ type: \\"SET_USER_SETTING\\"; payload: { setting: \\"settingB\\"; newValue: number; }; }"`; +exports[`setUserSetting('settingB', 0) 1`] = `"{ type: \\"SET_USER_SETTING\\"; payload: { setting: \\"settingB\\"; newValue: number; }; }"`; -exports[`with meta withMeta('token') (type) should match snapshot 1`] = `"{ type: \\"CREATE_ACTION\\"; meta: string; }"`; +exports[`withMeta('token') 1`] = `"{ type: \\"CREATE_ACTION\\"; meta: string; }"`; -exports[`with optional payload withPayload() (type) should match snapshot 1`] = `"{ type: \\"CREATE_ACTION\\"; payload: number; }"`; +exports[`withPayload() 1`] = `"{ type: \\"CREATE_ACTION\\"; payload: number; }"`; -exports[`with optional payload withPayload(1) (type) should match snapshot 1`] = `"{ type: \\"CREATE_ACTION\\"; payload: number; }"`; +exports[`withPayload(1) 1`] = `"{ type: \\"CREATE_ACTION\\"; payload: number; }"`; -exports[`with payload and meta withPayloadAndMeta(1, 'token') (type) should match snapshot 1`] = `"{ type: \\"CREATE_ACTION\\"; payload: number; meta: string; }"`; +exports[`withPayload(1) 2`] = `"{ type: \\"CREATE_ACTION\\"; payload: number; }"`; -exports[`with payload withPayload(1) (type) should match snapshot 1`] = `"{ type: \\"CREATE_ACTION\\"; payload: number; }"`; +exports[`withPayloadAndMeta(1, 'token') 1`] = `"{ type: \\"CREATE_ACTION\\"; payload: number; meta: string; }"`; -exports[`with symbol withSymbol() (type) should match snapshot 1`] = `"{ type: any; }"`; +exports[`withSymbol() 1`] = `"{ type: any; }"`; -exports[`with type only withTypeOnly() (type) should match snapshot 1`] = `"{ type: \\"CREATE_ACTION\\"; }"`; +exports[`withTypeOnly() 1`] = `"{ type: \\"CREATE_ACTION\\"; }"`; diff --git a/src/__snapshots__/create-async-action.spec.ts.snap b/src/__snapshots__/create-async-action.spec.ts.snap index 4dc7d6c..93c3032 100644 --- a/src/__snapshots__/create-async-action.spec.ts.snap +++ b/src/__snapshots__/create-async-action.spec.ts.snap @@ -1,23 +1,23 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`async action with any type fetchUsers.failure( +exports[`fetchUsers.failure( 1 - ) (type) should match snapshot 1`] = `"T.PayloadAction<\\"FETCH_USERS_FAILURE\\", any>"`; + ) 1`] = `"T.PayloadAction<\\"FETCH_USERS_FAILURE\\", any>"`; -exports[`async action with any type fetchUsers.request( - 1 - ) (type) should match snapshot 1`] = `"T.PayloadAction<\\"FETCH_USERS_REQUEST\\", any>"`; - -exports[`async action with any type fetchUsers.success([ - 1, - ]) (type) should match snapshot 1`] = `"T.PayloadAction<\\"FETCH_USERS_SUCCESS\\", any[]>"`; - -exports[`async action with undefined type fetchUsers.failure( +exports[`fetchUsers.failure( Error('reason') - ) (type) should match snapshot 1`] = `"T.PayloadAction<\\"FETCH_USERS_FAILURE\\", Error>"`; + ) 1`] = `"T.PayloadAction<\\"FETCH_USERS_FAILURE\\", Error>"`; -exports[`async action with undefined type fetchUsers.request() (type) should match snapshot 1`] = `"T.EmptyAction<\\"FETCH_USERS_REQUEST\\">"`; +exports[`fetchUsers.request( + 1 + ) 1`] = `"T.PayloadAction<\\"FETCH_USERS_REQUEST\\", any>"`; + +exports[`fetchUsers.request() 1`] = `"T.EmptyAction<\\"FETCH_USERS_REQUEST\\">"`; -exports[`async action with undefined type fetchUsers.success([ +exports[`fetchUsers.success([ { firstName: 'Piotr', lastName: 'Witek' }, - ]) (type) should match snapshot 1`] = `"T.PayloadAction<\\"FETCH_USERS_SUCCESS\\", User[]>"`; + ]) 1`] = `"T.PayloadAction<\\"FETCH_USERS_SUCCESS\\", User[]>"`; + +exports[`fetchUsers.success([ + 1, + ]) 1`] = `"T.PayloadAction<\\"FETCH_USERS_SUCCESS\\", any[]>"`; diff --git a/src/__snapshots__/create-custom-action.spec.ts.snap b/src/__snapshots__/create-custom-action.spec.ts.snap index 6c1b5f6..92ffcde 100644 --- a/src/__snapshots__/create-custom-action.spec.ts.snap +++ b/src/__snapshots__/create-custom-action.spec.ts.snap @@ -1,17 +1,17 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`toString() method return a type actionCreator.toString() (type) should match snapshot 1`] = `"string"`; +exports[`actionCreator.toString() 1`] = `"string"`; -exports[`with meta withMeta('token') (type) should match snapshot 1`] = `"{ type: \\"CREATE_CUSTOM_ACTION\\"; meta: string; }"`; +exports[`withMeta('token') 1`] = `"{ type: \\"CREATE_CUSTOM_ACTION\\"; meta: string; }"`; -exports[`with optional payload withOptionalPayload() (type) should match snapshot 1`] = `"{ type: \\"CREATE_CUSTOM_ACTION\\"; payload: number | undefined; }"`; +exports[`withOptionalPayload() 1`] = `"{ type: \\"CREATE_CUSTOM_ACTION\\"; payload: number | undefined; }"`; -exports[`with optional payload withOptionalPayload(1) (type) should match snapshot 1`] = `"{ type: \\"CREATE_CUSTOM_ACTION\\"; payload: number | undefined; }"`; +exports[`withOptionalPayload(1) 1`] = `"{ type: \\"CREATE_CUSTOM_ACTION\\"; payload: number | undefined; }"`; -exports[`with payload and meta withPayloadAndMeta('Hello!', 'info') (type) should match snapshot 1`] = `"{ type: \\"CREATE_CUSTOM_ACTION\\"; payload: string; meta: string; }"`; +exports[`withPayload(1) 1`] = `"{ type: \\"CREATE_CUSTOM_ACTION\\"; payload: number; }"`; -exports[`with payload withPayload(1) (type) should match snapshot 1`] = `"{ type: \\"CREATE_CUSTOM_ACTION\\"; payload: number; }"`; +exports[`withPayloadAndMeta('Hello!', 'info') 1`] = `"{ type: \\"CREATE_CUSTOM_ACTION\\"; payload: string; meta: string; }"`; -exports[`with symbol withSymbol() (type) should match snapshot 1`] = `"{ type: any; }"`; +exports[`withSymbol() 1`] = `"{ type: any; }"`; -exports[`with type only withTypeOnly() (type) should match snapshot 1`] = `"{ type: \\"CREATE_CUSTOM_ACTION\\"; }"`; +exports[`withTypeOnly() 1`] = `"{ type: \\"CREATE_CUSTOM_ACTION\\"; }"`; diff --git a/src/__snapshots__/create-reducer.spec.ts.snap b/src/__snapshots__/create-reducer.spec.ts.snap index 336d851..c1691c2 100644 --- a/src/__snapshots__/create-reducer.spec.ts.snap +++ b/src/__snapshots__/create-reducer.spec.ts.snap @@ -1,37 +1,37 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`With Action Creators fn(0, {} as any) (type) should match snapshot 1`] = `"number"`; +exports[`fn(0, {} as any) 1`] = `"number"`; -exports[`With Action Creators fn(0, {} as any) (type) should match snapshot 2`] = `"number"`; +exports[`fn(0, {} as any) 2`] = `"number"`; -exports[`With Action Creators fn(0, {} as any) (type) should match snapshot 3`] = `"number"`; +exports[`fn(0, {} as any) 3`] = `"number"`; -exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 1`] = `"number"`; +exports[`fn(0, {} as any) 4`] = `"number"`; -exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 2`] = `"number"`; +exports[`fn(0, {} as any) 5`] = `"number"`; -exports[`With Action Creators fn(0, add(4)) (type) should match snapshot 3`] = `"number"`; +exports[`fn(0, {} as any) 6`] = `"number"`; -exports[`With Action Creators fn(0, increment()) (type) should match snapshot 1`] = `"number"`; +exports[`fn(0, add(4)) 1`] = `"number"`; -exports[`With Action Creators fn(0, increment()) (type) should match snapshot 2`] = `"number"`; +exports[`fn(0, add(4)) 2`] = `"number"`; -exports[`With Action Creators fn(0, increment()) (type) should match snapshot 3`] = `"number"`; +exports[`fn(0, add(4)) 3`] = `"number"`; -exports[`With Action Types fn(0, {} as any) (type) should match snapshot 1`] = `"number"`; +exports[`fn(0, add(4)) 4`] = `"number"`; -exports[`With Action Types fn(0, {} as any) (type) should match snapshot 2`] = `"number"`; +exports[`fn(0, add(4)) 5`] = `"number"`; -exports[`With Action Types fn(0, {} as any) (type) should match snapshot 3`] = `"number"`; +exports[`fn(0, add(4)) 6`] = `"number"`; -exports[`With Action Types fn(0, add(4)) (type) should match snapshot 1`] = `"number"`; +exports[`fn(0, increment()) 1`] = `"number"`; -exports[`With Action Types fn(0, add(4)) (type) should match snapshot 2`] = `"number"`; +exports[`fn(0, increment()) 2`] = `"number"`; -exports[`With Action Types fn(0, add(4)) (type) should match snapshot 3`] = `"number"`; +exports[`fn(0, increment()) 3`] = `"number"`; -exports[`With Action Types fn(0, increment()) (type) should match snapshot 1`] = `"number"`; +exports[`fn(0, increment()) 4`] = `"number"`; -exports[`With Action Types fn(0, increment()) (type) should match snapshot 2`] = `"number"`; +exports[`fn(0, increment()) 5`] = `"number"`; -exports[`With Action Types fn(0, increment()) (type) should match snapshot 3`] = `"number"`; +exports[`fn(0, increment()) 6`] = `"number"`; diff --git a/src/__snapshots__/create-standard-action.spec.ts.snap b/src/__snapshots__/create-standard-action.spec.ts.snap index 3c7be74..26496c3 100644 --- a/src/__snapshots__/create-standard-action.spec.ts.snap +++ b/src/__snapshots__/create-standard-action.spec.ts.snap @@ -1,55 +1,55 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`constructor toString() method return a type actionCreator.toString() (type) should match snapshot 1`] = `"string"`; +exports[`actionCreator.toString() 1`] = `"string"`; -exports[`constructor with meta - any withMeta(undefined, 'token') (type) should match snapshot 1`] = `"T.PayloadMetaAction<\\"CREATE_STANDARD_ACTION\\", undefined, any>"`; +exports[`withMeta('info message') 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { meta: string; }"`; -exports[`constructor with meta withMeta(undefined, 'token') (type) should match snapshot 1`] = `"T.PayloadMetaAction<\\"CREATE_STANDARD_ACTION\\", undefined, string>"`; +exports[`withMeta('info message') 2`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { meta: string | number | null; }"`; -exports[`constructor with payload - any withPayload(10) (type) should match snapshot 1`] = `"T.PayloadAction<\\"CREATE_STANDARD_ACTION\\", any>"`; +exports[`withMeta() 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { meta: string; }"`; -exports[`constructor with payload - boolean withPayload(true) (type) should match snapshot 1`] = `"T.PayloadAction<\\"CREATE_STANDARD_ACTION\\", boolean>"`; +exports[`withMeta(3) 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { meta: string | number | null; }"`; -exports[`constructor with payload - literal string union withPayload('up') (type) should match snapshot 1`] = `"T.PayloadAction<\\"CREATE_STANDARD_ACTION\\", \\"up\\" | \\"down\\" | \\"unknown\\">"`; +exports[`withMeta(null) 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { meta: string | number | null; }"`; -exports[`constructor with payload - number withPayload(10) (type) should match snapshot 1`] = `"T.PayloadAction<\\"CREATE_STANDARD_ACTION\\", number>"`; +exports[`withMeta(undefined, 'token') 1`] = `"T.PayloadMetaAction<\\"CREATE_STANDARD_ACTION\\", undefined, string>"`; -exports[`constructor with payload - primitives union withPayload('foo') (type) should match snapshot 1`] = `"T.PayloadAction<\\"CREATE_STANDARD_ACTION\\", string | number | null>"`; +exports[`withMeta(undefined, 'token') 2`] = `"T.PayloadMetaAction<\\"CREATE_STANDARD_ACTION\\", undefined, any>"`; -exports[`constructor with payload - primitives union withPayload(3) (type) should match snapshot 1`] = `"T.PayloadAction<\\"CREATE_STANDARD_ACTION\\", string | number | null>"`; +exports[`withPayload('foo') 1`] = `"T.PayloadAction<\\"CREATE_STANDARD_ACTION\\", string | number | null>"`; -exports[`constructor with payload - primitives union withPayload(null) (type) should match snapshot 1`] = `"T.PayloadAction<\\"CREATE_STANDARD_ACTION\\", string | number | null>"`; +exports[`withPayload('info message') 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string; }"`; -exports[`constructor with payload and meta withPayloadAndMeta(1, 'token') (type) should match snapshot 1`] = `"T.PayloadMetaAction<\\"CREATE_STANDARD_ACTION\\", number, string>"`; +exports[`withPayload('info message') 2`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string | number | null; }"`; -exports[`constructor with symbol withSymbol() (type) should match snapshot 1`] = `"T.EmptyAction"`; +exports[`withPayload('up') 1`] = `"T.PayloadAction<\\"CREATE_STANDARD_ACTION\\", \\"up\\" | \\"down\\" | \\"unknown\\">"`; -exports[`constructor with type only - undefined withTypeOnly() (type) should match snapshot 1`] = `"T.EmptyAction<\\"CREATE_STANDARD_ACTION\\">"`; +exports[`withPayload() 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string; }"`; -exports[`map with meta - no param withMeta() (type) should match snapshot 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { meta: string; }"`; +exports[`withPayload(3) 1`] = `"T.PayloadAction<\\"CREATE_STANDARD_ACTION\\", string | number | null>"`; -exports[`map with meta - primitive param withMeta('info message') (type) should match snapshot 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { meta: string; }"`; +exports[`withPayload(3) 2`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string | number | null; }"`; -exports[`map with meta - union param withMeta('info message') (type) should match snapshot 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { meta: string | number | null; }"`; +exports[`withPayload(10) 1`] = `"T.PayloadAction<\\"CREATE_STANDARD_ACTION\\", number>"`; -exports[`map with meta - union param withMeta(3) (type) should match snapshot 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { meta: string | number | null; }"`; +exports[`withPayload(10) 2`] = `"T.PayloadAction<\\"CREATE_STANDARD_ACTION\\", any>"`; -exports[`map with meta - union param withMeta(null) (type) should match snapshot 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { meta: string | number | null; }"`; +exports[`withPayload(null) 1`] = `"T.PayloadAction<\\"CREATE_STANDARD_ACTION\\", string | number | null>"`; -exports[`map with payload - no param withPayload() (type) should match snapshot 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string; }"`; +exports[`withPayload(null) 2`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string | number | null; }"`; -exports[`map with payload - primitive param withPayload('info message') (type) should match snapshot 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string; }"`; +exports[`withPayload(true) 1`] = `"T.PayloadAction<\\"CREATE_STANDARD_ACTION\\", boolean>"`; -exports[`map with payload - union param withPayload('info message') (type) should match snapshot 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string | number | null; }"`; +exports[`withPayloadAndMeta('error message') 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string; meta: { severity: string; }; }"`; -exports[`map with payload - union param withPayload(3) (type) should match snapshot 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string | number | null; }"`; +exports[`withPayloadAndMeta() 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string; meta: { severity: string; }; }"`; -exports[`map with payload - union param withPayload(null) (type) should match snapshot 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string | number | null; }"`; +exports[`withPayloadAndMeta({ username: 'Piotr', message: 'Hello!' }) 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string; meta: { username: string; message: string | undefined; }; }"`; -exports[`map with payload and meta - no param withPayloadAndMeta() (type) should match snapshot 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string; meta: { severity: string; }; }"`; +exports[`withPayloadAndMeta(1, 'token') 1`] = `"T.PayloadMetaAction<\\"CREATE_STANDARD_ACTION\\", number, string>"`; -exports[`map with payload and meta - object param withPayloadAndMeta({ username: 'Piotr', message: 'Hello!' }) (type) should match snapshot 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string; meta: { username: string; message: string | undefined; }; }"`; +exports[`withSymbol() 1`] = `"T.EmptyAction"`; -exports[`map with payload and meta - string param withPayloadAndMeta('error message') (type) should match snapshot 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; } & { payload: string; meta: { severity: string; }; }"`; +exports[`withTypeOnly() 1`] = `"T.EmptyAction<\\"CREATE_STANDARD_ACTION\\">"`; -exports[`map with type only withTypeOnly() (type) should match snapshot 1`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; }"`; +exports[`withTypeOnly() 2`] = `"{ type: \\"CREATE_STANDARD_ACTION\\"; }"`; diff --git a/src/__snapshots__/get-type.spec.ts.snap b/src/__snapshots__/get-type.spec.ts.snap index c4944b8..9b02827 100644 --- a/src/__snapshots__/get-type.spec.ts.snap +++ b/src/__snapshots__/get-type.spec.ts.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`from createAction getType(createAction('CREATE_ACTION')) (type) should match snapshot 1`] = `"string"`; +exports[`getType(createAction('CREATE_ACTION')) 1`] = `"string"`; -exports[`from createCustomAction getType(createCustomAction('CREATE_CUSTOM_ACTION')) (type) should match snapshot 1`] = `"string"`; +exports[`getType(createCustomAction('CREATE_CUSTOM_ACTION')) 1`] = `"string"`; -exports[`from createStandardAction getType(createStandardAction('CREATE_STANDARD_ACTION')()) (type) should match snapshot 1`] = `"\\"CREATE_STANDARD_ACTION\\""`; +exports[`getType(createStandardAction('CREATE_STANDARD_ACTION')()) 1`] = `"\\"CREATE_STANDARD_ACTION\\""`; diff --git a/src/__snapshots__/is-action-of.spec.ts.snap b/src/__snapshots__/is-action-of.spec.ts.snap index e8497ef..886dec3 100644 --- a/src/__snapshots__/is-action-of.spec.ts.snap +++ b/src/__snapshots__/is-action-of.spec.ts.snap @@ -1,43 +1,43 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`isActionOf should correctly assert for an array with 1 arg actual (type) should match snapshot 1`] = `"T.EmptyAction<\\"WITH_TYPE_ONLY\\">[]"`; +exports[`action 1`] = `"({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; })"`; -exports[`isActionOf should correctly assert for an array with 2 args actual (type) should match snapshot 1`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number>)[]"`; +exports[`action 2`] = `"({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; })"`; -exports[`isActionOf should correctly assert for an array with 3 args actual (type) should match snapshot 1`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string>)[]"`; +exports[`actual 1`] = `"T.EmptyAction<\\"WITH_TYPE_ONLY\\">[]"`; -exports[`isActionOf should correctly assert for an array with 4 args actual (type) should match snapshot 1`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string>)[]"`; +exports[`actual 2`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number>)[]"`; -exports[`isActionOf should correctly assert for an array with 5 args actual (type) should match snapshot 1`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }))[]"`; +exports[`actual 3`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string>)[]"`; -exports[`isActionOf should correctly assert type with "any" action action (type) should match snapshot 1`] = `"({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; })"`; +exports[`actual 4`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string>)[]"`; -exports[`isActionOf should correctly assert type with "any" action action (type) should match snapshot 2`] = `"({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; })"`; +exports[`actual 5`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }))[]"`; -exports[`isActionOf should work with multiple action-creator args isActionOf([withTypeOnly, withPayload])(mappedPayloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isActionOf([withTypeOnly, withPayload])(mappedPayloadAction) 1`] = `"boolean"`; -exports[`isActionOf should work with multiple action-creator args isActionOf([withTypeOnly, withPayload])(payloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isActionOf([withTypeOnly, withPayload])(payloadAction) 1`] = `"boolean"`; -exports[`isActionOf should work with multiple action-creator args isActionOf([withTypeOnly, withPayload])(typeOnlyAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isActionOf([withTypeOnly, withPayload])(typeOnlyAction) 1`] = `"boolean"`; -exports[`isActionOf should work with multiple action-creator args isActionOf([withTypeOnly, withPayload], mappedPayloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isActionOf([withTypeOnly, withPayload], mappedPayloadAction) 1`] = `"boolean"`; -exports[`isActionOf should work with multiple action-creator args isActionOf([withTypeOnly, withPayload], payloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isActionOf([withTypeOnly, withPayload], payloadAction) 1`] = `"boolean"`; -exports[`isActionOf should work with multiple action-creator args isActionOf([withTypeOnly, withPayload], typeOnlyAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isActionOf([withTypeOnly, withPayload], typeOnlyAction) 1`] = `"boolean"`; -exports[`isActionOf should work with single action-creator arg isActionOf([withTypeOnly])(payloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isActionOf([withTypeOnly])(payloadAction) 1`] = `"boolean"`; -exports[`isActionOf should work with single action-creator arg isActionOf([withTypeOnly])(typeOnlyAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isActionOf([withTypeOnly])(typeOnlyAction) 1`] = `"boolean"`; -exports[`isActionOf should work with single action-creator arg isActionOf([withTypeOnly], payloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isActionOf([withTypeOnly], payloadAction) 1`] = `"boolean"`; -exports[`isActionOf should work with single action-creator arg isActionOf([withTypeOnly], typeOnlyAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isActionOf([withTypeOnly], typeOnlyAction) 1`] = `"boolean"`; -exports[`isActionOf should work with single action-creator arg isActionOf(withTypeOnly)(payloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isActionOf(withTypeOnly)(payloadAction) 1`] = `"boolean"`; -exports[`isActionOf should work with single action-creator arg isActionOf(withTypeOnly)(typeOnlyAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isActionOf(withTypeOnly)(typeOnlyAction) 1`] = `"boolean"`; -exports[`isActionOf should work with single action-creator arg isActionOf(withTypeOnly, payloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isActionOf(withTypeOnly, payloadAction) 1`] = `"boolean"`; -exports[`isActionOf should work with single action-creator arg isActionOf(withTypeOnly, typeOnlyAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isActionOf(withTypeOnly, typeOnlyAction) 1`] = `"boolean"`; diff --git a/src/__snapshots__/is-of-type.spec.ts.snap b/src/__snapshots__/is-of-type.spec.ts.snap index 6f6d687..f6b3c01 100644 --- a/src/__snapshots__/is-of-type.spec.ts.snap +++ b/src/__snapshots__/is-of-type.spec.ts.snap @@ -1,43 +1,43 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`isOfType should correctly assert for an array with 1 arg actual (type) should match snapshot 1`] = `"T.EmptyAction<\\"WITH_TYPE_ONLY\\">[]"`; +exports[`action 1`] = `"any"`; -exports[`isOfType should correctly assert for an array with 2 args actual (type) should match snapshot 1`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number>)[]"`; +exports[`action 2`] = `"any"`; -exports[`isOfType should correctly assert for an array with 3 args actual (type) should match snapshot 1`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string>)[]"`; +exports[`actual 1`] = `"T.EmptyAction<\\"WITH_TYPE_ONLY\\">[]"`; -exports[`isOfType should correctly assert for an array with 4 args actual (type) should match snapshot 1`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string>)[]"`; +exports[`actual 2`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number>)[]"`; -exports[`isOfType should correctly assert for an array with 4 args actual (type) should match snapshot 2`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }))[]"`; +exports[`actual 3`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string>)[]"`; -exports[`isOfType should correctly assert type with "any" action action (type) should match snapshot 1`] = `"any"`; +exports[`actual 4`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string>)[]"`; -exports[`isOfType should correctly assert type with "any" action action (type) should match snapshot 2`] = `"any"`; +exports[`actual 5`] = `"(T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }))[]"`; -exports[`isOfType should work with multiple action-type args isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD])(mappedPayloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD])(mappedPayloadAction) 1`] = `"boolean"`; -exports[`isOfType should work with multiple action-type args isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD])(payloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD])(payloadAction) 1`] = `"boolean"`; -exports[`isOfType should work with multiple action-type args isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD])(typeOnlyAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD])(typeOnlyAction) 1`] = `"boolean"`; -exports[`isOfType should work with multiple action-type args isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD], mappedPayloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD], mappedPayloadAction) 1`] = `"boolean"`; -exports[`isOfType should work with multiple action-type args isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD], payloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD], payloadAction) 1`] = `"boolean"`; -exports[`isOfType should work with multiple action-type args isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD], typeOnlyAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD], typeOnlyAction) 1`] = `"boolean"`; -exports[`isOfType should work with single action-type arg isOfType([types.WITH_TYPE_ONLY])(payloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isOfType([types.WITH_TYPE_ONLY])(payloadAction) 1`] = `"boolean"`; -exports[`isOfType should work with single action-type arg isOfType([types.WITH_TYPE_ONLY])(typeOnlyAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isOfType([types.WITH_TYPE_ONLY])(typeOnlyAction) 1`] = `"boolean"`; -exports[`isOfType should work with single action-type arg isOfType([types.WITH_TYPE_ONLY], payloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isOfType([types.WITH_TYPE_ONLY], payloadAction) 1`] = `"boolean"`; -exports[`isOfType should work with single action-type arg isOfType([types.WITH_TYPE_ONLY], typeOnlyAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isOfType([types.WITH_TYPE_ONLY], typeOnlyAction) 1`] = `"boolean"`; -exports[`isOfType should work with single action-type arg isOfType(types.WITH_TYPE_ONLY)(payloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isOfType(types.WITH_TYPE_ONLY)(payloadAction) 1`] = `"boolean"`; -exports[`isOfType should work with single action-type arg isOfType(types.WITH_TYPE_ONLY)(typeOnlyAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isOfType(types.WITH_TYPE_ONLY)(typeOnlyAction) 1`] = `"boolean"`; -exports[`isOfType should work with single action-type arg isOfType(types.WITH_TYPE_ONLY, payloadAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isOfType(types.WITH_TYPE_ONLY, payloadAction) 1`] = `"boolean"`; -exports[`isOfType should work with single action-type arg isOfType(types.WITH_TYPE_ONLY, typeOnlyAction) (type) should match snapshot 1`] = `"boolean"`; +exports[`isOfType(types.WITH_TYPE_ONLY, typeOnlyAction) 1`] = `"boolean"`; diff --git a/src/__snapshots__/type-helpers.spec.ts.snap b/src/__snapshots__/type-helpers.spec.ts.snap index 062813c..846384a 100644 --- a/src/__snapshots__/type-helpers.spec.ts.snap +++ b/src/__snapshots__/type-helpers.spec.ts.snap @@ -1,79 +1,79 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`ActionType action-helpers - createStandardAction should return action with async action getTypeReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`getTypeReducer(actual) 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with async action isActionOfArrayReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`getTypeReducer(actual) 2`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with async action isActionOfCurriedReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`getTypeReducer(actual) 3`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with async action isActionOfReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`getTypeReducer(actual) 4`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with async action isOfTypeCurriedReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`getTypeReducer(actual) 5`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with async action isOfTypeReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`getTypeReducer(actual) 6`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with mapped payload and meta getTypeReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfArrayReducer(actual) 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with mapped payload and meta isActionOfArrayReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfArrayReducer(actual) 2`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with mapped payload and meta isActionOfCurriedReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfArrayReducer(actual) 3`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with mapped payload and meta isActionOfReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfArrayReducer(actual) 4`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with mapped payload and meta isOfTypeCurriedReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfArrayReducer(actual) 5`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with mapped payload and meta isOfTypeReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfArrayReducer(actual) 6`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with mapped payload getTypeReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfCurriedReducer(actual) 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with mapped payload isActionOfArrayReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfCurriedReducer(actual) 2`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with mapped payload isActionOfCurriedReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfCurriedReducer(actual) 3`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with mapped payload isActionOfReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfCurriedReducer(actual) 4`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with mapped payload isOfTypeCurriedReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfCurriedReducer(actual) 5`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with mapped payload isOfTypeReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfCurriedReducer(actual) 6`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with payload and meta getTypeReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfReducer(actual) 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with payload and meta isActionOfArrayReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfReducer(actual) 2`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with payload and meta isActionOfCurriedReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfReducer(actual) 3`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with payload and meta isActionOfReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfReducer(actual) 4`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with payload and meta isOfTypeCurriedReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfReducer(actual) 5`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with payload and meta isOfTypeReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isActionOfReducer(actual) 6`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with payload getTypeReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isOfTypeCurriedReducer(actual) 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with payload isActionOfArrayReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isOfTypeCurriedReducer(actual) 2`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with payload isActionOfCurriedReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isOfTypeCurriedReducer(actual) 3`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with payload isActionOfReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isOfTypeCurriedReducer(actual) 4`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with payload isOfTypeCurriedReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isOfTypeCurriedReducer(actual) 5`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with payload isOfTypeReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isOfTypeCurriedReducer(actual) 6`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with type only getTypeReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isOfTypeReducer(actual) 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with type only isActionOfArrayReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isOfTypeReducer(actual) 2`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with type only isActionOfCurriedReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isOfTypeReducer(actual) 3`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with type only isActionOfReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isOfTypeReducer(actual) 4`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with type only isOfTypeCurriedReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isOfTypeReducer(actual) 5`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType action-helpers - createStandardAction should return action with type only isOfTypeReducer(actual) (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; +exports[`isOfTypeReducer(actual) 6`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error> | undefined"`; -exports[`ActionType testType>() (type) should match snapshot 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error>"`; +exports[`reducer(undefined, withTypeOnly()) 1`] = `"boolean"`; -exports[`StateType reducer(undefined, withTypeOnly()) (type) should match snapshot 1`] = `"boolean"`; +exports[`testType>() 1`] = `"{ type: \\"VERY_DEEP_WITH_TYPE_ONLY\\"; } | T.EmptyAction<\\"WITH_TYPE_ONLY\\"> | T.PayloadAction<\\"WITH_PAYLOAD\\", number> | T.PayloadAction<\\"WITH_OPTIONAL_PAYLOAD\\", number | undefined> | T.PayloadMetaAction<\\"WITH_META\\", undefined, string> | T.PayloadMetaAction<\\"WITH_PAYLOAD_META\\", number, string> | ({ type: \\"WITH_MAPPED_PAYLOAD\\"; } & { payload: number; }) | ({ type: \\"WITH_MAPPED_META\\"; } & { meta: string; }) | ({ type: \\"WITH_MAPPED_PAYLOAD_META\\"; } & { payload: number; meta: string; }) | T.EmptyAction<\\"FETCH_USER_REQUEST\\"> | T.PayloadAction<\\"FETCH_USER_SUCCESS\\", { firstName: string; lastName: string; }> | T.PayloadAction<\\"FETCH_USER_FAILURE\\", Error>"`; -exports[`StateType testType>() (type) should match snapshot 1`] = `"boolean"`; +exports[`testType>() 1`] = `"boolean"`; diff --git a/src/create-reducer.spec.snap.ts b/src/create-reducer.spec.snap.ts new file mode 100644 index 0000000..540388a --- /dev/null +++ b/src/create-reducer.spec.snap.ts @@ -0,0 +1,79 @@ +import * as T from './type-helpers'; // type-tests global +import { ActionType } from './type-helpers'; +import { createStandardAction } from './create-standard-action'; +import { createReducer } from './create-reducer'; + +const add = createStandardAction('ADD')(); +const increment = createStandardAction('INCREMENT')(); +const actions = { add, increment }; + +declare module './' { + export type RootAction = ActionType; +} + +const initialState = 0; +describe('With Action Creators', () => { + const counterReducer1 = createReducer(initialState).addHandler( + [add, increment], + (state, action) => { + return state + (action.type === 'ADD' ? action.payload : 1); + } + ); + const counterReducer2 = createReducer(initialState) + .addHandler([add], (state, action) => { + return state + action.payload; + }) + .addHandler([increment], (state, _) => { + return state + 1; + }); + const counterReducer3 = createReducer(initialState) + .addHandler(add, (state, action) => { + return state + action.payload; + }) + .addHandler(increment, (state, _) => { + return state + 1; + }); + + [counterReducer1, counterReducer2, counterReducer3].forEach(fn => { + // @dts-jest:pass:snap -> number + fn(0, {} as any); // => 0 + // @dts-jest:pass:snap -> number + fn(0, increment()); // => 1 + // @dts-jest:pass:snap -> number + fn(0, add(4)); // => 4 + }); +}); + +// wroc do implementacji ze nie mozna podac dwoch tych samych parametrow +describe('With Action Types', () => { + const counterReducer1 = createReducer(initialState).addHandler( + ['ADD', 'INCREMENT'], + (state, action) => { + return state + (action.type === 'ADD' ? action.payload : 1); + } + ); + + const counterReducer2 = createReducer(initialState) + .addHandler(['ADD'], (state, action) => { + return state + action.payload; + }) + .addHandler(['INCREMENT'], (state, _) => { + return state + 1; + }); + const counterReducer3 = createReducer(initialState) + .addHandler('ADD', (state, action) => { + return state + action.payload; + }) + .addHandler('INCREMENT', (state, _) => { + return state + 1; + }); + + [counterReducer1, counterReducer2, counterReducer3].forEach(fn => { + // @dts-jest:pass:snap -> number + fn(0, {} as any); // => 0 + // @dts-jest:pass:snap -> number + fn(0, increment()); // => 1 + // @dts-jest:pass:snap -> number + fn(0, add(4)); // => 4 + }); +}); diff --git a/src/create-reducer.spec.ts b/src/create-reducer.spec.ts index 1c809fa..addd556 100644 --- a/src/create-reducer.spec.ts +++ b/src/create-reducer.spec.ts @@ -11,6 +11,8 @@ declare module './' { export type RootAction = ActionType; } +// TODO: add type-test cases + const initialState = 0; describe('With Action Creators', () => { const counterReducer1 = createReducer(initialState).addHandler( @@ -44,7 +46,6 @@ describe('With Action Creators', () => { }); }); -// wroc do implementacji ze nie mozna podac dwoch tych samych parametrow describe('With Action Types', () => { const counterReducer1 = createReducer(initialState).addHandler( ['ADD', 'INCREMENT'], diff --git a/src/is-action-of.spec.snap.ts b/src/is-action-of.spec.snap.ts index 354684f..982eb9b 100644 --- a/src/is-action-of.spec.snap.ts +++ b/src/is-action-of.spec.snap.ts @@ -46,65 +46,61 @@ const $action = [ /** TESTS */ describe('isActionOf', () => { - it('should work with single action-creator arg', () => { - expect(isActionOf(withTypeOnly)(typeOnlyAction)).toBeTruthy(); - expect(isActionOf(withTypeOnly, typeOnlyAction)).toBeTruthy(); - expect(isActionOf(withTypeOnly)(payloadAction)).toBeFalsy(); - expect(isActionOf(withTypeOnly, payloadAction)).toBeFalsy(); - expect(isActionOf([withTypeOnly])(typeOnlyAction)).toBeTruthy(); - expect(isActionOf([withTypeOnly], typeOnlyAction)).toBeTruthy(); - expect(isActionOf([withTypeOnly])(payloadAction)).toBeFalsy(); - expect(isActionOf([withTypeOnly], payloadAction)).toBeFalsy(); + describe('should work with single action-creator arg', () => { + // @dts-jest:pass:snap -> boolean + isActionOf(withTypeOnly)(typeOnlyAction); // => true + // @dts-jest:pass:snap -> boolean + isActionOf(withTypeOnly, typeOnlyAction); // => true + // @dts-jest:pass:snap -> boolean + isActionOf(withTypeOnly)(payloadAction); // => false + // @dts-jest:pass:snap -> boolean + isActionOf(withTypeOnly, payloadAction); // => false + // @dts-jest:pass:snap -> boolean + isActionOf([withTypeOnly])(typeOnlyAction); // => true + // @dts-jest:pass:snap -> boolean + isActionOf([withTypeOnly], typeOnlyAction); // => true + // @dts-jest:pass:snap -> boolean + isActionOf([withTypeOnly])(payloadAction); // => false + // @dts-jest:pass:snap -> boolean + isActionOf([withTypeOnly], payloadAction); // => false }); - it('should work with multiple action-creator args', () => { - expect( - isActionOf([withTypeOnly, withPayload])(typeOnlyAction) - ).toBeTruthy(); - expect( - isActionOf([withTypeOnly, withPayload], typeOnlyAction) - ).toBeTruthy(); - expect(isActionOf([withTypeOnly, withPayload])(payloadAction)).toBeTruthy(); - expect(isActionOf([withTypeOnly, withPayload], payloadAction)).toBeTruthy(); - expect( - isActionOf([withTypeOnly, withPayload])(mappedPayloadAction) - ).toBeFalsy(); - expect( - isActionOf([withTypeOnly, withPayload], mappedPayloadAction) - ).toBeFalsy(); + describe('should work with multiple action-creator args', () => { + // @dts-jest:pass:snap -> boolean + isActionOf([withTypeOnly, withPayload])(typeOnlyAction); // => true + // @dts-jest:pass:snap -> boolean + isActionOf([withTypeOnly, withPayload], typeOnlyAction); // => true + // @dts-jest:pass:snap -> boolean + isActionOf([withTypeOnly, withPayload])(payloadAction); // => true + // @dts-jest:pass:snap -> boolean + isActionOf([withTypeOnly, withPayload], payloadAction); // => true + // @dts-jest:pass:snap -> boolean + isActionOf([withTypeOnly, withPayload])(mappedPayloadAction); // => false + // @dts-jest:pass:snap -> boolean + isActionOf([withTypeOnly, withPayload], mappedPayloadAction); // => false }); - it('should correctly assert for an array with 1 arg', () => { + describe('should correctly assert for an array with 1 arg', () => { const actual = $action.filter(isActionOf([withTypeOnly])); // @dts-jest:pass:snap -> T.EmptyAction<"WITH_TYPE_ONLY">[] - actual; - expect(actual).toHaveLength(1); - expect(actual).toEqual([typeOnlyExpected]); + actual; // => [typeOnlyExpected] }); - it('should correctly assert for an array with 2 args', () => { + describe('should correctly assert for an array with 2 args', () => { const actual = $action.filter(isActionOf([withTypeOnly, withPayload])); // @dts-jest:pass:snap -> (T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number>)[] - actual; - expect(actual).toHaveLength(2); - expect(actual).toEqual([typeOnlyExpected, payloadExpected]); + actual; // => [typeOnlyExpected, payloadExpected] }); - it('should correctly assert for an array with 3 args', () => { + describe('should correctly assert for an array with 3 args', () => { const actual = $action.filter( isActionOf([withTypeOnly, withPayload, withPayloadMeta]) ); // @dts-jest:pass:snap -> (T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string>)[] - actual; - expect(actual).toHaveLength(3); - expect(actual).toEqual([ - typeOnlyExpected, - payloadExpected, - payloadMetaExpected, - ]); + actual; // => [typeOnlyExpected,payloadExpected,payloadMetaExpected] }); - it('should correctly assert for an array with 4 args', () => { + describe('should correctly assert for an array with 4 args', () => { const actual = $action.filter( isActionOf([ withTypeOnly, @@ -113,17 +109,11 @@ describe('isActionOf', () => { withMappedPayload, ]) ); - // @dts-jest:pass:snap -> (T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }))[] - actual; - expect(actual).toEqual([ - typeOnlyExpected, - payloadExpected, - payloadMetaExpected, - mappedPayloadExpected, - ]); + // @dts-jest:pass:snap -> (T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string>)[] + actual; // => [typeOnlyExpected,payloadExpected,payloadMetaExpected,mappedPayloadExpected] }); - it('should correctly assert for an array with 5 args', () => { + describe('should correctly assert for an array with 5 args', () => { const actual = $action.filter( isActionOf([ withTypeOnly, @@ -133,29 +123,20 @@ describe('isActionOf', () => { withMappedPayloadMeta, ]) ); - // @dts-jest:pass:snap -> (T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }))[] - actual; - expect(actual).toHaveLength(5); - expect(actual).toEqual([ - typeOnlyExpected, - payloadExpected, - payloadMetaExpected, - mappedPayloadExpected, - mappedPayloadMetaExpected, - ]); + // @dts-jest:pass:snap -> (T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }))[] + actual; // => [typeOnlyExpected,payloadExpected,payloadMetaExpected,mappedPayloadExpected,mappedPayloadMetaExpected] }); - it('should correctly assert type with "any" action', () => { + describe('should correctly assert type with "any" action', () => { const action: any = withMappedPayload(1234); if (isActionOf([withMappedPayload, withMappedPayloadMeta], action)) { // @dts-jest:pass:snap -> ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) - action; - expect(action.payload).toBe(1234); + action; // => {"payload": 1234, "type": "WITH_MAPPED_PAYLOAD"} } + if (isActionOf([withMappedPayload, withMappedPayloadMeta])(action)) { // @dts-jest:pass:snap -> ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) - action; - expect(action.payload).toBe(1234); + action; // => {"payload": 1234, "type": "WITH_MAPPED_PAYLOAD"} } }); }); diff --git a/src/is-of-type.spec.snap.ts b/src/is-of-type.spec.snap.ts index d1b5a66..4d53af8 100644 --- a/src/is-of-type.spec.snap.ts +++ b/src/is-of-type.spec.snap.ts @@ -46,57 +46,55 @@ const $action = [ /** TESTS */ describe('isOfType', () => { - it('should work with single action-type arg', () => { - expect(isOfType(types.WITH_TYPE_ONLY)(typeOnlyAction)).toBeTruthy(); - expect(isOfType(types.WITH_TYPE_ONLY, typeOnlyAction)).toBeTruthy(); - expect(isOfType(types.WITH_TYPE_ONLY)(payloadAction)).toBeFalsy(); - expect(isOfType(types.WITH_TYPE_ONLY, payloadAction)).toBeFalsy(); - expect(isOfType([types.WITH_TYPE_ONLY])(typeOnlyAction)).toBeTruthy(); - expect(isOfType([types.WITH_TYPE_ONLY], typeOnlyAction)).toBeTruthy(); - expect(isOfType([types.WITH_TYPE_ONLY])(payloadAction)).toBeFalsy(); - expect(isOfType([types.WITH_TYPE_ONLY], payloadAction)).toBeFalsy(); + describe('should work with single action-type arg', () => { + // @dts-jest:pass:snap -> boolean + isOfType(types.WITH_TYPE_ONLY)(typeOnlyAction); // => true + // @dts-jest:pass:snap -> boolean + isOfType(types.WITH_TYPE_ONLY, typeOnlyAction); // => true + // @dts-jest:pass:snap -> boolean + isOfType(types.WITH_TYPE_ONLY)(payloadAction); // => false + // @dts-jest:pass:snap -> boolean + isOfType(types.WITH_TYPE_ONLY, payloadAction); // => false + // @dts-jest:pass:snap -> boolean + isOfType([types.WITH_TYPE_ONLY])(typeOnlyAction); // => true + // @dts-jest:pass:snap -> boolean + isOfType([types.WITH_TYPE_ONLY], typeOnlyAction); // => true + // @dts-jest:pass:snap -> boolean + isOfType([types.WITH_TYPE_ONLY])(payloadAction); // => false + // @dts-jest:pass:snap -> boolean + isOfType([types.WITH_TYPE_ONLY], payloadAction); // => false }); - it('should work with multiple action-type args', () => { - expect( - isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD])(typeOnlyAction) - ).toBeTruthy(); - expect( - isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD], typeOnlyAction) - ).toBeTruthy(); - expect( - isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD])(payloadAction) - ).toBeTruthy(); - expect( - isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD], payloadAction) - ).toBeTruthy(); - expect( - isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD])(mappedPayloadAction) - ).toBeFalsy(); - expect( - isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD], mappedPayloadAction) - ).toBeFalsy(); + describe('should work with multiple action-type args', () => { + // @dts-jest:pass:snap -> boolean + isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD])(typeOnlyAction); // => true + // @dts-jest:pass:snap -> boolean + isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD], typeOnlyAction); // => true + // @dts-jest:pass:snap -> boolean + isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD])(payloadAction); // => true + // @dts-jest:pass:snap -> boolean + isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD], payloadAction); // => true + // @dts-jest:pass:snap -> boolean + isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD])(mappedPayloadAction); // => false + // @dts-jest:pass:snap -> boolean + isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD], mappedPayloadAction); // => false }); - it('should correctly assert for an array with 1 arg', () => { + describe('should correctly assert for an array with 1 arg', () => { const actual = $action.filter(isOfType(types.WITH_TYPE_ONLY)); // @dts-jest:pass:snap -> T.EmptyAction<"WITH_TYPE_ONLY">[] - actual; - expect(actual).toHaveLength(1); - expect(actual).toEqual([typeOnlyExpected]); + actual; // => [typeOnlyExpected] }); - it('should correctly assert for an array with 2 args', () => { + describe('should correctly assert for an array with 2 args', () => { const actual = $action.filter( isOfType([types.WITH_TYPE_ONLY, types.WITH_PAYLOAD]) ); // @dts-jest:pass:snap -> (T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number>)[] - actual; - expect(actual).toHaveLength(2); - expect(actual).toEqual([typeOnlyExpected, payloadExpected]); + actual; // => [typeOnlyExpected, payloadExpected] }); - it('should correctly assert for an array with 3 args', () => { + describe('should correctly assert for an array with 3 args', () => { const actual = $action.filter( isOfType([ types.WITH_TYPE_ONLY, @@ -105,16 +103,10 @@ describe('isOfType', () => { ]) ); // @dts-jest:pass:snap -> (T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string>)[] - actual; - expect(actual).toHaveLength(3); - expect(actual).toEqual([ - typeOnlyExpected, - payloadExpected, - payloadMetaExpected, - ]); + actual; // => [typeOnlyExpected,payloadExpected,payloadMetaExpected] }); - it('should correctly assert for an array with 4 args', () => { + describe('should correctly assert for an array with 4 args', () => { const actual = $action.filter( isOfType([ types.WITH_TYPE_ONLY, @@ -123,18 +115,11 @@ describe('isOfType', () => { types.WITH_MAPPED_PAYLOAD, ]) ); - // @dts-jest:pass:snap -> (T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }))[] - actual; - expect(actual).toHaveLength(4); - expect(actual).toEqual([ - typeOnlyExpected, - payloadExpected, - payloadMetaExpected, - mappedPayloadExpected, - ]); + // @dts-jest:pass:snap -> (T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string>)[] + actual; // => [typeOnlyExpected,payloadExpected,payloadMetaExpected,mappedPayloadExpected] }); - it('should correctly assert for an array with 4 args', () => { + describe('should correctly assert for an array with 4 args', () => { const actual = $action.filter( isOfType([ types.WITH_TYPE_ONLY, @@ -144,19 +129,11 @@ describe('isOfType', () => { types.WITH_MAPPED_PAYLOAD_META, ]) ); - // @dts-jest:pass:snap -> (T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }))[] - actual; - expect(actual).toHaveLength(5); - expect(actual).toEqual([ - typeOnlyExpected, - payloadExpected, - payloadMetaExpected, - mappedPayloadExpected, - mappedPayloadMetaExpected, - ]); + // @dts-jest:pass:snap -> (T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }))[] + actual; // => [typeOnlyExpected,payloadExpected,payloadMetaExpected,mappedPayloadExpected,mappedPayloadMetaExpected] }); - it('should correctly assert type with "any" action', () => { + describe('should correctly assert type with "any" action', () => { const action: any = withMappedPayload(1234); if ( isOfType( @@ -165,8 +142,7 @@ describe('isOfType', () => { ) ) { // @dts-jest:pass:snap -> any - action; - expect(action.payload).toBe(1234); + action; // => {"payload": 1234, "type": "WITH_MAPPED_PAYLOAD"} } if ( isOfType([types.WITH_MAPPED_PAYLOAD, types.WITH_MAPPED_PAYLOAD_META])( @@ -174,8 +150,7 @@ describe('isOfType', () => { ) ) { // @dts-jest:pass:snap -> any - action; - expect(action.payload).toBe(1234); + action; // => {"payload": 1234, "type": "WITH_MAPPED_PAYLOAD"} } }); }); diff --git a/src/type-helpers.spec.snap.ts b/src/type-helpers.spec.snap.ts index a8e0254..c0faee9 100644 --- a/src/type-helpers.spec.snap.ts +++ b/src/type-helpers.spec.snap.ts @@ -30,7 +30,8 @@ describe('StateType', () => { // @dts-jest:pass:snap -> boolean testType>(); - expect(reducer(undefined, withTypeOnly())).toBe(true); + // @dts-jest:pass:snap -> boolean + reducer(undefined, withTypeOnly()); // => true }); describe('ActionType', () => { @@ -242,80 +243,116 @@ describe('ActionType', () => { } describe('action-helpers - createStandardAction', () => { - it('should return action with type only', () => { + describe('should return action with type only', () => { const actual = withTypeOnly(); const expected = { type: 'WITH_TYPE_ONLY' }; - expect(getTypeReducer(actual)).toEqual(expected); - expect(isActionOfReducer(actual)).toEqual(expected); - expect(isActionOfCurriedReducer(actual)).toEqual(expected); - expect(isActionOfArrayReducer(actual)).toEqual(expected); - expect(isOfTypeReducer(actual)).toEqual(expected); - expect(isOfTypeCurriedReducer(actual)).toEqual(expected); + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + getTypeReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfCurriedReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfArrayReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isOfTypeReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isOfTypeCurriedReducer(actual); // => expected }); - it('should return action with payload', () => { + describe('should return action with payload', () => { const actual = withPayload(2); const expected = { type: 'WITH_PAYLOAD', payload: 2 }; - expect(getTypeReducer(actual)).toEqual(expected); - expect(isActionOfReducer(actual)).toEqual(expected); - expect(isActionOfCurriedReducer(actual)).toEqual(expected); - expect(isActionOfArrayReducer(actual)).toEqual(expected); - expect(isOfTypeReducer(actual)).toEqual(expected); - expect(isOfTypeCurriedReducer(actual)).toEqual(expected); + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + getTypeReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfCurriedReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfArrayReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isOfTypeReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isOfTypeCurriedReducer(actual); // => expected }); - it('should return action with payload and meta', () => { + describe('should return action with payload and meta', () => { const actual = withPayloadMeta(2, 'metaValue'); const expected = { type: 'WITH_PAYLOAD_META', payload: 2, meta: 'metaValue', }; - expect(getTypeReducer(actual)).toEqual(expected); - expect(isActionOfReducer(actual)).toEqual(expected); - expect(isActionOfCurriedReducer(actual)).toEqual(expected); - expect(isActionOfArrayReducer(actual)).toEqual(expected); - expect(isOfTypeReducer(actual)).toEqual(expected); - expect(isOfTypeCurriedReducer(actual)).toEqual(expected); + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + getTypeReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfCurriedReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfArrayReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isOfTypeReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isOfTypeCurriedReducer(actual); // => expected }); - it('should return action with mapped payload', () => { + describe('should return action with mapped payload', () => { const actual = withMappedPayload(2); const expected = { type: 'WITH_MAPPED_PAYLOAD', payload: 2 }; - expect(getTypeReducer(actual)).toEqual(expected); - expect(isActionOfReducer(actual)).toEqual(expected); - expect(isActionOfCurriedReducer(actual)).toEqual(expected); - expect(isActionOfArrayReducer(actual)).toEqual(expected); - expect(isOfTypeReducer(actual)).toEqual(expected); - expect(isOfTypeCurriedReducer(actual)).toEqual(expected); + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + getTypeReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfCurriedReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfArrayReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isOfTypeReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isOfTypeCurriedReducer(actual); // => expected }); - it('should return action with mapped payload and meta', () => { + describe('should return action with mapped payload and meta', () => { const actual = withMappedPayloadMeta(2, 'metaValue'); const expected = { type: 'WITH_MAPPED_PAYLOAD_META', payload: 2, meta: 'metaValue', }; - expect(getTypeReducer(actual)).toEqual(expected); - expect(isActionOfReducer(actual)).toEqual(expected); - expect(isActionOfCurriedReducer(actual)).toEqual(expected); - expect(isActionOfArrayReducer(actual)).toEqual(expected); - expect(isOfTypeReducer(actual)).toEqual(expected); - expect(isOfTypeCurriedReducer(actual)).toEqual(expected); + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + getTypeReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfCurriedReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfArrayReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isOfTypeReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isOfTypeCurriedReducer(actual); // => expected }); - it('should return action with async action', () => { + describe('should return action with async action', () => { const actual = asyncAction.request(); const expected = { type: 'FETCH_USER_REQUEST', }; - expect(getTypeReducer(actual)).toEqual(expected); - expect(isActionOfReducer(actual)).toEqual(expected); - expect(isActionOfCurriedReducer(actual)).toEqual(expected); - expect(isActionOfArrayReducer(actual)).toEqual(expected); - expect(isOfTypeReducer(actual)).toEqual(expected); - expect(isOfTypeCurriedReducer(actual)).toEqual(expected); + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + getTypeReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfCurriedReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isActionOfArrayReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isOfTypeReducer(actual); // => expected + // @dts-jest:pass:snap -> { type: "VERY_DEEP_WITH_TYPE_ONLY"; } | T.EmptyAction<"WITH_TYPE_ONLY"> | T.PayloadAction<"WITH_PAYLOAD", number> | T.PayloadAction<"WITH_OPTIONAL_PAYLOAD", number | undefined> | T.PayloadMetaAction<"WITH_META", undefined, string> | T.PayloadMetaAction<"WITH_PAYLOAD_META", number, string> | ({ type: "WITH_MAPPED_PAYLOAD"; } & { payload: number; }) | ({ type: "WITH_MAPPED_META"; } & { meta: string; }) | ({ type: "WITH_MAPPED_PAYLOAD_META"; } & { payload: number; meta: string; }) | T.EmptyAction<"FETCH_USER_REQUEST"> | T.PayloadAction<"FETCH_USER_SUCCESS", { firstName: string; lastName: string; }> | T.PayloadAction<"FETCH_USER_FAILURE", Error> | undefined + isOfTypeCurriedReducer(actual); // => expected }); }); }); diff --git a/src/utils/__snapshots__/validation.spec.ts.snap b/src/utils/__snapshots__/validation.spec.ts.snap index a6c5336..56e787d 100644 --- a/src/utils/__snapshots__/validation.spec.ts.snap +++ b/src/utils/__snapshots__/validation.spec.ts.snap @@ -1,11 +1,11 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`checkInvalidActionCreator should fail when input is valid action-creator checkInvalidActionCreator(ac) (type) should match snapshot 1`] = `"boolean"`; +exports[`checkInvalidActionCreator(ac) 1`] = `"boolean"`; -exports[`checkInvalidActionType should fail when input is valid action-type checkInvalidActionType('asdf') (type) should match snapshot 1`] = `"boolean"`; +exports[`checkInvalidActionType('asdf') 1`] = `"boolean"`; -exports[`checkInvalidActionType should fail when input is valid action-type checkInvalidActionType(Symbol() as any) (type) should match snapshot 1`] = `"boolean"`; +exports[`checkInvalidActionType(Symbol() as any) 1`] = `"boolean"`; -exports[`checkIsEmpty should pass when input is empty checkIsEmpty(null) (type) should match snapshot 1`] = `"boolean"`; +exports[`checkIsEmpty(null) 1`] = `"boolean"`; -exports[`checkIsEmpty should pass when input is empty checkIsEmpty(undefined) (type) should match snapshot 1`] = `"boolean"`; +exports[`checkIsEmpty(undefined) 1`] = `"boolean"`; From 3531f2e061597fdedb8544ea9e52a752c1eb7905 Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sun, 21 Apr 2019 12:10:44 +0200 Subject: [PATCH 15/22] Updated badges --- README.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index ad7d20a..899b7b9 100644 --- a/README.md +++ b/README.md @@ -17,12 +17,11 @@ _This library is part of the [React & Redux TypeScript Guide](https://github.com :star: _Found it useful? Want more updates?_ [**Show your support by giving a :star:**](https://github.com/piotrwitek/typesafe-actions/stargazers) - - Become a Patron + + Buy Me a Coffee -
- - Buy Me a Coffee + + Become a Patron :tada: _Now updated to be compatible with **TypeScript v3.4**_ :tada: @@ -54,7 +53,7 @@ _This library is part of the [React & Redux TypeScript Guide](https://github.com - [Installation](#installation) - [Compatibility Notes](#compatibility-notes) - [Contributing Guide](#contributing-guide) -- [Funding issues](#funding-issues) +- [Funding](#funding) - [Tutorial](#tutorial) - [Constants](#constants) - [Actions](#actions) @@ -161,12 +160,12 @@ We are open for contributions. If you're planning to contribute please make sure --- -## Funding issues +## Funding **Typesafe-Actions** is an independent open-source project created by people investing their free time for the benefit of our community. If you are using **Typesafe-Actions** please consider donating as this will guarantee the project will be updated and maintained in the long run. -Specific issues can be funded by anyone interested in it. Reward money will be transparently distributed to the contributor handling a particular issue on the issuehunt platform. +Specific issues can be funded by anyone interested in them being resolved. Issue funds will be transparently rewarded to the contributor handling the task through the issuehunt platform. [![Let's fund issues in this repository](https://issuehunt.io/static/embed/issuehunt-button-v1.svg)](https://issuehunt.io/repos/110746954) From 09609d1269a6bcd7d8eff135b004fd25fac5fe6d Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sun, 21 Apr 2019 13:13:58 +0200 Subject: [PATCH 16/22] cleanup --- src/is-action-of.spec.snap.ts | 4 ---- src/is-action-of.spec.ts | 4 ---- src/is-of-type.spec.snap.ts | 4 ---- src/is-of-type.spec.ts | 4 ---- 4 files changed, 16 deletions(-) diff --git a/src/is-action-of.spec.snap.ts b/src/is-action-of.spec.snap.ts index 982eb9b..a58caa4 100644 --- a/src/is-action-of.spec.snap.ts +++ b/src/is-action-of.spec.snap.ts @@ -39,10 +39,6 @@ const $action = [ mappedPayloadMetaAction, ]; -// TODO: #3 -// should error when missing argument -// should error when passed invalid arguments like primitives,object, empty array, array with nulls - /** TESTS */ describe('isActionOf', () => { diff --git a/src/is-action-of.spec.ts b/src/is-action-of.spec.ts index d5b5a21..6eda9b9 100644 --- a/src/is-action-of.spec.ts +++ b/src/is-action-of.spec.ts @@ -39,10 +39,6 @@ const $action = [ mappedPayloadMetaAction, ]; -// TODO: #3 -// should error when missing argument -// should error when passed invalid arguments like primitives,object, empty array, array with nulls - /** TESTS */ describe('isActionOf', () => { diff --git a/src/is-of-type.spec.snap.ts b/src/is-of-type.spec.snap.ts index 4d53af8..b413227 100644 --- a/src/is-of-type.spec.snap.ts +++ b/src/is-of-type.spec.snap.ts @@ -39,10 +39,6 @@ const $action = [ mappedPayloadMetaAction, ]; -// TODO: #3 -// should error when missing argument -// should error when passed invalid arguments like primitives,object, empty array, array with nulls - /** TESTS */ describe('isOfType', () => { diff --git a/src/is-of-type.spec.ts b/src/is-of-type.spec.ts index e025e42..c116dc7 100644 --- a/src/is-of-type.spec.ts +++ b/src/is-of-type.spec.ts @@ -39,10 +39,6 @@ const $action = [ mappedPayloadMetaAction, ]; -// TODO: #3 -// should error when missing argument -// should error when passed invalid arguments like primitives,object, empty array, array with nulls - /** TESTS */ describe('isOfType', () => { From d22ed75aa2c193dc639f8eccbd8f4234f7e5d8ea Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sun, 21 Apr 2019 14:53:35 +0200 Subject: [PATCH 17/22] Refactored addHandler to handleAction --- src/__snapshots__/create-reducer.spec.ts.snap | 99 ++++++++++++------- src/create-reducer.spec.snap.ts | 3 +- src/create-reducer.spec.ts | 29 +++--- src/create-reducer.ts | 42 ++++---- 4 files changed, 105 insertions(+), 68 deletions(-) diff --git a/src/__snapshots__/create-reducer.spec.ts.snap b/src/__snapshots__/create-reducer.spec.ts.snap index c1691c2..4059bf9 100644 --- a/src/__snapshots__/create-reducer.spec.ts.snap +++ b/src/__snapshots__/create-reducer.spec.ts.snap @@ -1,37 +1,66 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`fn(0, {} as any) 1`] = `"number"`; - -exports[`fn(0, {} as any) 2`] = `"number"`; - -exports[`fn(0, {} as any) 3`] = `"number"`; - -exports[`fn(0, {} as any) 4`] = `"number"`; - -exports[`fn(0, {} as any) 5`] = `"number"`; - -exports[`fn(0, {} as any) 6`] = `"number"`; - -exports[`fn(0, add(4)) 1`] = `"number"`; - -exports[`fn(0, add(4)) 2`] = `"number"`; - -exports[`fn(0, add(4)) 3`] = `"number"`; - -exports[`fn(0, add(4)) 4`] = `"number"`; - -exports[`fn(0, add(4)) 5`] = `"number"`; - -exports[`fn(0, add(4)) 6`] = `"number"`; - -exports[`fn(0, increment()) 1`] = `"number"`; - -exports[`fn(0, increment()) 2`] = `"number"`; - -exports[`fn(0, increment()) 3`] = `"number"`; - -exports[`fn(0, increment()) 4`] = `"number"`; - -exports[`fn(0, increment()) 5`] = `"number"`; - -exports[`fn(0, increment()) 6`] = `"number"`; +exports[`const counterReducer = createReducer(initialState).handleAction( + [add, increment], + (state, action) => { + return state + (action.type === 'ADD' ? action.payload : 1); + } + ) 1`] = `"any"`; + +exports[`const counterReducer1 = createReducer(initialState).handleAction( + ['ADD', 'INCREMENT'], + (state, action) => { + return state + (action.type === 'ADD' ? action.payload : 1); + } + ) 1`] = `"any"`; + +exports[`const counterReducer1 = createReducer(initialState).handleAction( + [add, increment], + (state, action) => { + return state + (action.type === 'ADD' ? action.payload : 1); + } + ) 1`] = `"any"`; + +exports[`const counterReducer1 = createReducer(initialState).handleAction( + [add, increment], + (state, action) => state + (action.type === 'ADD' ? action.payload : 1) + ) 1`] = `"any"`; + +exports[`const counterReducer1 = createReducer(initialState).handleAction( + [add], + (state, action) => { + return state + (action.type === 'ADD' ? action.payload : 1); + } + ) 1`] = `"any"`; + +exports[`const counterReducer2 = createReducer(initialState) + .handleAction(['ADD'], (state, action) => { + return state + action.payload; + }) + .handleAction(['INCREMENT'], (state, _) => { + return state + 1; + }) 1`] = `"any"`; + +exports[`const counterReducer2 = createReducer(initialState) + .handleAction([add], (state, action) => { + return state + action.payload; + }) + .handleAction([increment], (state, _) => { + return state + 1; + }) 1`] = `"any"`; + +exports[`const counterReducer3 = createReducer(initialState) + .handleAction('ADD', (state, action) => { + return state + action.payload; + }) + .handleAction('INCREMENT', (state, _) => { + return state + 1; + }) 1`] = `"any"`; + +exports[`const counterReducer3 = createReducer(initialState) + .handleAction(add, (state, action) => { + return state + action.payload; + }) + .handleAction(increment, (state, _) => { + return state + 1; + }) 1`] = `"any"`; diff --git a/src/create-reducer.spec.snap.ts b/src/create-reducer.spec.snap.ts index 540388a..8d968f3 100644 --- a/src/create-reducer.spec.snap.ts +++ b/src/create-reducer.spec.snap.ts @@ -11,6 +11,8 @@ declare module './' { export type RootAction = ActionType; } +// TODO: add type-test cases + const initialState = 0; describe('With Action Creators', () => { const counterReducer1 = createReducer(initialState).addHandler( @@ -44,7 +46,6 @@ describe('With Action Creators', () => { }); }); -// wroc do implementacji ze nie mozna podac dwoch tych samych parametrow describe('With Action Types', () => { const counterReducer1 = createReducer(initialState).addHandler( ['ADD', 'INCREMENT'], diff --git a/src/create-reducer.spec.ts b/src/create-reducer.spec.ts index addd556..f614366 100644 --- a/src/create-reducer.spec.ts +++ b/src/create-reducer.spec.ts @@ -14,25 +14,29 @@ declare module './' { // TODO: add type-test cases const initialState = 0; + describe('With Action Creators', () => { - const counterReducer1 = createReducer(initialState).addHandler( + // @dts-jest:pass:snap + const counterReducer1 = createReducer(initialState).handleAction( [add, increment], (state, action) => { return state + (action.type === 'ADD' ? action.payload : 1); } ); + // @dts-jest:pass:snap const counterReducer2 = createReducer(initialState) - .addHandler([add], (state, action) => { + .handleAction([add], (state, action) => { return state + action.payload; }) - .addHandler([increment], (state, _) => { + .handleAction([increment], (state, _) => { return state + 1; }); + // @dts-jest:pass:snap const counterReducer3 = createReducer(initialState) - .addHandler(add, (state, action) => { + .handleAction(add, (state, action) => { return state + action.payload; }) - .addHandler(increment, (state, _) => { + .handleAction(increment, (state, _) => { return state + 1; }); @@ -47,25 +51,28 @@ describe('With Action Creators', () => { }); describe('With Action Types', () => { - const counterReducer1 = createReducer(initialState).addHandler( + // + // @dts-jest:pass:snap + const counterReducer1 = createReducer(initialState).handleAction( ['ADD', 'INCREMENT'], (state, action) => { return state + (action.type === 'ADD' ? action.payload : 1); } ); - + // @dts-jest:pass:snap const counterReducer2 = createReducer(initialState) - .addHandler(['ADD'], (state, action) => { + .handleAction(['ADD'], (state, action) => { return state + action.payload; }) - .addHandler(['INCREMENT'], (state, _) => { + .handleAction(['INCREMENT'], (state, _) => { return state + 1; }); + // @dts-jest:pass:snap const counterReducer3 = createReducer(initialState) - .addHandler('ADD', (state, action) => { + .handleAction('ADD', (state, action) => { return state + action.payload; }) - .addHandler('INCREMENT', (state, _) => { + .handleAction('INCREMENT', (state, _) => { return state + 1; }); diff --git a/src/create-reducer.ts b/src/create-reducer.ts index 7de55bf..2b7e742 100644 --- a/src/create-reducer.ts +++ b/src/create-reducer.ts @@ -8,7 +8,7 @@ import { } from './utils/validation'; import { Reducer, Action } from './type-helpers'; -type AddHandler< +type HandleActionChainApi< S, TAllActions extends Action, TNotHandledActions extends Action @@ -25,12 +25,12 @@ type AddHandler< ? TTypeAction : never >( - actionsTypes: TType | TCreator | TType[] | TCreator[], - actionsHandler: (state: S, action: TActionIntersection) => S + singleOrMultipleCreatorsAndTypes: TType | TType[] | TCreator | TCreator[], + reducer: (state: S, action: TActionIntersection) => S ) => Exclude extends never ? Reducer : Reducer & { - addHandler: AddHandler< + handleAction: HandleActionChainApi< S, TAllActions, Exclude @@ -39,23 +39,25 @@ type AddHandler< export function createReducer( initialState: S -) { - const handlers: Record S> = {}; +): Reducer & { + handleAction: HandleActionChainApi; +} { + const reducers: Record S> = {}; - const reducer: Reducer = (state = initialState, action) => { - if (handlers.hasOwnProperty(action.type)) { - return handlers[action.type](state, action); + const rootReducer: Reducer = (state = initialState, action) => { + if (reducers.hasOwnProperty(action.type)) { + return reducers[action.type](state, action); } else { return state; } }; - const addHandler = ((actionsTypes, actionsHandler) => { - const creatorsOrTypes = Array.isArray(actionsTypes) - ? actionsTypes - : [actionsTypes]; + const handleAction = ((singleOrMultipleCreatorsAndTypes, reducer) => { + const creatorsAndTypes = Array.isArray(singleOrMultipleCreatorsAndTypes) + ? singleOrMultipleCreatorsAndTypes + : [singleOrMultipleCreatorsAndTypes]; - creatorsOrTypes + creatorsAndTypes .map(acOrType => checkValidActionCreator(acOrType) ? getType(acOrType) @@ -63,16 +65,14 @@ export function createReducer( ? acOrType : throwInvalidActionTypeOrActionCreator() ) - .forEach(type => (handlers[type] = actionsHandler)); + .forEach(type => (reducers[type] = reducer)); return chainApi; - }) as AddHandler; + }) as HandleActionChainApi; - const chainApi: Reducer & { - addHandler: AddHandler; - } = Object.assign(reducer, { - addHandler, - }); + const chainApi = Object.assign(rootReducer, { + handleAction, + } as const); return chainApi; } From c319c3a7b43671bcdd38215ad13139aabc5afab9 Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sun, 21 Apr 2019 18:50:16 +0200 Subject: [PATCH 18/22] Finalized type safety algorithm for additional cases like getType helper, and mapByKey reducer type --- .../src/typesafe-actions/create-reducer.d.ts | 16 +- codesandbox/src/typesafe-actions/index.esm.js | 38 +++-- codesandbox/src/typesafe-actions/index.js | 38 +++-- codesandbox/src/typesafe-actions/index.umd.js | 2 +- .../src/typesafe-actions/index.umd.js.map | 2 +- src/__snapshots__/create-reducer.spec.ts.snap | 65 +------- src/create-reducer.spec.ts | 148 +++++++++++++----- src/create-reducer.ts | 83 ++++++---- 8 files changed, 228 insertions(+), 164 deletions(-) diff --git a/codesandbox/src/typesafe-actions/create-reducer.d.ts b/codesandbox/src/typesafe-actions/create-reducer.d.ts index 5a84eb5..9eb73d2 100644 --- a/codesandbox/src/typesafe-actions/create-reducer.d.ts +++ b/codesandbox/src/typesafe-actions/create-reducer.d.ts @@ -1,11 +1,17 @@ import { RootAction } from './'; import { Reducer, Action } from './type-helpers'; -declare type AddHandler = = TNotHandledActions, TCreatorAction extends TNotHandledActions extends ReturnType ? TNotHandledActions : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(actionsTypes: TType | TCreator | TType[] | TCreator[], actionsHandler: (state: S, action: TActionIntersection) => S) => Exclude extends never ? Reducer : Reducer & { - addHandler: AddHandler>; +} ? TNotHandledAction : never, TCreator extends (...args: any[]) => TNotHandledAction, TCreatorAction extends TNotHandledAction extends ReturnType ? TNotHandledAction : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TType[] | TCreator | TCreator[], reducer: (state: TState, action: TActionIntersection) => TState) => [Exclude] extends [never] ? Reducer & { + reducers: Record TState>; +} : Reducer & { + reducers: Record TState>; + handleAction: HandleActionChainApi, TNotHandledAction>; }; -export declare function createReducer(initialState: S): Reducer & { - addHandler: AddHandler; +export declare function createReducer(initialState: TState, initialReducers?: Record TState>): Reducer & { + reducers: { + readonly [x: string]: (state: TState, action: any) => TState; + }; + readonly handleAction: HandleActionChainApi; }; export {}; diff --git a/codesandbox/src/typesafe-actions/index.esm.js b/codesandbox/src/typesafe-actions/index.esm.js index 02cb244..8e5bc74 100644 --- a/codesandbox/src/typesafe-actions/index.esm.js +++ b/codesandbox/src/typesafe-actions/index.esm.js @@ -1,3 +1,5 @@ +import { __assign } from 'tslib'; + function checkIsEmpty(arg, argPosition) { if (argPosition === void 0) { argPosition = 1; } return arg == null; @@ -134,22 +136,28 @@ function getType(actionCreator) { return actionCreator.getType(); } -function createReducer(initialState) { - var handlers = {}; - var reducer = function (state, action) { +function createReducer(initialState, initialReducers) { + if (initialReducers === void 0) { initialReducers = {}; } + var reducers = __assign({}, initialReducers); + var rootReducer = function (state, action) { if (state === void 0) { state = initialState; } - if (handlers.hasOwnProperty(action.type)) { - return handlers[action.type](state, action); + if (reducers.hasOwnProperty(action.type)) { + var reducer = reducers[action.type]; + if (typeof reducer !== 'function') { + throw Error("Reducer under \"" + action.type + "\" key is not a valid reducer"); + } + return reducer(state, action); } else { return state; } }; - var addHandler = (function (actionsTypes, actionsHandler) { - var creatorsOrTypes = Array.isArray(actionsTypes) - ? actionsTypes - : [actionsTypes]; - creatorsOrTypes + var handleAction = (function (singleOrMultipleCreatorsAndTypes, reducer) { + var creatorsAndTypes = Array.isArray(singleOrMultipleCreatorsAndTypes) + ? singleOrMultipleCreatorsAndTypes + : [singleOrMultipleCreatorsAndTypes]; + var newReducers = {}; + creatorsAndTypes .map(function (acOrType) { return checkValidActionCreator(acOrType) ? getType(acOrType) @@ -157,13 +165,13 @@ function createReducer(initialState) { ? acOrType : throwInvalidActionTypeOrActionCreator(); }) - .forEach(function (type) { return (handlers[type] = actionsHandler); }); - return chainApi; + .forEach(function (type) { return (newReducers[type] = reducer); }); + return createReducer(initialState, __assign({}, reducers, newReducers)); }); - var chainApi = Object.assign(reducer, { - addHandler: addHandler, + return Object.assign(rootReducer, { + reducers: __assign({}, reducers), + handleAction: handleAction, }); - return chainApi; } function isOfType(actionTypeOrTypes, action) { diff --git a/codesandbox/src/typesafe-actions/index.js b/codesandbox/src/typesafe-actions/index.js index 8136b31..e42041f 100644 --- a/codesandbox/src/typesafe-actions/index.js +++ b/codesandbox/src/typesafe-actions/index.js @@ -2,6 +2,8 @@ Object.defineProperty(exports, '__esModule', { value: true }); +var tslib_1 = require('tslib'); + function checkIsEmpty(arg, argPosition) { if (argPosition === void 0) { argPosition = 1; } return arg == null; @@ -138,22 +140,28 @@ function getType(actionCreator) { return actionCreator.getType(); } -function createReducer(initialState) { - var handlers = {}; - var reducer = function (state, action) { +function createReducer(initialState, initialReducers) { + if (initialReducers === void 0) { initialReducers = {}; } + var reducers = tslib_1.__assign({}, initialReducers); + var rootReducer = function (state, action) { if (state === void 0) { state = initialState; } - if (handlers.hasOwnProperty(action.type)) { - return handlers[action.type](state, action); + if (reducers.hasOwnProperty(action.type)) { + var reducer = reducers[action.type]; + if (typeof reducer !== 'function') { + throw Error("Reducer under \"" + action.type + "\" key is not a valid reducer"); + } + return reducer(state, action); } else { return state; } }; - var addHandler = (function (actionsTypes, actionsHandler) { - var creatorsOrTypes = Array.isArray(actionsTypes) - ? actionsTypes - : [actionsTypes]; - creatorsOrTypes + var handleAction = (function (singleOrMultipleCreatorsAndTypes, reducer) { + var creatorsAndTypes = Array.isArray(singleOrMultipleCreatorsAndTypes) + ? singleOrMultipleCreatorsAndTypes + : [singleOrMultipleCreatorsAndTypes]; + var newReducers = {}; + creatorsAndTypes .map(function (acOrType) { return checkValidActionCreator(acOrType) ? getType(acOrType) @@ -161,13 +169,13 @@ function createReducer(initialState) { ? acOrType : throwInvalidActionTypeOrActionCreator(); }) - .forEach(function (type) { return (handlers[type] = actionsHandler); }); - return chainApi; + .forEach(function (type) { return (newReducers[type] = reducer); }); + return createReducer(initialState, tslib_1.__assign({}, reducers, newReducers)); }); - var chainApi = Object.assign(reducer, { - addHandler: addHandler, + return Object.assign(rootReducer, { + reducers: tslib_1.__assign({}, reducers), + handleAction: handleAction, }); - return chainApi; } function isOfType(actionTypeOrTypes, action) { diff --git a/codesandbox/src/typesafe-actions/index.umd.js b/codesandbox/src/typesafe-actions/index.umd.js index 3d1efe5..c69751c 100644 --- a/codesandbox/src/typesafe-actions/index.umd.js +++ b/codesandbox/src/typesafe-actions/index.umd.js @@ -1,2 +1,2 @@ -!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.TypesafeActions={})}(this,function(n){"use strict";function t(n,t){return void 0===t&&(t=1),null==n}function r(n){throw void 0===n&&(n=1),new Error("Argument "+n+" is empty.")}function e(n){return"function"==typeof n&&"getType"in n}function o(n){throw void 0===n&&(n=1),new Error("Argument "+n+' is invalid, it should be an action-creator instance from "typesafe-actions"')}function i(n,t){if(null==n)throw new Error("Argument contains array with empty element at index "+t);if(null==n.getType)throw new Error("Argument contains array with invalid element at index "+t+', it should be an action-creator instance from "typesafe-actions"')}function u(n){return"string"==typeof n||"symbol"==typeof n}function c(n){return!u(n)}function a(n){throw void 0===n&&(n=1),new Error("Argument "+n+" is invalid, it should be an action type of type: string | symbol")}function f(n,t){if(null==n)throw new Error("Argument contains array with empty element at index "+t);if("string"!=typeof n&&"symbol"!=typeof n)throw new Error("Argument contains array with invalid element at index "+t+", it should be of type: string | symbol")}function s(n,e,i,u){return t(n)&&r(1),c(n)&&o(1),{type:n,payload:e,meta:i,error:u}}function y(n,e){t(n)&&r(1),c(n)&&a(1);var o=null!=e?e(n):function(){return{type:n}};return Object.assign(o,{getType:function(){return n},toString:function(){return n}})}function p(n){return t(n)&&r(1),e(n)||o(1),n.getType()}n.action=s,n.createAction=function(n,t){var r=null==t?function(){return s(n)}:t(s.bind(null,n));return Object.assign(r,{getType:function(){return n},toString:function(){return n}})},n.createStandardAction=function(n){return t(n)&&r(1),c(n)&&a(1),Object.assign(function(){return y(n,function(n){return function(t,r){return{type:n,payload:t,meta:r}}})},{map:function(t){return y(n,function(n){return function(r,e){return Object.assign(t(r,e),{type:n})}})}})},n.createCustomAction=y,n.createAsyncAction=function(n,t,r){return[n,t,r].forEach(f),Object.assign(function(){return{request:y(n,function(n){return function(t){return{type:n,payload:t}}}),success:y(t,function(n){return function(t){return{type:n,payload:t}}}),failure:y(r,function(n){return function(t){return{type:n,payload:t}}})}})},n.createReducer=function(n){var t={},r=Object.assign(function(r,e){return void 0===r&&(r=n),t.hasOwnProperty(e.type)?t[e.type](r,e):r},{addHandler:function(n,o){return(Array.isArray(n)?n:[n]).map(function(n){return e(n)?p(n):u(n)?n:function(n){throw void 0===n&&(n=1),new Error("Argument "+n+' is invalid, it should be an action-creator instance from "typesafe-actions" or action type of type: string | symbol')}()}).forEach(function(n){return t[n]=o}),r}});return r},n.getType=p,n.isOfType=function(n,e){t(n)&&r(1);var o=Array.isArray(n)?n:[n];o.forEach(f);var i=function(n){return o.includes(n.type)};return void 0===e?i:i(e)},n.isActionOf=function(n,e){t(n)&&r(1);var o=Array.isArray(n)?n:[n];o.forEach(i);var u=function(n){return o.some(function(t){return n.type===t.getType()})};return void 0===e?u:u(e)},n.createActionDeprecated=function(n,t){var r;if(null!=t){if("function"!=typeof t)throw new Error("second argument is not a function");r=t}else r=function(){return{type:n}};if(null==n)throw new Error("first argument is missing");if("string"!=typeof n&&"symbol"!=typeof n)throw new Error("first argument should be type of: string | symbol");return r},Object.defineProperty(n,"__esModule",{value:!0})}); +!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.TypesafeActions={})}(this,function(n){"use strict";function t(n,t){return void 0===t&&(t=1),null==n}function r(n){throw void 0===n&&(n=1),new Error("Argument "+n+" is empty.")}function e(n){return"function"==typeof n&&"getType"in n}function o(n){throw void 0===n&&(n=1),new Error("Argument "+n+' is invalid, it should be an action-creator instance from "typesafe-actions"')}function i(n,t){if(null==n)throw new Error("Argument contains array with empty element at index "+t);if(null==n.getType)throw new Error("Argument contains array with invalid element at index "+t+', it should be an action-creator instance from "typesafe-actions"')}function u(n){return"string"==typeof n||"symbol"==typeof n}function c(n){return!u(n)}function a(n){throw void 0===n&&(n=1),new Error("Argument "+n+" is invalid, it should be an action type of type: string | symbol")}function f(n,t){if(null==n)throw new Error("Argument contains array with empty element at index "+t);if("string"!=typeof n&&"symbol"!=typeof n)throw new Error("Argument contains array with invalid element at index "+t+", it should be of type: string | symbol")}function s(n,e,i,u){return t(n)&&r(1),c(n)&&o(1),{type:n,payload:e,meta:i,error:u}}function y(n,e){t(n)&&r(1),c(n)&&a(1);var o=null!=e?e(n):function(){return{type:n}};return Object.assign(o,{getType:function(){return n},toString:function(){return n}})}var p=function(){return(p=Object.assign||function(n){for(var t,r=1,e=arguments.length;r {\n return typeof arg === 'function' && 'getType' in arg;\n}\n\nexport function checkInvalidActionCreator(arg: unknown) {\n return !checkValidActionCreator(arg);\n}\n\nexport function throwInvalidActionCreator(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\"`\n );\n}\n\nexport function checkInvalidActionCreatorInArray(\n arg: ActionCreator & TypeMeta,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (arg.getType == null) {\n throw new Error(\n // tslint:disable-next-line:max-line-length\n `Argument contains array with invalid element at index ${idx}, it should be an action-creator instance from \"typesafe-actions\"`\n );\n }\n}\n\nexport function checkValidActionType(arg: unknown): arg is string | symbol {\n return typeof arg === 'string' || typeof arg === 'symbol';\n}\n\nexport function checkInvalidActionType(arg: unknown): arg is string | symbol {\n return !checkValidActionType(arg);\n}\n\nexport function throwInvalidActionType(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action type of type: string | symbol`\n );\n}\n\nexport function checkInvalidActionTypeInArray(\n arg: TypeConstant,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (typeof arg !== 'string' && typeof arg !== 'symbol') {\n throw new Error(\n `Argument contains array with invalid element at index ${idx}, it should be of type: string | symbol`\n );\n }\n}\n\nexport function throwInvalidActionTypeOrActionCreator(\n argPosition: number = 1\n): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\" or action type of type: string | symbol`\n );\n}\n","import { TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionCreator,\n} from './utils/validation';\n\nexport function action(\n type: T,\n payload: undefined,\n meta: undefined,\n error: E\n): { type: T; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M,\n error: E\n): { type: T; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: undefined,\n error: E\n): { type: T; payload: P; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: M,\n error: E\n): { type: T; payload: P; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M\n): { type: T; meta: M };\n\nexport function action(\n type: T,\n payload: P,\n meta: M\n): { type: T; payload: P; meta: M };\n\nexport function action(\n type: T,\n payload: P\n): { type: T; payload: P };\n\nexport function action(type: T): { type: T };\n\n/**\n * @description flux standard action factory\n * @example\n * ```\n * const add = (amount: number, meta?: MetaShape) => action('INCREMENT', amount, meta);\n * ```\n */\nexport function action<\n T extends TypeConstant,\n P = undefined,\n M = undefined,\n E = undefined\n>(type: T, payload?: P, meta?: M, error?: E) {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionCreator(1);\n }\n\n return { type, payload, meta, error } as any;\n}\n","import { ActionCreator, TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\n/**\n * @description create custom action-creator using constructor function with injected type argument\n */\nexport function createCustomAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(type: T, createHandler?: (type: T) => AC): AC {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n const actionCreator: AC =\n createHandler != null ? createHandler(type) : ((() => ({ type })) as AC);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import { TypeConstant, ActionCreator, TypeMeta } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionCreator,\n throwInvalidActionCreator,\n} from './utils/validation';\n\n/**\n * @description get the \"type literal\" of a given action-creator\n */\nexport function getType(\n actionCreator: ActionCreator & TypeMeta\n): T {\n if (checkIsEmpty(actionCreator)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionCreator(actionCreator)) {\n throwInvalidActionCreator(1);\n }\n\n return actionCreator.getType!();\n}\n","import { TypeConstant, ActionCreator } from './type-helpers';\nimport { action } from './action';\n\nexport type PayloadMetaAction<\n T extends TypeConstant,\n P,\n M\n> = P extends undefined\n ? M extends undefined\n ? { type: T }\n : { type: T; meta: M }\n : M extends undefined\n ? { type: T; payload: P }\n : { type: T; payload: P; meta: M };\n\n/**\n * @description typesafe action-creator factory\n */\nexport function createAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(\n type: T,\n createHandler?: (\n actionCallback:

(\n payload?: P,\n meta?: M\n ) => PayloadMetaAction\n ) => AC\n): AC {\n // validation is already done in action function\n\n const actionCreator: AC =\n createHandler == null\n ? ((() => action(type)) as AC)\n : createHandler(action.bind(null, type) as Parameters<\n typeof createHandler\n >[0]);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\nexport interface ActionBuilder {\n

(): ActionBuilderConstructor;\n map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap;\n}\n\n/**\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createStandardAction(\n type: T\n): ActionBuilder {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n function constructor(): ActionBuilderConstructor {\n return createCustomAction(type, _type => (payload: P, meta: M) => ({\n type: _type,\n payload,\n meta,\n })) as ActionBuilderConstructor;\n }\n\n function map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap {\n return createCustomAction(type, _type => (payload: P, meta: M) =>\n Object.assign(fn(payload, meta), { type: _type })\n ) as ActionBuilderMap;\n }\n\n return Object.assign(constructor, { map });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n // ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport { checkInvalidActionTypeInArray } from './utils/validation';\n\nexport interface AsyncActionBuilder<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n> {\n // tslint:disable-next-line:callable-types\n (): AsyncActionBuilderConstructor;\n // withMappers(\n // requestMapper: (a?: A1) => P1,\n // successMapper: (a?: A2) => P2,\n // failureMapper: (a?: A3) => P3\n // ): AsyncActionBuilderWithMappers;\n}\n\nexport type AsyncActionBuilderConstructor<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant,\n P1,\n P2,\n P3\n> = {\n request: ActionBuilderConstructor;\n success: ActionBuilderConstructor;\n failure: ActionBuilderConstructor;\n};\n\n/**\n * implementation\n */\nexport function createAsyncAction<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n>(\n requestType: T1,\n successType: T2,\n failureType: T3\n): AsyncActionBuilder {\n [requestType, successType, failureType].forEach(\n checkInvalidActionTypeInArray\n );\n\n function constructor(): AsyncActionBuilderConstructor<\n T1,\n T2,\n T3,\n P1,\n P2,\n P3\n > {\n return {\n request: createCustomAction(requestType, type => (payload?: P1) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n success: createCustomAction(successType, type => (payload?: P2) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n failure: createCustomAction(failureType, type => (payload?: P3) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n };\n }\n\n return Object.assign(constructor);\n}\n\n// export type AsyncActionBuilderWithMappers<\n// T1 extends StringType,\n// T2 extends StringType,\n// T3 extends StringType,\n// A1 = undefined,\n// P1 = undefined,\n// A2 = undefined,\n// P2 = undefined,\n// A3 = undefined,\n// P3 = undefined\n// > = {\n// request: ActionBuilderMap;\n// success: ActionBuilderMap;\n// failure: ActionBuilderMap;\n// };\n\n// function withMappers(\n// requestMapper: (a?: A1) => P1,\n// successMapper: (a?: A2) => P2,\n// failureMapper: (a?: A3) => P3\n// ): AsyncActionBuilderWithMappers {\n// return {\n// request: createCustomAction(requestType, type => (payload?: A1) => ({\n// type,\n// payload: requestMapper != null ? requestMapper(payload) : undefined,\n// })) as MapBuilder,\n// success: createCustomAction(successType, type => (payload?: A2) => ({\n// type,\n// payload: successMapper != null ? successMapper(payload) : undefined,\n// })) as MapBuilder,\n// failure: createCustomAction(failureType, type => (payload?: A3) => ({\n// type,\n// payload: failureMapper != null ? failureMapper(payload) : undefined,\n// })) as MapBuilder,\n// };\n// }\n","// @ts-ignore\nimport { RootAction } from './';\nimport { getType } from './get-type';\nimport {\n checkValidActionCreator,\n checkValidActionType,\n throwInvalidActionTypeOrActionCreator,\n} from './utils/validation';\nimport { Reducer, Action } from './type-helpers';\n\ntype AddHandler<\n S,\n TAllActions extends Action,\n TNotHandledActions extends Action\n> = <\n TType extends TNotHandledActions['type'],\n TTypeAction extends TNotHandledActions extends { type: TType }\n ? TNotHandledActions\n : never,\n TCreator extends (...args: any[]) => TNotHandledActions,\n TCreatorAction extends TNotHandledActions extends ReturnType\n ? TNotHandledActions\n : never,\n TActionIntersection extends TTypeAction extends TCreatorAction\n ? TTypeAction\n : never\n>(\n actionsTypes: TType | TCreator | TType[] | TCreator[],\n actionsHandler: (state: S, action: TActionIntersection) => S\n) => Exclude extends never\n ? Reducer\n : Reducer & {\n addHandler: AddHandler<\n S,\n TAllActions,\n Exclude\n >;\n };\n\nexport function createReducer(\n initialState: S\n) {\n const handlers: Record S> = {};\n\n const reducer: Reducer = (state = initialState, action) => {\n if (handlers.hasOwnProperty(action.type)) {\n return handlers[action.type](state, action);\n } else {\n return state;\n }\n };\n\n const addHandler = ((actionsTypes, actionsHandler) => {\n const creatorsOrTypes = Array.isArray(actionsTypes)\n ? actionsTypes\n : [actionsTypes];\n\n creatorsOrTypes\n .map(acOrType =>\n checkValidActionCreator(acOrType)\n ? getType(acOrType)\n : checkValidActionType(acOrType)\n ? acOrType\n : throwInvalidActionTypeOrActionCreator()\n )\n .forEach(type => (handlers[type] = actionsHandler));\n\n return chainApi;\n }) as AddHandler;\n\n const chainApi: Reducer & {\n addHandler: AddHandler;\n } = Object.assign(reducer, {\n addHandler,\n });\n\n return chainApi;\n}\n","import {\n checkInvalidActionTypeInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[],\n action: A\n): action is A extends { type: T } ? A : never;\n\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[]\n): (\n action: A\n) => action is A extends { type: T } ? A : never;\n\n/**\n * implementation\n */\nexport function isOfType(\n actionTypeOrTypes: T | T[],\n action?: A\n) {\n if (checkIsEmpty(actionTypeOrTypes)) {\n throwIsEmpty(1);\n }\n\n const actionTypes = Array.isArray(actionTypeOrTypes)\n ? actionTypeOrTypes\n : [actionTypeOrTypes];\n\n actionTypes.forEach(checkInvalidActionTypeInArray);\n\n const assertFn = (_action: A) => actionTypes.includes(_action.type);\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","import { TypeMeta } from './type-helpers';\nimport {\n checkInvalidActionCreatorInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n\nexport type ActionCreator = ((\n ...args: any[]\n) => T) &\n TypeMeta;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[],\n action: { type: string }\n): action is ReturnType;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[]\n): (action: { type: string }) => action is ReturnType;\n\n/**\n * implementation\n */\nexport function isActionOf>(\n actionCreatorOrCreators: AC | AC[],\n action?: { type: string }\n) {\n if (checkIsEmpty(actionCreatorOrCreators)) {\n throwIsEmpty(1);\n }\n\n const actionCreators = Array.isArray(actionCreatorOrCreators)\n ? actionCreatorOrCreators\n : [actionCreatorOrCreators];\n\n actionCreators.forEach(checkInvalidActionCreatorInArray);\n\n const assertFn = (_action: { type: string }) =>\n actionCreators.some(\n actionCreator => _action.type === actionCreator.getType!()\n );\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","/**\n * DEPRECATED\n */\n\nimport { TypeConstant } from './type-helpers';\n\ninterface FSA {\n type: T;\n payload?: P;\n meta?: M;\n error?: E;\n}\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction: AC): AC;\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends () => { type: T }\n>(actionType: T): AC;\n\n/**\n * implementation\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction?: AC): AC {\n let actionCreator: AC;\n\n if (creatorFunction != null) {\n if (typeof creatorFunction !== 'function') {\n throw new Error('second argument is not a function');\n }\n\n actionCreator = creatorFunction as AC;\n } else {\n actionCreator = (() => ({ type: actionType })) as AC;\n }\n\n if (actionType != null) {\n if (typeof actionType !== 'string' && typeof actionType !== 'symbol') {\n throw new Error('first argument should be type of: string | symbol');\n }\n } else {\n throw new Error('first argument is missing');\n }\n\n return actionCreator;\n}\n"],"names":["checkIsEmpty","arg","argPosition","throwIsEmpty","Error","checkValidActionCreator","throwInvalidActionCreator","checkInvalidActionCreatorInArray","idx","getType","checkValidActionType","checkInvalidActionType","throwInvalidActionType","checkInvalidActionTypeInArray","action","type","payload","meta","error","createCustomAction","createHandler","actionCreator","Object","assign","toString","bind","_type","map","fn","requestType","successType","failureType","forEach","request","success","failure","initialState","handlers","chainApi","state","hasOwnProperty","addHandler","actionsTypes","actionsHandler","Array","isArray","acOrType","throwInvalidActionTypeOrActionCreator","actionTypeOrTypes","actionTypes","assertFn","_action","includes","undefined","actionCreatorOrCreators","actionCreators","some","actionType","creatorFunction"],"mappings":"2MAEgBA,EAAaC,EAAcC,GACzC,oBADyCA,KAC3B,MAAPD,WAGOE,EAAaD,GAC3B,mBAD2BA,KACrB,IAAIE,MAAM,YAAYF,yBAGdG,EACdJ,GAEA,MAAsB,mBAARA,GAAsB,YAAaA,WAOnCK,EAA0BJ,GACxC,mBADwCA,KAClC,IAAIE,MACR,YAAYF,2FAIAK,EACdN,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,MAAfP,EAAIQ,QACb,MAAM,IAAIL,MAER,yDAAyDI,gFAK/CE,EAAqBT,GACnC,MAAsB,iBAARA,GAAmC,iBAARA,WAG3BU,EAAuBV,GACrC,OAAQS,EAAqBT,YAGfW,EAAuBV,GACrC,mBADqCA,KAC/B,IAAIE,MACR,YAAYF,gFAIAW,EACdZ,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,iBAARP,GAAmC,iBAARA,EAC3C,MAAM,IAAIG,MACR,yDAAyDI,sDCJ/CM,EAKdC,EAASC,EAAaC,EAAUC,GAShC,OARIlB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBT,EAA0B,IAGnBS,OAAMC,UAASC,OAAMC,kBCjEhBC,EAGdJ,EAASK,GACLpB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAGzB,IAAMS,EACa,MAAjBD,EAAwBA,EAAcL,cAAgB,OAAGA,SAE3D,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,cClBJN,EACdY,GAUA,OARIrB,EAAaqB,IACflB,EAAa,GHEPE,EGCsBgB,IAC5Bf,EAA0B,GAGrBe,EAAcZ,6CCArBM,EACAK,GASA,IAAMC,EACa,MAAjBD,aACY,OAAAN,EAAOC,IACfK,EAAcN,EAAOW,KAAK,KAAMV,IAItC,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,sCClBlBA,GA0BA,OAxBIf,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAmBlBU,OAAOC,OAhBd,WACE,OAAOJ,EAAmBJ,EAAM,SAAAW,GAAS,OAAA,SAACV,EAAYC,GAAY,OAChEF,KAAMW,EACNV,UACAC,aAYgCU,IARpC,SACEC,GAEA,OAAOT,EAAmBJ,EAAM,SAAAW,GAAS,OAAA,SAACV,EAAYC,GACpD,OAAAK,OAAOC,OAAOK,EAAGZ,EAASC,IAASF,KAAMW,+DCH7CG,EACAC,EACAC,GA8BA,OA5BCF,EAAaC,EAAaC,GAAaC,QACtCnB,GA2BKS,OAAOC,OAxBd,WAQE,OACEU,QAASd,EAAmBU,EAAa,SAAAd,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFkB,QAASf,EAAmBW,EAAa,SAAAf,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFmB,QAAShB,EAAmBY,EAAa,SAAAhB,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,2CC9BNoB,GAEA,IAAMC,KA4BAC,EAEFhB,OAAOC,OA5BoB,SAACgB,EAAsBzB,GACpD,oBAD8ByB,KAC1BF,EAASG,eAAe1B,EAAOC,MAC1BsB,EAASvB,EAAOC,MAAMwB,EAAOzB,GAE7ByB,IAyBTE,oBArBmBC,EAAcC,GAejC,OAdwBC,MAAMC,QAAQH,GAClCA,GACCA,IAGFf,IAAI,SAAAmB,GACH,OAAAzC,EAAwByC,GACpBrC,EAAQqC,GACRpC,EAAqBoC,GACrBA,WPUV5C,GAEA,mBAFAA,KAEM,IAAIE,MACR,YAAYF,0HOZJ6C,KAELf,QAAQ,SAAAjB,GAAQ,OAACsB,EAAStB,GAAQ4B,IAE9BL,KAST,OAAOA,mCChDPU,EACAlC,GAEId,EAAagD,IACf7C,EAAa,GAGf,IAAM8C,EAAcL,MAAMC,QAAQG,GAC9BA,GACCA,GAELC,EAAYjB,QAAQnB,GAEpB,IAAMqC,EAAW,SAACC,GAAe,OAAAF,EAAYG,SAASD,EAAQpC,OAG9D,YAAesC,IAAXvC,EACKoC,EAGFA,EAASpC,0BCfhBwC,EACAxC,GAEId,EAAasD,IACfnD,EAAa,GAGf,IAAMoD,EAAiBX,MAAMC,QAAQS,GACjCA,GACCA,GAELC,EAAevB,QAAQzB,GAEvB,IAAM2C,EAAW,SAACC,GAChB,OAAAI,EAAeC,KACb,SAAAnC,GAAiB,OAAA8B,EAAQpC,OAASM,EAAcZ,aAIpD,YAAe4C,IAAXvC,EACKoC,EAGFA,EAASpC,sCCnBhB2C,EAAeC,GACf,IAAIrC,EAEJ,GAAuB,MAAnBqC,EAAyB,CAC3B,GAA+B,mBAApBA,EACT,MAAM,IAAItD,MAAM,qCAGlBiB,EAAgBqC,OAEhBrC,aAAuB,OAAGN,KAAM0C,IAGlC,GAAkB,MAAdA,EAKF,MAAM,IAAIrD,MAAM,6BAJhB,GAA0B,iBAAfqD,GAAiD,iBAAfA,EAC3C,MAAM,IAAIrD,MAAM,qDAMpB,OAAOiB"} \ No newline at end of file +{"version":3,"file":"index.umd.js","sources":["../src/utils/validation.ts","../src/action.ts","../src/create-custom-action.ts","../node_modules/tslib/tslib.es6.js","../src/get-type.ts","../src/create-action.ts","../src/create-standard-action.ts","../src/create-async-action.ts","../src/create-reducer.ts","../src/is-of-type.ts","../src/is-action-of.ts","../src/create-action-deprecated.ts"],"sourcesContent":["import { ActionCreator, TypeMeta, TypeConstant } from '../type-helpers';\n\nexport function checkIsEmpty(arg: unknown, argPosition: number = 1) {\n return arg == null;\n}\n\nexport function throwIsEmpty(argPosition: number = 1): never {\n throw new Error(`Argument ${argPosition} is empty.`);\n}\n\nexport function checkValidActionCreator(\n arg: unknown\n): arg is ActionCreator {\n return typeof arg === 'function' && 'getType' in arg;\n}\n\nexport function checkInvalidActionCreator(arg: unknown) {\n return !checkValidActionCreator(arg);\n}\n\nexport function throwInvalidActionCreator(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\"`\n );\n}\n\nexport function checkInvalidActionCreatorInArray(\n arg: ActionCreator & TypeMeta,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (arg.getType == null) {\n throw new Error(\n // tslint:disable-next-line:max-line-length\n `Argument contains array with invalid element at index ${idx}, it should be an action-creator instance from \"typesafe-actions\"`\n );\n }\n}\n\nexport function checkValidActionType(arg: unknown): arg is string | symbol {\n return typeof arg === 'string' || typeof arg === 'symbol';\n}\n\nexport function checkInvalidActionType(arg: unknown): arg is string | symbol {\n return !checkValidActionType(arg);\n}\n\nexport function throwInvalidActionType(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action type of type: string | symbol`\n );\n}\n\nexport function checkInvalidActionTypeInArray(\n arg: TypeConstant,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (typeof arg !== 'string' && typeof arg !== 'symbol') {\n throw new Error(\n `Argument contains array with invalid element at index ${idx}, it should be of type: string | symbol`\n );\n }\n}\n\nexport function throwInvalidActionTypeOrActionCreator(\n argPosition: number = 1\n): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\" or action type of type: string | symbol`\n );\n}\n","import { TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionCreator,\n} from './utils/validation';\n\nexport function action(\n type: T,\n payload: undefined,\n meta: undefined,\n error: E\n): { type: T; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M,\n error: E\n): { type: T; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: undefined,\n error: E\n): { type: T; payload: P; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: M,\n error: E\n): { type: T; payload: P; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M\n): { type: T; meta: M };\n\nexport function action(\n type: T,\n payload: P,\n meta: M\n): { type: T; payload: P; meta: M };\n\nexport function action(\n type: T,\n payload: P\n): { type: T; payload: P };\n\nexport function action(type: T): { type: T };\n\n/**\n * @description flux standard action factory\n * @example\n * ```\n * const add = (amount: number, meta?: MetaShape) => action('INCREMENT', amount, meta);\n * ```\n */\nexport function action<\n T extends TypeConstant,\n P = undefined,\n M = undefined,\n E = undefined\n>(type: T, payload?: P, meta?: M, error?: E) {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionCreator(1);\n }\n\n return { type, payload, meta, error } as any;\n}\n","import { ActionCreator, TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\n/**\n * @description create custom action-creator using constructor function with injected type argument\n */\nexport function createCustomAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(type: T, createHandler?: (type: T) => AC): AC {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n const actionCreator: AC =\n createHandler != null ? createHandler(type) : ((() => ({ type })) as AC);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { TypeConstant, ActionCreator, TypeMeta } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionCreator,\n throwInvalidActionCreator,\n} from './utils/validation';\n\n/**\n * @description get the \"type literal\" of a given action-creator\n */\nexport function getType(\n actionCreator: ActionCreator & TypeMeta\n): T {\n if (checkIsEmpty(actionCreator)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionCreator(actionCreator)) {\n throwInvalidActionCreator(1);\n }\n\n return actionCreator.getType!();\n}\n","import { TypeConstant, ActionCreator } from './type-helpers';\nimport { action } from './action';\n\nexport type PayloadMetaAction<\n T extends TypeConstant,\n P,\n M\n> = P extends undefined\n ? M extends undefined\n ? { type: T }\n : { type: T; meta: M }\n : M extends undefined\n ? { type: T; payload: P }\n : { type: T; payload: P; meta: M };\n\n/**\n * @description typesafe action-creator factory\n */\nexport function createAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(\n type: T,\n createHandler?: (\n actionCallback:

(\n payload?: P,\n meta?: M\n ) => PayloadMetaAction\n ) => AC\n): AC {\n // validation is already done in action function\n\n const actionCreator: AC =\n createHandler == null\n ? ((() => action(type)) as AC)\n : createHandler(action.bind(null, type) as Parameters<\n typeof createHandler\n >[0]);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\nexport interface ActionBuilder {\n

(): ActionBuilderConstructor;\n map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap;\n}\n\n/**\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createStandardAction(\n type: T\n): ActionBuilder {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n function constructor(): ActionBuilderConstructor {\n return createCustomAction(type, _type => (payload: P, meta: M) => ({\n type: _type,\n payload,\n meta,\n })) as ActionBuilderConstructor;\n }\n\n function map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap {\n return createCustomAction(type, _type => (payload: P, meta: M) =>\n Object.assign(fn(payload, meta), { type: _type })\n ) as ActionBuilderMap;\n }\n\n return Object.assign(constructor, { map });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n // ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport { checkInvalidActionTypeInArray } from './utils/validation';\n\nexport interface AsyncActionBuilder<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n> {\n // tslint:disable-next-line:callable-types\n (): AsyncActionBuilderConstructor;\n // withMappers(\n // requestMapper: (a?: A1) => P1,\n // successMapper: (a?: A2) => P2,\n // failureMapper: (a?: A3) => P3\n // ): AsyncActionBuilderWithMappers;\n}\n\nexport type AsyncActionBuilderConstructor<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant,\n P1,\n P2,\n P3\n> = {\n request: ActionBuilderConstructor;\n success: ActionBuilderConstructor;\n failure: ActionBuilderConstructor;\n};\n\n/**\n * implementation\n */\nexport function createAsyncAction<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n>(\n requestType: T1,\n successType: T2,\n failureType: T3\n): AsyncActionBuilder {\n [requestType, successType, failureType].forEach(\n checkInvalidActionTypeInArray\n );\n\n function constructor(): AsyncActionBuilderConstructor<\n T1,\n T2,\n T3,\n P1,\n P2,\n P3\n > {\n return {\n request: createCustomAction(requestType, type => (payload?: P1) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n success: createCustomAction(successType, type => (payload?: P2) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n failure: createCustomAction(failureType, type => (payload?: P3) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n };\n }\n\n return Object.assign(constructor);\n}\n\n// export type AsyncActionBuilderWithMappers<\n// T1 extends StringType,\n// T2 extends StringType,\n// T3 extends StringType,\n// A1 = undefined,\n// P1 = undefined,\n// A2 = undefined,\n// P2 = undefined,\n// A3 = undefined,\n// P3 = undefined\n// > = {\n// request: ActionBuilderMap;\n// success: ActionBuilderMap;\n// failure: ActionBuilderMap;\n// };\n\n// function withMappers(\n// requestMapper: (a?: A1) => P1,\n// successMapper: (a?: A2) => P2,\n// failureMapper: (a?: A3) => P3\n// ): AsyncActionBuilderWithMappers {\n// return {\n// request: createCustomAction(requestType, type => (payload?: A1) => ({\n// type,\n// payload: requestMapper != null ? requestMapper(payload) : undefined,\n// })) as MapBuilder,\n// success: createCustomAction(successType, type => (payload?: A2) => ({\n// type,\n// payload: successMapper != null ? successMapper(payload) : undefined,\n// })) as MapBuilder,\n// failure: createCustomAction(failureType, type => (payload?: A3) => ({\n// type,\n// payload: failureMapper != null ? failureMapper(payload) : undefined,\n// })) as MapBuilder,\n// };\n// }\n","// @ts-ignore\nimport { RootAction } from './';\nimport { getType } from './get-type';\nimport {\n checkValidActionCreator,\n checkValidActionType,\n throwInvalidActionTypeOrActionCreator,\n} from './utils/validation';\nimport { Reducer, Action } from './type-helpers';\n\ntype HandleActionChainApi<\n TState,\n TNotHandledAction extends Action,\n TRootAction extends Action\n> = <\n TType extends TNotHandledAction['type'],\n TTypeAction extends TNotHandledAction extends { type: TType }\n ? TNotHandledAction\n : never,\n TCreator extends (...args: any[]) => TNotHandledAction,\n TCreatorAction extends TNotHandledAction extends ReturnType\n ? TNotHandledAction\n : never,\n TActionIntersection extends TTypeAction extends TCreatorAction\n ? TTypeAction\n : never\n>(\n singleOrMultipleCreatorsAndTypes: TType | TType[] | TCreator | TCreator[],\n reducer: (state: TState, action: TActionIntersection) => TState\n) => [Exclude] extends [never]\n ? Reducer & {\n reducers: Record<\n TActionIntersection['type'],\n (state: TState, action: TRootAction) => TState\n >;\n }\n : Reducer & {\n reducers: Record<\n TActionIntersection['type'],\n (state: TState, action: TRootAction) => TState\n >;\n handleAction: HandleActionChainApi<\n TState,\n Exclude,\n TNotHandledAction\n >;\n };\n\nexport function createReducer(\n initialState: TState,\n initialReducers: Record<\n RootAction['type'],\n (state: TState, action: RootAction) => TState\n > = {}\n) {\n const reducers = { ...initialReducers };\n\n const rootReducer: Reducer = (\n state = initialState,\n action\n ) => {\n if (reducers.hasOwnProperty(action.type)) {\n const reducer = reducers[action.type];\n if (typeof reducer !== 'function') {\n throw Error(\n `Reducer under \"${action.type}\" key is not a valid reducer`\n );\n }\n return reducer(state, action);\n } else {\n return state;\n }\n };\n\n const handleAction = ((singleOrMultipleCreatorsAndTypes, reducer) => {\n const creatorsAndTypes = Array.isArray(singleOrMultipleCreatorsAndTypes)\n ? singleOrMultipleCreatorsAndTypes\n : [singleOrMultipleCreatorsAndTypes];\n\n const newReducers: typeof initialReducers = {};\n creatorsAndTypes\n .map(acOrType =>\n checkValidActionCreator(acOrType)\n ? getType(acOrType)\n : checkValidActionType(acOrType)\n ? acOrType\n : throwInvalidActionTypeOrActionCreator()\n )\n .forEach(type => (newReducers[type] = reducer));\n\n return createReducer(initialState, {\n ...reducers,\n ...newReducers,\n });\n }) as HandleActionChainApi;\n\n return Object.assign(rootReducer, {\n reducers: { ...reducers },\n handleAction,\n } as const);\n}\n","import {\n checkInvalidActionTypeInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[],\n action: A\n): action is A extends { type: T } ? A : never;\n\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[]\n): (\n action: A\n) => action is A extends { type: T } ? A : never;\n\n/**\n * implementation\n */\nexport function isOfType(\n actionTypeOrTypes: T | T[],\n action?: A\n) {\n if (checkIsEmpty(actionTypeOrTypes)) {\n throwIsEmpty(1);\n }\n\n const actionTypes = Array.isArray(actionTypeOrTypes)\n ? actionTypeOrTypes\n : [actionTypeOrTypes];\n\n actionTypes.forEach(checkInvalidActionTypeInArray);\n\n const assertFn = (_action: A) => actionTypes.includes(_action.type);\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","import { TypeMeta } from './type-helpers';\nimport {\n checkInvalidActionCreatorInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n\nexport type ActionCreator = ((\n ...args: any[]\n) => T) &\n TypeMeta;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[],\n action: { type: string }\n): action is ReturnType;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[]\n): (action: { type: string }) => action is ReturnType;\n\n/**\n * implementation\n */\nexport function isActionOf>(\n actionCreatorOrCreators: AC | AC[],\n action?: { type: string }\n) {\n if (checkIsEmpty(actionCreatorOrCreators)) {\n throwIsEmpty(1);\n }\n\n const actionCreators = Array.isArray(actionCreatorOrCreators)\n ? actionCreatorOrCreators\n : [actionCreatorOrCreators];\n\n actionCreators.forEach(checkInvalidActionCreatorInArray);\n\n const assertFn = (_action: { type: string }) =>\n actionCreators.some(\n actionCreator => _action.type === actionCreator.getType!()\n );\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","/**\n * DEPRECATED\n */\n\nimport { TypeConstant } from './type-helpers';\n\ninterface FSA {\n type: T;\n payload?: P;\n meta?: M;\n error?: E;\n}\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction: AC): AC;\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends () => { type: T }\n>(actionType: T): AC;\n\n/**\n * implementation\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction?: AC): AC {\n let actionCreator: AC;\n\n if (creatorFunction != null) {\n if (typeof creatorFunction !== 'function') {\n throw new Error('second argument is not a function');\n }\n\n actionCreator = creatorFunction as AC;\n } else {\n actionCreator = (() => ({ type: actionType })) as AC;\n }\n\n if (actionType != null) {\n if (typeof actionType !== 'string' && typeof actionType !== 'symbol') {\n throw new Error('first argument should be type of: string | symbol');\n }\n } else {\n throw new Error('first argument is missing');\n }\n\n return actionCreator;\n}\n"],"names":["checkIsEmpty","arg","argPosition","throwIsEmpty","Error","checkValidActionCreator","throwInvalidActionCreator","checkInvalidActionCreatorInArray","idx","getType","checkValidActionType","checkInvalidActionType","throwInvalidActionType","checkInvalidActionTypeInArray","action","type","payload","meta","error","createCustomAction","createHandler","actionCreator","Object","assign","toString","__assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","bind","_type","map","fn","requestType","successType","failureType","forEach","request","success","failure","createReducer","initialState","initialReducers","reducers","state","reducer","handleAction","singleOrMultipleCreatorsAndTypes","newReducers","Array","isArray","acOrType","throwInvalidActionTypeOrActionCreator","actionTypeOrTypes","actionTypes","assertFn","_action","includes","undefined","actionCreatorOrCreators","actionCreators","some","actionType","creatorFunction"],"mappings":"2MAEgBA,EAAaC,EAAcC,GACzC,oBADyCA,KAC3B,MAAPD,WAGOE,EAAaD,GAC3B,mBAD2BA,KACrB,IAAIE,MAAM,YAAYF,yBAGdG,EACdJ,GAEA,MAAsB,mBAARA,GAAsB,YAAaA,WAOnCK,EAA0BJ,GACxC,mBADwCA,KAClC,IAAIE,MACR,YAAYF,2FAIAK,EACdN,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,MAAfP,EAAIQ,QACb,MAAM,IAAIL,MAER,yDAAyDI,gFAK/CE,EAAqBT,GACnC,MAAsB,iBAARA,GAAmC,iBAARA,WAG3BU,EAAuBV,GACrC,OAAQS,EAAqBT,YAGfW,EAAuBV,GACrC,mBADqCA,KAC/B,IAAIE,MACR,YAAYF,gFAIAW,EACdZ,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,iBAARP,GAAmC,iBAARA,EAC3C,MAAM,IAAIG,MACR,yDAAyDI,sDCJ/CM,EAKdC,EAASC,EAAaC,EAAUC,GAShC,OARIlB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBT,EAA0B,IAGnBS,OAAMC,UAASC,OAAMC,kBCjEhBC,EAGdJ,EAASK,GACLpB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAGzB,IAAMS,EACa,MAAjBD,EAAwBA,EAAcL,cAAgB,OAAGA,SAE3D,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,KCAb,IAAIU,EAAW,WAQlB,OAPAA,EAAWH,OAAOC,QAAU,SAAkBG,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACON,OAAOW,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAE9E,OAAON,IAEKU,MAAMC,KAAMP,qBC1BhBrB,EACdY,GAUA,OARIrB,EAAaqB,IACflB,EAAa,GJEPE,EICsBgB,IAC5Bf,EAA0B,GAGrBe,EAAcZ,6CCArBM,EACAK,GASA,IAAMC,EACa,MAAjBD,aACY,OAAAN,EAAOC,IACfK,EAAcN,EAAOwB,KAAK,KAAMvB,IAItC,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,sCClBlBA,GA0BA,OAxBIf,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAmBlBU,OAAOC,OAhBd,WACE,OAAOJ,EAAmBJ,EAAM,SAAAwB,GAAS,OAAA,SAACvB,EAAYC,GAAY,OAChEF,KAAMwB,EACNvB,UACAC,aAYgCuB,IARpC,SACEC,GAEA,OAAOtB,EAAmBJ,EAAM,SAAAwB,GAAS,OAAA,SAACvB,EAAYC,GACpD,OAAAK,OAAOC,OAAOkB,EAAGzB,EAASC,IAASF,KAAMwB,+DCH7CG,EACAC,EACAC,GA8BA,OA5BCF,EAAaC,EAAaC,GAAaC,QACtChC,GA2BKS,OAAOC,OAxBd,WAQE,OACEuB,QAAS3B,EAAmBuB,EAAa,SAAA3B,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEF+B,QAAS5B,EAAmBwB,EAAa,SAAA5B,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFgC,QAAS7B,EAAmByB,EAAa,SAAA7B,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,2CCtBQiC,EACdC,EACAC,gBAAAA,MAKA,IAAMC,OAAgBD,GAyCtB,OAAO7B,OAAOC,OAvCoC,SAChD8B,EACAvC,GAEA,gBAHAuC,KAGID,EAASlB,eAAepB,EAAOC,MAAO,CACxC,IAAMuC,EAAUF,EAAStC,EAAOC,MAChC,GAAuB,mBAAZuC,EACT,MAAMlD,MACJ,kBAAkBU,EAAOC,qCAG7B,OAAOuC,EAAQD,EAAOvC,GAEtB,OAAOuC,IA2BTD,cAAeA,GACfG,sBAxBqBC,EAAkCF,GACvD,IAIMG,KAWN,OAfyBC,MAAMC,QAAQH,GACnCA,GACCA,IAIFhB,IAAI,SAAAoB,GACH,OAAAvD,EAAwBuD,GACpBnD,EAAQmD,GACRlD,EAAqBkD,GACrBA,WRbV1D,GAEA,mBAFAA,KAEM,IAAIE,MACR,YAAYF,0HQWJ2D,KAELhB,QAAQ,SAAA9B,GAAQ,OAAC0C,EAAY1C,GAAQuC,IAEjCL,EAAmCC,OACrCE,EACAK,wCChEPK,EACAhD,GAEId,EAAa8D,IACf3D,EAAa,GAGf,IAAM4D,EAAcL,MAAMC,QAAQG,GAC9BA,GACCA,GAELC,EAAYlB,QAAQhC,GAEpB,IAAMmD,EAAW,SAACC,GAAe,OAAAF,EAAYG,SAASD,EAAQlD,OAG9D,YAAeoD,IAAXrD,EACKkD,EAGFA,EAASlD,0BCfhBsD,EACAtD,GAEId,EAAaoE,IACfjE,EAAa,GAGf,IAAMkE,EAAiBX,MAAMC,QAAQS,GACjCA,GACCA,GAELC,EAAexB,QAAQtC,GAEvB,IAAMyD,EAAW,SAACC,GAChB,OAAAI,EAAeC,KACb,SAAAjD,GAAiB,OAAA4C,EAAQlD,OAASM,EAAcZ,aAIpD,YAAe0D,IAAXrD,EACKkD,EAGFA,EAASlD,sCCnBhByD,EAAeC,GACf,IAAInD,EAEJ,GAAuB,MAAnBmD,EAAyB,CAC3B,GAA+B,mBAApBA,EACT,MAAM,IAAIpE,MAAM,qCAGlBiB,EAAgBmD,OAEhBnD,aAAuB,OAAGN,KAAMwD,IAGlC,GAAkB,MAAdA,EAKF,MAAM,IAAInE,MAAM,6BAJhB,GAA0B,iBAAfmE,GAAiD,iBAAfA,EAC3C,MAAM,IAAInE,MAAM,qDAMpB,OAAOiB"} \ No newline at end of file diff --git a/src/__snapshots__/create-reducer.spec.ts.snap b/src/__snapshots__/create-reducer.spec.ts.snap index 4059bf9..151ca13 100644 --- a/src/__snapshots__/create-reducer.spec.ts.snap +++ b/src/__snapshots__/create-reducer.spec.ts.snap @@ -1,66 +1,17 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`const counterReducer = createReducer(initialState).handleAction( - [add, increment], - (state, action) => { - return state + (action.type === 'ADD' ? action.payload : 1); - } - ) 1`] = `"any"`; +exports[`With Action Creators counterReducer1 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"ADD\\" | \\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; }"`; -exports[`const counterReducer1 = createReducer(initialState).handleAction( - ['ADD', 'INCREMENT'], - (state, action) => { - return state + (action.type === 'ADD' ? action.payload : 1); - } - ) 1`] = `"any"`; +exports[`With Action Creators counterReducer2 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; }"`; -exports[`const counterReducer1 = createReducer(initialState).handleAction( - [add, increment], - (state, action) => { - return state + (action.type === 'ADD' ? action.payload : 1); - } - ) 1`] = `"any"`; +exports[`With Action Creators counterReducer3 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"ADD\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.EmptyAction<\\"INCREMENT\\"> : never, TCreator extends (...args: any[]) => T.EmptyAction<\\"INCREMENT\\">, TCreatorAction extends T.EmptyAction<\\"INCREMENT\\"> extends ReturnType ? ReturnType & T.EmptyAction<\\"INCREMENT\\"> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; } : T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: , TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { reducers: Record) => number>; } : T.Reducer> & { reducers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; }"`; -exports[`const counterReducer1 = createReducer(initialState).handleAction( - [add, increment], - (state, action) => state + (action.type === 'ADD' ? action.payload : 1) - ) 1`] = `"any"`; +exports[`With Action Creators counterReducer4 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.PayloadAction<\\"ADD\\", number> : never, TCreator extends (...args: any[]) => T.PayloadAction<\\"ADD\\", number>, TCreatorAction extends T.PayloadAction<\\"ADD\\", number> extends ReturnType ? ReturnType & T.PayloadAction<\\"ADD\\", number> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; } : T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: , TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { reducers: Record) => number>; } : T.Reducer> & { reducers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; }"`; -exports[`const counterReducer1 = createReducer(initialState).handleAction( - [add], - (state, action) => { - return state + (action.type === 'ADD' ? action.payload : 1); - } - ) 1`] = `"any"`; +exports[`With Action Types counterReducer1 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"ADD\\" | \\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; }"`; -exports[`const counterReducer2 = createReducer(initialState) - .handleAction(['ADD'], (state, action) => { - return state + action.payload; - }) - .handleAction(['INCREMENT'], (state, _) => { - return state + 1; - }) 1`] = `"any"`; +exports[`With Action Types counterReducer2 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; }"`; -exports[`const counterReducer2 = createReducer(initialState) - .handleAction([add], (state, action) => { - return state + action.payload; - }) - .handleAction([increment], (state, _) => { - return state + 1; - }) 1`] = `"any"`; +exports[`With Action Types counterReducer3 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"ADD\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.EmptyAction<\\"INCREMENT\\"> : never, TCreator extends (...args: any[]) => T.EmptyAction<\\"INCREMENT\\">, TCreatorAction extends T.EmptyAction<\\"INCREMENT\\"> extends ReturnType ? ReturnType & T.EmptyAction<\\"INCREMENT\\"> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; } : T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: , TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { reducers: Record) => number>; } : T.Reducer> & { reducers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; }"`; -exports[`const counterReducer3 = createReducer(initialState) - .handleAction('ADD', (state, action) => { - return state + action.payload; - }) - .handleAction('INCREMENT', (state, _) => { - return state + 1; - }) 1`] = `"any"`; - -exports[`const counterReducer3 = createReducer(initialState) - .handleAction(add, (state, action) => { - return state + action.payload; - }) - .handleAction(increment, (state, _) => { - return state + 1; - }) 1`] = `"any"`; +exports[`With Action Types counterReducer4 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.PayloadAction<\\"ADD\\", number> : never, TCreator extends (...args: any[]) => T.PayloadAction<\\"ADD\\", number>, TCreatorAction extends T.PayloadAction<\\"ADD\\", number> extends ReturnType ? ReturnType & T.PayloadAction<\\"ADD\\", number> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; } : T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: , TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { reducers: Record) => number>; } : T.Reducer> & { reducers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; }"`; diff --git a/src/create-reducer.spec.ts b/src/create-reducer.spec.ts index f614366..e16f7e0 100644 --- a/src/create-reducer.spec.ts +++ b/src/create-reducer.spec.ts @@ -2,6 +2,7 @@ import * as T from './type-helpers'; // type-tests global import { ActionType } from './type-helpers'; import { createStandardAction } from './create-standard-action'; import { createReducer } from './create-reducer'; +import { getType } from './get-type'; const add = createStandardAction('ADD')(); const increment = createStandardAction('INCREMENT')(); @@ -11,20 +12,26 @@ declare module './' { export type RootAction = ActionType; } -// TODO: add type-test cases - const initialState = 0; -describe('With Action Creators', () => { - // @dts-jest:pass:snap - const counterReducer1 = createReducer(initialState).handleAction( +// @dts-jest:group With Action Creators +{ + const reducerTest = createReducer(initialState); + + const counterReducer1 = reducerTest.handleAction( [add, increment], (state, action) => { return state + (action.type === 'ADD' ? action.payload : 1); } ); // @dts-jest:pass:snap - const counterReducer2 = createReducer(initialState) + counterReducer1; + // @dts-jest:pass + Object.keys({ ...counterReducer1.reducers }); // => ["ADD", "INCREMENT"] + // @dts-jest:pass + Object.keys({ ...reducerTest.reducers }); // => [] + + const counterReducer2 = reducerTest .handleAction([add], (state, action) => { return state + action.payload; }) @@ -32,35 +39,69 @@ describe('With Action Creators', () => { return state + 1; }); // @dts-jest:pass:snap - const counterReducer3 = createReducer(initialState) - .handleAction(add, (state, action) => { - return state + action.payload; - }) - .handleAction(increment, (state, _) => { - return state + 1; - }); + counterReducer2; + // @dts-jest:pass + Object.keys({ ...counterReducer2.reducers }); // => ["ADD", "INCREMENT"] + // @dts-jest:pass + Object.keys({ ...reducerTest.reducers }); // => [] - [counterReducer1, counterReducer2, counterReducer3].forEach(fn => { - // @dts-jest:pass:snap - fn(0, {} as any); // => 0 - // @dts-jest:pass:snap - fn(0, increment()); // => 1 - // @dts-jest:pass:snap - fn(0, add(4)); // => 4 + const counterReducer3 = reducerTest.handleAction(add, (state, action) => { + return state + action.payload; }); -}); + // @dts-jest:pass:snap + counterReducer3; + // @dts-jest:pass + Object.keys({ ...counterReducer3.reducers }); // => [ "ADD"] + // @dts-jest:pass + Object.keys({ ...reducerTest.reducers }); // => [] -describe('With Action Types', () => { - // + const counterReducer4 = reducerTest.handleAction(increment, (state, _) => { + return state + 1; + }); // @dts-jest:pass:snap - const counterReducer1 = createReducer(initialState).handleAction( + counterReducer4; + // @dts-jest:pass + Object.keys({ ...counterReducer4.reducers }); // => [ "INCREMENT"] + // @dts-jest:pass + Object.keys({ ...reducerTest.reducers }); // => [] + + { + [ + counterReducer1, + counterReducer2, + createReducer(initialState, { + [getType(add)]: counterReducer3.reducers.ADD, + [getType(increment)]: counterReducer4.reducers.INCREMENT, + }), + ].forEach(fn => { + // @dts-jest:pass + fn(0, {} as any); // => 0 + // @dts-jest:pass + fn(0, increment()); // => 1 + // @dts-jest:pass + fn(0, add(4)); // => 4 + }); + } +} + +// @dts-jest:group With Action Types +{ + const reducerTest = createReducer(initialState); + + const counterReducer1 = reducerTest.handleAction( ['ADD', 'INCREMENT'], (state, action) => { return state + (action.type === 'ADD' ? action.payload : 1); } ); // @dts-jest:pass:snap - const counterReducer2 = createReducer(initialState) + counterReducer1; + // @dts-jest:pass + Object.keys({ ...counterReducer1.reducers }); // => ["ADD", "INCREMENT"] + // @dts-jest:pass + Object.keys({ ...reducerTest.reducers }); // => [] + + const counterReducer2 = reducerTest .handleAction(['ADD'], (state, action) => { return state + action.payload; }) @@ -68,20 +109,47 @@ describe('With Action Types', () => { return state + 1; }); // @dts-jest:pass:snap - const counterReducer3 = createReducer(initialState) - .handleAction('ADD', (state, action) => { - return state + action.payload; - }) - .handleAction('INCREMENT', (state, _) => { - return state + 1; - }); + counterReducer2; + // @dts-jest:pass + Object.keys({ ...counterReducer2.reducers }); // => ["ADD", "INCREMENT"] + // @dts-jest:pass + Object.keys({ ...reducerTest.reducers }); // => [] - [counterReducer1, counterReducer2, counterReducer3].forEach(fn => { - // @dts-jest:pass:snap - fn(0, {} as any); // => 0 - // @dts-jest:pass:snap - fn(0, increment()); // => 1 - // @dts-jest:pass:snap - fn(0, add(4)); // => 4 + const counterReducer3 = reducerTest.handleAction('ADD', (state, action) => { + return state + action.payload; }); -}); + // @dts-jest:pass:snap + counterReducer3; + // @dts-jest:pass + Object.keys({ ...counterReducer3.reducers }); // => ["ADD"] + // @dts-jest:pass + Object.keys({ ...reducerTest.reducers }); // => [] + + const counterReducer4 = reducerTest.handleAction('INCREMENT', (state, _) => { + return state + 1; + }); + // @dts-jest:pass:snap + counterReducer4; + // @dts-jest:pass + Object.keys({ ...counterReducer4.reducers }); // => [ "INCREMENT"] + // @dts-jest:pass + Object.keys({ ...reducerTest.reducers }); // => [] + + { + [ + counterReducer1, + counterReducer2, + createReducer(initialState, { + ADD: counterReducer3.reducers.ADD, + INCREMENT: counterReducer4.reducers.INCREMENT, + }), + ].forEach(fn => { + // @dts-jest:pass + fn(0, {} as any); // => 0 + // @dts-jest:pass + fn(0, increment()); // => 1 + // @dts-jest:pass + fn(0, add(4)); // => 4 + }); + } +} diff --git a/src/create-reducer.ts b/src/create-reducer.ts index 2b7e742..c5739a9 100644 --- a/src/create-reducer.ts +++ b/src/create-reducer.ts @@ -9,44 +9,64 @@ import { import { Reducer, Action } from './type-helpers'; type HandleActionChainApi< - S, - TAllActions extends Action, - TNotHandledActions extends Action + TState, + TNotHandledAction extends Action, + TRootAction extends Action > = < - TType extends TNotHandledActions['type'], - TTypeAction extends TNotHandledActions extends { type: TType } - ? TNotHandledActions + TType extends TNotHandledAction['type'], + TTypeAction extends TNotHandledAction extends { type: TType } + ? TNotHandledAction : never, - TCreator extends (...args: any[]) => TNotHandledActions, - TCreatorAction extends TNotHandledActions extends ReturnType - ? TNotHandledActions + TCreator extends (...args: any[]) => TNotHandledAction, + TCreatorAction extends TNotHandledAction extends ReturnType + ? TNotHandledAction : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never >( singleOrMultipleCreatorsAndTypes: TType | TType[] | TCreator | TCreator[], - reducer: (state: S, action: TActionIntersection) => S -) => Exclude extends never - ? Reducer - : Reducer & { + reducer: (state: TState, action: TActionIntersection) => TState +) => [Exclude] extends [never] + ? Reducer & { + reducers: Record< + TActionIntersection['type'], + (state: TState, action: TRootAction) => TState + >; + } + : Reducer & { + reducers: Record< + TActionIntersection['type'], + (state: TState, action: TRootAction) => TState + >; handleAction: HandleActionChainApi< - S, - TAllActions, - Exclude + TState, + Exclude, + TNotHandledAction >; }; -export function createReducer( - initialState: S -): Reducer & { - handleAction: HandleActionChainApi; -} { - const reducers: Record S> = {}; +export function createReducer( + initialState: TState, + initialReducers: Record< + RootAction['type'], + (state: TState, action: RootAction) => TState + > = {} +) { + const reducers = { ...initialReducers }; - const rootReducer: Reducer = (state = initialState, action) => { + const rootReducer: Reducer = ( + state = initialState, + action + ) => { if (reducers.hasOwnProperty(action.type)) { - return reducers[action.type](state, action); + const reducer = reducers[action.type]; + if (typeof reducer !== 'function') { + throw Error( + `Reducer under "${action.type}" key is not a valid reducer` + ); + } + return reducer(state, action); } else { return state; } @@ -57,6 +77,7 @@ export function createReducer( ? singleOrMultipleCreatorsAndTypes : [singleOrMultipleCreatorsAndTypes]; + const newReducers: typeof initialReducers = {}; creatorsAndTypes .map(acOrType => checkValidActionCreator(acOrType) @@ -65,14 +86,16 @@ export function createReducer( ? acOrType : throwInvalidActionTypeOrActionCreator() ) - .forEach(type => (reducers[type] = reducer)); + .forEach(type => (newReducers[type] = reducer)); - return chainApi; - }) as HandleActionChainApi; + return createReducer(initialState, { + ...reducers, + ...newReducers, + }); + }) as HandleActionChainApi; - const chainApi = Object.assign(rootReducer, { + return Object.assign(rootReducer, { + reducers: { ...reducers }, handleAction, } as const); - - return chainApi; } From 5c5c1667921bee85fa82f0925ceb53df0615f739 Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sun, 21 Apr 2019 21:27:19 +0200 Subject: [PATCH 19/22] Updated readme consistency and extended migration guide from redux-actions --- README.md | 97 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 63 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 899b7b9..60fb5d1 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ For older browsers (e.g. IE <= 11) and mobile devices you need to provide these To provide the best compatibility for your application please include a popular polyfill package in your bundled application, such as `@babel/polyfill`. You can check the `React` guidelines on how to do that, specifically: https://reactjs.org/docs/javascript-environment-requirements.html -> It's included in our `/codesandbox` reference implementation which is using `@babel/polyfill` and is confirmed to be working with IE11. Please check it out! +It's included in our `/codesandbox` reference implementation which is using `@babel/polyfill` and is confirmed to be working with IE11. Please check it out! [⇧ back to top](#table-of-contents) @@ -177,13 +177,15 @@ Specific issues can be funded by anyone interested in them being resolved. Issue To showcase the flexibility and the power of the **type-safety** provided by this library, let's build the most common parts of a typical todo-app using a Redux architecture: -> **WARNING**: Please make sure that you are familiar with the following concepts of programming languages to be able to follow along: [Type Inference](https://www.typescriptlang.org/docs/handbook/type-inference.html), [Control flow analysis](https://github.com/Microsoft/TypeScript/wiki/What%27s-new-in-TypeScript#control-flow-based-type-analysis), [Tagged union types](https://github.com/Microsoft/TypeScript/wiki/What%27s-new-in-TypeScript#tagged-union-types), [Generics](https://www.typescriptlang.org/docs/handbook/generics.html) and [Advanced Types](https://www.typescriptlang.org/docs/handbook/advanced-types.html). +> **WARNING** +> Please make sure that you are familiar with the following concepts of programming languages to be able to follow along: [Type Inference](https://www.typescriptlang.org/docs/handbook/type-inference.html), [Control flow analysis](https://github.com/Microsoft/TypeScript/wiki/What%27s-new-in-TypeScript#control-flow-based-type-analysis), [Tagged union types](https://github.com/Microsoft/TypeScript/wiki/What%27s-new-in-TypeScript#tagged-union-types), [Generics](https://www.typescriptlang.org/docs/handbook/generics.html) and [Advanced Types](https://www.typescriptlang.org/docs/handbook/advanced-types.html). [⇧ back to top](#table-of-contents) ### Constants -**RECOMMENDATION:** When using `typesafe-actions` in your project you won't need to export and reuse **string constants**. It's because **action-creators** created by this library have **action type** property on each action-creator instance that you easily access and use to match actions in reducers, epics, sagas, and basically any other library. This will simplify your codebase and remove some boilerplate code associated with the usage of **string constants**. Check our `/codesandbox` application to see how such codebase look like in a real application. +> **RECOMMENDATION:** +> When using `typesafe-actions` in your project you won't need to export and reuse **string constants**. It's because **action-creators** created by this library have **action type** property on each action-creator instance that you easily access and use to match actions in reducers, epics, sagas, and basically any other library. This will simplify your codebase and remove some boilerplate code associated with the usage of **string constants**. Check our `/codesandbox` application to see how such codebase look like in a real application. **Limitations of TypeScript when working with string constants** - when using **string constants** as action `type` property, please make sure to use **simple string literal assignment with const**. This limitation is coming from the type-system, because all the **dynamic string operations** (e.g. string concatenation, template strings and also object used as a map) will widen the literal type to its super-type, `string`. As a result this will break contextual typing for **action** object in reducer cases. @@ -267,22 +269,47 @@ const add = createCustomAction('todos/ADD', type => { > **TIP**: For more examples please check the [API Docs](#table-of-contents). +> **RECOMMENDATION** +> Common approach is to create a `RootAction` in the central point of your redux store - it will represent all possible action types in your application. You can even merge it with third-party action types as shown below to make your model complete. + +```ts +// types.d.ts +// example of including `react-router` actions in `RootAction` +import { RouterAction, LocationChangeAction } from 'react-router-redux'; +import { TodosAction } from '../features/todos'; + +type ReactRouterAction = RouterAction | LocationChangeAction; + +export type RootAction = + | ReactRouterAction + | TodosAction; +``` + [⇧ back to top](#table-of-contents) ### Reducers -Here we'll start by generating a **tagged union type** of actions (`TodosAction`). It's very easy to do using `ActionType` **type-helper** provided by `typesafe-actions`. +#### Using createReducer API + +#### Using standard switch reducer + +First we need to start by generating a **tagged union type** of actions (`TodosAction`). It's very easy to do by using `ActionType` **type-helper**. + ```ts -import { ActionType, getType } from 'typesafe-actions'; +import { ActionType } from 'typesafe-actions'; import * as todos from './actions'; export type TodosAction = ActionType; ``` -Now we define a regular reducer function by annotating `state` and `action` arguments with their respective types (`TodosAction` for action type) + +Now we define a regular reducer function by annotating `state` and `action` arguments with their respective types (`TodosAction` for action type). + ```ts export default (state: Todo[] = [], action: TodosAction) => { ``` -Now in switch cases using the `type` property of action (which is a **tagged union type**), we can narrow the type of `TodosAction` in the corresponding code block to a specific action type that we expect. + +Now in the switch cases we can use the `type` property of action to constrain the type of `TodosAction` to a specific action in the corresponding block of code. + ```ts switch (action.type) { case getType(todos.add): @@ -290,20 +317,6 @@ Now in switch cases using the `type` property of action (which is a **tagged uni return [...state, action.payload]; ... ``` -> **TIP**: we are using `getType` action-helper with the respective action-creator as an argument for the corresponding switch case. This will help to reduce boilerplate and completely remove the need to use **type-constants**. But if your team prefer to use regular type-constants, you can still use them. - -I recommend to create a `RootAction` in the central point of your redux store - it will model a complete representation of all possible action types in your application. You can even merge it with third-party action types as shown below to make your model even more complete. -```ts -// types.d.ts -// example of including `react-router` actions in `RootAction` -import { RouterAction, LocationChangeAction } from 'react-router-redux'; -type ReactRouterAction = RouterAction | LocationChangeAction; -import { TodosAction } from '../features/todos'; - -export type RootAction = - | ReactRouterAction - | TodosAction; -``` [⇧ back to top](#table-of-contents) @@ -417,7 +430,7 @@ With sagas it's not possible to achieve the same degree of type-safety as with e Typescript issues: - [Typescript does not currently infer types resulting from a `yield` statement](https://github.com/Microsoft/TypeScript/issues/2983) so you have to manually assert the type e.g. `const response: Todo[] = yield call(...` -*Here is the latest recommendation although it's not fully optimal. If you cooked something better, please open an issue so we can share it with the world.* +*Here is the latest recommendation although it's not fully optimal. If you managed to cook something better, please open an issue to share your finding with us.* ```ts import { createAsyncAction } from 'typesafe-actions'; @@ -479,7 +492,7 @@ export type RootAction = ActionType; _Powerful type helper that will infer state object type from **reducer function** and **nested/combined reducers**._ -_**Redux compatibility**: working with redux@4+ types_ +> **WARNING**: working with redux@4+ types ```ts import { combineReducers } from 'redux'; @@ -511,7 +524,8 @@ export type RootState = StateType; _Simple **action factory function** to simplify creation of type-safe actions._ -**WARNING**: This approach will **NOT WORK** with **action-helpers** (such as `getType` and `isActionOf`) because it is creating **action objects** while all the other creator functions are returning **enhanced action-creators**. +> **WARNING**: +> This approach will **NOT WORK** with **action-helpers** (such as `getType` and `isActionOf`) because it is creating **action objects** while all the other creator functions are returning **enhanced action-creators**. ```ts action(type, payload?, meta?) @@ -533,7 +547,7 @@ const getUsers = (params?: string) => // { type: 'GET_USERS'; meta: string | undefined; } ``` -_**TIP**: Starting from TypeScript v3.4 you can achieve similar results using new `as const` operator._ +> **TIP**: Starting from TypeScript v3.4 you can achieve similar results using new `as const` operator. ```ts const increment = () => ({ type: 'INCREMENT' } as const); @@ -550,9 +564,8 @@ createAction(type) createAction(type, actionCallback => { return (namedArg1, namedArg2, ...namedArgN) => actionCallback(payload?, meta?) }) - -_**TIP**: Injected `actionCallback` argument is similar to `action` API but doesn't need the "type" parameter_ ``` +> **TIP**: Injected `actionCallback` argument is similar to `action` API but doesn't need the "type" parameter Examples: [> Advanced Usage Examples](src/create-action.spec.ts) @@ -750,7 +763,7 @@ _Check if action is an instance of given enhanced action-creator(s) (it will narrow action type to a type of given action-creator(s))_ -**NOTE**: ActionCreator type is generated from the `createAction` API. Simple [action](#action) creators throw a `RuntimeError` +> **WARNING**: Regular action creators and [action](#action) will not work with this helper ```ts // can be used as a binary function @@ -873,9 +886,7 @@ fetchUsers.request(); // <= no parameters required `v3.x.x` API is backward compatible with `v2.x.x`. You'll only need to update typescript dependency to `> v3.1`. ### `v1.x.x` to `v2.x.x` -> NOTE: `typesafe-actions@1.x.x` should be used with `utility-types@1.x.x` which contains `$call` utility (removed in `utility-types@2.x.x`) - -In v2 we provide `createActionDeprecated` from v1 API to help with incremental migration. +In v2 we provide a `createActionDeprecated` function compatible with v1 API to help with incremental migration. ```ts // in v1 we created action-creator like this: @@ -906,11 +917,29 @@ const getTodoCustom = createStandardAction('GET_TODO').map( ); ``` -### Migrating from `redux-actions` +### Migrating from `redux-actions` to `typesafe-actions` + +- createAction(s) + +```ts +createAction(type, payloadCreator, metaCreator) => createStandardAction(type)() || createStandardAction(type).map(payloadMetaCreator) + +createActions() => // COMING SOON! +``` + +- handleAction(s) + +```ts +handleAction(type, reducer, initialState) => createReducer(initialState).handleAction(type, reducer) + +handleActions(reducerMap, initialState) => createReducer(initialState, reducerMap) +``` + +> TIP: If migrating from JS -> TS, you can swap out action-creators from `redux-actions` with action-creators from `typesafe-actions` in your `handleActions` handlers. This works because the action-creators from `typesafe-actions` provide the same `toString` method implementation used by `redux-actions` to match actions to the correct reducer. -If you're using `redux-actions` you can replace `createAction` with any of the above styles. Currently there is no equivalent of `createActions` function, so it will need to be replaced with individual usages of `createAction`. The resulting hash of actions does not provide inference for the individual values. +- combineActions -Additionally, if migrating from JS -> TS, you can swap out `redux-actions` action-creators in your `handleActions` with action-creators from `typesafe-actions`. This works because the action creators exposed by `typesafe-actions` provide the `toString` method used by `redux-actions` to match actions to the correct reducer. +Not needed because each function in the API accept single value or array of values for action types or action creators. [⇧ back to top](#table-of-contents) From e6a4675cd1df07dabda6ac285b15aa0cfeef5ef3 Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sun, 21 Apr 2019 22:43:09 +0200 Subject: [PATCH 20/22] Added new tutorial section for createReducer API --- README.md | 142 ++++++++++---- .../src/typesafe-actions/create-reducer.d.ts | 6 +- codesandbox/src/typesafe-actions/index.esm.js | 14 +- codesandbox/src/typesafe-actions/index.js | 14 +- codesandbox/src/typesafe-actions/index.umd.js | 2 +- .../src/typesafe-actions/index.umd.js.map | 2 +- src/__snapshots__/create-reducer.spec.ts.snap | 16 +- src/create-reducer.spec.snap.ts | 181 ++++++++++++------ src/create-reducer.spec.ts | 92 ++++----- src/create-reducer.ts | 20 +- 10 files changed, 311 insertions(+), 178 deletions(-) diff --git a/README.md b/README.md index 60fb5d1..99a1b7c 100644 --- a/README.md +++ b/README.md @@ -60,10 +60,12 @@ _This library is part of the [React & Redux TypeScript Guide](https://github.com - [1. Basic actions](#1-basic-actions) - [2. FSA compliant actions](#2-fsa-compliant-actions) - [3. Custom actions (non-standard use-cases)](#3-custom-actions-non-standard-use-cases) - - [Reducers](#reducers) - [Action-Helpers](#action-helpers) - [Using action-creators instances instead of type-constants](#using-action-creators-instances-instead-of-type-constants) - [Using regular type-constants](#using-regular-type-constants) + - [Reducers](#reducers) + - [Using createReducer API](#using-createreducer-api) + - [Using standard switch reducer](#using-standard-switch-reducer) - [Async-Flows](#async-flows) - [With `redux-observable` epics](#with-redux-observable-epics) - [With `redux-saga` sagas](#with-redux-saga-sagas) @@ -85,7 +87,7 @@ _This library is part of the [React & Redux TypeScript Guide](https://github.com - [`v3.x.x` to `v4.x.x`](#v3xx-to-v4xx) - [`v2.x.x` to `v3.x.x`](#v2xx-to-v3xx) - [`v1.x.x` to `v2.x.x`](#v1xx-to-v2xx) - - [Migrating from `redux-actions`](#migrating-from-redux-actions) + - [Migrating from `redux-actions` to `typesafe-actions`](#migrating-from-redux-actions-to-typesafe-actions) - [Recipes](#recipes) - [Restrict Meta type in `action` creator](#restrict-meta-type-in-action-creator) - [Compare to others](#compare-to-others) @@ -185,7 +187,7 @@ To showcase the flexibility and the power of the **type-safety** provided by thi ### Constants > **RECOMMENDATION:** -> When using `typesafe-actions` in your project you won't need to export and reuse **string constants**. It's because **action-creators** created by this library have **action type** property on each action-creator instance that you easily access and use to match actions in reducers, epics, sagas, and basically any other library. This will simplify your codebase and remove some boilerplate code associated with the usage of **string constants**. Check our `/codesandbox` application to see how such codebase look like in a real application. +> When using `typesafe-actions` in your project you won't need to export and reuse **string constants**. It's because **action-creators** created by this library have static property with **action type** that you can easily access using **actions-helpers** and then use it in reducers, epics, sagas, and basically any other place. This will simplify your codebase and remove some boilerplate code associated with the usage of **string constants**. Check our `/codesandbox` application to learn some best-practices to create such codebase. **Limitations of TypeScript when working with string constants** - when using **string constants** as action `type` property, please make sure to use **simple string literal assignment with const**. This limitation is coming from the type-system, because all the **dynamic string operations** (e.g. string concatenation, template strings and also object used as a map) will widen the literal type to its super-type, `string`. As a result this will break contextual typing for **action** object in reducer cases. @@ -287,28 +289,17 @@ export type RootAction = [⇧ back to top](#table-of-contents) -### Reducers - -#### Using createReducer API - -#### Using standard switch reducer +### Action-Helpers -First we need to start by generating a **tagged union type** of actions (`TodosAction`). It's very easy to do by using `ActionType` **type-helper**. +Now I wan't to show you **action-helpers** and explain their use-cases. We're going to implement a side-effect responsible for showing a success toast when user adds a new todo. -```ts -import { ActionType } from 'typesafe-actions'; +Important thing to notice is that all these helpers are acting as a **type-guard** so they'll narrow **tagged union type** (`RootAction`) to a specific action type that we want. -import * as todos from './actions'; -export type TodosAction = ActionType; -``` - -Now we define a regular reducer function by annotating `state` and `action` arguments with their respective types (`TodosAction` for action type). +#### Using action-creators instances instead of type-constants -```ts -export default (state: Todo[] = [], action: TodosAction) => { -``` +Instead of **type-constants** we can use **action-creators** instance to match specific actions in reducers and epics cases. It works by adding a static property on **action-creator** instance which contains the `type` string. -Now in the switch cases we can use the `type` property of action to constrain the type of `TodosAction` to a specific action in the corresponding block of code. +The most common one is `getType`, which is useful for regular reducer switch cases: ```ts switch (action.type) { @@ -318,19 +309,7 @@ Now in the switch cases we can use the `type` property of action to constrain th ... ``` -[⇧ back to top](#table-of-contents) - -### Action-Helpers - -Now I wan't to show you **action-helpers** and explain why they are useful. We're going to implement a side-effect responsible for showing a success toast when user adds a new todo. - -#### Using action-creators instances instead of type-constants - -Instead of **type-constants** we can use **action-creators** instance to match specific actions in reducers and epics cases. It works by adding a static property on **action-creator** instance which contains the `type` string. - -We have an `isActionOf` helper which accept **action-creator** as parameter and it'll match all actions with corresponding type. - -Important thing is that this helper is acting as a **type-guard** so it'll narrow **tagged union type** (`RootAction`) to a specific action type that we want. +Then we have the `isActionOf` helper which accept **action-creator** as first parameter matching actions with corresponding type passed as second parameter (it's a curried function). ```ts // epics.ts @@ -375,7 +354,7 @@ const addTodoToast: Epic = (action$ // { type: "todos/ADD"; payload: Todo; } | { type: "todos/TOGGLE"; payload: string; } ``` -> **TIP:** action-helpers are working in all types of conditional statements. +> **TIP:** you can use action-helpers with other types of conditional statements. ```ts import { isActionOf, isOfType } from 'typesafe-actions'; @@ -391,6 +370,101 @@ if (isOfType(types.ADD, action)) { [⇧ back to top](#table-of-contents) +### Reducers + +#### Using createReducer API + +We can prevent a lot of boilerplate code and type errors using this powerfull and completely typesafe API. + +Extending internal `RootAction` type for `createReducer` API from the consumer code, so that you never have to use generic type parameters again in your application 😮 (check `/codesandbox` project for more): +```ts +import { StateType, ActionType } from 'typesafe-actions'; + +declare module 'typesafe-actions' { + export type RootAction = ActionType; +} +``` + +Using type-constants as keys in the object map: +```ts +import { createReducer, getType } from 'typesafe-actions' + +const counterReducer = createReducer(0, { + ADD: (state, action) => state + action.payload, // state and action type is automatically inferred + [getType(increment)]: (state, _) => state + 1, // return type is validated to be an exact State type + ADD: ... // <= error is shown on duplicated or invalid actions + INVALID: ... // <= error is shown on duplicated or invalid actions +}) + +counterReducer(0, add(4)); // => 4 +counterReducer(0, increment()); // => 1 +``` + +Using handleAction chain API: +```ts +// using action-creators +const counterReducer = createReducer(0) // <= no need for generic parameters + .handleAction(add, (state, action) => state + action.payload) + .handleAction(add, ... // <= error is shown on duplicated or invalid actions + .handleAction(increment, (state, _) => state + 1) + .handleAction(... // <= error is shown when all actions are handled + + // handle multiple actions using array + .handleAction([add, increment], (state, action) => + state + (action.type === 'ADD' ? action.payload : 1) + ); + +// all the same is working when using type-constants +const counterReducer = createReducer(0) + .handleAction('ADD', (state, action) => state + action.payload) + .handleAction('INCREMENT', (state, _) => state + 1); + +counterReducer(0, add(4)); // => 4 +counterReducer(0, increment()); // => 1 +``` + +Extend or compose various reducers together - every operation is completely typesafe: +```ts +const newCounterReducer = createReducer(0) + .handleAction('SUBTRACT', (state, action) => state - action.payload) + .handleAction('DECREMENT', (state, _) => state - 1); + +const bigReducer = createReducer(0, { + ...counterReducer.handlers, // typesafe + ...newCounterReducer.handlers, // typesafe + SUBTRACT: decrementReducer.handlers.DECREMENT, // <= error, wrong type +}) +``` + +#### Using standard switch reducer + +First we need to start by generating a **tagged union type** of actions (`TodosAction`). It's very easy to do by using `ActionType` **type-helper**. + +```ts +import { ActionType } from 'typesafe-actions'; + +import * as todos from './actions'; +export type TodosAction = ActionType; +``` + +Now we define a regular reducer function by annotating `state` and `action` arguments with their respective types (`TodosAction` for action type). + +```ts +export default (state: Todo[] = [], action: TodosAction) => { +``` + +Now in the switch cases we can use the `type` property of action to narrowing the union type of `TodosAction` to an action that is corresponding to that type. + +```ts + switch (action.type) { + case getType(add): + // below action type is narrowed to: { type: "todos/ADD"; payload: Todo; } + return [...state, action.payload]; + ... +``` + +[⇧ back to top](#table-of-contents) + ### Async-Flows #### With `redux-observable` epics diff --git a/codesandbox/src/typesafe-actions/create-reducer.d.ts b/codesandbox/src/typesafe-actions/create-reducer.d.ts index 9eb73d2..4428775 100644 --- a/codesandbox/src/typesafe-actions/create-reducer.d.ts +++ b/codesandbox/src/typesafe-actions/create-reducer.d.ts @@ -3,13 +3,13 @@ import { Reducer, Action } from './type-helpers'; declare type HandleActionChainApi = TNotHandledAction, TCreatorAction extends TNotHandledAction extends ReturnType ? TNotHandledAction : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TType[] | TCreator | TCreator[], reducer: (state: TState, action: TActionIntersection) => TState) => [Exclude] extends [never] ? Reducer & { - reducers: Record TState>; + handlers: Record TState>; } : Reducer & { - reducers: Record TState>; + handlers: Record TState>; handleAction: HandleActionChainApi, TNotHandledAction>; }; export declare function createReducer(initialState: TState, initialReducers?: Record TState>): Reducer & { - reducers: { + handlers: { readonly [x: string]: (state: TState, action: any) => TState; }; readonly handleAction: HandleActionChainApi; diff --git a/codesandbox/src/typesafe-actions/index.esm.js b/codesandbox/src/typesafe-actions/index.esm.js index 8e5bc74..665bb61 100644 --- a/codesandbox/src/typesafe-actions/index.esm.js +++ b/codesandbox/src/typesafe-actions/index.esm.js @@ -138,11 +138,11 @@ function getType(actionCreator) { function createReducer(initialState, initialReducers) { if (initialReducers === void 0) { initialReducers = {}; } - var reducers = __assign({}, initialReducers); + var handlers = __assign({}, initialReducers); var rootReducer = function (state, action) { if (state === void 0) { state = initialState; } - if (reducers.hasOwnProperty(action.type)) { - var reducer = reducers[action.type]; + if (handlers.hasOwnProperty(action.type)) { + var reducer = handlers[action.type]; if (typeof reducer !== 'function') { throw Error("Reducer under \"" + action.type + "\" key is not a valid reducer"); } @@ -156,7 +156,7 @@ function createReducer(initialState, initialReducers) { var creatorsAndTypes = Array.isArray(singleOrMultipleCreatorsAndTypes) ? singleOrMultipleCreatorsAndTypes : [singleOrMultipleCreatorsAndTypes]; - var newReducers = {}; + var newHandlers = {}; creatorsAndTypes .map(function (acOrType) { return checkValidActionCreator(acOrType) @@ -165,11 +165,11 @@ function createReducer(initialState, initialReducers) { ? acOrType : throwInvalidActionTypeOrActionCreator(); }) - .forEach(function (type) { return (newReducers[type] = reducer); }); - return createReducer(initialState, __assign({}, reducers, newReducers)); + .forEach(function (type) { return (newHandlers[type] = reducer); }); + return createReducer(initialState, __assign({}, handlers, newHandlers)); }); return Object.assign(rootReducer, { - reducers: __assign({}, reducers), + handlers: __assign({}, handlers), handleAction: handleAction, }); } diff --git a/codesandbox/src/typesafe-actions/index.js b/codesandbox/src/typesafe-actions/index.js index e42041f..b60e4a3 100644 --- a/codesandbox/src/typesafe-actions/index.js +++ b/codesandbox/src/typesafe-actions/index.js @@ -142,11 +142,11 @@ function getType(actionCreator) { function createReducer(initialState, initialReducers) { if (initialReducers === void 0) { initialReducers = {}; } - var reducers = tslib_1.__assign({}, initialReducers); + var handlers = tslib_1.__assign({}, initialReducers); var rootReducer = function (state, action) { if (state === void 0) { state = initialState; } - if (reducers.hasOwnProperty(action.type)) { - var reducer = reducers[action.type]; + if (handlers.hasOwnProperty(action.type)) { + var reducer = handlers[action.type]; if (typeof reducer !== 'function') { throw Error("Reducer under \"" + action.type + "\" key is not a valid reducer"); } @@ -160,7 +160,7 @@ function createReducer(initialState, initialReducers) { var creatorsAndTypes = Array.isArray(singleOrMultipleCreatorsAndTypes) ? singleOrMultipleCreatorsAndTypes : [singleOrMultipleCreatorsAndTypes]; - var newReducers = {}; + var newHandlers = {}; creatorsAndTypes .map(function (acOrType) { return checkValidActionCreator(acOrType) @@ -169,11 +169,11 @@ function createReducer(initialState, initialReducers) { ? acOrType : throwInvalidActionTypeOrActionCreator(); }) - .forEach(function (type) { return (newReducers[type] = reducer); }); - return createReducer(initialState, tslib_1.__assign({}, reducers, newReducers)); + .forEach(function (type) { return (newHandlers[type] = reducer); }); + return createReducer(initialState, tslib_1.__assign({}, handlers, newHandlers)); }); return Object.assign(rootReducer, { - reducers: tslib_1.__assign({}, reducers), + handlers: tslib_1.__assign({}, handlers), handleAction: handleAction, }); } diff --git a/codesandbox/src/typesafe-actions/index.umd.js b/codesandbox/src/typesafe-actions/index.umd.js index c69751c..cd15499 100644 --- a/codesandbox/src/typesafe-actions/index.umd.js +++ b/codesandbox/src/typesafe-actions/index.umd.js @@ -1,2 +1,2 @@ -!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.TypesafeActions={})}(this,function(n){"use strict";function t(n,t){return void 0===t&&(t=1),null==n}function r(n){throw void 0===n&&(n=1),new Error("Argument "+n+" is empty.")}function e(n){return"function"==typeof n&&"getType"in n}function o(n){throw void 0===n&&(n=1),new Error("Argument "+n+' is invalid, it should be an action-creator instance from "typesafe-actions"')}function i(n,t){if(null==n)throw new Error("Argument contains array with empty element at index "+t);if(null==n.getType)throw new Error("Argument contains array with invalid element at index "+t+', it should be an action-creator instance from "typesafe-actions"')}function u(n){return"string"==typeof n||"symbol"==typeof n}function c(n){return!u(n)}function a(n){throw void 0===n&&(n=1),new Error("Argument "+n+" is invalid, it should be an action type of type: string | symbol")}function f(n,t){if(null==n)throw new Error("Argument contains array with empty element at index "+t);if("string"!=typeof n&&"symbol"!=typeof n)throw new Error("Argument contains array with invalid element at index "+t+", it should be of type: string | symbol")}function s(n,e,i,u){return t(n)&&r(1),c(n)&&o(1),{type:n,payload:e,meta:i,error:u}}function y(n,e){t(n)&&r(1),c(n)&&a(1);var o=null!=e?e(n):function(){return{type:n}};return Object.assign(o,{getType:function(){return n},toString:function(){return n}})}var p=function(){return(p=Object.assign||function(n){for(var t,r=1,e=arguments.length;r {\n return typeof arg === 'function' && 'getType' in arg;\n}\n\nexport function checkInvalidActionCreator(arg: unknown) {\n return !checkValidActionCreator(arg);\n}\n\nexport function throwInvalidActionCreator(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\"`\n );\n}\n\nexport function checkInvalidActionCreatorInArray(\n arg: ActionCreator & TypeMeta,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (arg.getType == null) {\n throw new Error(\n // tslint:disable-next-line:max-line-length\n `Argument contains array with invalid element at index ${idx}, it should be an action-creator instance from \"typesafe-actions\"`\n );\n }\n}\n\nexport function checkValidActionType(arg: unknown): arg is string | symbol {\n return typeof arg === 'string' || typeof arg === 'symbol';\n}\n\nexport function checkInvalidActionType(arg: unknown): arg is string | symbol {\n return !checkValidActionType(arg);\n}\n\nexport function throwInvalidActionType(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action type of type: string | symbol`\n );\n}\n\nexport function checkInvalidActionTypeInArray(\n arg: TypeConstant,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (typeof arg !== 'string' && typeof arg !== 'symbol') {\n throw new Error(\n `Argument contains array with invalid element at index ${idx}, it should be of type: string | symbol`\n );\n }\n}\n\nexport function throwInvalidActionTypeOrActionCreator(\n argPosition: number = 1\n): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\" or action type of type: string | symbol`\n );\n}\n","import { TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionCreator,\n} from './utils/validation';\n\nexport function action(\n type: T,\n payload: undefined,\n meta: undefined,\n error: E\n): { type: T; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M,\n error: E\n): { type: T; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: undefined,\n error: E\n): { type: T; payload: P; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: M,\n error: E\n): { type: T; payload: P; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M\n): { type: T; meta: M };\n\nexport function action(\n type: T,\n payload: P,\n meta: M\n): { type: T; payload: P; meta: M };\n\nexport function action(\n type: T,\n payload: P\n): { type: T; payload: P };\n\nexport function action(type: T): { type: T };\n\n/**\n * @description flux standard action factory\n * @example\n * ```\n * const add = (amount: number, meta?: MetaShape) => action('INCREMENT', amount, meta);\n * ```\n */\nexport function action<\n T extends TypeConstant,\n P = undefined,\n M = undefined,\n E = undefined\n>(type: T, payload?: P, meta?: M, error?: E) {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionCreator(1);\n }\n\n return { type, payload, meta, error } as any;\n}\n","import { ActionCreator, TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\n/**\n * @description create custom action-creator using constructor function with injected type argument\n */\nexport function createCustomAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(type: T, createHandler?: (type: T) => AC): AC {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n const actionCreator: AC =\n createHandler != null ? createHandler(type) : ((() => ({ type })) as AC);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { TypeConstant, ActionCreator, TypeMeta } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionCreator,\n throwInvalidActionCreator,\n} from './utils/validation';\n\n/**\n * @description get the \"type literal\" of a given action-creator\n */\nexport function getType(\n actionCreator: ActionCreator & TypeMeta\n): T {\n if (checkIsEmpty(actionCreator)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionCreator(actionCreator)) {\n throwInvalidActionCreator(1);\n }\n\n return actionCreator.getType!();\n}\n","import { TypeConstant, ActionCreator } from './type-helpers';\nimport { action } from './action';\n\nexport type PayloadMetaAction<\n T extends TypeConstant,\n P,\n M\n> = P extends undefined\n ? M extends undefined\n ? { type: T }\n : { type: T; meta: M }\n : M extends undefined\n ? { type: T; payload: P }\n : { type: T; payload: P; meta: M };\n\n/**\n * @description typesafe action-creator factory\n */\nexport function createAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(\n type: T,\n createHandler?: (\n actionCallback:

(\n payload?: P,\n meta?: M\n ) => PayloadMetaAction\n ) => AC\n): AC {\n // validation is already done in action function\n\n const actionCreator: AC =\n createHandler == null\n ? ((() => action(type)) as AC)\n : createHandler(action.bind(null, type) as Parameters<\n typeof createHandler\n >[0]);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\nexport interface ActionBuilder {\n

(): ActionBuilderConstructor;\n map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap;\n}\n\n/**\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createStandardAction(\n type: T\n): ActionBuilder {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n function constructor(): ActionBuilderConstructor {\n return createCustomAction(type, _type => (payload: P, meta: M) => ({\n type: _type,\n payload,\n meta,\n })) as ActionBuilderConstructor;\n }\n\n function map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap {\n return createCustomAction(type, _type => (payload: P, meta: M) =>\n Object.assign(fn(payload, meta), { type: _type })\n ) as ActionBuilderMap;\n }\n\n return Object.assign(constructor, { map });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n // ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport { checkInvalidActionTypeInArray } from './utils/validation';\n\nexport interface AsyncActionBuilder<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n> {\n // tslint:disable-next-line:callable-types\n (): AsyncActionBuilderConstructor;\n // withMappers(\n // requestMapper: (a?: A1) => P1,\n // successMapper: (a?: A2) => P2,\n // failureMapper: (a?: A3) => P3\n // ): AsyncActionBuilderWithMappers;\n}\n\nexport type AsyncActionBuilderConstructor<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant,\n P1,\n P2,\n P3\n> = {\n request: ActionBuilderConstructor;\n success: ActionBuilderConstructor;\n failure: ActionBuilderConstructor;\n};\n\n/**\n * implementation\n */\nexport function createAsyncAction<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n>(\n requestType: T1,\n successType: T2,\n failureType: T3\n): AsyncActionBuilder {\n [requestType, successType, failureType].forEach(\n checkInvalidActionTypeInArray\n );\n\n function constructor(): AsyncActionBuilderConstructor<\n T1,\n T2,\n T3,\n P1,\n P2,\n P3\n > {\n return {\n request: createCustomAction(requestType, type => (payload?: P1) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n success: createCustomAction(successType, type => (payload?: P2) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n failure: createCustomAction(failureType, type => (payload?: P3) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n };\n }\n\n return Object.assign(constructor);\n}\n\n// export type AsyncActionBuilderWithMappers<\n// T1 extends StringType,\n// T2 extends StringType,\n// T3 extends StringType,\n// A1 = undefined,\n// P1 = undefined,\n// A2 = undefined,\n// P2 = undefined,\n// A3 = undefined,\n// P3 = undefined\n// > = {\n// request: ActionBuilderMap;\n// success: ActionBuilderMap;\n// failure: ActionBuilderMap;\n// };\n\n// function withMappers(\n// requestMapper: (a?: A1) => P1,\n// successMapper: (a?: A2) => P2,\n// failureMapper: (a?: A3) => P3\n// ): AsyncActionBuilderWithMappers {\n// return {\n// request: createCustomAction(requestType, type => (payload?: A1) => ({\n// type,\n// payload: requestMapper != null ? requestMapper(payload) : undefined,\n// })) as MapBuilder,\n// success: createCustomAction(successType, type => (payload?: A2) => ({\n// type,\n// payload: successMapper != null ? successMapper(payload) : undefined,\n// })) as MapBuilder,\n// failure: createCustomAction(failureType, type => (payload?: A3) => ({\n// type,\n// payload: failureMapper != null ? failureMapper(payload) : undefined,\n// })) as MapBuilder,\n// };\n// }\n","// @ts-ignore\nimport { RootAction } from './';\nimport { getType } from './get-type';\nimport {\n checkValidActionCreator,\n checkValidActionType,\n throwInvalidActionTypeOrActionCreator,\n} from './utils/validation';\nimport { Reducer, Action } from './type-helpers';\n\ntype HandleActionChainApi<\n TState,\n TNotHandledAction extends Action,\n TRootAction extends Action\n> = <\n TType extends TNotHandledAction['type'],\n TTypeAction extends TNotHandledAction extends { type: TType }\n ? TNotHandledAction\n : never,\n TCreator extends (...args: any[]) => TNotHandledAction,\n TCreatorAction extends TNotHandledAction extends ReturnType\n ? TNotHandledAction\n : never,\n TActionIntersection extends TTypeAction extends TCreatorAction\n ? TTypeAction\n : never\n>(\n singleOrMultipleCreatorsAndTypes: TType | TType[] | TCreator | TCreator[],\n reducer: (state: TState, action: TActionIntersection) => TState\n) => [Exclude] extends [never]\n ? Reducer & {\n reducers: Record<\n TActionIntersection['type'],\n (state: TState, action: TRootAction) => TState\n >;\n }\n : Reducer & {\n reducers: Record<\n TActionIntersection['type'],\n (state: TState, action: TRootAction) => TState\n >;\n handleAction: HandleActionChainApi<\n TState,\n Exclude,\n TNotHandledAction\n >;\n };\n\nexport function createReducer(\n initialState: TState,\n initialReducers: Record<\n RootAction['type'],\n (state: TState, action: RootAction) => TState\n > = {}\n) {\n const reducers = { ...initialReducers };\n\n const rootReducer: Reducer = (\n state = initialState,\n action\n ) => {\n if (reducers.hasOwnProperty(action.type)) {\n const reducer = reducers[action.type];\n if (typeof reducer !== 'function') {\n throw Error(\n `Reducer under \"${action.type}\" key is not a valid reducer`\n );\n }\n return reducer(state, action);\n } else {\n return state;\n }\n };\n\n const handleAction = ((singleOrMultipleCreatorsAndTypes, reducer) => {\n const creatorsAndTypes = Array.isArray(singleOrMultipleCreatorsAndTypes)\n ? singleOrMultipleCreatorsAndTypes\n : [singleOrMultipleCreatorsAndTypes];\n\n const newReducers: typeof initialReducers = {};\n creatorsAndTypes\n .map(acOrType =>\n checkValidActionCreator(acOrType)\n ? getType(acOrType)\n : checkValidActionType(acOrType)\n ? acOrType\n : throwInvalidActionTypeOrActionCreator()\n )\n .forEach(type => (newReducers[type] = reducer));\n\n return createReducer(initialState, {\n ...reducers,\n ...newReducers,\n });\n }) as HandleActionChainApi;\n\n return Object.assign(rootReducer, {\n reducers: { ...reducers },\n handleAction,\n } as const);\n}\n","import {\n checkInvalidActionTypeInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[],\n action: A\n): action is A extends { type: T } ? A : never;\n\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[]\n): (\n action: A\n) => action is A extends { type: T } ? A : never;\n\n/**\n * implementation\n */\nexport function isOfType(\n actionTypeOrTypes: T | T[],\n action?: A\n) {\n if (checkIsEmpty(actionTypeOrTypes)) {\n throwIsEmpty(1);\n }\n\n const actionTypes = Array.isArray(actionTypeOrTypes)\n ? actionTypeOrTypes\n : [actionTypeOrTypes];\n\n actionTypes.forEach(checkInvalidActionTypeInArray);\n\n const assertFn = (_action: A) => actionTypes.includes(_action.type);\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","import { TypeMeta } from './type-helpers';\nimport {\n checkInvalidActionCreatorInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n\nexport type ActionCreator = ((\n ...args: any[]\n) => T) &\n TypeMeta;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[],\n action: { type: string }\n): action is ReturnType;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[]\n): (action: { type: string }) => action is ReturnType;\n\n/**\n * implementation\n */\nexport function isActionOf>(\n actionCreatorOrCreators: AC | AC[],\n action?: { type: string }\n) {\n if (checkIsEmpty(actionCreatorOrCreators)) {\n throwIsEmpty(1);\n }\n\n const actionCreators = Array.isArray(actionCreatorOrCreators)\n ? actionCreatorOrCreators\n : [actionCreatorOrCreators];\n\n actionCreators.forEach(checkInvalidActionCreatorInArray);\n\n const assertFn = (_action: { type: string }) =>\n actionCreators.some(\n actionCreator => _action.type === actionCreator.getType!()\n );\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","/**\n * DEPRECATED\n */\n\nimport { TypeConstant } from './type-helpers';\n\ninterface FSA {\n type: T;\n payload?: P;\n meta?: M;\n error?: E;\n}\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction: AC): AC;\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends () => { type: T }\n>(actionType: T): AC;\n\n/**\n * implementation\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction?: AC): AC {\n let actionCreator: AC;\n\n if (creatorFunction != null) {\n if (typeof creatorFunction !== 'function') {\n throw new Error('second argument is not a function');\n }\n\n actionCreator = creatorFunction as AC;\n } else {\n actionCreator = (() => ({ type: actionType })) as AC;\n }\n\n if (actionType != null) {\n if (typeof actionType !== 'string' && typeof actionType !== 'symbol') {\n throw new Error('first argument should be type of: string | symbol');\n }\n } else {\n throw new Error('first argument is missing');\n }\n\n return actionCreator;\n}\n"],"names":["checkIsEmpty","arg","argPosition","throwIsEmpty","Error","checkValidActionCreator","throwInvalidActionCreator","checkInvalidActionCreatorInArray","idx","getType","checkValidActionType","checkInvalidActionType","throwInvalidActionType","checkInvalidActionTypeInArray","action","type","payload","meta","error","createCustomAction","createHandler","actionCreator","Object","assign","toString","__assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","bind","_type","map","fn","requestType","successType","failureType","forEach","request","success","failure","createReducer","initialState","initialReducers","reducers","state","reducer","handleAction","singleOrMultipleCreatorsAndTypes","newReducers","Array","isArray","acOrType","throwInvalidActionTypeOrActionCreator","actionTypeOrTypes","actionTypes","assertFn","_action","includes","undefined","actionCreatorOrCreators","actionCreators","some","actionType","creatorFunction"],"mappings":"2MAEgBA,EAAaC,EAAcC,GACzC,oBADyCA,KAC3B,MAAPD,WAGOE,EAAaD,GAC3B,mBAD2BA,KACrB,IAAIE,MAAM,YAAYF,yBAGdG,EACdJ,GAEA,MAAsB,mBAARA,GAAsB,YAAaA,WAOnCK,EAA0BJ,GACxC,mBADwCA,KAClC,IAAIE,MACR,YAAYF,2FAIAK,EACdN,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,MAAfP,EAAIQ,QACb,MAAM,IAAIL,MAER,yDAAyDI,gFAK/CE,EAAqBT,GACnC,MAAsB,iBAARA,GAAmC,iBAARA,WAG3BU,EAAuBV,GACrC,OAAQS,EAAqBT,YAGfW,EAAuBV,GACrC,mBADqCA,KAC/B,IAAIE,MACR,YAAYF,gFAIAW,EACdZ,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,iBAARP,GAAmC,iBAARA,EAC3C,MAAM,IAAIG,MACR,yDAAyDI,sDCJ/CM,EAKdC,EAASC,EAAaC,EAAUC,GAShC,OARIlB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBT,EAA0B,IAGnBS,OAAMC,UAASC,OAAMC,kBCjEhBC,EAGdJ,EAASK,GACLpB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAGzB,IAAMS,EACa,MAAjBD,EAAwBA,EAAcL,cAAgB,OAAGA,SAE3D,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,KCAb,IAAIU,EAAW,WAQlB,OAPAA,EAAWH,OAAOC,QAAU,SAAkBG,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACON,OAAOW,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAE9E,OAAON,IAEKU,MAAMC,KAAMP,qBC1BhBrB,EACdY,GAUA,OARIrB,EAAaqB,IACflB,EAAa,GJEPE,EICsBgB,IAC5Bf,EAA0B,GAGrBe,EAAcZ,6CCArBM,EACAK,GASA,IAAMC,EACa,MAAjBD,aACY,OAAAN,EAAOC,IACfK,EAAcN,EAAOwB,KAAK,KAAMvB,IAItC,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,sCClBlBA,GA0BA,OAxBIf,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAmBlBU,OAAOC,OAhBd,WACE,OAAOJ,EAAmBJ,EAAM,SAAAwB,GAAS,OAAA,SAACvB,EAAYC,GAAY,OAChEF,KAAMwB,EACNvB,UACAC,aAYgCuB,IARpC,SACEC,GAEA,OAAOtB,EAAmBJ,EAAM,SAAAwB,GAAS,OAAA,SAACvB,EAAYC,GACpD,OAAAK,OAAOC,OAAOkB,EAAGzB,EAASC,IAASF,KAAMwB,+DCH7CG,EACAC,EACAC,GA8BA,OA5BCF,EAAaC,EAAaC,GAAaC,QACtChC,GA2BKS,OAAOC,OAxBd,WAQE,OACEuB,QAAS3B,EAAmBuB,EAAa,SAAA3B,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEF+B,QAAS5B,EAAmBwB,EAAa,SAAA5B,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFgC,QAAS7B,EAAmByB,EAAa,SAAA7B,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,2CCtBQiC,EACdC,EACAC,gBAAAA,MAKA,IAAMC,OAAgBD,GAyCtB,OAAO7B,OAAOC,OAvCoC,SAChD8B,EACAvC,GAEA,gBAHAuC,KAGID,EAASlB,eAAepB,EAAOC,MAAO,CACxC,IAAMuC,EAAUF,EAAStC,EAAOC,MAChC,GAAuB,mBAAZuC,EACT,MAAMlD,MACJ,kBAAkBU,EAAOC,qCAG7B,OAAOuC,EAAQD,EAAOvC,GAEtB,OAAOuC,IA2BTD,cAAeA,GACfG,sBAxBqBC,EAAkCF,GACvD,IAIMG,KAWN,OAfyBC,MAAMC,QAAQH,GACnCA,GACCA,IAIFhB,IAAI,SAAAoB,GACH,OAAAvD,EAAwBuD,GACpBnD,EAAQmD,GACRlD,EAAqBkD,GACrBA,WRbV1D,GAEA,mBAFAA,KAEM,IAAIE,MACR,YAAYF,0HQWJ2D,KAELhB,QAAQ,SAAA9B,GAAQ,OAAC0C,EAAY1C,GAAQuC,IAEjCL,EAAmCC,OACrCE,EACAK,wCChEPK,EACAhD,GAEId,EAAa8D,IACf3D,EAAa,GAGf,IAAM4D,EAAcL,MAAMC,QAAQG,GAC9BA,GACCA,GAELC,EAAYlB,QAAQhC,GAEpB,IAAMmD,EAAW,SAACC,GAAe,OAAAF,EAAYG,SAASD,EAAQlD,OAG9D,YAAeoD,IAAXrD,EACKkD,EAGFA,EAASlD,0BCfhBsD,EACAtD,GAEId,EAAaoE,IACfjE,EAAa,GAGf,IAAMkE,EAAiBX,MAAMC,QAAQS,GACjCA,GACCA,GAELC,EAAexB,QAAQtC,GAEvB,IAAMyD,EAAW,SAACC,GAChB,OAAAI,EAAeC,KACb,SAAAjD,GAAiB,OAAA4C,EAAQlD,OAASM,EAAcZ,aAIpD,YAAe0D,IAAXrD,EACKkD,EAGFA,EAASlD,sCCnBhByD,EAAeC,GACf,IAAInD,EAEJ,GAAuB,MAAnBmD,EAAyB,CAC3B,GAA+B,mBAApBA,EACT,MAAM,IAAIpE,MAAM,qCAGlBiB,EAAgBmD,OAEhBnD,aAAuB,OAAGN,KAAMwD,IAGlC,GAAkB,MAAdA,EAKF,MAAM,IAAInE,MAAM,6BAJhB,GAA0B,iBAAfmE,GAAiD,iBAAfA,EAC3C,MAAM,IAAInE,MAAM,qDAMpB,OAAOiB"} \ No newline at end of file +{"version":3,"file":"index.umd.js","sources":["../src/utils/validation.ts","../src/action.ts","../src/create-custom-action.ts","../node_modules/tslib/tslib.es6.js","../src/get-type.ts","../src/create-action.ts","../src/create-standard-action.ts","../src/create-async-action.ts","../src/create-reducer.ts","../src/is-of-type.ts","../src/is-action-of.ts","../src/create-action-deprecated.ts"],"sourcesContent":["import { ActionCreator, TypeMeta, TypeConstant } from '../type-helpers';\n\nexport function checkIsEmpty(arg: unknown, argPosition: number = 1) {\n return arg == null;\n}\n\nexport function throwIsEmpty(argPosition: number = 1): never {\n throw new Error(`Argument ${argPosition} is empty.`);\n}\n\nexport function checkValidActionCreator(\n arg: unknown\n): arg is ActionCreator {\n return typeof arg === 'function' && 'getType' in arg;\n}\n\nexport function checkInvalidActionCreator(arg: unknown) {\n return !checkValidActionCreator(arg);\n}\n\nexport function throwInvalidActionCreator(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\"`\n );\n}\n\nexport function checkInvalidActionCreatorInArray(\n arg: ActionCreator & TypeMeta,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (arg.getType == null) {\n throw new Error(\n // tslint:disable-next-line:max-line-length\n `Argument contains array with invalid element at index ${idx}, it should be an action-creator instance from \"typesafe-actions\"`\n );\n }\n}\n\nexport function checkValidActionType(arg: unknown): arg is string | symbol {\n return typeof arg === 'string' || typeof arg === 'symbol';\n}\n\nexport function checkInvalidActionType(arg: unknown): arg is string | symbol {\n return !checkValidActionType(arg);\n}\n\nexport function throwInvalidActionType(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action type of type: string | symbol`\n );\n}\n\nexport function checkInvalidActionTypeInArray(\n arg: TypeConstant,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (typeof arg !== 'string' && typeof arg !== 'symbol') {\n throw new Error(\n `Argument contains array with invalid element at index ${idx}, it should be of type: string | symbol`\n );\n }\n}\n\nexport function throwInvalidActionTypeOrActionCreator(\n argPosition: number = 1\n): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\" or action type of type: string | symbol`\n );\n}\n","import { TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionCreator,\n} from './utils/validation';\n\nexport function action(\n type: T,\n payload: undefined,\n meta: undefined,\n error: E\n): { type: T; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M,\n error: E\n): { type: T; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: undefined,\n error: E\n): { type: T; payload: P; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: M,\n error: E\n): { type: T; payload: P; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M\n): { type: T; meta: M };\n\nexport function action(\n type: T,\n payload: P,\n meta: M\n): { type: T; payload: P; meta: M };\n\nexport function action(\n type: T,\n payload: P\n): { type: T; payload: P };\n\nexport function action(type: T): { type: T };\n\n/**\n * @description flux standard action factory\n * @example\n * ```\n * const add = (amount: number, meta?: MetaShape) => action('INCREMENT', amount, meta);\n * ```\n */\nexport function action<\n T extends TypeConstant,\n P = undefined,\n M = undefined,\n E = undefined\n>(type: T, payload?: P, meta?: M, error?: E) {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionCreator(1);\n }\n\n return { type, payload, meta, error } as any;\n}\n","import { ActionCreator, TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\n/**\n * @description create custom action-creator using constructor function with injected type argument\n */\nexport function createCustomAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(type: T, createHandler?: (type: T) => AC): AC {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n const actionCreator: AC =\n createHandler != null ? createHandler(type) : ((() => ({ type })) as AC);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { TypeConstant, ActionCreator, TypeMeta } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionCreator,\n throwInvalidActionCreator,\n} from './utils/validation';\n\n/**\n * @description get the \"type literal\" of a given action-creator\n */\nexport function getType(\n actionCreator: ActionCreator & TypeMeta\n): T {\n if (checkIsEmpty(actionCreator)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionCreator(actionCreator)) {\n throwInvalidActionCreator(1);\n }\n\n return actionCreator.getType!();\n}\n","import { TypeConstant, ActionCreator } from './type-helpers';\nimport { action } from './action';\n\nexport type PayloadMetaAction<\n T extends TypeConstant,\n P,\n M\n> = P extends undefined\n ? M extends undefined\n ? { type: T }\n : { type: T; meta: M }\n : M extends undefined\n ? { type: T; payload: P }\n : { type: T; payload: P; meta: M };\n\n/**\n * @description typesafe action-creator factory\n */\nexport function createAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(\n type: T,\n createHandler?: (\n actionCallback:

(\n payload?: P,\n meta?: M\n ) => PayloadMetaAction\n ) => AC\n): AC {\n // validation is already done in action function\n\n const actionCreator: AC =\n createHandler == null\n ? ((() => action(type)) as AC)\n : createHandler(action.bind(null, type) as Parameters<\n typeof createHandler\n >[0]);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\nexport interface ActionBuilder {\n

(): ActionBuilderConstructor;\n map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap;\n}\n\n/**\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createStandardAction(\n type: T\n): ActionBuilder {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n function constructor(): ActionBuilderConstructor {\n return createCustomAction(type, _type => (payload: P, meta: M) => ({\n type: _type,\n payload,\n meta,\n })) as ActionBuilderConstructor;\n }\n\n function map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap {\n return createCustomAction(type, _type => (payload: P, meta: M) =>\n Object.assign(fn(payload, meta), { type: _type })\n ) as ActionBuilderMap;\n }\n\n return Object.assign(constructor, { map });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n // ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport { checkInvalidActionTypeInArray } from './utils/validation';\n\nexport interface AsyncActionBuilder<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n> {\n // tslint:disable-next-line:callable-types\n (): AsyncActionBuilderConstructor;\n // withMappers(\n // requestMapper: (a?: A1) => P1,\n // successMapper: (a?: A2) => P2,\n // failureMapper: (a?: A3) => P3\n // ): AsyncActionBuilderWithMappers;\n}\n\nexport type AsyncActionBuilderConstructor<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant,\n P1,\n P2,\n P3\n> = {\n request: ActionBuilderConstructor;\n success: ActionBuilderConstructor;\n failure: ActionBuilderConstructor;\n};\n\n/**\n * implementation\n */\nexport function createAsyncAction<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n>(\n requestType: T1,\n successType: T2,\n failureType: T3\n): AsyncActionBuilder {\n [requestType, successType, failureType].forEach(\n checkInvalidActionTypeInArray\n );\n\n function constructor(): AsyncActionBuilderConstructor<\n T1,\n T2,\n T3,\n P1,\n P2,\n P3\n > {\n return {\n request: createCustomAction(requestType, type => (payload?: P1) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n success: createCustomAction(successType, type => (payload?: P2) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n failure: createCustomAction(failureType, type => (payload?: P3) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n };\n }\n\n return Object.assign(constructor);\n}\n\n// export type AsyncActionBuilderWithMappers<\n// T1 extends StringType,\n// T2 extends StringType,\n// T3 extends StringType,\n// A1 = undefined,\n// P1 = undefined,\n// A2 = undefined,\n// P2 = undefined,\n// A3 = undefined,\n// P3 = undefined\n// > = {\n// request: ActionBuilderMap;\n// success: ActionBuilderMap;\n// failure: ActionBuilderMap;\n// };\n\n// function withMappers(\n// requestMapper: (a?: A1) => P1,\n// successMapper: (a?: A2) => P2,\n// failureMapper: (a?: A3) => P3\n// ): AsyncActionBuilderWithMappers {\n// return {\n// request: createCustomAction(requestType, type => (payload?: A1) => ({\n// type,\n// payload: requestMapper != null ? requestMapper(payload) : undefined,\n// })) as MapBuilder,\n// success: createCustomAction(successType, type => (payload?: A2) => ({\n// type,\n// payload: successMapper != null ? successMapper(payload) : undefined,\n// })) as MapBuilder,\n// failure: createCustomAction(failureType, type => (payload?: A3) => ({\n// type,\n// payload: failureMapper != null ? failureMapper(payload) : undefined,\n// })) as MapBuilder,\n// };\n// }\n","// @ts-ignore\nimport { RootAction } from './';\nimport { getType } from './get-type';\nimport {\n checkValidActionCreator,\n checkValidActionType,\n throwInvalidActionTypeOrActionCreator,\n} from './utils/validation';\nimport { Reducer, Action } from './type-helpers';\n\ntype HandleActionChainApi<\n TState,\n TNotHandledAction extends Action,\n TRootAction extends Action\n> = <\n TType extends TNotHandledAction['type'],\n TTypeAction extends TNotHandledAction extends { type: TType }\n ? TNotHandledAction\n : never,\n TCreator extends (...args: any[]) => TNotHandledAction,\n TCreatorAction extends TNotHandledAction extends ReturnType\n ? TNotHandledAction\n : never,\n TActionIntersection extends TTypeAction extends TCreatorAction\n ? TTypeAction\n : never\n>(\n singleOrMultipleCreatorsAndTypes: TType | TType[] | TCreator | TCreator[],\n reducer: (state: TState, action: TActionIntersection) => TState\n) => [Exclude] extends [never]\n ? Reducer & {\n handlers: Record<\n TActionIntersection['type'],\n (state: TState, action: TRootAction) => TState\n >;\n }\n : Reducer & {\n handlers: Record<\n TActionIntersection['type'],\n (state: TState, action: TRootAction) => TState\n >;\n handleAction: HandleActionChainApi<\n TState,\n Exclude,\n TNotHandledAction\n >;\n };\n\nexport function createReducer(\n initialState: TState,\n initialReducers: Record<\n RootAction['type'],\n (state: TState, action: RootAction) => TState\n > = {}\n) {\n const handlers = { ...initialReducers };\n\n const rootReducer: Reducer = (\n state = initialState,\n action\n ) => {\n if (handlers.hasOwnProperty(action.type)) {\n const reducer = handlers[action.type];\n if (typeof reducer !== 'function') {\n throw Error(\n `Reducer under \"${action.type}\" key is not a valid reducer`\n );\n }\n return reducer(state, action);\n } else {\n return state;\n }\n };\n\n const handleAction = ((singleOrMultipleCreatorsAndTypes, reducer) => {\n const creatorsAndTypes = Array.isArray(singleOrMultipleCreatorsAndTypes)\n ? singleOrMultipleCreatorsAndTypes\n : [singleOrMultipleCreatorsAndTypes];\n\n const newHandlers: typeof initialReducers = {};\n creatorsAndTypes\n .map(acOrType =>\n checkValidActionCreator(acOrType)\n ? getType(acOrType)\n : checkValidActionType(acOrType)\n ? acOrType\n : throwInvalidActionTypeOrActionCreator()\n )\n .forEach(type => (newHandlers[type] = reducer));\n\n return createReducer(initialState, {\n ...handlers,\n ...newHandlers,\n });\n }) as HandleActionChainApi;\n\n return Object.assign(rootReducer, {\n handlers: { ...handlers },\n handleAction,\n } as const);\n}\n","import {\n checkInvalidActionTypeInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[],\n action: A\n): action is A extends { type: T } ? A : never;\n\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[]\n): (\n action: A\n) => action is A extends { type: T } ? A : never;\n\n/**\n * implementation\n */\nexport function isOfType(\n actionTypeOrTypes: T | T[],\n action?: A\n) {\n if (checkIsEmpty(actionTypeOrTypes)) {\n throwIsEmpty(1);\n }\n\n const actionTypes = Array.isArray(actionTypeOrTypes)\n ? actionTypeOrTypes\n : [actionTypeOrTypes];\n\n actionTypes.forEach(checkInvalidActionTypeInArray);\n\n const assertFn = (_action: A) => actionTypes.includes(_action.type);\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","import { TypeMeta } from './type-helpers';\nimport {\n checkInvalidActionCreatorInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n\nexport type ActionCreator = ((\n ...args: any[]\n) => T) &\n TypeMeta;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[],\n action: { type: string }\n): action is ReturnType;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[]\n): (action: { type: string }) => action is ReturnType;\n\n/**\n * implementation\n */\nexport function isActionOf>(\n actionCreatorOrCreators: AC | AC[],\n action?: { type: string }\n) {\n if (checkIsEmpty(actionCreatorOrCreators)) {\n throwIsEmpty(1);\n }\n\n const actionCreators = Array.isArray(actionCreatorOrCreators)\n ? actionCreatorOrCreators\n : [actionCreatorOrCreators];\n\n actionCreators.forEach(checkInvalidActionCreatorInArray);\n\n const assertFn = (_action: { type: string }) =>\n actionCreators.some(\n actionCreator => _action.type === actionCreator.getType!()\n );\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","/**\n * DEPRECATED\n */\n\nimport { TypeConstant } from './type-helpers';\n\ninterface FSA {\n type: T;\n payload?: P;\n meta?: M;\n error?: E;\n}\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction: AC): AC;\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends () => { type: T }\n>(actionType: T): AC;\n\n/**\n * implementation\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction?: AC): AC {\n let actionCreator: AC;\n\n if (creatorFunction != null) {\n if (typeof creatorFunction !== 'function') {\n throw new Error('second argument is not a function');\n }\n\n actionCreator = creatorFunction as AC;\n } else {\n actionCreator = (() => ({ type: actionType })) as AC;\n }\n\n if (actionType != null) {\n if (typeof actionType !== 'string' && typeof actionType !== 'symbol') {\n throw new Error('first argument should be type of: string | symbol');\n }\n } else {\n throw new Error('first argument is missing');\n }\n\n return actionCreator;\n}\n"],"names":["checkIsEmpty","arg","argPosition","throwIsEmpty","Error","checkValidActionCreator","throwInvalidActionCreator","checkInvalidActionCreatorInArray","idx","getType","checkValidActionType","checkInvalidActionType","throwInvalidActionType","checkInvalidActionTypeInArray","action","type","payload","meta","error","createCustomAction","createHandler","actionCreator","Object","assign","toString","__assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","bind","_type","map","fn","requestType","successType","failureType","forEach","request","success","failure","createReducer","initialState","initialReducers","handlers","state","reducer","handleAction","singleOrMultipleCreatorsAndTypes","newHandlers","Array","isArray","acOrType","throwInvalidActionTypeOrActionCreator","actionTypeOrTypes","actionTypes","assertFn","_action","includes","undefined","actionCreatorOrCreators","actionCreators","some","actionType","creatorFunction"],"mappings":"2MAEgBA,EAAaC,EAAcC,GACzC,oBADyCA,KAC3B,MAAPD,WAGOE,EAAaD,GAC3B,mBAD2BA,KACrB,IAAIE,MAAM,YAAYF,yBAGdG,EACdJ,GAEA,MAAsB,mBAARA,GAAsB,YAAaA,WAOnCK,EAA0BJ,GACxC,mBADwCA,KAClC,IAAIE,MACR,YAAYF,2FAIAK,EACdN,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,MAAfP,EAAIQ,QACb,MAAM,IAAIL,MAER,yDAAyDI,gFAK/CE,EAAqBT,GACnC,MAAsB,iBAARA,GAAmC,iBAARA,WAG3BU,EAAuBV,GACrC,OAAQS,EAAqBT,YAGfW,EAAuBV,GACrC,mBADqCA,KAC/B,IAAIE,MACR,YAAYF,gFAIAW,EACdZ,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,iBAARP,GAAmC,iBAARA,EAC3C,MAAM,IAAIG,MACR,yDAAyDI,sDCJ/CM,EAKdC,EAASC,EAAaC,EAAUC,GAShC,OARIlB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBT,EAA0B,IAGnBS,OAAMC,UAASC,OAAMC,kBCjEhBC,EAGdJ,EAASK,GACLpB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAGzB,IAAMS,EACa,MAAjBD,EAAwBA,EAAcL,cAAgB,OAAGA,SAE3D,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,KCAb,IAAIU,EAAW,WAQlB,OAPAA,EAAWH,OAAOC,QAAU,SAAkBG,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACON,OAAOW,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAE9E,OAAON,IAEKU,MAAMC,KAAMP,qBC1BhBrB,EACdY,GAUA,OARIrB,EAAaqB,IACflB,EAAa,GJEPE,EICsBgB,IAC5Bf,EAA0B,GAGrBe,EAAcZ,6CCArBM,EACAK,GASA,IAAMC,EACa,MAAjBD,aACY,OAAAN,EAAOC,IACfK,EAAcN,EAAOwB,KAAK,KAAMvB,IAItC,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,sCClBlBA,GA0BA,OAxBIf,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAmBlBU,OAAOC,OAhBd,WACE,OAAOJ,EAAmBJ,EAAM,SAAAwB,GAAS,OAAA,SAACvB,EAAYC,GAAY,OAChEF,KAAMwB,EACNvB,UACAC,aAYgCuB,IARpC,SACEC,GAEA,OAAOtB,EAAmBJ,EAAM,SAAAwB,GAAS,OAAA,SAACvB,EAAYC,GACpD,OAAAK,OAAOC,OAAOkB,EAAGzB,EAASC,IAASF,KAAMwB,+DCH7CG,EACAC,EACAC,GA8BA,OA5BCF,EAAaC,EAAaC,GAAaC,QACtChC,GA2BKS,OAAOC,OAxBd,WAQE,OACEuB,QAAS3B,EAAmBuB,EAAa,SAAA3B,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEF+B,QAAS5B,EAAmBwB,EAAa,SAAA5B,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFgC,QAAS7B,EAAmByB,EAAa,SAAA7B,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,2CCtBQiC,EACdC,EACAC,gBAAAA,MAKA,IAAMC,OAAgBD,GAyCtB,OAAO7B,OAAOC,OAvCoC,SAChD8B,EACAvC,GAEA,gBAHAuC,KAGID,EAASlB,eAAepB,EAAOC,MAAO,CACxC,IAAMuC,EAAUF,EAAStC,EAAOC,MAChC,GAAuB,mBAAZuC,EACT,MAAMlD,MACJ,kBAAkBU,EAAOC,qCAG7B,OAAOuC,EAAQD,EAAOvC,GAEtB,OAAOuC,IA2BTD,cAAeA,GACfG,sBAxBqBC,EAAkCF,GACvD,IAIMG,KAWN,OAfyBC,MAAMC,QAAQH,GACnCA,GACCA,IAIFhB,IAAI,SAAAoB,GACH,OAAAvD,EAAwBuD,GACpBnD,EAAQmD,GACRlD,EAAqBkD,GACrBA,WRbV1D,GAEA,mBAFAA,KAEM,IAAIE,MACR,YAAYF,0HQWJ2D,KAELhB,QAAQ,SAAA9B,GAAQ,OAAC0C,EAAY1C,GAAQuC,IAEjCL,EAAmCC,OACrCE,EACAK,wCChEPK,EACAhD,GAEId,EAAa8D,IACf3D,EAAa,GAGf,IAAM4D,EAAcL,MAAMC,QAAQG,GAC9BA,GACCA,GAELC,EAAYlB,QAAQhC,GAEpB,IAAMmD,EAAW,SAACC,GAAe,OAAAF,EAAYG,SAASD,EAAQlD,OAG9D,YAAeoD,IAAXrD,EACKkD,EAGFA,EAASlD,0BCfhBsD,EACAtD,GAEId,EAAaoE,IACfjE,EAAa,GAGf,IAAMkE,EAAiBX,MAAMC,QAAQS,GACjCA,GACCA,GAELC,EAAexB,QAAQtC,GAEvB,IAAMyD,EAAW,SAACC,GAChB,OAAAI,EAAeC,KACb,SAAAjD,GAAiB,OAAA4C,EAAQlD,OAASM,EAAcZ,aAIpD,YAAe0D,IAAXrD,EACKkD,EAGFA,EAASlD,sCCnBhByD,EAAeC,GACf,IAAInD,EAEJ,GAAuB,MAAnBmD,EAAyB,CAC3B,GAA+B,mBAApBA,EACT,MAAM,IAAIpE,MAAM,qCAGlBiB,EAAgBmD,OAEhBnD,aAAuB,OAAGN,KAAMwD,IAGlC,GAAkB,MAAdA,EAKF,MAAM,IAAInE,MAAM,6BAJhB,GAA0B,iBAAfmE,GAAiD,iBAAfA,EAC3C,MAAM,IAAInE,MAAM,qDAMpB,OAAOiB"} \ No newline at end of file diff --git a/src/__snapshots__/create-reducer.spec.ts.snap b/src/__snapshots__/create-reducer.spec.ts.snap index 151ca13..2d3ce78 100644 --- a/src/__snapshots__/create-reducer.spec.ts.snap +++ b/src/__snapshots__/create-reducer.spec.ts.snap @@ -1,17 +1,17 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`With Action Creators counterReducer1 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"ADD\\" | \\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; }"`; +exports[`With Action Creators counterReducer1 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record<\\"ADD\\" | \\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; }"`; -exports[`With Action Creators counterReducer2 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; }"`; +exports[`With Action Creators counterReducer2 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record<\\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; }"`; -exports[`With Action Creators counterReducer3 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"ADD\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.EmptyAction<\\"INCREMENT\\"> : never, TCreator extends (...args: any[]) => T.EmptyAction<\\"INCREMENT\\">, TCreatorAction extends T.EmptyAction<\\"INCREMENT\\"> extends ReturnType ? ReturnType & T.EmptyAction<\\"INCREMENT\\"> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; } : T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: , TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { reducers: Record) => number>; } : T.Reducer> & { reducers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; }"`; +exports[`With Action Creators counterReducer3 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record<\\"ADD\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.EmptyAction<\\"INCREMENT\\"> : never, TCreator extends (...args: any[]) => T.EmptyAction<\\"INCREMENT\\">, TCreatorAction extends T.EmptyAction<\\"INCREMENT\\"> extends ReturnType ? ReturnType & T.EmptyAction<\\"INCREMENT\\"> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; } : T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: , TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { handlers: Record) => number>; } : T.Reducer> & { handlers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; }"`; -exports[`With Action Creators counterReducer4 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.PayloadAction<\\"ADD\\", number> : never, TCreator extends (...args: any[]) => T.PayloadAction<\\"ADD\\", number>, TCreatorAction extends T.PayloadAction<\\"ADD\\", number> extends ReturnType ? ReturnType & T.PayloadAction<\\"ADD\\", number> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; } : T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: , TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { reducers: Record) => number>; } : T.Reducer> & { reducers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; }"`; +exports[`With Action Creators counterReducer4 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record<\\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.PayloadAction<\\"ADD\\", number> : never, TCreator extends (...args: any[]) => T.PayloadAction<\\"ADD\\", number>, TCreatorAction extends T.PayloadAction<\\"ADD\\", number> extends ReturnType ? ReturnType & T.PayloadAction<\\"ADD\\", number> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; } : T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: , TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { handlers: Record) => number>; } : T.Reducer> & { handlers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; }"`; -exports[`With Action Types counterReducer1 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"ADD\\" | \\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; }"`; +exports[`With Action Types counterReducer1 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record<\\"ADD\\" | \\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; }"`; -exports[`With Action Types counterReducer2 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; }"`; +exports[`With Action Types counterReducer2 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record<\\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; }"`; -exports[`With Action Types counterReducer3 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"ADD\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.EmptyAction<\\"INCREMENT\\"> : never, TCreator extends (...args: any[]) => T.EmptyAction<\\"INCREMENT\\">, TCreatorAction extends T.EmptyAction<\\"INCREMENT\\"> extends ReturnType ? ReturnType & T.EmptyAction<\\"INCREMENT\\"> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; } : T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: , TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { reducers: Record) => number>; } : T.Reducer> & { reducers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; }"`; +exports[`With Action Types counterReducer3 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record<\\"ADD\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.EmptyAction<\\"INCREMENT\\"> : never, TCreator extends (...args: any[]) => T.EmptyAction<\\"INCREMENT\\">, TCreatorAction extends T.EmptyAction<\\"INCREMENT\\"> extends ReturnType ? ReturnType & T.EmptyAction<\\"INCREMENT\\"> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; } : T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: , TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { handlers: Record) => number>; } : T.Reducer> & { handlers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; }"`; -exports[`With Action Types counterReducer4 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record<\\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.PayloadAction<\\"ADD\\", number> : never, TCreator extends (...args: any[]) => T.PayloadAction<\\"ADD\\", number>, TCreatorAction extends T.PayloadAction<\\"ADD\\", number> extends ReturnType ? ReturnType & T.PayloadAction<\\"ADD\\", number> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; } : T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { reducers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: , TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { reducers: Record) => number>; } : T.Reducer> & { reducers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { reducers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; }"`; +exports[`With Action Types counterReducer4 1`] = `"T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record<\\"INCREMENT\\", (state: number, action: T.PayloadAction<\\"ADD\\", number> | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.PayloadAction<\\"ADD\\", number> : never, TCreator extends (...args: any[]) => T.PayloadAction<\\"ADD\\", number>, TCreatorAction extends T.PayloadAction<\\"ADD\\", number> extends ReturnType ? ReturnType & T.PayloadAction<\\"ADD\\", number> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; } : T.Reducer | T.EmptyAction<\\"INCREMENT\\">> & { handlers: Record | T.EmptyAction<\\"INCREMENT\\">) => number>; handleAction: , TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { handlers: Record) => number>; } : T.Reducer> & { handlers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>[\\"type\\"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; }"`; diff --git a/src/create-reducer.spec.snap.ts b/src/create-reducer.spec.snap.ts index 8d968f3..93a5a91 100644 --- a/src/create-reducer.spec.snap.ts +++ b/src/create-reducer.spec.snap.ts @@ -2,6 +2,7 @@ import * as T from './type-helpers'; // type-tests global import { ActionType } from './type-helpers'; import { createStandardAction } from './create-standard-action'; import { createReducer } from './create-reducer'; +import { getType } from './get-type'; const add = createStandardAction('ADD')(); const increment = createStandardAction('INCREMENT')(); @@ -11,70 +12,136 @@ declare module './' { export type RootAction = ActionType; } -// TODO: add type-test cases - const initialState = 0; -describe('With Action Creators', () => { - const counterReducer1 = createReducer(initialState).addHandler( + +// @dts-jest:group With Action Creators +{ + const reducerTest = createReducer(initialState); + + const counterReducer1 = reducerTest.handleAction( [add, increment], - (state, action) => { - return state + (action.type === 'ADD' ? action.payload : 1); - } + (state, action) => state + (action.type === 'ADD' ? action.payload : 1) ); - const counterReducer2 = createReducer(initialState) - .addHandler([add], (state, action) => { - return state + action.payload; - }) - .addHandler([increment], (state, _) => { - return state + 1; - }); - const counterReducer3 = createReducer(initialState) - .addHandler(add, (state, action) => { - return state + action.payload; - }) - .addHandler(increment, (state, _) => { - return state + 1; + // @dts-jest:pass:snap -> T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record<"ADD" | "INCREMENT", (state: number, action: T.PayloadAction<"ADD", number> | T.EmptyAction<"INCREMENT">) => number>; } + counterReducer1; + // @dts-jest:pass + Object.keys({ ...counterReducer1.handlers }); // => ["ADD", "INCREMENT"] + // @dts-jest:pass + Object.keys({ ...reducerTest.handlers }); // => [] + + const counterReducer2 = reducerTest + .handleAction([add], (state, action) => state + action.payload) + .handleAction([increment], (state, _) => state + 1); + // @dts-jest:pass:snap -> T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record<"INCREMENT", (state: number, action: T.PayloadAction<"ADD", number> | T.EmptyAction<"INCREMENT">) => number>; } + counterReducer2; + // @dts-jest:pass + Object.keys({ ...counterReducer2.handlers }); // => ["ADD", "INCREMENT"] + // @dts-jest:pass + Object.keys({ ...reducerTest.handlers }); // => [] + + const counterReducer3 = reducerTest.handleAction( + add, + (state, action) => state + action.payload + ); + // @dts-jest:pass:snap -> T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record<"ADD", (state: number, action: T.PayloadAction<"ADD", number> | T.EmptyAction<"INCREMENT">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.EmptyAction<"INCREMENT"> : never, TCreator extends (...args: any[]) => T.EmptyAction<"INCREMENT">, TCreatorAction extends T.EmptyAction<"INCREMENT"> extends ReturnType ? ReturnType & T.EmptyAction<"INCREMENT"> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record | T.EmptyAction<"INCREMENT">) => number>; } : T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record | T.EmptyAction<"INCREMENT">) => number>; handleAction: , TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { handlers: Record) => number>; } : T.Reducer> & { handlers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; } + counterReducer3; + // @dts-jest:pass + Object.keys({ ...counterReducer3.handlers }); // => [ "ADD"] + // @dts-jest:pass + Object.keys({ ...reducerTest.handlers }); // => [] + + const counterReducer4 = reducerTest.handleAction( + increment, + (state, _) => state + 1 + ); + // @dts-jest:pass:snap -> T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record<"INCREMENT", (state: number, action: T.PayloadAction<"ADD", number> | T.EmptyAction<"INCREMENT">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.PayloadAction<"ADD", number> : never, TCreator extends (...args: any[]) => T.PayloadAction<"ADD", number>, TCreatorAction extends T.PayloadAction<"ADD", number> extends ReturnType ? ReturnType & T.PayloadAction<"ADD", number> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record | T.EmptyAction<"INCREMENT">) => number>; } : T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record | T.EmptyAction<"INCREMENT">) => number>; handleAction: , TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { handlers: Record) => number>; } : T.Reducer> & { handlers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; } + counterReducer4; + // @dts-jest:pass + Object.keys({ ...counterReducer4.handlers }); // => [ "INCREMENT"] + // @dts-jest:pass + Object.keys({ ...reducerTest.handlers }); // => [] + + { + [ + counterReducer1, + counterReducer2, + createReducer(initialState, { + [getType(add)]: counterReducer3.handlers.ADD, + [getType(increment)]: counterReducer4.handlers.INCREMENT, + }), + ].forEach(fn => { + // @dts-jest:pass + fn(0, {} as any); // => 0 + // @dts-jest:pass + fn(0, increment()); // => 1 + // @dts-jest:pass + fn(0, add(4)); // => 4 }); + } +} - [counterReducer1, counterReducer2, counterReducer3].forEach(fn => { - // @dts-jest:pass:snap -> number - fn(0, {} as any); // => 0 - // @dts-jest:pass:snap -> number - fn(0, increment()); // => 1 - // @dts-jest:pass:snap -> number - fn(0, add(4)); // => 4 - }); -}); +// @dts-jest:group With Action Types +{ + const reducerTest = createReducer(initialState); -describe('With Action Types', () => { - const counterReducer1 = createReducer(initialState).addHandler( + const counterReducer1 = reducerTest.handleAction( ['ADD', 'INCREMENT'], - (state, action) => { - return state + (action.type === 'ADD' ? action.payload : 1); - } + (state, action) => state + (action.type === 'ADD' ? action.payload : 1) ); + // @dts-jest:pass:snap -> T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record<"ADD" | "INCREMENT", (state: number, action: T.PayloadAction<"ADD", number> | T.EmptyAction<"INCREMENT">) => number>; } + counterReducer1; + // @dts-jest:pass + Object.keys({ ...counterReducer1.handlers }); // => ["ADD", "INCREMENT"] + // @dts-jest:pass + Object.keys({ ...reducerTest.handlers }); // => [] - const counterReducer2 = createReducer(initialState) - .addHandler(['ADD'], (state, action) => { - return state + action.payload; - }) - .addHandler(['INCREMENT'], (state, _) => { - return state + 1; - }); - const counterReducer3 = createReducer(initialState) - .addHandler('ADD', (state, action) => { - return state + action.payload; - }) - .addHandler('INCREMENT', (state, _) => { - return state + 1; - }); + const counterReducer2 = reducerTest + .handleAction(['ADD'], (state, action) => state + action.payload) + .handleAction(['INCREMENT'], (state, _) => state + 1); + // @dts-jest:pass:snap -> T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record<"INCREMENT", (state: number, action: T.PayloadAction<"ADD", number> | T.EmptyAction<"INCREMENT">) => number>; } + counterReducer2; + // @dts-jest:pass + Object.keys({ ...counterReducer2.handlers }); // => ["ADD", "INCREMENT"] + // @dts-jest:pass + Object.keys({ ...reducerTest.handlers }); // => [] + + const counterReducer3 = reducerTest.handleAction( + 'ADD', + (state, action) => state + action.payload + ); + // @dts-jest:pass:snap -> T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record<"ADD", (state: number, action: T.PayloadAction<"ADD", number> | T.EmptyAction<"INCREMENT">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.EmptyAction<"INCREMENT"> : never, TCreator extends (...args: any[]) => T.EmptyAction<"INCREMENT">, TCreatorAction extends T.EmptyAction<"INCREMENT"> extends ReturnType ? ReturnType & T.EmptyAction<"INCREMENT"> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record | T.EmptyAction<"INCREMENT">) => number>; } : T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record | T.EmptyAction<"INCREMENT">) => number>; handleAction: , TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { handlers: Record) => number>; } : T.Reducer> & { handlers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; } + counterReducer3; + // @dts-jest:pass + Object.keys({ ...counterReducer3.handlers }); // => ["ADD"] + // @dts-jest:pass + Object.keys({ ...reducerTest.handlers }); // => [] - [counterReducer1, counterReducer2, counterReducer3].forEach(fn => { - // @dts-jest:pass:snap -> number - fn(0, {} as any); // => 0 - // @dts-jest:pass:snap -> number - fn(0, increment()); // => 1 - // @dts-jest:pass:snap -> number - fn(0, add(4)); // => 4 - }); -}); + const counterReducer4 = reducerTest.handleAction( + 'INCREMENT', + (state, _) => state + 1 + ); + // @dts-jest:pass:snap -> T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record<"INCREMENT", (state: number, action: T.PayloadAction<"ADD", number> | T.EmptyAction<"INCREMENT">) => number>; handleAction: extends { type: TType; } ? { type: TType; } & T.PayloadAction<"ADD", number> : never, TCreator extends (...args: any[]) => T.PayloadAction<"ADD", number>, TCreatorAction extends T.PayloadAction<"ADD", number> extends ReturnType ? ReturnType & T.PayloadAction<"ADD", number> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record | T.EmptyAction<"INCREMENT">) => number>; } : T.Reducer | T.EmptyAction<"INCREMENT">> & { handlers: Record | T.EmptyAction<"INCREMENT">) => number>; handleAction: , TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer> & { handlers: Record) => number>; } : T.Reducer> & { handlers: Record) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; handleAction: , TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>["type"], TTypeAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends { type: TType; } ? { type: TType; } & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TCreator extends (...args: any[]) => Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TCreatorAction extends Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> extends ReturnType ? ReturnType & Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction> : never, TActionIntersection extends TTypeAction extends TCreatorAction ? TTypeAction : never>(singleOrMultipleCreatorsAndTypes: TType | TCreator | TType[] | TCreator[], reducer: (state: number, action: TActionIntersection) => number) => [Exclude, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>] extends [never] ? T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & { handlers: Record, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>) => number>; } : T.Reducer, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>, TTypeAction & TCreatorAction>> & any; }; }; }; }; }; }; }; }; }; }; } + counterReducer4; + // @dts-jest:pass + Object.keys({ ...counterReducer4.handlers }); // => [ "INCREMENT"] + // @dts-jest:pass + Object.keys({ ...reducerTest.handlers }); // => [] + + { + [ + counterReducer1, + counterReducer2, + createReducer(initialState, { + ADD: counterReducer3.handlers.ADD, + INCREMENT: counterReducer4.handlers.INCREMENT, + }), + ].forEach(fn => { + // @dts-jest:pass + fn(0, {} as any); // => 0 + // @dts-jest:pass + fn(0, increment()); // => 1 + // @dts-jest:pass + fn(0, add(4)); // => 4 + }); + } +} diff --git a/src/create-reducer.spec.ts b/src/create-reducer.spec.ts index e16f7e0..49d3ecf 100644 --- a/src/create-reducer.spec.ts +++ b/src/create-reducer.spec.ts @@ -20,58 +20,54 @@ const initialState = 0; const counterReducer1 = reducerTest.handleAction( [add, increment], - (state, action) => { - return state + (action.type === 'ADD' ? action.payload : 1); - } + (state, action) => state + (action.type === 'ADD' ? action.payload : 1) ); // @dts-jest:pass:snap counterReducer1; // @dts-jest:pass - Object.keys({ ...counterReducer1.reducers }); // => ["ADD", "INCREMENT"] + Object.keys({ ...counterReducer1.handlers }); // => ["ADD", "INCREMENT"] // @dts-jest:pass - Object.keys({ ...reducerTest.reducers }); // => [] + Object.keys({ ...reducerTest.handlers }); // => [] const counterReducer2 = reducerTest - .handleAction([add], (state, action) => { - return state + action.payload; - }) - .handleAction([increment], (state, _) => { - return state + 1; - }); + .handleAction([add], (state, action) => state + action.payload) + .handleAction([increment], (state, _) => state + 1); // @dts-jest:pass:snap counterReducer2; // @dts-jest:pass - Object.keys({ ...counterReducer2.reducers }); // => ["ADD", "INCREMENT"] + Object.keys({ ...counterReducer2.handlers }); // => ["ADD", "INCREMENT"] // @dts-jest:pass - Object.keys({ ...reducerTest.reducers }); // => [] + Object.keys({ ...reducerTest.handlers }); // => [] - const counterReducer3 = reducerTest.handleAction(add, (state, action) => { - return state + action.payload; - }); + const counterReducer3 = reducerTest.handleAction( + add, + (state, action) => state + action.payload + ); // @dts-jest:pass:snap counterReducer3; // @dts-jest:pass - Object.keys({ ...counterReducer3.reducers }); // => [ "ADD"] + Object.keys({ ...counterReducer3.handlers }); // => [ "ADD"] // @dts-jest:pass - Object.keys({ ...reducerTest.reducers }); // => [] + Object.keys({ ...reducerTest.handlers }); // => [] - const counterReducer4 = reducerTest.handleAction(increment, (state, _) => { - return state + 1; - }); + const counterReducer4 = reducerTest.handleAction( + increment, + (state, _) => state + 1 + ); // @dts-jest:pass:snap counterReducer4; // @dts-jest:pass - Object.keys({ ...counterReducer4.reducers }); // => [ "INCREMENT"] + Object.keys({ ...counterReducer4.handlers }); // => [ "INCREMENT"] // @dts-jest:pass - Object.keys({ ...reducerTest.reducers }); // => [] + Object.keys({ ...reducerTest.handlers }); // => [] { [ counterReducer1, counterReducer2, createReducer(initialState, { - [getType(add)]: counterReducer3.reducers.ADD, - [getType(increment)]: counterReducer4.reducers.INCREMENT, + [getType(add)]: counterReducer3.handlers.ADD, + [getType(increment)]: counterReducer4.handlers.INCREMENT, }), ].forEach(fn => { // @dts-jest:pass @@ -90,58 +86,54 @@ const initialState = 0; const counterReducer1 = reducerTest.handleAction( ['ADD', 'INCREMENT'], - (state, action) => { - return state + (action.type === 'ADD' ? action.payload : 1); - } + (state, action) => state + (action.type === 'ADD' ? action.payload : 1) ); // @dts-jest:pass:snap counterReducer1; // @dts-jest:pass - Object.keys({ ...counterReducer1.reducers }); // => ["ADD", "INCREMENT"] + Object.keys({ ...counterReducer1.handlers }); // => ["ADD", "INCREMENT"] // @dts-jest:pass - Object.keys({ ...reducerTest.reducers }); // => [] + Object.keys({ ...reducerTest.handlers }); // => [] const counterReducer2 = reducerTest - .handleAction(['ADD'], (state, action) => { - return state + action.payload; - }) - .handleAction(['INCREMENT'], (state, _) => { - return state + 1; - }); + .handleAction(['ADD'], (state, action) => state + action.payload) + .handleAction(['INCREMENT'], (state, _) => state + 1); // @dts-jest:pass:snap counterReducer2; // @dts-jest:pass - Object.keys({ ...counterReducer2.reducers }); // => ["ADD", "INCREMENT"] + Object.keys({ ...counterReducer2.handlers }); // => ["ADD", "INCREMENT"] // @dts-jest:pass - Object.keys({ ...reducerTest.reducers }); // => [] + Object.keys({ ...reducerTest.handlers }); // => [] - const counterReducer3 = reducerTest.handleAction('ADD', (state, action) => { - return state + action.payload; - }); + const counterReducer3 = reducerTest.handleAction( + 'ADD', + (state, action) => state + action.payload + ); // @dts-jest:pass:snap counterReducer3; // @dts-jest:pass - Object.keys({ ...counterReducer3.reducers }); // => ["ADD"] + Object.keys({ ...counterReducer3.handlers }); // => ["ADD"] // @dts-jest:pass - Object.keys({ ...reducerTest.reducers }); // => [] + Object.keys({ ...reducerTest.handlers }); // => [] - const counterReducer4 = reducerTest.handleAction('INCREMENT', (state, _) => { - return state + 1; - }); + const counterReducer4 = reducerTest.handleAction( + 'INCREMENT', + (state, _) => state + 1 + ); // @dts-jest:pass:snap counterReducer4; // @dts-jest:pass - Object.keys({ ...counterReducer4.reducers }); // => [ "INCREMENT"] + Object.keys({ ...counterReducer4.handlers }); // => [ "INCREMENT"] // @dts-jest:pass - Object.keys({ ...reducerTest.reducers }); // => [] + Object.keys({ ...reducerTest.handlers }); // => [] { [ counterReducer1, counterReducer2, createReducer(initialState, { - ADD: counterReducer3.reducers.ADD, - INCREMENT: counterReducer4.reducers.INCREMENT, + ADD: counterReducer3.handlers.ADD, + INCREMENT: counterReducer4.handlers.INCREMENT, }), ].forEach(fn => { // @dts-jest:pass diff --git a/src/create-reducer.ts b/src/create-reducer.ts index c5739a9..6e94c86 100644 --- a/src/create-reducer.ts +++ b/src/create-reducer.ts @@ -29,13 +29,13 @@ type HandleActionChainApi< reducer: (state: TState, action: TActionIntersection) => TState ) => [Exclude] extends [never] ? Reducer & { - reducers: Record< + handlers: Record< TActionIntersection['type'], (state: TState, action: TRootAction) => TState >; } : Reducer & { - reducers: Record< + handlers: Record< TActionIntersection['type'], (state: TState, action: TRootAction) => TState >; @@ -53,14 +53,14 @@ export function createReducer( (state: TState, action: RootAction) => TState > = {} ) { - const reducers = { ...initialReducers }; + const handlers = { ...initialReducers }; const rootReducer: Reducer = ( state = initialState, action ) => { - if (reducers.hasOwnProperty(action.type)) { - const reducer = reducers[action.type]; + if (handlers.hasOwnProperty(action.type)) { + const reducer = handlers[action.type]; if (typeof reducer !== 'function') { throw Error( `Reducer under "${action.type}" key is not a valid reducer` @@ -77,7 +77,7 @@ export function createReducer( ? singleOrMultipleCreatorsAndTypes : [singleOrMultipleCreatorsAndTypes]; - const newReducers: typeof initialReducers = {}; + const newHandlers: typeof initialReducers = {}; creatorsAndTypes .map(acOrType => checkValidActionCreator(acOrType) @@ -86,16 +86,16 @@ export function createReducer( ? acOrType : throwInvalidActionTypeOrActionCreator() ) - .forEach(type => (newReducers[type] = reducer)); + .forEach(type => (newHandlers[type] = reducer)); return createReducer(initialState, { - ...reducers, - ...newReducers, + ...handlers, + ...newHandlers, }); }) as HandleActionChainApi; return Object.assign(rootReducer, { - reducers: { ...reducers }, + handlers: { ...handlers }, handleAction, } as const); } From 8ba88fdd59c9dfc4a5377d72168dce5b7db70a41 Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Sun, 21 Apr 2019 23:55:15 +0200 Subject: [PATCH 21/22] Added API docs for createReducer --- README.md | 252 +++++++++++------- .../src/typesafe-actions/create-reducer.d.ts | 4 +- codesandbox/src/typesafe-actions/index.esm.js | 6 +- codesandbox/src/typesafe-actions/index.js | 6 +- .../src/typesafe-actions/index.umd.js.map | 2 +- src/create-reducer.ts | 14 +- 6 files changed, 166 insertions(+), 118 deletions(-) diff --git a/README.md b/README.md index 99a1b7c..85a2a80 100644 --- a/README.md +++ b/README.md @@ -60,29 +60,32 @@ _This library is part of the [React & Redux TypeScript Guide](https://github.com - [1. Basic actions](#1-basic-actions) - [2. FSA compliant actions](#2-fsa-compliant-actions) - [3. Custom actions (non-standard use-cases)](#3-custom-actions-non-standard-use-cases) - - [Action-Helpers](#action-helpers) + - [Action Helpers](#action-helpers) - [Using action-creators instances instead of type-constants](#using-action-creators-instances-instead-of-type-constants) - [Using regular type-constants](#using-regular-type-constants) - [Reducers](#reducers) + - [Extending internal types to streamline type usage with `typesafe-actions`](#extending-internal-types-to-streamline-type-usage-with-typesafe-actions) - [Using createReducer API](#using-createreducer-api) - [Using standard switch reducer](#using-standard-switch-reducer) - [Async-Flows](#async-flows) - [With `redux-observable` epics](#with-redux-observable-epics) - [With `redux-saga` sagas](#with-redux-saga-sagas) - [API Docs](#api-docs) - - [Type-helpers](#type-helpers) - - [`ActionType`](#actiontype) - - [`StateType`](#statetype) - - [Action-creators](#action-creators) + - [Action-Creators API](#action-creators-api) - [`action`](#action) - [`createAction`](#createaction) - [`createStandardAction`](#createstandardaction) - [`createCustomAction`](#createcustomaction) - [`createAsyncAction`](#createasyncaction) - - [Action-helpers](#action-helpers) + - [Reducer-Creators API](#reducer-creators-api) + - [`createReducer`](#createreducer) + - [Action-Helpers API](#action-helpers-api) - [`getType`](#gettype) - [`isActionOf`](#isactionof) - [`isOfType`](#isoftype) + - [Type-Helpers API](#type-helpers-api) + - [`ActionType`](#actiontype) + - [`StateType`](#statetype) - [Migration Guides](#migration-guides) - [`v3.x.x` to `v4.x.x`](#v3xx-to-v4xx) - [`v2.x.x` to `v3.x.x`](#v2xx-to-v3xx) @@ -289,7 +292,7 @@ export type RootAction = [⇧ back to top](#table-of-contents) -### Action-Helpers +### Action Helpers Now I wan't to show you **action-helpers** and explain their use-cases. We're going to implement a side-effect responsible for showing a success toast when user adds a new todo. @@ -372,11 +375,10 @@ if (isOfType(types.ADD, action)) { ### Reducers -#### Using createReducer API - -We can prevent a lot of boilerplate code and type errors using this powerfull and completely typesafe API. +#### Extending internal types to streamline type usage with `typesafe-actions` Extending internal `RootAction` type for `createReducer` API from the consumer code, so that you never have to use generic type parameters again in your application 😮 (check `/codesandbox` project for more): + ```ts import { StateType, ActionType } from 'typesafe-actions'; @@ -385,36 +387,26 @@ declare module 'typesafe-actions' { } ``` -Using type-constants as keys in the object map: -```ts -import { createReducer, getType } from 'typesafe-actions' - -const counterReducer = createReducer(0, { - ADD: (state, action) => state + action.payload, // state and action type is automatically inferred - [getType(increment)]: (state, _) => state + 1, // return type is validated to be an exact State type - ADD: ... // <= error is shown on duplicated or invalid actions - INVALID: ... // <= error is shown on duplicated or invalid actions -}) +#### Using createReducer API -counterReducer(0, add(4)); // => 4 -counterReducer(0, increment()); // => 1 -``` +We can prevent a lot of boilerplate code and type errors using this powerfull and completely typesafe API. Using handleAction chain API: ```ts // using action-creators -const counterReducer = createReducer(0) // <= no need for generic parameters +const counterReducer = createReducer(0) // <= no need for generic type parameters + // state and action type is automatically inferred and return type is validated to be exact type .handleAction(add, (state, action) => state + action.payload) .handleAction(add, ... // <= error is shown on duplicated or invalid actions .handleAction(increment, (state, _) => state + 1) .handleAction(... // <= error is shown when all actions are handled - // handle multiple actions using array + // or handle multiple actions using array .handleAction([add, increment], (state, action) => state + (action.type === 'ADD' ? action.payload : 1) ); -// all the same is working when using type-constants +// all the same scenarios are working when using type-constants const counterReducer = createReducer(0) .handleAction('ADD', (state, action) => state + action.payload) .handleAction('INCREMENT', (state, _) => state + 1); @@ -423,19 +415,6 @@ counterReducer(0, add(4)); // => 4 counterReducer(0, increment()); // => 1 ``` -Extend or compose various reducers together - every operation is completely typesafe: -```ts -const newCounterReducer = createReducer(0) - .handleAction('SUBTRACT', (state, action) => state - action.payload) - .handleAction('DECREMENT', (state, _) => state - 1); - -const bigReducer = createReducer(0, { - ...counterReducer.handlers, // typesafe - ...newCounterReducer.handlers, // typesafe - SUBTRACT: decrementReducer.handlers.DECREMENT, // <= error, wrong type -}) -``` - #### Using standard switch reducer First we need to start by generating a **tagged union type** of actions (`TodosAction`). It's very easy to do by using `ActionType` **type-helper**. @@ -531,68 +510,7 @@ function* addTodoSaga(action: ReturnType): Generator ## API Docs -### Type-helpers -Below helper functions are very flexible generalizations, works great with nested structures and will cover numerous different use-cases. - -#### `ActionType` - -_Powerful type-helper that will infer union type from **import * as ...** or **action-creator map** object._ - -```ts -import { ActionType } from 'typesafe-actions'; - -// with "import * as ..." -import * as todos from './actions'; -export type TodosAction = ActionType; -// TodosAction: { type: 'action1' } | { type: 'action2' } | { type: 'action3' } - -// with nested action-creator map case -const actions = { - action1: createAction('action1'), - nested: { - action2: createAction('action2'), - moreNested: { - action3: createAction('action3'), - }, - }, -}; -export type RootAction = ActionType; -// RootAction: { type: 'action1' } | { type: 'action2' } | { type: 'action3' } -``` - -[⇧ back to top](#table-of-contents) - -#### `StateType` - -_Powerful type helper that will infer state object type from **reducer function** and **nested/combined reducers**._ - -> **WARNING**: working with redux@4+ types - -```ts -import { combineReducers } from 'redux'; -import { StateType } from 'typesafe-actions'; - -// with reducer function -const todosReducer = (state: Todo[] = [], action: TodosAction) => { - switch (action.type) { - case getType(todos.add): - return [...state, action.payload]; - ... -export type TodosState = StateType; - -// with nested/combined reducers -const rootReducer = combineReducers({ - router: routerReducer, - counters: countersReducer, -}); -export type RootState = StateType; -``` - -[⇧ back to top](#table-of-contents) - ---- - -### Action-creators +### Action-Creators API #### `action` @@ -795,7 +713,76 @@ dispatch(fetchUsers.failure(err)); --- -### Action-helpers +### Reducer-Creators API + +#### `createReducer` + +_Create a typesafe reducer_ + +```ts +createReducer(initialState, handlersMap?) + .handleAction(type, reducer) + .handleAction([type1, type2, ...typeN], reducer) + .handleAction(actionCreator, reducer) + .handleAction([actionCreator1, actionCreator2, ...actionCreatorN], reducer) +``` + +Examples: +[> Advanced Usage Examples](src/create-reducer.spec.ts) + +Using type-constants as keys in the object map: +```ts +import { createReducer, getType } from 'typesafe-actions' + +// no need for generic type parameters - learn more in Tutorial +const counterReducer = createReducer(0, { + ADD: (state, action) => state + action.payload, + [getType(increment)]: (state, _) => state + 1, +}) + +counterReducer(0, add(4)); // => 4 +counterReducer(0, increment()); // => 1 +``` + +Using handleAction chain API: +```ts +// using action-creators +const counterReducer = createReducer(0) + .handleAction(add, (state, action) => state + action.payload) + .handleAction(increment, (state, _) => state + 1) + + // or handle multiple actions using array + .handleAction([add, increment], (state, action) => + state + (action.type === 'ADD' ? action.payload : 1) + ); + +// all the same scenarios are working when using type-constants +const counterReducer = createReducer(0) + .handleAction('ADD', (state, action) => state + action.payload) + .handleAction('INCREMENT', (state, _) => state + 1); + +counterReducer(0, add(4)); // => 4 +counterReducer(0, increment()); // => 1 +``` + +Extend or compose various reducers together - every operation is completely typesafe: +```ts +const newCounterReducer = createReducer(0) + .handleAction('SUBTRACT', (state, action) => state - action.payload) + .handleAction('DECREMENT', (state, _) => state - 1); + +const bigReducer = createReducer(0, { + ...counterReducer.handlers, // typesafe + ...newCounterReducer.handlers, // typesafe + SUBTRACT: decrementReducer.handlers.DECREMENT, // <= error, wrong type +}) +``` + +[⇧ back to top](#table-of-contents) + +--- + +### Action-Helpers API #### `getType` @@ -940,6 +927,67 @@ if(isOfType([ADD, REMOVE], action)) { --- +### Type-Helpers API +Below helper functions are very flexible generalizations, works great with nested structures and will cover numerous different use-cases. + +#### `ActionType` + +_Powerful type-helper that will infer union type from **import * as ...** or **action-creator map** object._ + +```ts +import { ActionType } from 'typesafe-actions'; + +// with "import * as ..." +import * as todos from './actions'; +export type TodosAction = ActionType; +// TodosAction: { type: 'action1' } | { type: 'action2' } | { type: 'action3' } + +// with nested action-creator map case +const actions = { + action1: createAction('action1'), + nested: { + action2: createAction('action2'), + moreNested: { + action3: createAction('action3'), + }, + }, +}; +export type RootAction = ActionType; +// RootAction: { type: 'action1' } | { type: 'action2' } | { type: 'action3' } +``` + +[⇧ back to top](#table-of-contents) + +#### `StateType` + +_Powerful type helper that will infer state object type from **reducer function** and **nested/combined reducers**._ + +> **WARNING**: working with redux@4+ types + +```ts +import { combineReducers } from 'redux'; +import { StateType } from 'typesafe-actions'; + +// with reducer function +const todosReducer = (state: Todo[] = [], action: TodosAction) => { + switch (action.type) { + case getType(todos.add): + return [...state, action.payload]; + ... +export type TodosState = StateType; + +// with nested/combined reducers +const rootReducer = combineReducers({ + router: routerReducer, + counters: countersReducer, +}); +export type RootState = StateType; +``` + +[⇧ back to top](#table-of-contents) + +--- + ## Migration Guides ### `v3.x.x` to `v4.x.x` diff --git a/codesandbox/src/typesafe-actions/create-reducer.d.ts b/codesandbox/src/typesafe-actions/create-reducer.d.ts index 4428775..d4d9730 100644 --- a/codesandbox/src/typesafe-actions/create-reducer.d.ts +++ b/codesandbox/src/typesafe-actions/create-reducer.d.ts @@ -8,10 +8,10 @@ declare type HandleActionChainApi TState>; handleAction: HandleActionChainApi, TNotHandledAction>; }; -export declare function createReducer(initialState: TState, initialReducers?: Record TState>): Reducer & { +export declare function createReducer(initialState: TState, initialHandlers?: Record TState>): Reducer & { handlers: { readonly [x: string]: (state: TState, action: any) => TState; }; - readonly handleAction: HandleActionChainApi; + readonly handleAction: HandleActionChainApi; }; export {}; diff --git a/codesandbox/src/typesafe-actions/index.esm.js b/codesandbox/src/typesafe-actions/index.esm.js index 665bb61..1963f66 100644 --- a/codesandbox/src/typesafe-actions/index.esm.js +++ b/codesandbox/src/typesafe-actions/index.esm.js @@ -136,9 +136,9 @@ function getType(actionCreator) { return actionCreator.getType(); } -function createReducer(initialState, initialReducers) { - if (initialReducers === void 0) { initialReducers = {}; } - var handlers = __assign({}, initialReducers); +function createReducer(initialState, initialHandlers) { + if (initialHandlers === void 0) { initialHandlers = {}; } + var handlers = __assign({}, initialHandlers); var rootReducer = function (state, action) { if (state === void 0) { state = initialState; } if (handlers.hasOwnProperty(action.type)) { diff --git a/codesandbox/src/typesafe-actions/index.js b/codesandbox/src/typesafe-actions/index.js index b60e4a3..ede6696 100644 --- a/codesandbox/src/typesafe-actions/index.js +++ b/codesandbox/src/typesafe-actions/index.js @@ -140,9 +140,9 @@ function getType(actionCreator) { return actionCreator.getType(); } -function createReducer(initialState, initialReducers) { - if (initialReducers === void 0) { initialReducers = {}; } - var handlers = tslib_1.__assign({}, initialReducers); +function createReducer(initialState, initialHandlers) { + if (initialHandlers === void 0) { initialHandlers = {}; } + var handlers = tslib_1.__assign({}, initialHandlers); var rootReducer = function (state, action) { if (state === void 0) { state = initialState; } if (handlers.hasOwnProperty(action.type)) { diff --git a/codesandbox/src/typesafe-actions/index.umd.js.map b/codesandbox/src/typesafe-actions/index.umd.js.map index 0b3f55c..47704bb 100644 --- a/codesandbox/src/typesafe-actions/index.umd.js.map +++ b/codesandbox/src/typesafe-actions/index.umd.js.map @@ -1 +1 @@ -{"version":3,"file":"index.umd.js","sources":["../src/utils/validation.ts","../src/action.ts","../src/create-custom-action.ts","../node_modules/tslib/tslib.es6.js","../src/get-type.ts","../src/create-action.ts","../src/create-standard-action.ts","../src/create-async-action.ts","../src/create-reducer.ts","../src/is-of-type.ts","../src/is-action-of.ts","../src/create-action-deprecated.ts"],"sourcesContent":["import { ActionCreator, TypeMeta, TypeConstant } from '../type-helpers';\n\nexport function checkIsEmpty(arg: unknown, argPosition: number = 1) {\n return arg == null;\n}\n\nexport function throwIsEmpty(argPosition: number = 1): never {\n throw new Error(`Argument ${argPosition} is empty.`);\n}\n\nexport function checkValidActionCreator(\n arg: unknown\n): arg is ActionCreator {\n return typeof arg === 'function' && 'getType' in arg;\n}\n\nexport function checkInvalidActionCreator(arg: unknown) {\n return !checkValidActionCreator(arg);\n}\n\nexport function throwInvalidActionCreator(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\"`\n );\n}\n\nexport function checkInvalidActionCreatorInArray(\n arg: ActionCreator & TypeMeta,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (arg.getType == null) {\n throw new Error(\n // tslint:disable-next-line:max-line-length\n `Argument contains array with invalid element at index ${idx}, it should be an action-creator instance from \"typesafe-actions\"`\n );\n }\n}\n\nexport function checkValidActionType(arg: unknown): arg is string | symbol {\n return typeof arg === 'string' || typeof arg === 'symbol';\n}\n\nexport function checkInvalidActionType(arg: unknown): arg is string | symbol {\n return !checkValidActionType(arg);\n}\n\nexport function throwInvalidActionType(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action type of type: string | symbol`\n );\n}\n\nexport function checkInvalidActionTypeInArray(\n arg: TypeConstant,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (typeof arg !== 'string' && typeof arg !== 'symbol') {\n throw new Error(\n `Argument contains array with invalid element at index ${idx}, it should be of type: string | symbol`\n );\n }\n}\n\nexport function throwInvalidActionTypeOrActionCreator(\n argPosition: number = 1\n): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\" or action type of type: string | symbol`\n );\n}\n","import { TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionCreator,\n} from './utils/validation';\n\nexport function action(\n type: T,\n payload: undefined,\n meta: undefined,\n error: E\n): { type: T; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M,\n error: E\n): { type: T; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: undefined,\n error: E\n): { type: T; payload: P; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: M,\n error: E\n): { type: T; payload: P; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M\n): { type: T; meta: M };\n\nexport function action(\n type: T,\n payload: P,\n meta: M\n): { type: T; payload: P; meta: M };\n\nexport function action(\n type: T,\n payload: P\n): { type: T; payload: P };\n\nexport function action(type: T): { type: T };\n\n/**\n * @description flux standard action factory\n * @example\n * ```\n * const add = (amount: number, meta?: MetaShape) => action('INCREMENT', amount, meta);\n * ```\n */\nexport function action<\n T extends TypeConstant,\n P = undefined,\n M = undefined,\n E = undefined\n>(type: T, payload?: P, meta?: M, error?: E) {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionCreator(1);\n }\n\n return { type, payload, meta, error } as any;\n}\n","import { ActionCreator, TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\n/**\n * @description create custom action-creator using constructor function with injected type argument\n */\nexport function createCustomAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(type: T, createHandler?: (type: T) => AC): AC {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n const actionCreator: AC =\n createHandler != null ? createHandler(type) : ((() => ({ type })) as AC);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { TypeConstant, ActionCreator, TypeMeta } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionCreator,\n throwInvalidActionCreator,\n} from './utils/validation';\n\n/**\n * @description get the \"type literal\" of a given action-creator\n */\nexport function getType(\n actionCreator: ActionCreator & TypeMeta\n): T {\n if (checkIsEmpty(actionCreator)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionCreator(actionCreator)) {\n throwInvalidActionCreator(1);\n }\n\n return actionCreator.getType!();\n}\n","import { TypeConstant, ActionCreator } from './type-helpers';\nimport { action } from './action';\n\nexport type PayloadMetaAction<\n T extends TypeConstant,\n P,\n M\n> = P extends undefined\n ? M extends undefined\n ? { type: T }\n : { type: T; meta: M }\n : M extends undefined\n ? { type: T; payload: P }\n : { type: T; payload: P; meta: M };\n\n/**\n * @description typesafe action-creator factory\n */\nexport function createAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(\n type: T,\n createHandler?: (\n actionCallback:

(\n payload?: P,\n meta?: M\n ) => PayloadMetaAction\n ) => AC\n): AC {\n // validation is already done in action function\n\n const actionCreator: AC =\n createHandler == null\n ? ((() => action(type)) as AC)\n : createHandler(action.bind(null, type) as Parameters<\n typeof createHandler\n >[0]);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\nexport interface ActionBuilder {\n

(): ActionBuilderConstructor;\n map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap;\n}\n\n/**\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createStandardAction(\n type: T\n): ActionBuilder {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n function constructor(): ActionBuilderConstructor {\n return createCustomAction(type, _type => (payload: P, meta: M) => ({\n type: _type,\n payload,\n meta,\n })) as ActionBuilderConstructor;\n }\n\n function map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap {\n return createCustomAction(type, _type => (payload: P, meta: M) =>\n Object.assign(fn(payload, meta), { type: _type })\n ) as ActionBuilderMap;\n }\n\n return Object.assign(constructor, { map });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n // ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport { checkInvalidActionTypeInArray } from './utils/validation';\n\nexport interface AsyncActionBuilder<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n> {\n // tslint:disable-next-line:callable-types\n (): AsyncActionBuilderConstructor;\n // withMappers(\n // requestMapper: (a?: A1) => P1,\n // successMapper: (a?: A2) => P2,\n // failureMapper: (a?: A3) => P3\n // ): AsyncActionBuilderWithMappers;\n}\n\nexport type AsyncActionBuilderConstructor<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant,\n P1,\n P2,\n P3\n> = {\n request: ActionBuilderConstructor;\n success: ActionBuilderConstructor;\n failure: ActionBuilderConstructor;\n};\n\n/**\n * implementation\n */\nexport function createAsyncAction<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n>(\n requestType: T1,\n successType: T2,\n failureType: T3\n): AsyncActionBuilder {\n [requestType, successType, failureType].forEach(\n checkInvalidActionTypeInArray\n );\n\n function constructor(): AsyncActionBuilderConstructor<\n T1,\n T2,\n T3,\n P1,\n P2,\n P3\n > {\n return {\n request: createCustomAction(requestType, type => (payload?: P1) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n success: createCustomAction(successType, type => (payload?: P2) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n failure: createCustomAction(failureType, type => (payload?: P3) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n };\n }\n\n return Object.assign(constructor);\n}\n\n// export type AsyncActionBuilderWithMappers<\n// T1 extends StringType,\n// T2 extends StringType,\n// T3 extends StringType,\n// A1 = undefined,\n// P1 = undefined,\n// A2 = undefined,\n// P2 = undefined,\n// A3 = undefined,\n// P3 = undefined\n// > = {\n// request: ActionBuilderMap;\n// success: ActionBuilderMap;\n// failure: ActionBuilderMap;\n// };\n\n// function withMappers(\n// requestMapper: (a?: A1) => P1,\n// successMapper: (a?: A2) => P2,\n// failureMapper: (a?: A3) => P3\n// ): AsyncActionBuilderWithMappers {\n// return {\n// request: createCustomAction(requestType, type => (payload?: A1) => ({\n// type,\n// payload: requestMapper != null ? requestMapper(payload) : undefined,\n// })) as MapBuilder,\n// success: createCustomAction(successType, type => (payload?: A2) => ({\n// type,\n// payload: successMapper != null ? successMapper(payload) : undefined,\n// })) as MapBuilder,\n// failure: createCustomAction(failureType, type => (payload?: A3) => ({\n// type,\n// payload: failureMapper != null ? failureMapper(payload) : undefined,\n// })) as MapBuilder,\n// };\n// }\n","// @ts-ignore\nimport { RootAction } from './';\nimport { getType } from './get-type';\nimport {\n checkValidActionCreator,\n checkValidActionType,\n throwInvalidActionTypeOrActionCreator,\n} from './utils/validation';\nimport { Reducer, Action } from './type-helpers';\n\ntype HandleActionChainApi<\n TState,\n TNotHandledAction extends Action,\n TRootAction extends Action\n> = <\n TType extends TNotHandledAction['type'],\n TTypeAction extends TNotHandledAction extends { type: TType }\n ? TNotHandledAction\n : never,\n TCreator extends (...args: any[]) => TNotHandledAction,\n TCreatorAction extends TNotHandledAction extends ReturnType\n ? TNotHandledAction\n : never,\n TActionIntersection extends TTypeAction extends TCreatorAction\n ? TTypeAction\n : never\n>(\n singleOrMultipleCreatorsAndTypes: TType | TType[] | TCreator | TCreator[],\n reducer: (state: TState, action: TActionIntersection) => TState\n) => [Exclude] extends [never]\n ? Reducer & {\n handlers: Record<\n TActionIntersection['type'],\n (state: TState, action: TRootAction) => TState\n >;\n }\n : Reducer & {\n handlers: Record<\n TActionIntersection['type'],\n (state: TState, action: TRootAction) => TState\n >;\n handleAction: HandleActionChainApi<\n TState,\n Exclude,\n TNotHandledAction\n >;\n };\n\nexport function createReducer(\n initialState: TState,\n initialReducers: Record<\n RootAction['type'],\n (state: TState, action: RootAction) => TState\n > = {}\n) {\n const handlers = { ...initialReducers };\n\n const rootReducer: Reducer = (\n state = initialState,\n action\n ) => {\n if (handlers.hasOwnProperty(action.type)) {\n const reducer = handlers[action.type];\n if (typeof reducer !== 'function') {\n throw Error(\n `Reducer under \"${action.type}\" key is not a valid reducer`\n );\n }\n return reducer(state, action);\n } else {\n return state;\n }\n };\n\n const handleAction = ((singleOrMultipleCreatorsAndTypes, reducer) => {\n const creatorsAndTypes = Array.isArray(singleOrMultipleCreatorsAndTypes)\n ? singleOrMultipleCreatorsAndTypes\n : [singleOrMultipleCreatorsAndTypes];\n\n const newHandlers: typeof initialReducers = {};\n creatorsAndTypes\n .map(acOrType =>\n checkValidActionCreator(acOrType)\n ? getType(acOrType)\n : checkValidActionType(acOrType)\n ? acOrType\n : throwInvalidActionTypeOrActionCreator()\n )\n .forEach(type => (newHandlers[type] = reducer));\n\n return createReducer(initialState, {\n ...handlers,\n ...newHandlers,\n });\n }) as HandleActionChainApi;\n\n return Object.assign(rootReducer, {\n handlers: { ...handlers },\n handleAction,\n } as const);\n}\n","import {\n checkInvalidActionTypeInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[],\n action: A\n): action is A extends { type: T } ? A : never;\n\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[]\n): (\n action: A\n) => action is A extends { type: T } ? A : never;\n\n/**\n * implementation\n */\nexport function isOfType(\n actionTypeOrTypes: T | T[],\n action?: A\n) {\n if (checkIsEmpty(actionTypeOrTypes)) {\n throwIsEmpty(1);\n }\n\n const actionTypes = Array.isArray(actionTypeOrTypes)\n ? actionTypeOrTypes\n : [actionTypeOrTypes];\n\n actionTypes.forEach(checkInvalidActionTypeInArray);\n\n const assertFn = (_action: A) => actionTypes.includes(_action.type);\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","import { TypeMeta } from './type-helpers';\nimport {\n checkInvalidActionCreatorInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n\nexport type ActionCreator = ((\n ...args: any[]\n) => T) &\n TypeMeta;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[],\n action: { type: string }\n): action is ReturnType;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[]\n): (action: { type: string }) => action is ReturnType;\n\n/**\n * implementation\n */\nexport function isActionOf>(\n actionCreatorOrCreators: AC | AC[],\n action?: { type: string }\n) {\n if (checkIsEmpty(actionCreatorOrCreators)) {\n throwIsEmpty(1);\n }\n\n const actionCreators = Array.isArray(actionCreatorOrCreators)\n ? actionCreatorOrCreators\n : [actionCreatorOrCreators];\n\n actionCreators.forEach(checkInvalidActionCreatorInArray);\n\n const assertFn = (_action: { type: string }) =>\n actionCreators.some(\n actionCreator => _action.type === actionCreator.getType!()\n );\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","/**\n * DEPRECATED\n */\n\nimport { TypeConstant } from './type-helpers';\n\ninterface FSA {\n type: T;\n payload?: P;\n meta?: M;\n error?: E;\n}\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction: AC): AC;\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends () => { type: T }\n>(actionType: T): AC;\n\n/**\n * implementation\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction?: AC): AC {\n let actionCreator: AC;\n\n if (creatorFunction != null) {\n if (typeof creatorFunction !== 'function') {\n throw new Error('second argument is not a function');\n }\n\n actionCreator = creatorFunction as AC;\n } else {\n actionCreator = (() => ({ type: actionType })) as AC;\n }\n\n if (actionType != null) {\n if (typeof actionType !== 'string' && typeof actionType !== 'symbol') {\n throw new Error('first argument should be type of: string | symbol');\n }\n } else {\n throw new Error('first argument is missing');\n }\n\n return actionCreator;\n}\n"],"names":["checkIsEmpty","arg","argPosition","throwIsEmpty","Error","checkValidActionCreator","throwInvalidActionCreator","checkInvalidActionCreatorInArray","idx","getType","checkValidActionType","checkInvalidActionType","throwInvalidActionType","checkInvalidActionTypeInArray","action","type","payload","meta","error","createCustomAction","createHandler","actionCreator","Object","assign","toString","__assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","bind","_type","map","fn","requestType","successType","failureType","forEach","request","success","failure","createReducer","initialState","initialReducers","handlers","state","reducer","handleAction","singleOrMultipleCreatorsAndTypes","newHandlers","Array","isArray","acOrType","throwInvalidActionTypeOrActionCreator","actionTypeOrTypes","actionTypes","assertFn","_action","includes","undefined","actionCreatorOrCreators","actionCreators","some","actionType","creatorFunction"],"mappings":"2MAEgBA,EAAaC,EAAcC,GACzC,oBADyCA,KAC3B,MAAPD,WAGOE,EAAaD,GAC3B,mBAD2BA,KACrB,IAAIE,MAAM,YAAYF,yBAGdG,EACdJ,GAEA,MAAsB,mBAARA,GAAsB,YAAaA,WAOnCK,EAA0BJ,GACxC,mBADwCA,KAClC,IAAIE,MACR,YAAYF,2FAIAK,EACdN,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,MAAfP,EAAIQ,QACb,MAAM,IAAIL,MAER,yDAAyDI,gFAK/CE,EAAqBT,GACnC,MAAsB,iBAARA,GAAmC,iBAARA,WAG3BU,EAAuBV,GACrC,OAAQS,EAAqBT,YAGfW,EAAuBV,GACrC,mBADqCA,KAC/B,IAAIE,MACR,YAAYF,gFAIAW,EACdZ,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,iBAARP,GAAmC,iBAARA,EAC3C,MAAM,IAAIG,MACR,yDAAyDI,sDCJ/CM,EAKdC,EAASC,EAAaC,EAAUC,GAShC,OARIlB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBT,EAA0B,IAGnBS,OAAMC,UAASC,OAAMC,kBCjEhBC,EAGdJ,EAASK,GACLpB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAGzB,IAAMS,EACa,MAAjBD,EAAwBA,EAAcL,cAAgB,OAAGA,SAE3D,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,KCAb,IAAIU,EAAW,WAQlB,OAPAA,EAAWH,OAAOC,QAAU,SAAkBG,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACON,OAAOW,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAE9E,OAAON,IAEKU,MAAMC,KAAMP,qBC1BhBrB,EACdY,GAUA,OARIrB,EAAaqB,IACflB,EAAa,GJEPE,EICsBgB,IAC5Bf,EAA0B,GAGrBe,EAAcZ,6CCArBM,EACAK,GASA,IAAMC,EACa,MAAjBD,aACY,OAAAN,EAAOC,IACfK,EAAcN,EAAOwB,KAAK,KAAMvB,IAItC,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,sCClBlBA,GA0BA,OAxBIf,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAmBlBU,OAAOC,OAhBd,WACE,OAAOJ,EAAmBJ,EAAM,SAAAwB,GAAS,OAAA,SAACvB,EAAYC,GAAY,OAChEF,KAAMwB,EACNvB,UACAC,aAYgCuB,IARpC,SACEC,GAEA,OAAOtB,EAAmBJ,EAAM,SAAAwB,GAAS,OAAA,SAACvB,EAAYC,GACpD,OAAAK,OAAOC,OAAOkB,EAAGzB,EAASC,IAASF,KAAMwB,+DCH7CG,EACAC,EACAC,GA8BA,OA5BCF,EAAaC,EAAaC,GAAaC,QACtChC,GA2BKS,OAAOC,OAxBd,WAQE,OACEuB,QAAS3B,EAAmBuB,EAAa,SAAA3B,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEF+B,QAAS5B,EAAmBwB,EAAa,SAAA5B,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFgC,QAAS7B,EAAmByB,EAAa,SAAA7B,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,2CCtBQiC,EACdC,EACAC,gBAAAA,MAKA,IAAMC,OAAgBD,GAyCtB,OAAO7B,OAAOC,OAvCoC,SAChD8B,EACAvC,GAEA,gBAHAuC,KAGID,EAASlB,eAAepB,EAAOC,MAAO,CACxC,IAAMuC,EAAUF,EAAStC,EAAOC,MAChC,GAAuB,mBAAZuC,EACT,MAAMlD,MACJ,kBAAkBU,EAAOC,qCAG7B,OAAOuC,EAAQD,EAAOvC,GAEtB,OAAOuC,IA2BTD,cAAeA,GACfG,sBAxBqBC,EAAkCF,GACvD,IAIMG,KAWN,OAfyBC,MAAMC,QAAQH,GACnCA,GACCA,IAIFhB,IAAI,SAAAoB,GACH,OAAAvD,EAAwBuD,GACpBnD,EAAQmD,GACRlD,EAAqBkD,GACrBA,WRbV1D,GAEA,mBAFAA,KAEM,IAAIE,MACR,YAAYF,0HQWJ2D,KAELhB,QAAQ,SAAA9B,GAAQ,OAAC0C,EAAY1C,GAAQuC,IAEjCL,EAAmCC,OACrCE,EACAK,wCChEPK,EACAhD,GAEId,EAAa8D,IACf3D,EAAa,GAGf,IAAM4D,EAAcL,MAAMC,QAAQG,GAC9BA,GACCA,GAELC,EAAYlB,QAAQhC,GAEpB,IAAMmD,EAAW,SAACC,GAAe,OAAAF,EAAYG,SAASD,EAAQlD,OAG9D,YAAeoD,IAAXrD,EACKkD,EAGFA,EAASlD,0BCfhBsD,EACAtD,GAEId,EAAaoE,IACfjE,EAAa,GAGf,IAAMkE,EAAiBX,MAAMC,QAAQS,GACjCA,GACCA,GAELC,EAAexB,QAAQtC,GAEvB,IAAMyD,EAAW,SAACC,GAChB,OAAAI,EAAeC,KACb,SAAAjD,GAAiB,OAAA4C,EAAQlD,OAASM,EAAcZ,aAIpD,YAAe0D,IAAXrD,EACKkD,EAGFA,EAASlD,sCCnBhByD,EAAeC,GACf,IAAInD,EAEJ,GAAuB,MAAnBmD,EAAyB,CAC3B,GAA+B,mBAApBA,EACT,MAAM,IAAIpE,MAAM,qCAGlBiB,EAAgBmD,OAEhBnD,aAAuB,OAAGN,KAAMwD,IAGlC,GAAkB,MAAdA,EAKF,MAAM,IAAInE,MAAM,6BAJhB,GAA0B,iBAAfmE,GAAiD,iBAAfA,EAC3C,MAAM,IAAInE,MAAM,qDAMpB,OAAOiB"} \ No newline at end of file +{"version":3,"file":"index.umd.js","sources":["../src/utils/validation.ts","../src/action.ts","../src/create-custom-action.ts","../node_modules/tslib/tslib.es6.js","../src/get-type.ts","../src/create-action.ts","../src/create-standard-action.ts","../src/create-async-action.ts","../src/create-reducer.ts","../src/is-of-type.ts","../src/is-action-of.ts","../src/create-action-deprecated.ts"],"sourcesContent":["import { ActionCreator, TypeMeta, TypeConstant } from '../type-helpers';\n\nexport function checkIsEmpty(arg: unknown, argPosition: number = 1) {\n return arg == null;\n}\n\nexport function throwIsEmpty(argPosition: number = 1): never {\n throw new Error(`Argument ${argPosition} is empty.`);\n}\n\nexport function checkValidActionCreator(\n arg: unknown\n): arg is ActionCreator {\n return typeof arg === 'function' && 'getType' in arg;\n}\n\nexport function checkInvalidActionCreator(arg: unknown) {\n return !checkValidActionCreator(arg);\n}\n\nexport function throwInvalidActionCreator(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\"`\n );\n}\n\nexport function checkInvalidActionCreatorInArray(\n arg: ActionCreator & TypeMeta,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (arg.getType == null) {\n throw new Error(\n // tslint:disable-next-line:max-line-length\n `Argument contains array with invalid element at index ${idx}, it should be an action-creator instance from \"typesafe-actions\"`\n );\n }\n}\n\nexport function checkValidActionType(arg: unknown): arg is string | symbol {\n return typeof arg === 'string' || typeof arg === 'symbol';\n}\n\nexport function checkInvalidActionType(arg: unknown): arg is string | symbol {\n return !checkValidActionType(arg);\n}\n\nexport function throwInvalidActionType(argPosition: number = 1): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action type of type: string | symbol`\n );\n}\n\nexport function checkInvalidActionTypeInArray(\n arg: TypeConstant,\n idx: number\n): void | never {\n if (arg == null) {\n throw new Error(\n `Argument contains array with empty element at index ${idx}`\n );\n } else if (typeof arg !== 'string' && typeof arg !== 'symbol') {\n throw new Error(\n `Argument contains array with invalid element at index ${idx}, it should be of type: string | symbol`\n );\n }\n}\n\nexport function throwInvalidActionTypeOrActionCreator(\n argPosition: number = 1\n): never {\n throw new Error(\n `Argument ${argPosition} is invalid, it should be an action-creator instance from \"typesafe-actions\" or action type of type: string | symbol`\n );\n}\n","import { TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionCreator,\n} from './utils/validation';\n\nexport function action(\n type: T,\n payload: undefined,\n meta: undefined,\n error: E\n): { type: T; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M,\n error: E\n): { type: T; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: undefined,\n error: E\n): { type: T; payload: P; error: E };\n\nexport function action(\n type: T,\n payload: P,\n meta: M,\n error: E\n): { type: T; payload: P; meta: M; error: E };\n\nexport function action(\n type: T,\n payload: undefined,\n meta: M\n): { type: T; meta: M };\n\nexport function action(\n type: T,\n payload: P,\n meta: M\n): { type: T; payload: P; meta: M };\n\nexport function action(\n type: T,\n payload: P\n): { type: T; payload: P };\n\nexport function action(type: T): { type: T };\n\n/**\n * @description flux standard action factory\n * @example\n * ```\n * const add = (amount: number, meta?: MetaShape) => action('INCREMENT', amount, meta);\n * ```\n */\nexport function action<\n T extends TypeConstant,\n P = undefined,\n M = undefined,\n E = undefined\n>(type: T, payload?: P, meta?: M, error?: E) {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionCreator(1);\n }\n\n return { type, payload, meta, error } as any;\n}\n","import { ActionCreator, TypeConstant } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\n/**\n * @description create custom action-creator using constructor function with injected type argument\n */\nexport function createCustomAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(type: T, createHandler?: (type: T) => AC): AC {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n const actionCreator: AC =\n createHandler != null ? createHandler(type) : ((() => ({ type })) as AC);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { TypeConstant, ActionCreator, TypeMeta } from './type-helpers';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionCreator,\n throwInvalidActionCreator,\n} from './utils/validation';\n\n/**\n * @description get the \"type literal\" of a given action-creator\n */\nexport function getType(\n actionCreator: ActionCreator & TypeMeta\n): T {\n if (checkIsEmpty(actionCreator)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionCreator(actionCreator)) {\n throwInvalidActionCreator(1);\n }\n\n return actionCreator.getType!();\n}\n","import { TypeConstant, ActionCreator } from './type-helpers';\nimport { action } from './action';\n\nexport type PayloadMetaAction<\n T extends TypeConstant,\n P,\n M\n> = P extends undefined\n ? M extends undefined\n ? { type: T }\n : { type: T; meta: M }\n : M extends undefined\n ? { type: T; payload: P }\n : { type: T; payload: P; meta: M };\n\n/**\n * @description typesafe action-creator factory\n */\nexport function createAction<\n T extends TypeConstant,\n AC extends ActionCreator = () => { type: T }\n>(\n type: T,\n createHandler?: (\n actionCallback:

(\n payload?: P,\n meta?: M\n ) => PayloadMetaAction\n ) => AC\n): AC {\n // validation is already done in action function\n\n const actionCreator: AC =\n createHandler == null\n ? ((() => action(type)) as AC)\n : createHandler(action.bind(null, type) as Parameters<\n typeof createHandler\n >[0]);\n\n return Object.assign(actionCreator, {\n getType: () => type,\n // redux-actions compatibility\n toString: () => type,\n });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport {\n checkIsEmpty,\n throwIsEmpty,\n checkInvalidActionType,\n throwInvalidActionType,\n} from './utils/validation';\n\nexport interface ActionBuilder {\n

(): ActionBuilderConstructor;\n map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap;\n}\n\n/**\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createStandardAction(\n type: T\n): ActionBuilder {\n if (checkIsEmpty(type)) {\n throwIsEmpty(1);\n }\n\n if (checkInvalidActionType(type)) {\n throwInvalidActionType(1);\n }\n\n function constructor(): ActionBuilderConstructor {\n return createCustomAction(type, _type => (payload: P, meta: M) => ({\n type: _type,\n payload,\n meta,\n })) as ActionBuilderConstructor;\n }\n\n function map(\n fn: (payload: P, meta: M) => R\n ): ActionBuilderMap {\n return createCustomAction(type, _type => (payload: P, meta: M) =>\n Object.assign(fn(payload, meta), { type: _type })\n ) as ActionBuilderMap;\n }\n\n return Object.assign(constructor, { map });\n}\n","import {\n TypeConstant,\n ActionBuilderConstructor,\n // ActionBuilderMap,\n} from './type-helpers';\nimport { createCustomAction } from './create-custom-action';\nimport { checkInvalidActionTypeInArray } from './utils/validation';\n\nexport interface AsyncActionBuilder<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n> {\n // tslint:disable-next-line:callable-types\n (): AsyncActionBuilderConstructor;\n // withMappers(\n // requestMapper: (a?: A1) => P1,\n // successMapper: (a?: A2) => P2,\n // failureMapper: (a?: A3) => P3\n // ): AsyncActionBuilderWithMappers;\n}\n\nexport type AsyncActionBuilderConstructor<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant,\n P1,\n P2,\n P3\n> = {\n request: ActionBuilderConstructor;\n success: ActionBuilderConstructor;\n failure: ActionBuilderConstructor;\n};\n\n/**\n * implementation\n */\nexport function createAsyncAction<\n T1 extends TypeConstant,\n T2 extends TypeConstant,\n T3 extends TypeConstant\n>(\n requestType: T1,\n successType: T2,\n failureType: T3\n): AsyncActionBuilder {\n [requestType, successType, failureType].forEach(\n checkInvalidActionTypeInArray\n );\n\n function constructor(): AsyncActionBuilderConstructor<\n T1,\n T2,\n T3,\n P1,\n P2,\n P3\n > {\n return {\n request: createCustomAction(requestType, type => (payload?: P1) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n success: createCustomAction(successType, type => (payload?: P2) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n failure: createCustomAction(failureType, type => (payload?: P3) => ({\n type,\n payload,\n })) as ActionBuilderConstructor,\n };\n }\n\n return Object.assign(constructor);\n}\n\n// export type AsyncActionBuilderWithMappers<\n// T1 extends StringType,\n// T2 extends StringType,\n// T3 extends StringType,\n// A1 = undefined,\n// P1 = undefined,\n// A2 = undefined,\n// P2 = undefined,\n// A3 = undefined,\n// P3 = undefined\n// > = {\n// request: ActionBuilderMap;\n// success: ActionBuilderMap;\n// failure: ActionBuilderMap;\n// };\n\n// function withMappers(\n// requestMapper: (a?: A1) => P1,\n// successMapper: (a?: A2) => P2,\n// failureMapper: (a?: A3) => P3\n// ): AsyncActionBuilderWithMappers {\n// return {\n// request: createCustomAction(requestType, type => (payload?: A1) => ({\n// type,\n// payload: requestMapper != null ? requestMapper(payload) : undefined,\n// })) as MapBuilder,\n// success: createCustomAction(successType, type => (payload?: A2) => ({\n// type,\n// payload: successMapper != null ? successMapper(payload) : undefined,\n// })) as MapBuilder,\n// failure: createCustomAction(failureType, type => (payload?: A3) => ({\n// type,\n// payload: failureMapper != null ? failureMapper(payload) : undefined,\n// })) as MapBuilder,\n// };\n// }\n","// @ts-ignore\nimport { RootAction } from './';\nimport { getType } from './get-type';\nimport {\n checkValidActionCreator,\n checkValidActionType,\n throwInvalidActionTypeOrActionCreator,\n} from './utils/validation';\nimport { Reducer, Action } from './type-helpers';\n\ntype HandleActionChainApi<\n TState,\n TNotHandledAction extends Action,\n TRootAction extends Action\n> = <\n TType extends TNotHandledAction['type'],\n TTypeAction extends TNotHandledAction extends { type: TType }\n ? TNotHandledAction\n : never,\n TCreator extends (...args: any[]) => TNotHandledAction,\n TCreatorAction extends TNotHandledAction extends ReturnType\n ? TNotHandledAction\n : never,\n TActionIntersection extends TTypeAction extends TCreatorAction\n ? TTypeAction\n : never\n>(\n singleOrMultipleCreatorsAndTypes: TType | TType[] | TCreator | TCreator[],\n reducer: (state: TState, action: TActionIntersection) => TState\n) => [Exclude] extends [never]\n ? Reducer & {\n handlers: Record<\n TActionIntersection['type'],\n (state: TState, action: TRootAction) => TState\n >;\n }\n : Reducer & {\n handlers: Record<\n TActionIntersection['type'],\n (state: TState, action: TRootAction) => TState\n >;\n handleAction: HandleActionChainApi<\n TState,\n Exclude,\n TNotHandledAction\n >;\n };\n\nexport function createReducer(\n initialState: TState,\n initialHandlers: Record<\n RootAction['type'],\n (state: TState, action: RootAction) => TState\n > = {}\n) {\n const handlers = { ...initialHandlers };\n\n const rootReducer: Reducer = (\n state = initialState,\n action\n ) => {\n if (handlers.hasOwnProperty(action.type)) {\n const reducer = handlers[action.type];\n if (typeof reducer !== 'function') {\n throw Error(\n `Reducer under \"${action.type}\" key is not a valid reducer`\n );\n }\n return reducer(state, action);\n } else {\n return state;\n }\n };\n\n const handleAction = ((singleOrMultipleCreatorsAndTypes, reducer) => {\n const creatorsAndTypes = Array.isArray(singleOrMultipleCreatorsAndTypes)\n ? singleOrMultipleCreatorsAndTypes\n : [singleOrMultipleCreatorsAndTypes];\n\n const newHandlers: typeof initialHandlers = {};\n creatorsAndTypes\n .map(acOrType =>\n checkValidActionCreator(acOrType)\n ? getType(acOrType)\n : checkValidActionType(acOrType)\n ? acOrType\n : throwInvalidActionTypeOrActionCreator()\n )\n .forEach(type => (newHandlers[type] = reducer));\n\n return createReducer(initialState, {\n ...handlers,\n ...newHandlers,\n });\n }) as HandleActionChainApi;\n\n return Object.assign(rootReducer, {\n handlers: { ...handlers },\n handleAction,\n } as const);\n}\n","import {\n checkInvalidActionTypeInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[],\n action: A\n): action is A extends { type: T } ? A : never;\n\n/**\n * @description (curried assert function) check if action type is equal given type-constant\n * @description it works with discriminated union types\n */\nexport function isOfType(\n type: T | T[]\n): (\n action: A\n) => action is A extends { type: T } ? A : never;\n\n/**\n * implementation\n */\nexport function isOfType(\n actionTypeOrTypes: T | T[],\n action?: A\n) {\n if (checkIsEmpty(actionTypeOrTypes)) {\n throwIsEmpty(1);\n }\n\n const actionTypes = Array.isArray(actionTypeOrTypes)\n ? actionTypeOrTypes\n : [actionTypeOrTypes];\n\n actionTypes.forEach(checkInvalidActionTypeInArray);\n\n const assertFn = (_action: A) => actionTypes.includes(_action.type);\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","import { TypeMeta } from './type-helpers';\nimport {\n checkInvalidActionCreatorInArray,\n checkIsEmpty,\n throwIsEmpty,\n} from './utils/validation';\n\nexport type ActionCreator = ((\n ...args: any[]\n) => T) &\n TypeMeta;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[],\n action: { type: string }\n): action is ReturnType;\n\n/**\n * @description (curried assert function) check if an action is the instance of given action-creator(s)\n * @description it works with discriminated union types\n */\nexport function isActionOf>(\n actionCreator: AC | AC[]\n): (action: { type: string }) => action is ReturnType;\n\n/**\n * implementation\n */\nexport function isActionOf>(\n actionCreatorOrCreators: AC | AC[],\n action?: { type: string }\n) {\n if (checkIsEmpty(actionCreatorOrCreators)) {\n throwIsEmpty(1);\n }\n\n const actionCreators = Array.isArray(actionCreatorOrCreators)\n ? actionCreatorOrCreators\n : [actionCreatorOrCreators];\n\n actionCreators.forEach(checkInvalidActionCreatorInArray);\n\n const assertFn = (_action: { type: string }) =>\n actionCreators.some(\n actionCreator => _action.type === actionCreator.getType!()\n );\n\n // 1 arg case => return curried version\n if (action === undefined) {\n return assertFn;\n }\n // 2 args case => invoke assertFn and return the result\n return assertFn(action);\n}\n","/**\n * DEPRECATED\n */\n\nimport { TypeConstant } from './type-helpers';\n\ninterface FSA {\n type: T;\n payload?: P;\n meta?: M;\n error?: E;\n}\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction: AC): AC;\n\n/**\n * @deprecated\n * @description create an action-creator of a given function that contains hidden \"type\" metadata\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends () => { type: T }\n>(actionType: T): AC;\n\n/**\n * implementation\n */\nexport function createActionDeprecated<\n T extends TypeConstant,\n AC extends (...args: any[]) => FSA\n>(actionType: T, creatorFunction?: AC): AC {\n let actionCreator: AC;\n\n if (creatorFunction != null) {\n if (typeof creatorFunction !== 'function') {\n throw new Error('second argument is not a function');\n }\n\n actionCreator = creatorFunction as AC;\n } else {\n actionCreator = (() => ({ type: actionType })) as AC;\n }\n\n if (actionType != null) {\n if (typeof actionType !== 'string' && typeof actionType !== 'symbol') {\n throw new Error('first argument should be type of: string | symbol');\n }\n } else {\n throw new Error('first argument is missing');\n }\n\n return actionCreator;\n}\n"],"names":["checkIsEmpty","arg","argPosition","throwIsEmpty","Error","checkValidActionCreator","throwInvalidActionCreator","checkInvalidActionCreatorInArray","idx","getType","checkValidActionType","checkInvalidActionType","throwInvalidActionType","checkInvalidActionTypeInArray","action","type","payload","meta","error","createCustomAction","createHandler","actionCreator","Object","assign","toString","__assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","bind","_type","map","fn","requestType","successType","failureType","forEach","request","success","failure","createReducer","initialState","initialHandlers","handlers","state","reducer","handleAction","singleOrMultipleCreatorsAndTypes","newHandlers","Array","isArray","acOrType","throwInvalidActionTypeOrActionCreator","actionTypeOrTypes","actionTypes","assertFn","_action","includes","undefined","actionCreatorOrCreators","actionCreators","some","actionType","creatorFunction"],"mappings":"2MAEgBA,EAAaC,EAAcC,GACzC,oBADyCA,KAC3B,MAAPD,WAGOE,EAAaD,GAC3B,mBAD2BA,KACrB,IAAIE,MAAM,YAAYF,yBAGdG,EACdJ,GAEA,MAAsB,mBAARA,GAAsB,YAAaA,WAOnCK,EAA0BJ,GACxC,mBADwCA,KAClC,IAAIE,MACR,YAAYF,2FAIAK,EACdN,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,MAAfP,EAAIQ,QACb,MAAM,IAAIL,MAER,yDAAyDI,gFAK/CE,EAAqBT,GACnC,MAAsB,iBAARA,GAAmC,iBAARA,WAG3BU,EAAuBV,GACrC,OAAQS,EAAqBT,YAGfW,EAAuBV,GACrC,mBADqCA,KAC/B,IAAIE,MACR,YAAYF,gFAIAW,EACdZ,EACAO,GAEA,GAAW,MAAPP,EACF,MAAM,IAAIG,MACR,uDAAuDI,GAEpD,GAAmB,iBAARP,GAAmC,iBAARA,EAC3C,MAAM,IAAIG,MACR,yDAAyDI,sDCJ/CM,EAKdC,EAASC,EAAaC,EAAUC,GAShC,OARIlB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBT,EAA0B,IAGnBS,OAAMC,UAASC,OAAMC,kBCjEhBC,EAGdJ,EAASK,GACLpB,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAGzB,IAAMS,EACa,MAAjBD,EAAwBA,EAAcL,cAAgB,OAAGA,SAE3D,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,KCAb,IAAIU,EAAW,WAQlB,OAPAA,EAAWH,OAAOC,QAAU,SAAkBG,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACON,OAAOW,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAE9E,OAAON,IAEKU,MAAMC,KAAMP,qBC1BhBrB,EACdY,GAUA,OARIrB,EAAaqB,IACflB,EAAa,GJEPE,EICsBgB,IAC5Bf,EAA0B,GAGrBe,EAAcZ,6CCArBM,EACAK,GASA,IAAMC,EACa,MAAjBD,aACY,OAAAN,EAAOC,IACfK,EAAcN,EAAOwB,KAAK,KAAMvB,IAItC,OAAOO,OAAOC,OAAOF,GACnBZ,QAAS,WAAM,OAAAM,GAEfS,SAAU,WAAM,OAAAT,sCClBlBA,GA0BA,OAxBIf,EAAae,IACfZ,EAAa,GAGXQ,EAAuBI,IACzBH,EAAuB,GAmBlBU,OAAOC,OAhBd,WACE,OAAOJ,EAAmBJ,EAAM,SAAAwB,GAAS,OAAA,SAACvB,EAAYC,GAAY,OAChEF,KAAMwB,EACNvB,UACAC,aAYgCuB,IARpC,SACEC,GAEA,OAAOtB,EAAmBJ,EAAM,SAAAwB,GAAS,OAAA,SAACvB,EAAYC,GACpD,OAAAK,OAAOC,OAAOkB,EAAGzB,EAASC,IAASF,KAAMwB,+DCH7CG,EACAC,EACAC,GA8BA,OA5BCF,EAAaC,EAAaC,GAAaC,QACtChC,GA2BKS,OAAOC,OAxBd,WAQE,OACEuB,QAAS3B,EAAmBuB,EAAa,SAAA3B,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEF+B,QAAS5B,EAAmBwB,EAAa,SAAA5B,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,cAEFgC,QAAS7B,EAAmByB,EAAa,SAAA7B,GAAQ,OAAA,SAACC,GAAiB,OACjED,OACAC,2CCtBQiC,EACdC,EACAC,gBAAAA,MAKA,IAAMC,OAAgBD,GAyCtB,OAAO7B,OAAOC,OAvCoC,SAChD8B,EACAvC,GAEA,gBAHAuC,KAGID,EAASlB,eAAepB,EAAOC,MAAO,CACxC,IAAMuC,EAAUF,EAAStC,EAAOC,MAChC,GAAuB,mBAAZuC,EACT,MAAMlD,MACJ,kBAAkBU,EAAOC,qCAG7B,OAAOuC,EAAQD,EAAOvC,GAEtB,OAAOuC,IA2BTD,cAAeA,GACfG,sBAxBqBC,EAAkCF,GACvD,IAIMG,KAWN,OAfyBC,MAAMC,QAAQH,GACnCA,GACCA,IAIFhB,IAAI,SAAAoB,GACH,OAAAvD,EAAwBuD,GACpBnD,EAAQmD,GACRlD,EAAqBkD,GACrBA,WRbV1D,GAEA,mBAFAA,KAEM,IAAIE,MACR,YAAYF,0HQWJ2D,KAELhB,QAAQ,SAAA9B,GAAQ,OAAC0C,EAAY1C,GAAQuC,IAEjCL,EAAmCC,OACrCE,EACAK,wCChEPK,EACAhD,GAEId,EAAa8D,IACf3D,EAAa,GAGf,IAAM4D,EAAcL,MAAMC,QAAQG,GAC9BA,GACCA,GAELC,EAAYlB,QAAQhC,GAEpB,IAAMmD,EAAW,SAACC,GAAe,OAAAF,EAAYG,SAASD,EAAQlD,OAG9D,YAAeoD,IAAXrD,EACKkD,EAGFA,EAASlD,0BCfhBsD,EACAtD,GAEId,EAAaoE,IACfjE,EAAa,GAGf,IAAMkE,EAAiBX,MAAMC,QAAQS,GACjCA,GACCA,GAELC,EAAexB,QAAQtC,GAEvB,IAAMyD,EAAW,SAACC,GAChB,OAAAI,EAAeC,KACb,SAAAjD,GAAiB,OAAA4C,EAAQlD,OAASM,EAAcZ,aAIpD,YAAe0D,IAAXrD,EACKkD,EAGFA,EAASlD,sCCnBhByD,EAAeC,GACf,IAAInD,EAEJ,GAAuB,MAAnBmD,EAAyB,CAC3B,GAA+B,mBAApBA,EACT,MAAM,IAAIpE,MAAM,qCAGlBiB,EAAgBmD,OAEhBnD,aAAuB,OAAGN,KAAMwD,IAGlC,GAAkB,MAAdA,EAKF,MAAM,IAAInE,MAAM,6BAJhB,GAA0B,iBAAfmE,GAAiD,iBAAfA,EAC3C,MAAM,IAAInE,MAAM,qDAMpB,OAAOiB"} \ No newline at end of file diff --git a/src/create-reducer.ts b/src/create-reducer.ts index 6e94c86..17e466e 100644 --- a/src/create-reducer.ts +++ b/src/create-reducer.ts @@ -46,16 +46,16 @@ type HandleActionChainApi< >; }; -export function createReducer( +export function createReducer( initialState: TState, - initialReducers: Record< + initialHandlers: Record< RootAction['type'], (state: TState, action: RootAction) => TState > = {} ) { - const handlers = { ...initialReducers }; + const handlers = { ...initialHandlers }; - const rootReducer: Reducer = ( + const rootReducer: Reducer = ( state = initialState, action ) => { @@ -77,7 +77,7 @@ export function createReducer( ? singleOrMultipleCreatorsAndTypes : [singleOrMultipleCreatorsAndTypes]; - const newHandlers: typeof initialReducers = {}; + const newHandlers: typeof initialHandlers = {}; creatorsAndTypes .map(acOrType => checkValidActionCreator(acOrType) @@ -88,11 +88,11 @@ export function createReducer( ) .forEach(type => (newHandlers[type] = reducer)); - return createReducer(initialState, { + return createReducer(initialState, { ...handlers, ...newHandlers, }); - }) as HandleActionChainApi; + }) as HandleActionChainApi; return Object.assign(rootReducer, { handlers: { ...handlers }, From cc8622c399d88804ff92d4d70c439efc7ff792e1 Mon Sep 17 00:00:00 2001 From: Piotr Witek Date: Mon, 22 Apr 2019 00:25:04 +0200 Subject: [PATCH 22/22] Updated codesandbox --- .../src/features/todos/components/TodoList.tsx | 2 +- .../todos/components/TodoListActions.tsx | 2 +- codesandbox/src/features/todos/epics.ts | 3 +-- codesandbox/src/features/todos/reducer.ts | 17 ++++++++++------- codesandbox/src/services/types.d.ts | 4 +++- codesandbox/src/store/index.ts | 2 +- codesandbox/src/store/types.d.ts | 6 +----- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/codesandbox/src/features/todos/components/TodoList.tsx b/codesandbox/src/features/todos/components/TodoList.tsx index ea1f3e2..7c2fd76 100644 --- a/codesandbox/src/features/todos/components/TodoList.tsx +++ b/codesandbox/src/features/todos/components/TodoList.tsx @@ -1,4 +1,4 @@ -import { RootState } from 'MyTypes'; +import { RootState } from 'typesafe-actions'; import * as React from 'react'; import { connect } from 'react-redux'; diff --git a/codesandbox/src/features/todos/components/TodoListActions.tsx b/codesandbox/src/features/todos/components/TodoListActions.tsx index 4ff0797..f01a286 100644 --- a/codesandbox/src/features/todos/components/TodoListActions.tsx +++ b/codesandbox/src/features/todos/components/TodoListActions.tsx @@ -1,8 +1,8 @@ +import { RootState } from 'typesafe-actions'; import * as React from 'react'; import { connect } from 'react-redux'; import { loadTodosAsync, saveTodosAsync } from '../actions'; -import { RootState } from 'MyTypes'; const mapStateToProps = (state: RootState) => ({ isLoading: state.todos.isLoadingTodos, diff --git a/codesandbox/src/features/todos/epics.ts b/codesandbox/src/features/todos/epics.ts index 24def5d..48543d9 100644 --- a/codesandbox/src/features/todos/epics.ts +++ b/codesandbox/src/features/todos/epics.ts @@ -1,8 +1,7 @@ -import { RootAction, RootState, Services } from 'MyTypes'; import { Epic } from 'redux-observable'; import { from, of } from 'rxjs'; import { filter, switchMap, map, catchError } from 'rxjs/operators'; -import { isActionOf } from 'typesafe-actions'; +import { RootAction, RootState, Services, isActionOf } from 'typesafe-actions'; import { loadTodosAsync, saveTodosAsync } from './actions'; import { getTodos } from './selectors'; diff --git a/codesandbox/src/features/todos/reducer.ts b/codesandbox/src/features/todos/reducer.ts index 37bad7a..becc16d 100644 --- a/codesandbox/src/features/todos/reducer.ts +++ b/codesandbox/src/features/todos/reducer.ts @@ -5,8 +5,8 @@ import { createReducer } from 'typesafe-actions'; import { loadTodosAsync, addTodo, removeTodo } from './actions'; export const isLoadingTodos = createReducer(false as boolean) - .addHandler([loadTodosAsync.request], (state, action) => true) - .addHandler( + .handleAction([loadTodosAsync.request], (state, action) => true) + .handleAction( [loadTodosAsync.success, loadTodosAsync.failure], (state, action) => false ); @@ -16,14 +16,17 @@ export const todos = createReducer([ id: '0', title: 'You can add new todos using the form or load saved snapshot...', }, -] as readonly Todo[]) - .addHandler(loadTodosAsync.success, (state, action) => action.payload) - .addHandler(addTodo, (state, action) => [...state, action.payload]) - .addHandler(removeTodo, (state, action) => +] as Todo[]) + .handleAction(loadTodosAsync.success, (state, action) => action.payload) + .handleAction(addTodo, (state, action) => [...state, action.payload]) + .handleAction(removeTodo, (state, action) => state.filter(i => i.id !== action.payload) ); -export default combineReducers({ +const todosReducer = combineReducers({ isLoadingTodos, todos, }); + +export default todosReducer; +export type TodosState = ReturnType; diff --git a/codesandbox/src/services/types.d.ts b/codesandbox/src/services/types.d.ts index a7c2a9b..8d96cf3 100644 --- a/codesandbox/src/services/types.d.ts +++ b/codesandbox/src/services/types.d.ts @@ -1,3 +1,5 @@ -declare module 'MyTypes' { +import {} from 'typesafe-actions'; + +declare module 'typesafe-actions' { export type Services = typeof import('./index').default; } diff --git a/codesandbox/src/store/index.ts b/codesandbox/src/store/index.ts index 4a79d71..9e5ebb2 100644 --- a/codesandbox/src/store/index.ts +++ b/codesandbox/src/store/index.ts @@ -1,6 +1,6 @@ -import { RootAction, RootState, Services } from 'MyTypes'; import { createStore, applyMiddleware } from 'redux'; import { createEpicMiddleware } from 'redux-observable'; +import { RootAction, RootState, Services } from 'typesafe-actions'; import { composeEnhancers } from './utils'; import rootReducer from './root-reducer'; diff --git a/codesandbox/src/store/types.d.ts b/codesandbox/src/store/types.d.ts index 2af1985..c0cb2ae 100644 --- a/codesandbox/src/store/types.d.ts +++ b/codesandbox/src/store/types.d.ts @@ -1,11 +1,7 @@ import { StateType, ActionType } from 'typesafe-actions'; -declare module 'MyTypes' { +declare module 'typesafe-actions' { export type Store = StateType; export type RootAction = ActionType; export type RootState = StateType; } - -declare module 'typesafe-actions' { - export type RootAction = ActionType; -}