diff --git a/.babelrc b/.babelrc deleted file mode 100644 index ec32f9b..0000000 --- a/.babelrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "presets": ["es2015", "react", "stage-0"], - "plugins": [ - ["transform-decorators-legacy"], - ] -} diff --git a/.gitignore b/.gitignore deleted file mode 100644 index daf7241..0000000 --- a/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -lib -examples/**/bundle.js -node_modules -coverage -npm-debug.log -.idea/ -_book diff --git a/src/index.js b/.nojekyll similarity index 100% rename from src/index.js rename to .nojekyll diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index f5d175b..0000000 --- a/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -sudo: false -language: node_js -cache: - directories: - - node_modules -node_js: - - "8" - - "10" - - "12" -env: - - REACT_ROUTER_VERSION=3 - - REACT_ROUTER_VERSION=4 -script: - - yarn run lint - - ./runTests.sh -after_success: -- cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 7166701..0000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,88 +0,0 @@ -## [HEAD](https://github.com/mjrussell/redux-auth-wrapper/compare/v3.0.0...HEAD) --Nothing yet - -## [3.0.0](https://github.com/mjrussell/redux-auth-wrapper/compare/v2.1.0...v3.0.0) -- **Breaking Change:** Fix deprecated lifecyle method for react 16.3+ support[#250](https://github.com/mjrussell/redux-auth-wrapper/pull/250) (contributed by @JackHowa) -- Dependency upgrades for react 16.3 support - -## [2.1.0](https://github.com/mjrussell/redux-auth-wrapper/compare/v2.0.3...v2.1.0) -- Upgrade deps and relax bounds [#244](https://github.com/mjrussell/redux-auth-wrapper/pull/244) - -## [2.0.3](https://github.com/mjrussell/redux-auth-wrapper/compare/v2.0.2...v2.0.3) -- Warning fix for React 16.3+ [#235](https://github.com/mjrussell/redux-auth-wrapper/pull/235) (contributed by @tpai) - -## [2.0.2](https://github.com/mjrussell/redux-auth-wrapper/compare/v2.0.1...v2.0.2) -- **Bugfix:** Prevents unnecessary re-renders on child subcomponents on state changes [#187](https://github.com/mjrussell/redux-auth-wrapper/issues/187) - -## [2.0.1](https://github.com/mjrussell/redux-auth-wrapper/compare/v2.0.0...v2.0.1) -- **Bugfix:** Adds empty main with index.js for webpack ddl support (Contributed by @victorouse) - -## [2.0.0](https://github.com/mjrussell/redux-auth-wrapper/compare/v1.1.0...v2.0.0) -**BREAKING CHANGES** Version 2.0 include several new changes! See https://mjrussell.github.io/redux-auth-wrapper/docs/Migrating.html for migrating from 1.x - -## [1.1.0](https://github.com/mjrussell/redux-auth-wrapper/compare/v1.0.0...v1.1.0) -- **Feature:** Support hash fragments in building the redirect location [#121](https://github.com/mjrussell/redux-auth-wrapper/issues/121) -- **Feature:** Upgrade to proptypes package after React 15.5 deprecation [#147](https://github.com/mjrussell/redux-auth-wrapper/pull/147) (Contributed by @jruhland) - -## [1.0.0](https://github.com/mjrussell/redux-auth-wrapper/compare/v0.10.0...v1.0.0) -- **Bugfix:** Redirection preserves query params in the redirect path. [#111](https://github.com/mjrussell/redux-auth-wrapper/pull/111) - -## [0.10.0](https://github.com/mjrussell/redux-auth-wrapper/compare/v0.9.0...v0.10.0) -- **Feature:** `allowRedirectBack` can also take a selector function that returns a bool instead of a bool. [#93](https://github.com/mjrussell/redux-auth-wrapper/pull/93) (Contributed by @oyeanuj) - -## [0.9.0](https://github.com/mjrussell/redux-auth-wrapper/compare/v0.8.0...v0.9.0) -- **Bugfix:** Don't pass down auth wrapper props besides authData [#81](https://github.com/mjrussell/redux-auth-wrapper/issues/81) -- **Feature:** Add propMapper function to restrict passed through props [#28](https://github.com/mjrussell/redux-auth-wrapper/issues/28) -- **Bugfix/Breaking Change:** onEnter now checks isAuthenticating for redirection [#89](https://github.com/mjrussell/redux-auth-wrapper/issues/89) -- **Feature:** onEnter selectors receive nextState as the second argument instead of null [#90](https://github.com/mjrussell/redux-auth-wrapper/issues/90) - -## [0.8.0](https://github.com/mjrussell/redux-auth-wrapper/compare/v0.7.0...v0.8.0) -- **Feature:** FailureComponent to not redirect and either hide or show a different component on auth failure [#61](https://github.com/mjrussell/redux-auth-wrapper/pull/61). (Contributed by @mehiel) -- **Feature:** Pass auth data as props to Loading Component [#75](https://github.com/mjrussell/redux-auth-wrapper/issues/75) -- **Breaking Change:** When rendering an "empty" component such as the default LoadingComponent and when the user is about -to be redirect, return `null` so React will omit it instead of an empty `div`. -- **Breaking Change:** Don't need to import React Native compatible from lib. - -## [0.7.0](https://github.com/mjrussell/redux-auth-wrapper/compare/v0.6.0...v0.7.0) -- **Bugfix:** Don't render subroutes as children in default LoadingComponent [#63](https://github.com/mjrussell/redux-auth-wrapper/pull/63) -- **Bugfix/Breaking Change:** Change default LoadingComponent to a `div` and use the React native default empty element [#63](https://github.com/mjrussell/redux-auth-wrapper/pull/63) - -## [0.6.0](https://github.com/mjrussell/redux-auth-wrapper/compare/v0.5.2...v0.6.0) -- **Feature:** `failureRedirectPath` can be a function of state and props [#57](https://github.com/mjrussell/redux-auth-wrapper/pull/57) -- **Feature:** option to change the query param name with `redirectQueryParamName` [#57](https://github.com/mjrussell/redux-auth-wrapper/pull/57) - -## [0.5.2](https://github.com/mjrussell/redux-auth-wrapper/compare/v0.5.1...v0.5.2) -- **BugFix:** Fixes bug introduced in v0.5.1 that prevented redirection when only isAuthenticating changed [#49](https://github.com/mjrussell/redux-auth-wrapper/issues/49) - -## [0.5.1](https://github.com/mjrussell/redux-auth-wrapper/compare/v0.5.0...v0.5.1) -- **BugFix:** Adds safeguard to prevent infinite redirects from the wrapper [#45](https://github.com/mjrussell/redux-auth-wrapper/pull/45) - -## [0.5](https://github.com/mjrussell/redux-auth-wrapper/compare/v0.4.0...v0.5.0) -- **Feature:** Adds `isAuthenticating` selector and `LoadingComponent` -[#35](https://github.com/mjrussell/redux-auth-wrapper/pull/35). (Contributed by @cab) - -## [0.4](https://github.com/mjrussell/redux-auth-wrapper/compare/v0.3.0...v0.4.0) -- **Feature:** Adds React Native support [#33](https://github.com/mjrussell/redux-auth-wrapper/pull/33) - -## [0.3](https://github.com/mjrussell/redux-auth-wrapper/compare/v0.2.1...v0.3.0) -- **Feature:** Adds `ownProps` param to `authSelector` [#21](https://github.com/mjrussell/redux-auth-wrapper/pull/21) -- **Feature:** Adds `onEnter` function for Server Side Rendering support [#19](https://github.com/mjrussell/redux-auth-wrapper/pull/19) -- **Breaking:** Removes arg style syntax that was deprecated in 0.2 - -## [0.2.1](https://github.com/mjrussell/redux-auth-wrapper/compare/v0.2.0...v0.2.1) -- router context is only required if no redirectAction - -## [0.2.0](https://github.com/mjrussell/redux-auth-wrapper/compare/v0.1.1...v0.2.0) -- **Feature:** new redirectAction config arg, removes dependency on a redux-routing implementation [#13](https://github.com/mjrussell/redux-auth-wrapper/issues/13) -- **Feature:** New config object syntax for AuthWrapper [#12](https://github.com/mjrussell/redux-auth-wrapper/issues/12) -- **Deprecation:** Deprecates AuthWrapper args syntax [#12](https://github.com/mjrussell/redux-auth-wrapper/issues/12) -- **Feature:** Hoists wrapped component's statics up to the returned component - -## [0.1.1](https://github.com/mjrussell/redux-auth-wrapper/compare/v0.1.0...v0.1.1) -- Fixes the bad npm publish - -## [0.1.0](https://github.com/mjrussell/redux-auth-wrapper/compare/fcbf49d0abcae7075daa146c05edff1b735b3a16...v0.1.0) -- First release! -- Adds AuthWrapper with args syntax -- Examples using Redux-Simple-Router (now React-Router-Redux) -- Lots of tests diff --git a/LICENSE.txt b/LICENSE.txt deleted file mode 100644 index 337130e..0000000 --- a/LICENSE.txt +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2016 Matthew Russell - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/SUMMARY.md b/SUMMARY.md deleted file mode 100644 index 20dcbe9..0000000 --- a/SUMMARY.md +++ /dev/null @@ -1,16 +0,0 @@ -## Table of Contents - -* [Read Me](README.md) -* [Getting Started](docs/Getting-Started/Overview.md) - * [React Router 3](docs/Getting-Started/ReactRouter3.md) - * [React Router 4](docs/Getting-Started/ReactRouter4.md) - * [React Native](docs/Getting-Started/ReactNative.md) - * [Hiding and Alternate Components](docs/Getting-Started/HidingAlternate.md) - * [Nesting Wrappers](docs/Getting-Started/NestingWrappers.md) -* [Migrating from V1](docs/Migrating.md) -* [Troubleshooting](docs/Troubleshooting.md) -* [API](docs/API.md) -* Advanced Usage - * [Integrating with other Routers](docs/AdvancedUsage/OtherRouters.md) - * [React Router3 and SSR](docs/AdvancedUsage/ReactRouter3.md) - * [Advanced Redux](docs/AdvancedUsage/Redux.md) diff --git a/_layouts/website/page.html b/_layouts/website/page.html deleted file mode 100644 index 9f0e253..0000000 --- a/_layouts/website/page.html +++ /dev/null @@ -1,6 +0,0 @@ -{% extends template.self %} - -{% block head %} - {{ super() }} - -{% endblock %} diff --git a/book.json b/book.json deleted file mode 100644 index 57b4032..0000000 --- a/book.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "gitbook": "3.2.2", - "plugins": ["prism@1.0.0", "-highlight", "github", "github-edit", "heading-anchors", "ga@1.0.1"], - "pluginsConfig": { - "github": { - "url": "https://github.com/mjrussell/redux-auth-wrapper" - }, - "ga": { - "token": "UA-102064405-1" - }, - "github-edit": { - "repo": "mjrussell/redux-auth-wrapper", - "branch": "master" - }, - "sharing": { - "facebook": false, - "twitter": true, - "google": false, - "weibo": false, - "instapaper": false, - "vk": false - }, - "theme-default": { - "styles": { } - } - } -} diff --git a/docs/API.html b/docs/API.html new file mode 100644 index 0000000..02cd32f --- /dev/null +++ b/docs/API.html @@ -0,0 +1,558 @@ + + + + + + + API · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + +
+ +
+ +
+ + + + + + + + +
+
+ +
+
+ +
+ +

API

+

How to read the API

+
    +
  • Parameter names beginning with ? are optional
  • +
  • HigherOrderComponent is a function of type:
      ReactClass | ReactFunctionalComponent | string =>
    +    ReactClass | ReactFunctionalComponent | string
    +
  • +
+

Redirection Helpers (React Router 3/History v3)

+

connectedRouterRedirect

+
import { connectedRouterRedirect } from 'redux-auth-wrapper/history3/redirect'
+
+connectedRouterRedirect({
+  redirectPath: string | (state: Object, ownProps: Object) => string,
+  authenticatedSelector: (state: Object, ownProps: Object) => boolean,
+  ?authenticatingSelector: (state: Object, ownProps: Object) => boolean,
+  ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string,
+  ?wrapperDisplayName: string,
+  ?allowRedirectBack: boolean | (nextState: Object, redirectPath: String) => boolean,
+  ?redirectQueryParamName: string
+}): HigherOrderComponent
+
+

connectedReduxRedirect

+
import { connectedReduxRedirect } from 'redux-auth-wrapper/history3/redirect'
+
+connectedReduxRedirect({
+  redirectPath: string | (state: Object, ownProps: Object) => string,
+  authenticatedSelector: (state: Object, ownProps: Object) => boolean,
+  ?authenticatingSelector: (state: Object, ownProps: Object) => boolean,
+  ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string,
+  ?wrapperDisplayName: string,
+  ?allowRedirectBack: boolean | (nextState: Object, redirectPath: String) => boolean,
+  ?redirectQueryParamName: string
+}): HigherOrderComponent
+
+

createOnEnter

+
import { createOnEnter } from 'redux-auth-wrapper/history3/redirect'
+
+createOnEnter({
+  redirectPath: string | (state: Object, nextState: Object) => string,
+  authenticatedSelector: (state: Object, nextState: Object) => boolean,
+  ?authenticatingSelector: (state: Object, nextState: Object) => boolean,
+  ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string,
+  ?wrapperDisplayName: string,
+  ?allowRedirectBack: boolean | (nextState: Object, redirectPath: String) => boolean,
+  ?redirectQueryParamName: string
+}): (store: Object, nextState: Object: replace: (location: Object => void))
+
+

locationHelperBuilder

+

Helper used by the redirection and useful for pulling the redirectPath out of the query params.

+
import locationHelperBuilder from 'redux-auth-wrapper/history3/locationHelper'
+
+locationHelperBuilder({
+  ?redirectQueryParamName: string,
+  ?locationSelector: (props: Object) => LocationObject
+}) : LocationHelper
+
+
+LocationHelper: {
+  getRedirectQueryParam: (props: Object) => string,
+  createRedirectLoc: allowRedirectBack: boolean => (nextState: Object, redirectPath: string) => LocationObject,
+}
+
+

Redirection Helpers (React Router 4/History v4)

+

connectedRouterRedirect

+
import { connectedRouterRedirect } from 'redux-auth-wrapper/history4/redirect'
+
+connectedRouterRedirect({
+  redirectPath: string | (state: Object, ownProps: Object) => string,
+  authenticatedSelector: (state: Object, ownProps: Object) => boolean,
+  ?authenticatingSelector: (state: Object, ownProps: Object) => boolean,
+  ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string,
+  ?wrapperDisplayName: string,
+  ?allowRedirectBack: boolean | (nextState: Object, redirectPath: String) => boolean,
+  ?redirectQueryParamName: string
+}): HigherOrderComponent
+
+

connectedReduxRedirect

+
import { connectedReduxRedirect } from 'redux-auth-wrapper/history4/redirect'
+
+connectedReduxRedirect({
+  redirectPath: string | (state: Object, ownProps: Object) => string,
+  redirectAction: (location: Object) => ReduxAction,
+  authenticatedSelector: (state: Object, ownProps: Object) => boolean,
+  ?authenticatingSelector: (state: Object, ownProps: Object) => boolean,
+  ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string,
+  ?wrapperDisplayName: string,
+  ?allowRedirectBack: boolean | (nextState: Object, redirectPath: String) => boolean,
+  ?redirectQueryParamName: string
+}): HigherOrderComponent
+
+

locationHelperBuilder

+
import locationHelperBuilder from 'redux-auth-wrapper/history4/locationHelper'
+
+locationHelperBuilder({
+  ?redirectQueryParamName: string,
+  ?locationSelector: (props: Object) => LocationObject
+}) : LocationHelper
+
+
+LocationHelper: {
+  getRedirectQueryParam: (props: Object) => string,
+  createRedirectLoc: allowRedirectBack: boolean => (nextState: Object, redirectPath: string) => LocationObject,
+}
+
+

Other Wrappers

+

authWrapper

+
import authWrapper from 'redux-auth-wrapper/authWrapper'
+
+authWrapper({
+  ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string,
+  ?FailureComponent: ReactClass | ReactFunctionalComponent | string,
+  ?wrapperDisplayName: string
+}): HigherOrderComponent
+
+

The returned Component after applying a Component to the HOC takes as props isAuthenticated and isAuthenticating, both of which are booleans. isAuthenticating defaults to false.

+

connectedAuthWrapper

+
import connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper'
+
+connectedAuthWrapper({
+  authenticatedSelector: (state: Object, ownProps: Object) => boolean,
+  ?authenticatingSelector: (state: Object, ownProps: Object) => boolean,
+  ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string,
+  ?FailureComponent: ReactClass | ReactFunctionalComponent | string,
+  ?wrapperDisplayName: string
+}): HigherOrderComponent
+
+

Other Helpers

+

Documentation in progress!

+ + +
+ +
+
+
+ +

results matching ""

+
    + +
    +
    + +

    No results matching ""

    + +
    +
    +
    + +
    +
    + +
    + + + + + + + + + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/API.md b/docs/API.md deleted file mode 100644 index 424aaa4..0000000 --- a/docs/API.md +++ /dev/null @@ -1,165 +0,0 @@ -## API - -#### How to read the API - -* Parameter names beginning with `?` are optional -* `HigherOrderComponent` is a function of type: - ``` - ReactClass | ReactFunctionalComponent | string => - ReactClass | ReactFunctionalComponent | string - ``` - -## Redirection Helpers (React Router 3/History v3) - -### `connectedRouterRedirect` - -```js -import { connectedRouterRedirect } from 'redux-auth-wrapper/history3/redirect' - -connectedRouterRedirect({ - redirectPath: string | (state: Object, ownProps: Object) => string, - authenticatedSelector: (state: Object, ownProps: Object) => boolean, - ?authenticatingSelector: (state: Object, ownProps: Object) => boolean, - ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string, - ?wrapperDisplayName: string, - ?allowRedirectBack: boolean | (nextState: Object, redirectPath: String) => boolean, - ?redirectQueryParamName: string -}): HigherOrderComponent -``` - -### `connectedReduxRedirect` - -```js -import { connectedReduxRedirect } from 'redux-auth-wrapper/history3/redirect' - -connectedReduxRedirect({ - redirectPath: string | (state: Object, ownProps: Object) => string, - authenticatedSelector: (state: Object, ownProps: Object) => boolean, - ?authenticatingSelector: (state: Object, ownProps: Object) => boolean, - ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string, - ?wrapperDisplayName: string, - ?allowRedirectBack: boolean | (nextState: Object, redirectPath: String) => boolean, - ?redirectQueryParamName: string -}): HigherOrderComponent -``` - -### `createOnEnter` - -```js -import { createOnEnter } from 'redux-auth-wrapper/history3/redirect' - -createOnEnter({ - redirectPath: string | (state: Object, nextState: Object) => string, - authenticatedSelector: (state: Object, nextState: Object) => boolean, - ?authenticatingSelector: (state: Object, nextState: Object) => boolean, - ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string, - ?wrapperDisplayName: string, - ?allowRedirectBack: boolean | (nextState: Object, redirectPath: String) => boolean, - ?redirectQueryParamName: string -}): (store: Object, nextState: Object: replace: (location: Object => void)) -``` - -### `locationHelperBuilder` - -Helper used by the redirection and useful for pulling the redirectPath out of the query params. - -```js -import locationHelperBuilder from 'redux-auth-wrapper/history3/locationHelper' - -locationHelperBuilder({ - ?redirectQueryParamName: string, - ?locationSelector: (props: Object) => LocationObject -}) : LocationHelper - - -LocationHelper: { - getRedirectQueryParam: (props: Object) => string, - createRedirectLoc: allowRedirectBack: boolean => (nextState: Object, redirectPath: string) => LocationObject, -} -``` - -## Redirection Helpers (React Router 4/History v4) - -### `connectedRouterRedirect` - -```js -import { connectedRouterRedirect } from 'redux-auth-wrapper/history4/redirect' - -connectedRouterRedirect({ - redirectPath: string | (state: Object, ownProps: Object) => string, - authenticatedSelector: (state: Object, ownProps: Object) => boolean, - ?authenticatingSelector: (state: Object, ownProps: Object) => boolean, - ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string, - ?wrapperDisplayName: string, - ?allowRedirectBack: boolean | (nextState: Object, redirectPath: String) => boolean, - ?redirectQueryParamName: string -}): HigherOrderComponent -``` - -### `connectedReduxRedirect` - -```js -import { connectedReduxRedirect } from 'redux-auth-wrapper/history4/redirect' - -connectedReduxRedirect({ - redirectPath: string | (state: Object, ownProps: Object) => string, - redirectAction: (location: Object) => ReduxAction, - authenticatedSelector: (state: Object, ownProps: Object) => boolean, - ?authenticatingSelector: (state: Object, ownProps: Object) => boolean, - ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string, - ?wrapperDisplayName: string, - ?allowRedirectBack: boolean | (nextState: Object, redirectPath: String) => boolean, - ?redirectQueryParamName: string -}): HigherOrderComponent -``` - -### `locationHelperBuilder` - -```js -import locationHelperBuilder from 'redux-auth-wrapper/history4/locationHelper' - -locationHelperBuilder({ - ?redirectQueryParamName: string, - ?locationSelector: (props: Object) => LocationObject -}) : LocationHelper - - -LocationHelper: { - getRedirectQueryParam: (props: Object) => string, - createRedirectLoc: allowRedirectBack: boolean => (nextState: Object, redirectPath: string) => LocationObject, -} -``` - -## Other Wrappers - -### `authWrapper` - -```js -import authWrapper from 'redux-auth-wrapper/authWrapper' - -authWrapper({ - ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string, - ?FailureComponent: ReactClass | ReactFunctionalComponent | string, - ?wrapperDisplayName: string -}): HigherOrderComponent -``` - -The returned Component after applying a Component to the HOC takes as props `isAuthenticated` and `isAuthenticating`, both of which are booleans. `isAuthenticating` defaults to `false`. - -### `connectedAuthWrapper` - -```js -import connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper' - -connectedAuthWrapper({ - authenticatedSelector: (state: Object, ownProps: Object) => boolean, - ?authenticatingSelector: (state: Object, ownProps: Object) => boolean, - ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string, - ?FailureComponent: ReactClass | ReactFunctionalComponent | string, - ?wrapperDisplayName: string -}): HigherOrderComponent -``` - -## Other Helpers - -Documentation in progress! diff --git a/docs/AdvancedUsage/OtherRouters.html b/docs/AdvancedUsage/OtherRouters.html new file mode 100644 index 0000000..f599b5c --- /dev/null +++ b/docs/AdvancedUsage/OtherRouters.html @@ -0,0 +1,431 @@ + + + + + + + Integrating with other Routers · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + +
    + +
    + +
    + + + + + + + + +
    +
    + +
    +
    + +
    + +

    Integrating with other Routers

    +

    Help us improve this documentation by submitting a pull request!

    + + +
    + +
    +
    +
    + +

    results matching ""

    +
      + +
      +
      + +

      No results matching ""

      + +
      +
      +
      + +
      +
      + +
      + + + + + + + + + + +
      + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/AdvancedUsage/OtherRouters.md b/docs/AdvancedUsage/OtherRouters.md deleted file mode 100644 index 64258c5..0000000 --- a/docs/AdvancedUsage/OtherRouters.md +++ /dev/null @@ -1,3 +0,0 @@ -# Integrating with other Routers - -Help us improve this documentation by submitting a pull request! diff --git a/docs/AdvancedUsage/ReactRouter3.html b/docs/AdvancedUsage/ReactRouter3.html new file mode 100644 index 0000000..cf0dd1a --- /dev/null +++ b/docs/AdvancedUsage/ReactRouter3.html @@ -0,0 +1,530 @@ + + + + + + + React Router3 and SSR · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + + + + + + + + +
      + +
      + +
      + + + + + + + + +
      +
      + +
      +
      + +
      + +

      React Router 3 Advanced Usage

      +

      Protecting Multiple Routes

      +

      Because routes in React Router 3 are not required to have paths, you can use nesting to protect multiple routes without applying +the wrapper multiple times.

      +
      const Authenticated = userIsAuthenticated(({ children, ...props }) => React.cloneElement(children, props));
      +
      +<Route path='/' component={App}>
      +   <IndexRedirect to="/login" />
      +   <Route path='login' component={Login} />
      +   <Route component={Authenticated}>
      +     <Route path="foo" component={Foo} />
      +     <Route path="bar" component={Bar} />
      +   </Route>
      +</Route>
      +
      +

      One thing to note is that if you use named children routes (TODO example) then you may need to use a different approach than cloneElement with the children prop.

      +

      Server Side Rendering

      +

      If you are using redux-auth-wrapper for redirection in apps that use Server Side Rendering you may need to use the onEnter. This is because in most cases your server should redirect users before sending down the client HTML.

      +
      import { createOnEnter } from '../src/history3/redirect'
      +
      +const connect = (fn) => (nextState, replaceState) => fn(store, nextState, replaceState)
      +
      +const userIsAuthenticated = connectedReduxRedirect({
      +  redirectPath: 'unprotected',
      +  authenticatedSelector: state => state.user !== null,
      +})
      +
      +const onEnter = createOnEnter({
      +  redirectPath: 'unprotected',
      +  authenticatedSelector: state => state.user !== null,
      +})
      +
      +<Route path='/' component={App}>
      +   <Route path='unprotected' component={Unprotected} />
      +   <Route path='protected' component={userIsAuthenticated(Unprotected)} onEnter={connect(onEnter)}
      +</Route>
      +
      +

      During onEnter, selectors such as authenticatedSelector, authenticatingSelector, and failureRedirectPath (if you are using) +the function variation, will receive react-router's nextState as their second argument instead of the component props.

      +

      With nested wrappers

      +

      To implement SSR with nested wrappers, you will have to provide a function to chain onEnter functions of each wrapper.

      +
      const onEnterAuth = createOnEnter({
      +  redirectPath: 'unprotected',
      +  authenticatedSelector: state => state.user !== null,
      +})
      +
      +const userIsAuthenticated = connectedReduxRedirect({
      +  redirectPath: 'unprotected',
      +  authenticatedSelector: state => state.user !== null,
      +})
      +
      +const onEnterAdmin = createOnEnter({
      +  redirectPath: 'home',
      +  authenticatedSelector: state => state.user.isAdmin === false,
      +})
      +
      +const userIsAdmin = connectedReduxRedirect({
      +  redirectPath: 'home',
      +  authenticatedSelector: state => state.user.isAdmin === false,
      +})
      +
      +const getRoutes = (store) => {
      +  const connect = (fn) => (nextState, replaceState) => fn(store, nextState, replaceState);
      +
      +  //This executes the parent onEnter first, going from left to right.
      +  // `replace` has to be wrapped because we want to stop executing `onEnter` hooks
      +  // after the first call to `replace`.
      +  const onEnterChain = (...listOfOnEnters) => (store, nextState, replace) => {
      +    let redirected = false;
      +    const wrappedReplace = (...args) => {
      +      replace(...args);
      +      redirected = true;
      +    };
      +    listOfOnEnters.forEach((onEnter) => {
      +      if (!redirected) {
      +        onEnter(store, nextState, wrappedReplace);
      +      }
      +    });
      +  };
      +
      +  return (
      +    <Route>
      +      <Route path="/" component={App}>
      +        <Route path="unprotected" component={Unprotected} />
      +        <Route path="home"
      +          component={userIsAuthenticated(Home)}
      +          onEnter={connect(onEnterChain(onEnterAuth))} />
      +        <Route path="admin"
      +          component={userIsAuthenticated(userIsAdmin(Admin))}
      +          onEnter={connect(onEnterChain(onEnterAuth, onEnterAdmin))} />
      +      </Route>
      +    </Route>
      +  );
      +};
      +
      + + +
      + +
      +
      +
      + +

      results matching ""

      +
        + +
        +
        + +

        No results matching ""

        + +
        +
        +
        + +
        +
        + +
        + + + + + + + + + + + + + + +
        + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/AdvancedUsage/ReactRouter3.md b/docs/AdvancedUsage/ReactRouter3.md deleted file mode 100644 index 65acc9c..0000000 --- a/docs/AdvancedUsage/ReactRouter3.md +++ /dev/null @@ -1,109 +0,0 @@ -# React Router 3 Advanced Usage - -## Protecting Multiple Routes - -Because routes in React Router 3 are not required to have paths, you can use nesting to protect multiple routes without applying -the wrapper multiple times. -```js -const Authenticated = userIsAuthenticated(({ children, ...props }) => React.cloneElement(children, props)); - - - - - - - - - -``` - -One thing to note is that if you use named children routes (TODO example) then you may need to use a different approach than `cloneElement` with the `children` prop. - -## Server Side Rendering - -If you are using redux-auth-wrapper for redirection in apps that use Server Side Rendering you may need to use the `onEnter`. This is because in most cases your server should redirect users before sending down the client HTML. - -```js -import { createOnEnter } from '../src/history3/redirect' - -const connect = (fn) => (nextState, replaceState) => fn(store, nextState, replaceState) - -const userIsAuthenticated = connectedReduxRedirect({ - redirectPath: 'unprotected', - authenticatedSelector: state => state.user !== null, -}) - -const onEnter = createOnEnter({ - redirectPath: 'unprotected', - authenticatedSelector: state => state.user !== null, -}) - - - - -``` - -During onEnter, selectors such as `authenticatedSelector`, `authenticatingSelector`, and `failureRedirectPath` (if you are using) -the function variation, will receive react-router's `nextState` as their second argument instead of the component props. - -### With nested wrappers - -To implement SSR with nested wrappers, you will have to provide a function to chain `onEnter` functions of each wrapper. - -```js -const onEnterAuth = createOnEnter({ - redirectPath: 'unprotected', - authenticatedSelector: state => state.user !== null, -}) - -const userIsAuthenticated = connectedReduxRedirect({ - redirectPath: 'unprotected', - authenticatedSelector: state => state.user !== null, -}) - -const onEnterAdmin = createOnEnter({ - redirectPath: 'home', - authenticatedSelector: state => state.user.isAdmin === false, -}) - -const userIsAdmin = connectedReduxRedirect({ - redirectPath: 'home', - authenticatedSelector: state => state.user.isAdmin === false, -}) - -const getRoutes = (store) => { - const connect = (fn) => (nextState, replaceState) => fn(store, nextState, replaceState); - - //This executes the parent onEnter first, going from left to right. - // `replace` has to be wrapped because we want to stop executing `onEnter` hooks - // after the first call to `replace`. - const onEnterChain = (...listOfOnEnters) => (store, nextState, replace) => { - let redirected = false; - const wrappedReplace = (...args) => { - replace(...args); - redirected = true; - }; - listOfOnEnters.forEach((onEnter) => { - if (!redirected) { - onEnter(store, nextState, wrappedReplace); - } - }); - }; - - return ( - - - - - - - - ); -}; - -``` diff --git a/docs/AdvancedUsage/Redux.html b/docs/AdvancedUsage/Redux.html new file mode 100644 index 0000000..df86970 --- /dev/null +++ b/docs/AdvancedUsage/Redux.html @@ -0,0 +1,468 @@ + + + + + + + Advanced Redux · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + +
        + +
        + + + + + + + + +
        +
        + +
        +
        + +
        + +

        Redux Advanced Usage

        +

        Dispatching an Additional Redux Action on Redirect

        +

        You may want to dispatch an additional redux action when a redirect occurs. One example of this is to display a notification message +that the user is being redirected or doesn't have access to that protected resource. To do this, you can chain the redirectAction +parameter using redux-thunk middleware. It depends slightly on if you are using a redux + routing solution or just React Router.

        +

        Note: make sure you add redux-thunk to your store's middleware or else the following will not work

        +

        Using react-router-redux or redux-router and dispatching an extra redux action in the wrapper

        +
        import { replace } from 'react-router-redux'; // Or your redux-router equivalent
        +import { connectedReduxRedirect } from 'redux-auth-wrapper/history3/redirect'
        +import addNotification from './notificationActions';
        +
        +// Admin Authorization, redirects non-admins to /app
        +export const userIsAdmin = connectedReduxRedirect({
        +  redirectPath: '/app',
        +  allowRedirectBack: false,
        +  authenticatedSelector: state => state.user !== null && state.user.isAdmin,
        +  redirectAction: (newLoc) => (dispatch) => {
        +     dispatch(replace(newLoc));
        +     dispatch(addNotification({ message: 'Sorry, you are not an administrator' }));
        +  },
        +  wrapperDisplayName: 'UserIsAdmin'
        +})
        +
        +

        Using React Router with history singleton and extra redux action

        +
        import { browserHistory } from 'react-router'; // react router 3
        +import addNotification from './notificationActions';
        +
        +// Admin Authorization, redirects non-admins to /app
        +export const userIsAdmin = connectedReduxRedirect({
        +  redirectPath: '/app',
        +  allowRedirectBack: false,
        +  authenticatedSelector: state => state.user !== null && state.user.isAdmin,
        +  redirectAction: (newLoc) => (dispatch) => {
        +     browserHistory.replace(newLoc);
        +     dispatch(addNotification({ message: 'Sorry, you are not an administrator' }));
        +  },
        +  wrapperDisplayName: 'UserIsAdmin'
        +})
        +
        + + +
        + +
        +
        +
        + +

        results matching ""

        +
          + +
          +
          + +

          No results matching ""

          + +
          +
          +
          + +
          +
          + +
          + + + + + + + + + + +
          + + +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/AdvancedUsage/Redux.md b/docs/AdvancedUsage/Redux.md deleted file mode 100644 index 91139f8..0000000 --- a/docs/AdvancedUsage/Redux.md +++ /dev/null @@ -1,45 +0,0 @@ -# Redux Advanced Usage - -## Dispatching an Additional Redux Action on Redirect -You may want to dispatch an additional redux action when a redirect occurs. One example of this is to display a notification message -that the user is being redirected or doesn't have access to that protected resource. To do this, you can chain the `redirectAction` -parameter using `redux-thunk` middleware. It depends slightly on if you are using a redux + routing solution or just React Router. - -**Note:** make sure you add `redux-thunk` to your store's middleware or else the following will not work - -#### Using `react-router-redux` or `redux-router` and dispatching an extra redux action in the wrapper -```js -import { replace } from 'react-router-redux'; // Or your redux-router equivalent -import { connectedReduxRedirect } from 'redux-auth-wrapper/history3/redirect' -import addNotification from './notificationActions'; - -// Admin Authorization, redirects non-admins to /app -export const userIsAdmin = connectedReduxRedirect({ - redirectPath: '/app', - allowRedirectBack: false, - authenticatedSelector: state => state.user !== null && state.user.isAdmin, - redirectAction: (newLoc) => (dispatch) => { - dispatch(replace(newLoc)); - dispatch(addNotification({ message: 'Sorry, you are not an administrator' })); - }, - wrapperDisplayName: 'UserIsAdmin' -}) -``` - -#### Using React Router with history singleton and extra redux action -```js -import { browserHistory } from 'react-router'; // react router 3 -import addNotification from './notificationActions'; - -// Admin Authorization, redirects non-admins to /app -export const userIsAdmin = connectedReduxRedirect({ - redirectPath: '/app', - allowRedirectBack: false, - authenticatedSelector: state => state.user !== null && state.user.isAdmin, - redirectAction: (newLoc) => (dispatch) => { - browserHistory.replace(newLoc); - dispatch(addNotification({ message: 'Sorry, you are not an administrator' })); - }, - wrapperDisplayName: 'UserIsAdmin' -}) -``` diff --git a/docs/Getting-Started/HidingAlternate.html b/docs/Getting-Started/HidingAlternate.html new file mode 100644 index 0000000..8930583 --- /dev/null +++ b/docs/Getting-Started/HidingAlternate.html @@ -0,0 +1,496 @@ + + + + + + + Hiding and Alternate Components · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          + + + + + + + + +
          + +
          + +
          + + + + + + + + +
          +
          + +
          +
          + +
          + +

          Hiding and Displaying Alternate Components

          +

          In addition to controlling what pages users can access in an application, another common requirement is to hide or display different elements on the page depending on the user's permissions. redux-auth-wrapper also provides an HOC that makes this easy to do in your application.

          +

          Hiding a Component

          +

          If you want to hide a component, you can import the connectedAuthWrapper HOC. When the authenticatedSelector returns true, the wrapped component will be rendered and passed all props from the parent. When the authenticatedSelector returns false, no component will be rendered.

          +

          Here is an example that hides a link from a non-admin user.

          +
          import connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper'
          +
          +const visibleOnlyAdmin = connectedAuthWrapper({
          +  authenticatedSelector: state => state.user !== null && state.user.isAdmin,
          +  wrapperDisplayName: 'VisibleOnlyAdmin',
          +})
          +
          +// Applying to a function component for simplicity but could be Class or createClass component
          +const AdminOnlyLink = visibleOnlyAdmin(() => <Link to='/admin'>Admin Section</Link>)
          +
          +

          Displaying an Alternate Component

          +

          You can also display a component when the authenticatedSelector returns false. Simply pass the FailureComponent property to the authWrapper.

          +
          import connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper'
          +
          +const visibleOnlyAdmin = connectedAuthWrapper({
          +  authenticatedSelector: state => state.user !== null && state.user.isAdmin,
          +  wrapperDisplayName: 'AdminOrHomeLink',
          +  FailureComponent: () => <Link to='/home'>Home Section</Link>
          +})
          +
          +// Applying to a function component for simplicity but could be Class or createClass component
          +const AdminOnlyLink = visibleOnlyAdmin(() => <Link to='/admin'>Admin Section</Link>)
          +
          +

          You can also easily wrap the call to authWrapper in a function to make it more flexible to apply throughout your code:

          +
          const adminOrElse = (Component, FailureComponent) => connectedAuthWrapper({
          +  authenticatedSelector: state => state.user !== null && state.user.isAdmin,
          +  wrapperDisplayName: 'AdminOrElse',
          +  FailureComponent
          +})(Component)
          +
          +// Show Admin dashboard to admins and user dashboard to regular users
          +<Route path='/dashboard' component={adminOrElse(AdminDashboard, UserDashboard)} />
          +
          +

          Unconnected Wrapper

          +

          If you don't want to have redux-auth-wrapper connect your selector automatically for you, you can use the un-connected version. This might be useful if you are already connecting the component and dont want the extra overhead of another connect, or want to pass the props in via traditional state.

          +
          import authWrapper from 'redux-auth-wrapper/authWrapper'
          +
          +const visibleOnlyAdmin = authWrapper({
          +  wrapperDisplayName: 'VisibleOnlyAdmin',
          +})
          +
          +// Applying to a function component for simplicity but could be Class or createClass component
          +const AdminOnlyLink = visibleOnlyAdmin(() => <Link to='/admin'>Admin Section</Link>)
          +
          +class MyComponent extends Component {
          +
          +  ...
          +
          +  render() {
          +    <div>
          +      <AdminOnlyLink isAuthenticated={this.state.isAuthenticated} />
          +    </div>
          +  }
          +
          +}
          +
          + + +
          + +
          +
          +
          + +

          results matching ""

          +
            + +
            +
            + +

            No results matching ""

            + +
            +
            +
            + +
            +
            + +
            + + + + + + + + + + + + + + +
            + + +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/Getting-Started/HidingAlternate.md b/docs/Getting-Started/HidingAlternate.md deleted file mode 100644 index 400c767..0000000 --- a/docs/Getting-Started/HidingAlternate.md +++ /dev/null @@ -1,77 +0,0 @@ -# Hiding and Displaying Alternate Components - -In addition to controlling what pages users can access in an application, another common requirement is to hide or display different elements on the page depending on the user's permissions. redux-auth-wrapper also provides an HOC that makes this easy to do in your application. - -## Hiding a Component - -If you want to hide a component, you can import the `connectedAuthWrapper` HOC. When the `authenticatedSelector` returns true, the wrapped component will be rendered and passed all props from the parent. When the `authenticatedSelector` returns false, no component will be rendered. - -Here is an example that hides a link from a non-admin user. -```js -import connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper' - -const visibleOnlyAdmin = connectedAuthWrapper({ - authenticatedSelector: state => state.user !== null && state.user.isAdmin, - wrapperDisplayName: 'VisibleOnlyAdmin', -}) - -// Applying to a function component for simplicity but could be Class or createClass component -const AdminOnlyLink = visibleOnlyAdmin(() => Admin Section) -``` - -## Displaying an Alternate Component - -You can also display a component when the `authenticatedSelector` returns false. Simply pass the `FailureComponent` property to the `authWrapper`. - -```js -import connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper' - -const visibleOnlyAdmin = connectedAuthWrapper({ - authenticatedSelector: state => state.user !== null && state.user.isAdmin, - wrapperDisplayName: 'AdminOrHomeLink', - FailureComponent: () => Home Section -}) - -// Applying to a function component for simplicity but could be Class or createClass component -const AdminOnlyLink = visibleOnlyAdmin(() => Admin Section) -``` - -You can also easily wrap the call to `authWrapper` in a function to make it more flexible to apply throughout your code: - -```js -const adminOrElse = (Component, FailureComponent) => connectedAuthWrapper({ - authenticatedSelector: state => state.user !== null && state.user.isAdmin, - wrapperDisplayName: 'AdminOrElse', - FailureComponent -})(Component) - -// Show Admin dashboard to admins and user dashboard to regular users - -``` - -## Unconnected Wrapper - -If you don't want to have redux-auth-wrapper connect your selector automatically for you, you can use the un-connected version. This might be useful if you are already connecting the component and dont want the extra overhead of another `connect`, or want to pass the props in via traditional state. - -```js -import authWrapper from 'redux-auth-wrapper/authWrapper' - -const visibleOnlyAdmin = authWrapper({ - wrapperDisplayName: 'VisibleOnlyAdmin', -}) - -// Applying to a function component for simplicity but could be Class or createClass component -const AdminOnlyLink = visibleOnlyAdmin(() => Admin Section) - -class MyComponent extends Component { - - ... - - render() { -
            - -
            - } - -} -``` diff --git a/docs/Getting-Started/NestingWrappers.html b/docs/Getting-Started/NestingWrappers.html new file mode 100644 index 0000000..d096006 --- /dev/null +++ b/docs/Getting-Started/NestingWrappers.html @@ -0,0 +1,473 @@ + + + + + + + Nesting Wrappers · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +
            + + + + + + + + +
            + +
            + +
            + + + + + + + + +
            +
            + +
            +
            + +
            + +

            Nesting Wrappers

            +

            Both the redirection HOCs and authWrapper can be nested (composed) together to create additional constraints for auth. This is especially useful when you want to provide authorization checks, such as checking a user is logged in and also an administrator.

            +

            For example, we can create a button that will only display for logged in users named Bob:

            +
            const onlyBob = authWrapper({
            +  authenticatedSelector: state => state.user.firstName === 'Bob'
            +  wrapperDisplayName: 'UserIsOnlyBob',
            +})
            +
            +const OnlyBobButton = onlyBob(MyButton)
            +
            +

            When nesting redirection HOCs, it is important to pay attention to the order of the nesting, especially if you are using a different redirectPath or allowRedirectBack. Consider the following:

            +
            const userIsAuthenticated = connectedRouterRedirect({
            +  redirectPath: '/login',
            +  authenticatedSelector: state => state.user !== null,
            +  wrapperDisplayName: 'UserIsAuthenticated'
            +})
            +
            +const userIsAdmin = connectedRouterRedirect({
            +  authenticatedSelector: state => state.user.isAdmin,
            +  redirectPath: '/app',
            +  wrapperDisplayName: 'UserIsAdmin',
            +  allowRedirectBack: false
            +})
            +
            +// Now to secure the component: first check if the user is authenticated, and then check if the user is an admin
            +<Route path="admin" component={userIsAuthenticated(userIsAdmin(Admin))}/>
            +
            +

            Because the userIsAuthenticated check happens first, if the users aren't logged in they will be sent to the /login first, skipping the admin check all together. Then once they've authenticated, they can be checked for if they are an admin. Otherwise, they would be sent to /app which might also be protected by a userIsAuthenticated and then get sent to /login from there (assuming another auth check). This would result in the user ending up at /app once they've authenticated, instead of at /admin if they are an admin but weren't logged in at the time.

            +

            Chaining using compose

            +

            Since Higher Order Components are functions, they can easily be chained together using compose to prevent accidentally applying them in the wrong order. compose can be imported from redux, or recompose:

            +
            import { compose } from 'redux'
            +
            +// userIsAuthenticated and userIsAdmin from above
            +const userIsAdminChain = compose(userIsAuthenticated, userIsAdmin)
            +
            +// Now to secure the component, you don't have to think which order to apply!
            +<Route path="admin" component={userIsAdminChain(Admin)}/>
            +
            + + +
            + +
            +
            +
            + +

            results matching ""

            +
              + +
              +
              + +

              No results matching ""

              + +
              +
              +
              + +
              +
              + +
              + + + + + + + + + + + + + + +
              + + +
              + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/Getting-Started/NestingWrappers.md b/docs/Getting-Started/NestingWrappers.md deleted file mode 100644 index 6a8feea..0000000 --- a/docs/Getting-Started/NestingWrappers.md +++ /dev/null @@ -1,50 +0,0 @@ -# Nesting Wrappers - -Both the redirection HOCs and `authWrapper` can be nested (composed) together to create additional constraints for auth. This is especially useful when you want to provide authorization checks, such as checking a user is logged in and also an administrator. - -For example, we can create a button that will only display for logged in users named Bob: - -```js -const onlyBob = authWrapper({ - authenticatedSelector: state => state.user.firstName === 'Bob' - wrapperDisplayName: 'UserIsOnlyBob', -}) - -const OnlyBobButton = onlyBob(MyButton) -``` - -When nesting redirection HOCs, it is important to pay attention to the order of the nesting, especially if you are using a different `redirectPath` or `allowRedirectBack`. Consider the following: - -``` js -const userIsAuthenticated = connectedRouterRedirect({ - redirectPath: '/login', - authenticatedSelector: state => state.user !== null, - wrapperDisplayName: 'UserIsAuthenticated' -}) - -const userIsAdmin = connectedRouterRedirect({ - authenticatedSelector: state => state.user.isAdmin, - redirectPath: '/app', - wrapperDisplayName: 'UserIsAdmin', - allowRedirectBack: false -}) - -// Now to secure the component: first check if the user is authenticated, and then check if the user is an admin - -``` - -Because the `userIsAuthenticated` check happens first, if the users aren't logged in they will be sent to the `/login` first, skipping the admin check all together. Then once they've authenticated, they can be checked for if they are an admin. Otherwise, they would be sent to `/app` which might also be protected by a `userIsAuthenticated` and then get sent to `/login` from there (assuming another auth check). This would result in the user ending up at `/app` once they've authenticated, instead of at `/admin` if they are an admin but weren't logged in at the time. - -#### Chaining using compose - -Since Higher Order Components are functions, they can easily be chained together using `compose` to prevent accidentally applying them in the wrong order. `compose` can be imported from redux, or recompose: - -```js -import { compose } from 'redux' - -// userIsAuthenticated and userIsAdmin from above -const userIsAdminChain = compose(userIsAuthenticated, userIsAdmin) - -// Now to secure the component, you don't have to think which order to apply! - -``` diff --git a/docs/Getting-Started/Overview.html b/docs/Getting-Started/Overview.html new file mode 100644 index 0000000..936225f --- /dev/null +++ b/docs/Getting-Started/Overview.html @@ -0,0 +1,524 @@ + + + + + + + Getting Started · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              +
              + + + + + + + + +
              + +
              + +
              + + + + + + + + +
              +
              + +
              +
              + +
              + +

              Overview

              +

              Higher Order Components

              +

              redux-auth-wrapper makes use of higher order components to decouple the rendering logic in your components from the permissions a user might have. If you are unfamiliar with using higher order components or where to apply them, please read below, otherwise skip to the Tutorials.

              +

              For a great read on what higher order components are, check out Dan Abramov's blog post:

              +

              Higher Order Components.

              +
              +

              A higher-order component is just a function that takes an existing component and returns another component that wraps it

              +
              +

              Where to apply

              +

              Higher order components are extremely powerful tools for adding logic to your components and keeping them easy to understand. It is important, however, to apply HOCs in the proper place. Failure to do so can cause subtle bugs and performance problems in your code.

              +

              In all of the following examples, we use the hoc authWrapper, but this advice applies for all HOCs (even ones not from redux-auth-wrapper).

              +

              Safe to Apply

              +

              Directly inside ReactDOM.render:

              +
              ReactDOM.render(
              +  <Provider store={store}>
              +    <Router history={history}>
              +      <Route path="/" component={App}>
              +        <Route path="auth" component={authWrapper(Foo)}/>
              +        ...
              +      </Route>
              +    </Router>
              +  </Provider>,
              +  document.getElementById('mount')
              +)
              +
              +

              Separate route config file:

              +
              const routes = (
              +  <Route path="/" component={App}>
              +    <Route path="auth" component={authWrapper(Foo)}/>
              +    ...
              +  </Route>
              +)
              +
              +ReactDOM.render(  
              +  <Provider store={store}>
              +    <Router history={history}>
              +      {routes}
              +    </Router>
              +  </Provider>,
              +  document.getElementById('mount')
              +)
              +
              +

              Applied in the component file (es7):

              +
              @authWrapper
              +export default class MyComponent extends Component {
              +  ...
              +}
              +
              +

              Applied in the component file (es6):

              +
              class MyComponent extends Component {
              +  ...
              +}
              +export default UserIsAuthenticated(MyComponent)
              +
              +

              Applied outside the component file:

              +
              import MyComponent from './component/mycomponent.js'
              +
              +const MyAuthComponent = authWrapper(MyComponent)
              +
              +

              Not Safe to Apply

              +

              The following are all not safe because they create a new component over and over again, preventing react from considering these the "same" component and causing mounting/unmounting loops.

              +

              Inside of render:

              +
              import MyComponent from './component/MyComponent.js'
              +
              +class MyParentComponent extends Component {
              +  render() {
              +    const MyAuthComponent = authWrapper(MyComponent)
              +    return <MyAuthComponent />
              +  }
              +}
              +
              +

              Inside of any getComponent (react router 3):

              +
              const routes = (
              +  <Route path="/" component={App}>
              +    <Route path="auth" getComponent={(nextState, cb) => {
              +      cb(null, authWrapper(Foo))
              +     }} />
              +     ...
              +  </Route>
              +)
              +
              +

              Tutorials

              + + + +
              + +
              +
              +
              + +

              results matching ""

              +
                + +
                +
                + +

                No results matching ""

                + +
                +
                +
                + +
                +
                + +
                + + + + + + + + + + + + + + +
                + + +
                + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/Getting-Started/Overview.md b/docs/Getting-Started/Overview.md deleted file mode 100644 index a8335f4..0000000 --- a/docs/Getting-Started/Overview.md +++ /dev/null @@ -1,111 +0,0 @@ -# Overview - -## Higher Order Components - -redux-auth-wrapper makes use of higher order components to decouple the rendering logic in your components from the permissions a user might have. If you are unfamiliar with using higher order components or where to apply them, please read below, otherwise skip to the [Tutorials](#tutorials). - -For a great read on what higher order components are, check out Dan Abramov's blog post: - -[Higher Order Components](https://medium.com/@dan_abramov/mixins-are-dead-long-live-higher-order-components-94a0d2f9e750#.ao9jjxx89). -> A higher-order component is just a function that takes an existing component and returns another component that wraps it - -### Where to apply - -Higher order components are extremely powerful tools for adding logic to your components and keeping them easy to understand. It is important, however, to apply HOCs in the proper place. Failure to do so can cause subtle bugs and performance problems in your code. - -In all of the following examples, we use the hoc `authWrapper`, but this advice applies for all HOCs (even ones not from redux-auth-wrapper). - -#### Safe to Apply - -Directly inside ReactDOM.render: -```js -ReactDOM.render( - - - - - ... - - - , - document.getElementById('mount') -) -``` - -Separate route config file: -```js -const routes = ( - - - ... - -) - -ReactDOM.render( - - - {routes} - - , - document.getElementById('mount') -) -``` - -Applied in the component file (es7): -```js -@authWrapper -export default class MyComponent extends Component { - ... -} -``` - -Applied in the component file (es6): -```js -class MyComponent extends Component { - ... -} -export default UserIsAuthenticated(MyComponent) -``` - -Applied outside the component file: -```js -import MyComponent from './component/mycomponent.js' - -const MyAuthComponent = authWrapper(MyComponent) -``` - -#### Not Safe to Apply - -The following are all not safe because they create a new component over and over again, preventing react from considering these the "same" component and causing mounting/unmounting loops. - -Inside of render: -```js -import MyComponent from './component/MyComponent.js' - -class MyParentComponent extends Component { - render() { - const MyAuthComponent = authWrapper(MyComponent) - return - } -} -``` - -Inside of any `getComponent` (react router 3): -```js -const routes = ( - - { - cb(null, authWrapper(Foo)) - }} /> - ... - -) -``` - -## Tutorials - -* [React Router 3 Tutorial](ReactRouter3.md) -* [React Router 4 Tutorial](ReactRouter4.md) -* [React Native Tutorial](ReactNative.md) -* [Hiding and Alternative Components](HidingAlternate.md) -* [Nesting Wrappers](NestingWrappers.md) diff --git a/docs/Getting-Started/ReactNative.html b/docs/Getting-Started/ReactNative.html new file mode 100644 index 0000000..b021ce0 --- /dev/null +++ b/docs/Getting-Started/ReactNative.html @@ -0,0 +1,437 @@ + + + + + + + React Native · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                +
                + + + + + + + + +
                + +
                + +
                + + + + + + + + +
                +
                + +
                +
                + +
                + +

                React Native Redirection

                +

                Using redux-auth-wrapper with React Native? Please help improve these docs and the examples by submitting a Pull Request!

                + + +
                + +
                +
                +
                + +

                results matching ""

                +
                  + +
                  +
                  + +

                  No results matching ""

                  + +
                  +
                  +
                  + +
                  +
                  + +
                  + + + + + + + + + + + + + + +
                  + + +
                  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/Getting-Started/ReactNative.md b/docs/Getting-Started/ReactNative.md deleted file mode 100644 index d8c77d5..0000000 --- a/docs/Getting-Started/ReactNative.md +++ /dev/null @@ -1,3 +0,0 @@ -# React Native Redirection - -Using redux-auth-wrapper with React Native? Please help improve these docs and the examples by submitting a Pull Request! diff --git a/docs/Getting-Started/ReactRouter3.html b/docs/Getting-Started/ReactRouter3.html new file mode 100644 index 0000000..78f2df2 --- /dev/null +++ b/docs/Getting-Started/ReactRouter3.html @@ -0,0 +1,523 @@ + + + + + + + React Router 3 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                  +
                  + + + + + + + + +
                  + +
                  + +
                  + + + + + + + + +
                  +
                  + +
                  +
                  + +
                  + +

                  React Router 3 Redirection

                  +

                  At first glance, it appears that redux-auth-wrapper is unnecessary in React Router 3 because of the onEnter method.

                  +

                  onEnter is great, and useful in certain situations. However, here are some common auth problems onEnter does not solve:

                  +
                    +
                  • Decide authentication/authorization from redux store data (there are some workarounds)
                  • +
                  • Recheck auth when the store changes but not the current route (not possible!)
                  • +
                  +

                  Instead, we can use redux-auth-wrapper to protect React Router 3 routes with auth checks to more easily interact with our redux store.

                  +

                  Securing a Route

                  +

                  To add redirection to your app with React Router 3, import the following helper:

                  +
                  import { connectedRouterRedirect } from 'redux-auth-wrapper/history3/redirect'
                  +
                  +

                  The connectedRouterRedirect will build the redirect higher order component, but we have to first pass in a config object. The wrapper needs to know how to determine if a user is allowed to access the route.

                  +
                  const userIsAuthenticated = connectedRouterRedirect({
                  +   // The url to redirect user to if they fail
                  +  redirectPath: '/login',
                  +   // Determine if the user is authenticated or not
                  +  authenticatedSelector: state => state.user !== null,
                  +  // A nice display name for this check
                  +  wrapperDisplayName: 'UserIsAuthenticated'
                  +})
                  +
                  +

                  userIsAuthenticated is a Higher Order Component, so we can apply it to the component we want to protect. You can do this in many places, see where to apply the wrappers for more details. In our case, we apply it directly in the route definition.

                  +
                  <Route path="profile" component={userIsAuthenticated(Profile)}/>
                  +
                  +

                  When the user navigates to /profile, one of the following occurs:

                  +
                    +
                  1. If The state.user is null:

                    +

                    The user is redirected to /login?redirect=%2Fprofile

                    +

                    Notice the url contains the query parameter redirect for sending the user back to after you log them into your app

                    +
                  2. +
                  3. Otherwise:

                    +

                    The <Profile> component is rendered

                    +
                  4. +
                  +

                  Redirecting from Login

                  +

                  We've only done half of the work however. When a user logs into the login page, we want to send them back to /profile. Additionally, if a user is already logged in, but navigates to our login page, we may want to send them to a landing page (/landing). Luckily we can easily do both of these with another wrapper.

                  +
                  import locationHelperBuilder from 'redux-auth-wrapper/history3/locationHelper'
                  +
                  +const locationHelper = locationHelperBuilder({})
                  +
                  +const userIsNotAuthenticated = connectedRouterRedirect({
                  +  // This sends the user either to the query param route if we have one, or to the landing page if none is specified and the user is already logged in
                  +  redirectPath: (state, ownProps) => locationHelper.getRedirectQueryParam(ownProps) || '/landing',
                  +  // This prevents us from adding the query parameter when we send the user away from the login page
                  +  allowRedirectBack: false,
                  +  // Determine if the user is authenticated or not
                  +  authenticatedSelector: state => state.user.data !== null,
                  +  // A nice display name for this check
                  +  wrapperDisplayName: 'UserIsNotAuthenticated'
                  +})
                  +
                  +
                  <Route path="profile" component={userIsAuthenticated(Profile)}/>
                  +<Route path="login" component={userIsNotAuthenticated(Login)}/>
                  +
                  +

                  The locationHelper requires the location object in props. If the component is not rendered as part of a route component then you must use the withRouter HOC from react-router:

                  +
                  withRouter(userIsNotAuthenticated(Login))
                  +
                  +

                  Displaying an AuthenticatingComponent Component

                  +

                  Its often useful to display some sort of loading component or animation when you are checking if the user's credentials are valid or if the user is already logged in. We can add a loading component to both our Login and Profile page easily:

                  +

                  When authenticatingSelector returns true, no redirection will be performed and the the specified AuthenticatingComponent will be displayed. If no AuthenticatingComponent is specified, then no component will be rendered (null).

                  +
                  const userIsAuthenticated = connectedRouterRedirect({
                  +  redirectPath: '/login',
                  +  authenticatedSelector: state => state.user.data. !== null,
                  +  wrapperDisplayName: 'UserIsAuthenticated'
                  +  // Returns true if the user auth state is loading
                  +  authenticatingSelector: state => state.user.isLoading,
                  +  // Render this component when the authenticatingSelector returns true
                  +  AuthenticatingComponent: LoadingSpinner,
                  +})
                  +
                  +

                  You can also add an authenticatingSelector and AuthenticatingComponent

                  +

                  Integrating with redux-based routing

                  +

                  If you want to dispatch a redux action to perform navigation instead of interacting directly with the history/router object then you can pass the redux action creator to redirectAction. Note that using redirectAction is not required if you use redux-based or redux-integrated routing, it only changes how the route change is triggered in the client.

                  +

                  To do this, swap out the import of connectedRouterRedirect for connectedReduxRedirect and pass the redirectAction parameter to the config object:

                  +
                  import { connectedReduxRedirect } from 'redux-auth-wrapper/history3/redirect'
                  +import { routerActions } from 'react-router-redux'
                  +
                  +const userIsAuthenticated = connectedReduxRedirect({
                  +  redirectPath: '/login',
                  +  authenticatedSelector: state => state.user !== null,
                  +  wrapperDisplayName: 'UserIsAuthenticated',
                  +  // This should be a redux action creator
                  +  redirectAction: routerActions.replace,
                  +})
                  +
                  +

                  Next Steps

                  +

                  Check out the examples or browse the API documentation. If you are using server side rendering (SSR) with React Router 3, you should also check out the Server Side Rendering documentation.

                  + + +
                  + +
                  +
                  +
                  + +

                  results matching ""

                  +
                    + +
                    +
                    + +

                    No results matching ""

                    + +
                    +
                    +
                    + +
                    +
                    + +
                    + + + + + + + + + + + + + + +
                    + + +
                    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/Getting-Started/ReactRouter3.md b/docs/Getting-Started/ReactRouter3.md deleted file mode 100644 index 1f21e3d..0000000 --- a/docs/Getting-Started/ReactRouter3.md +++ /dev/null @@ -1,121 +0,0 @@ -# React Router 3 Redirection - -At first glance, it appears that redux-auth-wrapper is unnecessary in React Router 3 because of the [onEnter](https://github.com/ReactTraining/react-router/blob/v3/docs/API.md#onenternextstate-replace-callback) method. - -`onEnter` is great, and useful in certain situations. However, here are some common auth problems `onEnter` does not solve: -* Decide authentication/authorization from redux store data (there are some [workarounds](https://github.com/CrocoDillon/universal-react-redux-boilerplate/blob/master/src/routes.js#L8)) -* Recheck auth when the store changes but not the current route (not possible!) - -Instead, we can use redux-auth-wrapper to protect React Router 3 routes with auth checks to more easily interact with our redux store. - -## Securing a Route - -To add redirection to your app with React Router 3, import the following helper: -```js -import { connectedRouterRedirect } from 'redux-auth-wrapper/history3/redirect' -``` - -The `connectedRouterRedirect` will build the redirect higher order component, but we have to first pass in a config object. The wrapper needs to know how to determine if a user is allowed to access the route. - -```js -const userIsAuthenticated = connectedRouterRedirect({ - // The url to redirect user to if they fail - redirectPath: '/login', - // Determine if the user is authenticated or not - authenticatedSelector: state => state.user !== null, - // A nice display name for this check - wrapperDisplayName: 'UserIsAuthenticated' -}) -``` - -`userIsAuthenticated` is a Higher Order Component, so we can apply it to the component we want to protect. You can do this in many places, see [where to apply the wrappers](Overview.md#where-to-apply) for more details. In our case, we apply it directly in the route definition. - -```js - -``` - -When the user navigates to `/profile`, one of the following occurs: - -1. If The `state.user` is null: - - The user is redirected to `/login?redirect=%2Fprofile` - - *Notice the url contains the query parameter `redirect` for sending the user back to after you log them into your app* -2. Otherwise: - - The `` component is rendered - -## Redirecting from Login - -We've only done half of the work however. When a user logs into the login page, we want to send them back to `/profile`. Additionally, if a user is already logged in, but navigates to our login page, we may want to send them to a landing page (`/landing`). Luckily we can easily do both of these with another wrapper. - -```js -import locationHelperBuilder from 'redux-auth-wrapper/history3/locationHelper' - -const locationHelper = locationHelperBuilder({}) - -const userIsNotAuthenticated = connectedRouterRedirect({ - // This sends the user either to the query param route if we have one, or to the landing page if none is specified and the user is already logged in - redirectPath: (state, ownProps) => locationHelper.getRedirectQueryParam(ownProps) || '/landing', - // This prevents us from adding the query parameter when we send the user away from the login page - allowRedirectBack: false, - // Determine if the user is authenticated or not - authenticatedSelector: state => state.user === null, - // A nice display name for this check - wrapperDisplayName: 'UserIsNotAuthenticated' -}) -``` - -```js - - -``` - -The `locationHelper` requires the `location` object in props. If the component is not rendered as part of a route component then you must use the `withRouter` HOC from `react-router`: - -```js -withRouter(userIsNotAuthenticated(Login)) -``` - -## Displaying an AuthenticatingComponent Component - -Its often useful to display some sort of loading component or animation when you are checking if the user's credentials are valid or if the user is already logged in. We can add a loading component to both our Login and Profile page easily: - -When `authenticatingSelector` returns true, no redirection will be performed and the the specified `AuthenticatingComponent` will be displayed. If no `AuthenticatingComponent` is specified, then no component will be rendered (null). - -```js -const userIsAuthenticated = connectedRouterRedirect({ - redirectPath: '/login', - authenticatedSelector: state => state.user !== null, - wrapperDisplayName: 'UserIsAuthenticated' - // Returns true if the user auth state is loading - authenticatingSelector: state => state.user.isLoading, - // Render this component when the authenticatingSelector returns true - AuthenticatingComponent: LoadingSpinner, -}) -``` - -You can also add an `authenticatingSelector` and `AuthenticatingComponent` - -## Integrating with redux-based routing - -If you want to dispatch a redux action to perform navigation instead of interacting directly with the history/router object then you can pass the redux action creator to `redirectAction`. Note that using `redirectAction` is not required if you use redux-based or redux-integrated routing, it only changes how the route change is triggered in the client. - -To do this, swap out the import of `connectedRouterRedirect` for `connectedReduxRedirect` and pass the `redirectAction` parameter to the config object: - -```js -import { connectedReduxRedirect } from 'redux-auth-wrapper/history3/redirect' -import { routerActions } from 'react-router-redux' - -const userIsAuthenticated = connectedReduxRedirect({ - redirectPath: '/login', - authenticatedSelector: state => state.user !== null, - wrapperDisplayName: 'UserIsAuthenticated', - // This should be a redux action creator - redirectAction: routerActions.replace, -}) -``` - -## Next Steps - -Check out the [examples](https://github.com/mjrussell/redux-auth-wrapper/tree/master/examples) or browse the [API documentation](/docs/API.md). If you are using server side rendering (SSR) with React Router 3, you should also check out the [Server Side Rendering](/docs/AdvancedUsage/ReactRouter3.md) documentation. diff --git a/docs/Getting-Started/ReactRouter4.html b/docs/Getting-Started/ReactRouter4.html new file mode 100644 index 0000000..8447d76 --- /dev/null +++ b/docs/Getting-Started/ReactRouter4.html @@ -0,0 +1,521 @@ + + + + + + + React Router 4 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    +
                    + + + + + + + + +
                    + +
                    + +
                    + + + + + + + + +
                    +
                    + +
                    +
                    + +
                    + +

                    React Router 4/5 Redirection

                    +

                    note: this guide refers mainlys to React Router 4. React Router 5 is the same API and redux-auth-wrapper 3.x is fully compatible with React Router 5.

                    +

                    React Router 4 removed onEnter and onChange in favor of performing those routing logic actions inside component life cycle methods. This is what redux-auth-wrapper already does with Higher Order Components!

                    +

                    Using redux-auth-wrapper with React Router 4 is very similar to React Router 3 with a few changes.

                    +

                    Securing a Route

                    +

                    To add redirection to your app with React Router 4, import the following helper:

                    +
                    import { connectedRouterRedirect } from 'redux-auth-wrapper/history4/redirect'
                    +
                    +

                    The connectedRouterRedirect will build the redirect higher order component, but we have to first pass in a config object. The wrapper needs to know how to determine if a user is allowed to access the route.

                    +
                    const userIsAuthenticated = connectedRouterRedirect({
                    +   // The url to redirect user to if they fail
                    +  redirectPath: '/login',
                    +   // If selector is true, wrapper will not redirect
                    +   // For example let's check that state contains user data
                    +  authenticatedSelector: state => state.user.data !== null,
                    +  // A nice display name for this check
                    +  wrapperDisplayName: 'UserIsAuthenticated'
                    +})
                    +
                    +

                    userIsAuthenticated is a Higher Order Component, so we can apply it to the component we want to protect. You can do this in many places, see where to apply the wrappers for more details. In our case, we apply it directly in the route definition.

                    +
                    <Route path="profile" component={userIsAuthenticated(Profile)}/>
                    +
                    +

                    When the user navigates to /profile, one of the following occurs:

                    +
                      +
                    1. If The state.user is null:

                      +

                      The user is redirected to /login?redirect=%2Fprofile

                      +

                      Notice the url contains the query parameter redirect for sending the user back to after you log them into your app

                      +
                    2. +
                    3. Otherwise:

                      +

                      The <Profile> component is rendered

                      +
                    4. +
                    +

                    Redirecting from Login

                    +

                    We've only done half of the work however. When a user logs into the login page, we want to send them back to /profile. Additionally, if a user is already logged in, but navigates to our login page, we may want to send them to a landing page (/landing). Luckily we can easily do both of these with another wrapper.

                    +
                    import locationHelperBuilder from 'redux-auth-wrapper/history4/locationHelper'
                    +
                    +const locationHelper = locationHelperBuilder({})
                    +
                    +const userIsNotAuthenticated = connectedRouterRedirect({
                    +  // This sends the user either to the query param route if we have one, or to the landing page if none is specified and the user is already logged in
                    +  redirectPath: (state, ownProps) => locationHelper.getRedirectQueryParam(ownProps) || '/landing',
                    +  // This prevents us from adding the query parameter when we send the user away from the login page
                    +  allowRedirectBack: false,
                    +   // If selector is true, wrapper will not redirect
                    +   // So if there is no user data, then we show the page
                    +  authenticatedSelector: state => state.user.data === null,
                    +  // A nice display name for this check
                    +  wrapperDisplayName: 'UserIsNotAuthenticated'
                    +})
                    +
                    +
                    <Route path="profile" component={userIsAuthenticated(Profile)}/>
                    +<Route path="login" component={userIsNotAuthenticated(Login)}/>
                    +
                    +

                    The locationHelper requires the location object in props. If the component is not rendered as part of a route component then you must use the withRouter HOC from react-router:

                    +
                    withRouter(userIsNotAuthenticated(Login))
                    +
                    +

                    Displaying an AuthenticatingComponent Component

                    +

                    Its often useful to display some sort of loading component or animation when you are checking if the user's credentials are valid or if the user is already logged in. We can add a loading component to both our Login and Profile page easily:

                    +

                    When authenticatingSelector returns true, no redirection will be performed and the the specified AuthenticatingComponent will be displayed. If no AuthenticatingComponent is specified, then no component will be rendered (null).

                    +
                    const userIsAuthenticated = connectedRouterRedirect({
                    +  redirectPath: '/login',
                    +  authenticatedSelector: state => state.user.data !== null,
                    +  wrapperDisplayName: 'UserIsAuthenticated',
                    +  // Returns true if the user auth state is loading
                    +  authenticatingSelector: state => state.user.isLoading,
                    +  // Render this component when the authenticatingSelector returns true
                    +  AuthenticatingComponent: LoadingSpinner
                    +})
                    +
                    +

                    You can also add an authenticatingSelector and AuthenticatingComponent

                    +

                    Integrating with redux-based routing

                    +

                    If you want to dispatch a redux action to perform navigation instead of interacting directly with the history/router object then you can pass the redux action creator to redirectAction. Note that using redirectAction is not required if you use redux-based or redux-integrated routing, it only changes how the route change is triggered in the client.

                    +

                    To do this, swap out the import of connectedRouterRedirect for connectedReduxRedirect and pass the redirectAction parameter to the config object:

                    +
                    import { connectedReduxRedirect } from 'redux-auth-wrapper/history4/redirect'
                    +import { replace } from 'connected-react-router'
                    +
                    +const userIsAuthenticated = connectedReduxRedirect({
                    +  redirectPath: '/login',
                    +  authenticatedSelector: state => state.user !== null,
                    +  wrapperDisplayName: 'UserIsAuthenticated',
                    +  // This should be a redux action creator
                    +  redirectAction: replace,
                    +})
                    +
                    +

                    Next Steps

                    +

                    Check out the examples or browse the API documentation.

                    + + +
                    + +
                    +
                    +
                    + +

                    results matching ""

                    +
                      + +
                      +
                      + +

                      No results matching ""

                      + +
                      +
                      +
                      + +
                      +
                      + +
                      + + + + + + + + + + + + + + +
                      + + +
                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/Getting-Started/ReactRouter4.md b/docs/Getting-Started/ReactRouter4.md deleted file mode 100644 index 6b2ebc8..0000000 --- a/docs/Getting-Started/ReactRouter4.md +++ /dev/null @@ -1,121 +0,0 @@ -# React Router 4/5 Redirection - -_note: this guide refers mainlys to React Router 4. React Router 5 is the same API and redux-auth-wrapper 3.x is fully compatible with React Router 5._ - -React Router 4 removed `onEnter` and `onChange` in favor of performing those routing logic actions inside component life cycle methods. This is what redux-auth-wrapper already does with Higher Order Components! - -Using redux-auth-wrapper with React Router 4 is very similar to React Router 3 with a few changes. - -## Securing a Route - -To add redirection to your app with React Router 4, import the following helper: -```js -import { connectedRouterRedirect } from 'redux-auth-wrapper/history4/redirect' -``` - -The `connectedRouterRedirect` will build the redirect higher order component, but we have to first pass in a config object. The wrapper needs to know how to determine if a user is allowed to access the route. - -```js -const userIsAuthenticated = connectedRouterRedirect({ - // The url to redirect user to if they fail - redirectPath: '/login', - // If selector is true, wrapper will not redirect - // For example let's check that state contains user data - authenticatedSelector: state => state.user.data !== null, - // A nice display name for this check - wrapperDisplayName: 'UserIsAuthenticated' -}) -``` - -`userIsAuthenticated` is a Higher Order Component, so we can apply it to the component we want to protect. You can do this in many places, see [where to apply the wrappers](Overview.md#where-to-apply) for more details. In our case, we apply it directly in the route definition. - -```js - -``` - -When the user navigates to `/profile`, one of the following occurs: - -1. If The `state.user` is null: - - The user is redirected to `/login?redirect=%2Fprofile` - - *Notice the url contains the query parameter `redirect` for sending the user back to after you log them into your app* -2. Otherwise: - - The `` component is rendered - -## Redirecting from Login - -We've only done half of the work however. When a user logs into the login page, we want to send them back to `/profile`. Additionally, if a user is already logged in, but navigates to our login page, we may want to send them to a landing page (`/landing`). Luckily we can easily do both of these with another wrapper. - -```js -import locationHelperBuilder from 'redux-auth-wrapper/history4/locationHelper' - -const locationHelper = locationHelperBuilder({}) - -const userIsNotAuthenticated = connectedRouterRedirect({ - // This sends the user either to the query param route if we have one, or to the landing page if none is specified and the user is already logged in - redirectPath: (state, ownProps) => locationHelper.getRedirectQueryParam(ownProps) || '/landing', - // This prevents us from adding the query parameter when we send the user away from the login page - allowRedirectBack: false, - // If selector is true, wrapper will not redirect - // So if there is no user data, then we show the page - authenticatedSelector: state => state.user.data === null, - // A nice display name for this check - wrapperDisplayName: 'UserIsNotAuthenticated' -}) -``` - -```js - - -``` - -The `locationHelper` requires the `location` object in props. If the component is not rendered as part of a route component then you must use the `withRouter` HOC from `react-router`: - -```js -withRouter(userIsNotAuthenticated(Login)) -``` - -## Displaying an AuthenticatingComponent Component - -Its often useful to display some sort of loading component or animation when you are checking if the user's credentials are valid or if the user is already logged in. We can add a loading component to both our Login and Profile page easily: - -When `authenticatingSelector` returns true, no redirection will be performed and the the specified `AuthenticatingComponent` will be displayed. If no `AuthenticatingComponent` is specified, then no component will be rendered (null). - -```js -const userIsAuthenticated = connectedRouterRedirect({ - redirectPath: '/login', - authenticatedSelector: state => state.user.data !== null, - wrapperDisplayName: 'UserIsAuthenticated', - // Returns true if the user auth state is loading - authenticatingSelector: state => state.user.isLoading, - // Render this component when the authenticatingSelector returns true - AuthenticatingComponent: LoadingSpinner -}) -``` - -You can also add an `authenticatingSelector` and `AuthenticatingComponent` - -## Integrating with redux-based routing - -If you want to dispatch a redux action to perform navigation instead of interacting directly with the history/router object then you can pass the redux action creator to `redirectAction`. Note that using `redirectAction` is not required if you use redux-based or redux-integrated routing, it only changes how the route change is triggered in the client. - -To do this, swap out the import of `connectedRouterRedirect` for `connectedReduxRedirect` and pass the `redirectAction` parameter to the config object: - -```js -import { connectedReduxRedirect } from 'redux-auth-wrapper/history4/redirect' -import { replace } from 'connected-react-router' - -const userIsAuthenticated = connectedReduxRedirect({ - redirectPath: '/login', - authenticatedSelector: state => state.user !== null, - wrapperDisplayName: 'UserIsAuthenticated', - // This should be a redux action creator - redirectAction: replace, -}) -``` - -## Next Steps - -Check out the [examples](https://github.com/mjrussell/redux-auth-wrapper/tree/master/examples) or browse the [API documentation](/docs/API.md). diff --git a/docs/Migrating.html b/docs/Migrating.html new file mode 100644 index 0000000..de70313 --- /dev/null +++ b/docs/Migrating.html @@ -0,0 +1,534 @@ + + + + + + + Migrating from V1 · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      + + + + + + + + +
                      + +
                      + +
                      + + + + + + + + +
                      +
                      + +
                      +
                      + +
                      + +

                      Migrating from Version 1.x to Version 2.x

                      +

                      Motivation for 2.x

                      +

                      redux-auth-wrapper has really changed a lot since it was first designed as a small specialized utility for handling redirection with react-router-redux. Since then, it has been adopted by many developers and they've used it in numerous unforeseen and useful ways such as hiding components, displaying alternate components, and integrating with other routers. Additionally, redux-auth-wrapper needed to support two version of React Router (3 and 4) which had very different APIs. Therefore, version 2.x breaks redux-auth-wrapper into many more small, composable pieces. redux-auth-wrapper still provides a simple import for those looking to get started quickly with React Router, but also allows for developers to import the building blocks to create redirection wrappers that work with any router (or history directly). You can even use redux-auth-wrapper 2.x in a project without redux or even routing.

                      +

                      The largest change is that wrappers that perform redirection have been split from those that hide or display alternate components using FailureComponent. +This made practical sense since using a FailureComponent disabled the redirection, yet the wrapper would still complain +about missing redirection helpers like history even when they would not be used. Now you can use Failure Component wrappers +without even a router.

                      +

                      Migrating redirection wrappers

                      +

                      The main changes are the following:

                      +
                        +
                      • Combined authSelector and predicate into a single authenticatedSelector
                      • +
                      • No longer passed authData as a prop to child components. This was the return value of authSelector. If you need your auth data, just connect it at a lower level.
                      • +
                      • renamed LoadingComponent to AuthenticatingComponent
                      • +
                      • renamed failureRedirectPath to redirectPath
                      • +
                      • redirectPath no longer defaults to /login
                      • +
                      • removed FailureComponent from the redirect helper, see Migrating failure and alternative components for details
                      • +
                      • Removed mapProps. If you need to prevent passing down any props from redux-auth-wrapper, use mapProps from recompose.
                      • +
                      +

                      Previously:

                      +

                      v1.x:

                      +
                      import { UserAuthWrapper } from 'redux-auth-wrapper'
                      +
                      +const UserIsAuthenticated = UserAuthWrapper({
                      +  authSelector: state => state.user.data,
                      +  authenticatingSelector: state => state.user.isLoading,
                      +  LoadingComponent: Loading,
                      +  redirectAction: routerActions.replace,
                      +  wrapperDisplayName: 'UserIsAuthenticated'
                      +})
                      +
                      +

                      v2.x:

                      +
                      // NOTE: use history3 because coming from React Router 2/3. If planning to upgrade to React Router 4 use history4
                      +import { connectedReduxRedirect } from 'redux-auth-wrapper/history3/redirect'
                      +
                      +export const userIsAuthenticated = connectedReduxRedirect({
                      +  redirectPath: '/login',
                      +  authenticatedSelector: state => state.user.data !== null,
                      +  authenticatingSelector: state => state.user.isLoading,
                      +  AuthenticatingComponent: Loading,
                      +  redirectAction: routerActions.replace,
                      +  wrapperDisplayName: 'UserIsAuthenticated'
                      +})
                      +
                      +

                      Note: If not using redirectAction, import connectedRouterRedirect instead.

                      +

                      Migrating failure and alternative components

                      +
                        +
                      • Combined authSelector and predicate into a single authenticatedSelector
                      • +
                      • FailureComponent is optional now, not specifying it will render nothing (null) when the authenticatedSelector returns false
                      • +
                      • All properties besides authenticatedSelector, authenticatingSelector, FailureComponent, and wrapperDisplayName have been removed
                      • +
                      +

                      Hiding Components

                      +

                      v1.x

                      +
                      import { UserAuthWrapper } from 'redux-auth-wrapper'
                      +
                      +
                      +const VisibleOnlyAdmin = UserAuthWrapper({
                      +  authSelector: state => state.user,
                      +  wrapperDisplayName: 'VisibleOnlyAdmin',
                      +  predicate: user => user.isAdmin,
                      +  FailureComponent: null
                      +})
                      +
                      +// Applying to a function component for simplicity but could be Class or createClass component
                      +const AdminOnlyLink = VisibleOnlyAdmin(() => <Link to='/admin'>Admin Section</Link>)
                      +
                      +

                      v2.x

                      +
                      import connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper'
                      +
                      +const visibleOnlyAdmin = authWrapper({
                      +  authenticatedSelector: state => state.user !== null && state.user.isAdmin,
                      +  wrapperDisplayName: 'VisibleOnlyAdmin',
                      +})
                      +
                      +

                      Alternate Components

                      +

                      v1.x

                      +
                      import { UserAuthWrapper } from 'redux-auth-wrapper'
                      +
                      +const AdminOrElse = (Component, FailureComponent) => UserAuthWrapper({
                      +  authSelector: state => state.user,
                      +  wrapperDisplayName: 'AdminOrElse',
                      +  predicate: user => user.isAdmin,
                      +  FailureComponent
                      +})(Component)
                      +
                      +// Show Admin dashboard to admins and user dashboard to regular users
                      +<Route path='/dashboard' component={AdminOrElse(AdminDashboard, UserDashboard)} />
                      +
                      +

                      v2.x

                      +
                      import connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper'
                      +
                      +const adminOrElse = (Component, FailureComponent) => connectedAuthWrapper({
                      +  authenticatedSelector: state => state.user !== null && state.user.isAdmin,
                      +  wrapperDisplayName: 'AdminOrElse',
                      +  FailureComponent
                      +})(Component)
                      +
                      +// Show Admin dashboard to admins and user dashboard to regular users
                      +<Route path='/dashboard' component={adminOrElse(AdminDashboard, UserDashboard)} />
                      +
                      + + +
                      + +
                      +
                      +
                      + +

                      results matching ""

                      +
                        + +
                        +
                        + +

                        No results matching ""

                        + +
                        +
                        +
                        + +
                        +
                        + +
                        + + + + + + + + + + + + + + +
                        + + +
                        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/Migrating.md b/docs/Migrating.md deleted file mode 100644 index a8cc8ec..0000000 --- a/docs/Migrating.md +++ /dev/null @@ -1,118 +0,0 @@ -# Migrating from Version 1.x to Version 2.x - -## Motivation for 2.x - -redux-auth-wrapper has really changed a lot since it was first designed as a small specialized utility for handling redirection with react-router-redux. Since then, it has been adopted by many developers and they've used it in numerous unforeseen and useful ways such as hiding components, displaying alternate components, and integrating with other routers. Additionally, redux-auth-wrapper needed to support two version of React Router (3 and 4) which had very different APIs. Therefore, version 2.x breaks redux-auth-wrapper into many more small, composable pieces. redux-auth-wrapper still provides a simple import for those looking to get started quickly with React Router, but also allows for developers to import the building blocks to create redirection wrappers that work with any router (or history directly). You can even use redux-auth-wrapper 2.x in a project without redux or even routing. - -The largest change is that wrappers that perform redirection have been split from those that hide or display alternate components using `FailureComponent`. -This made practical sense since using a FailureComponent disabled the redirection, yet the wrapper would still complain -about missing redirection helpers like `history` even when they would not be used. Now you can use Failure Component wrappers -without even a router. - -## Migrating redirection wrappers - -The main changes are the following: -* Combined `authSelector` and `predicate` into a single `authenticatedSelector` -* No longer passed `authData` as a prop to child components. This was the return value of `authSelector`. If you need your auth data, just connect it at a lower level. -* renamed `LoadingComponent` to `AuthenticatingComponent` -* renamed `failureRedirectPath` to `redirectPath` -* `redirectPath` no longer defaults to `/login` -* removed `FailureComponent` from the redirect helper, see [Migrating failure and alternative components](#migrating-failure-and-alternative-components) for details -* Removed `mapProps`. If you need to prevent passing down any props from redux-auth-wrapper, use `mapProps` from recompose. - -Previously: - -v1.x: -```js -import { UserAuthWrapper } from 'redux-auth-wrapper' - -const UserIsAuthenticated = UserAuthWrapper({ - authSelector: state => state.user.data, - authenticatingSelector: state => state.user.isLoading, - LoadingComponent: Loading, - redirectAction: routerActions.replace, - wrapperDisplayName: 'UserIsAuthenticated' -}) -``` - -v2.x: -```js -// NOTE: use history3 because coming from React Router 2/3. If planning to upgrade to React Router 4 use history4 -import { connectedReduxRedirect } from 'redux-auth-wrapper/history3/redirect' - -export const userIsAuthenticated = connectedReduxRedirect({ - redirectPath: '/login', - authenticatedSelector: state => state.user.data !== null, - authenticatingSelector: state => state.user.isLoading, - AuthenticatingComponent: Loading, - redirectAction: routerActions.replace, - wrapperDisplayName: 'UserIsAuthenticated' -}) -``` - -**Note:** If not using `redirectAction`, import `connectedRouterRedirect` instead. - -## Migrating failure and alternative components - -* Combined `authSelector` and `predicate` into a single `authenticatedSelector` -* FailureComponent is optional now, not specifying it will render nothing (null) when the `authenticatedSelector` returns false -* All properties besides `authenticatedSelector`, `authenticatingSelector`, `FailureComponent`, and `wrapperDisplayName` have been removed - -### Hiding Components - -v1.x -```js -import { UserAuthWrapper } from 'redux-auth-wrapper' - - -const VisibleOnlyAdmin = UserAuthWrapper({ - authSelector: state => state.user, - wrapperDisplayName: 'VisibleOnlyAdmin', - predicate: user => user.isAdmin, - FailureComponent: null -}) - -// Applying to a function component for simplicity but could be Class or createClass component -const AdminOnlyLink = VisibleOnlyAdmin(() => Admin Section) -``` - -v2.x -```js -import connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper' - -const visibleOnlyAdmin = authWrapper({ - authenticatedSelector: state => state.user !== null && state.user.isAdmin, - wrapperDisplayName: 'VisibleOnlyAdmin', -}) -``` - -### Alternate Components - -v1.x -```js -import { UserAuthWrapper } from 'redux-auth-wrapper' - -const AdminOrElse = (Component, FailureComponent) => UserAuthWrapper({ - authSelector: state => state.user, - wrapperDisplayName: 'AdminOrElse', - predicate: user => user.isAdmin, - FailureComponent -})(Component) - -// Show Admin dashboard to admins and user dashboard to regular users - -``` - -v2.x -```js -import connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper' - -const adminOrElse = (Component, FailureComponent) => connectedAuthWrapper({ - authenticatedSelector: state => state.user !== null && state.user.isAdmin, - wrapperDisplayName: 'AdminOrElse', - FailureComponent -})(Component) - -// Show Admin dashboard to admins and user dashboard to regular users - -``` diff --git a/docs/Troubleshooting.html b/docs/Troubleshooting.html new file mode 100644 index 0000000..6b105e0 --- /dev/null +++ b/docs/Troubleshooting.html @@ -0,0 +1,503 @@ + + + + + + + Troubleshooting · GitBook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                        +
                        + + + + + + + + +
                        + +
                        + +
                        + + + + + + + + +
                        +
                        + +
                        +
                        + +
                        + +

                        Troubleshooting and Common Issues

                        +

                        Having trouble with redux-auth-wrapper? Check out the following common issues.

                        +

                        Applying the HOC

                        +

                        Make sure that when using the helpers from redux-auth-wrapper that you are applying the HOC to your component and in the right location (see where to apply the wrappers for more details). Most imports from this library are HOC builders, requiring first a configuration object. For instance you shouldn't be applying the connectedRouterRedirect directly to a component:

                        +

                        Incorrect:

                        +
                        const ProtectedComponent = connectedRouterRedirect(MyComponent)
                        +
                        +

                        Correct:

                        +
                        const userIsAuthenticated = connectedRouterRedirect({
                        +  redirectPath: '/login',
                        +  authenticatedSelector: state => state.user !== null
                        +})
                        +
                        +const ProtectedComponent = userIsAuthenticated(MyComponent)
                        +
                        +

                        Also, please be sure that you've applied the HOC in a proper location. Check out the documentation on where to apply auth wrappers.

                        +

                        Rendering the wrapped component

                        +

                        Also remember that the result of an HOC being applied to a Component is a new Component, so you cannot render it without instantiating it:

                        +

                        Incorrect:

                        +
                        const visibleOnlyAdmin = authWrapper({
                        +  authenticatedSelector: state => state.user !== null && state.user.isAdmin,
                        +  wrapperDisplayName: 'AdminOrHomeLink',
                        +  FailureComponent: () => <Link to='/home'>Home Section</Link>
                        +})
                        +
                        +const AdminOnlyLink = visibleOnlyAdmin(() => <Link to='/admin'>Admin Section</Link>)
                        +
                        + class MyComponent extends Component {
                        +   render() {
                        +     return (
                        +       <div>
                        +        {AdminOnlyLink}
                        +       </div>
                        +     )
                        +
                        +   }
                        + }
                        +
                        +

                        Correct:

                        +
                        const visibleOnlyAdmin = authWrapper({
                        +  authenticatedSelector: state => state.user !== null && state.user.isAdmin,
                        +  wrapperDisplayName: 'AdminOrHomeLink',
                        +  FailureComponent: () => <Link to='/home'>Home Section</Link>
                        +})
                        +
                        +const AdminOnlyLink = visibleOnlyAdmin(() => <Link to='/admin'>Admin Section</Link>)
                        +
                        + class MyComponent extends Component {
                        +   render() {
                        +     return (
                        +       <div>
                        +        <AdminOnlyLink />
                        +       </div>
                        +     )
                        +
                        +   }
                        + }
                        +
                        +

                        Replace of undefined

                        +

                        The redirect helpers make us of the history object from React Router. In most cases, this is passed down because the wrapped component is rendered as a child of <Router>. However if you render the component elsewhere you might get Uncaught TypeError: Cannot read property 'replace' of undefined. This likely means the history object was not passed to the component. You can solve this by using the withRouter higher order component:

                        +
                        import { withRouter } from 'react-router';
                        +const userIsAuthenticated = connectedRouterRedirect({
                        +  redirectPath: '/login',
                        +  authenticatedSelector: state => state.user.data. !== null
                        +})
                        +
                        +const ProtectedComponent = withRouter(userIsAuthenticated(MyComponent))
                        +
                        + + +
                        + +
                        +
                        +
                        + +

                        results matching ""

                        +
                          + +
                          +
                          + +

                          No results matching ""

                          + +
                          +
                          +
                          + +
                          +
                          + +
                          + + + + + + + + + + + + + + +
                          + + +
                          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/Troubleshooting.md b/docs/Troubleshooting.md deleted file mode 100644 index e9c1ab6..0000000 --- a/docs/Troubleshooting.md +++ /dev/null @@ -1,86 +0,0 @@ -# Troubleshooting and Common Issues - -Having trouble with redux-auth-wrapper? Check out the following common issues. - -#### Applying the HOC - -Make sure that when using the helpers from redux-auth-wrapper that you are applying the HOC to your component and in the right location (see [where to apply the wrappers](Overview.md#where-to-apply) for more details). Most imports from this library are HOC builders, requiring first a configuration object. For instance you shouldn't be applying the `connectedRouterRedirect` directly to a component: - -Incorrect: -```js -const ProtectedComponent = connectedRouterRedirect(MyComponent) -``` - -Correct: -```js -const userIsAuthenticated = connectedRouterRedirect({ - redirectPath: '/login', - authenticatedSelector: state => state.user !== null -}) - -const ProtectedComponent = userIsAuthenticated(MyComponent) -``` - -Also, please be sure that you've applied the HOC in a proper location. Check out the documentation on [where to apply auth wrappers](/docs/Getting-Started/Overview.md#where-to-apply). - -#### Rendering the wrapped component - -Also remember that the result of an HOC being applied to a Component is a new Component, so you cannot render it without instantiating it: - -Incorrect: -```js -const visibleOnlyAdmin = authWrapper({ - authenticatedSelector: state => state.user !== null && state.user.isAdmin, - wrapperDisplayName: 'AdminOrHomeLink', - FailureComponent: () => Home Section -}) - -const AdminOnlyLink = visibleOnlyAdmin(() => Admin Section) - - class MyComponent extends Component { - render() { - return ( -
                          - {AdminOnlyLink} -
                          - ) - - } - } -``` - -Correct: -```js -const visibleOnlyAdmin = authWrapper({ - authenticatedSelector: state => state.user !== null && state.user.isAdmin, - wrapperDisplayName: 'AdminOrHomeLink', - FailureComponent: () => Home Section -}) - -const AdminOnlyLink = visibleOnlyAdmin(() => Admin Section) - - class MyComponent extends Component { - render() { - return ( -
                          - -
                          - ) - - } - } -``` - -#### Replace of undefined - -The redirect helpers make us of the `history` object from React Router. In most cases, this is passed down because the wrapped component is rendered as a child of ``. However if you render the component elsewhere you might get `Uncaught TypeError: Cannot read property 'replace' of undefined`. This likely means the `history` object was not passed to the component. You can solve this by using the `withRouter` higher order component: - -```js -import { withRouter } from 'react-router'; -const userIsAuthenticated = connectedRouterRedirect({ - redirectPath: '/login', - authenticatedSelector: state => state.user.data. !== null -}) - -const ProtectedComponent = withRouter(userIsAuthenticated(MyComponent)) -``` diff --git a/examples/react-router-3/.babelrc b/examples/react-router-3/.babelrc deleted file mode 100644 index 7008890..0000000 --- a/examples/react-router-3/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["es2015", "react", "stage-0"] -} diff --git a/examples/react-router-3/README.md b/examples/react-router-3/README.md deleted file mode 100644 index 4243491..0000000 --- a/examples/react-router-3/README.md +++ /dev/null @@ -1,19 +0,0 @@ -redux-auth-wrapper react router 3 example -================================= - -This is an example of redux-auth-wrapper that uses `authenticatingSelector` with `LoadingComponent` -to show a loading screen while the user logs in. This example also demonstrates how to use the UserAuthWrapper for -wrapping the Login Component in an HOC. - -This example uses React-Router 3.x and React-Router-Redux 4.x. - -**To run, follow these steps:** - -1. Go to the root of this project (up two folders) and run `npm install && npm run build` -2. In this folder, run `npm install` -3. In this folder, `npm start` -4. `Browse to http://localhost:8080` - -Login as any user to access the protected page `foo`. -Login with the admin box check to access the admin section. -Logout from any protected page to get redirect back to the login page. diff --git a/examples/react-router-3/actions/user.js b/examples/react-router-3/actions/user.js deleted file mode 100644 index 388b220..0000000 --- a/examples/react-router-3/actions/user.js +++ /dev/null @@ -1,20 +0,0 @@ -import * as constants from '../constants' - -export const login = data => dispatch => { - dispatch({ - type: constants.USER_LOGGING_IN - }) - // Wait 2 seconds before "logging in" - setTimeout(() => { - dispatch({ - type: constants.USER_LOGGED_IN, - payload: data - }) - }, 2000) -} - -export function logout() { - return { - type: constants.USER_LOGGED_OUT - } -} diff --git a/examples/react-router-3/app.js b/examples/react-router-3/app.js deleted file mode 100644 index 869c7a2..0000000 --- a/examples/react-router-3/app.js +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom' -import { createStore, combineReducers, applyMiddleware, compose } from 'redux' -import { Provider } from 'react-redux' -import { Router, Route, IndexRoute, browserHistory } from 'react-router' -import { routerReducer, syncHistoryWithStore, routerMiddleware } from 'react-router-redux' -import thunkMiddleware from 'redux-thunk' - -import * as reducers from './reducers' -import { App, Home, Foo, Admin, Login } from './components' -import { userIsAuthenticated, userIsAdmin, userIsNotAuthenticated } from './auth' - -const baseHistory = browserHistory -const routingMiddleware = routerMiddleware(baseHistory) -const reducer = combineReducers(Object.assign({}, reducers, { - routing: routerReducer -})) - -const enhancer = compose( - // Middleware you want to use in development: - applyMiddleware(thunkMiddleware, routingMiddleware), -) - -// Note: passing enhancer as the last argument requires redux@>=3.1.0 -const store = createStore(reducer, enhancer) -const history = syncHistoryWithStore(baseHistory, store) - -ReactDOM.render( - - - - - - - - - - , - document.getElementById('mount') -) diff --git a/examples/react-router-3/auth.js b/examples/react-router-3/auth.js deleted file mode 100644 index 7ddfc29..0000000 --- a/examples/react-router-3/auth.js +++ /dev/null @@ -1,33 +0,0 @@ -import locationHelperBuilder from 'redux-auth-wrapper/history3/locationHelper' -import { connectedRouterRedirect } from 'redux-auth-wrapper/history3/redirect' -import { routerActions } from 'react-router-redux' - -import { Loading } from './components' - -const locationHelper = locationHelperBuilder({}) - -export const userIsAuthenticated = connectedRouterRedirect({ - redirectPath: '/login', - authenticatedSelector: state => state.user.data !== null, - authenticatingSelector: state => state.user.isLoading, - AuthenticatingComponent: Loading, - redirectAction: routerActions.replace, - wrapperDisplayName: 'UserIsAuthenticated' -}) - -export const userIsAdmin = connectedRouterRedirect({ - redirectPath: '/', - allowRedirectBack: false, - authenticatedSelector: state => state.user.data !== null && state.user.data.isAdmin, - redirectAction: routerActions.replace, - wrapperDisplayName: 'UserIsAdmin' -}) - -export const userIsNotAuthenticated = connectedRouterRedirect({ - redirectPath: (state, ownProps) => locationHelper.getRedirectQueryParam(ownProps) || '/foo', - allowRedirectBack: false, - // Want to redirect the user when they are done loading and authenticated - authenticatedSelector: state => state.user.data === null && state.user.isLoading === false, - redirectAction: routerActions.replace, - wrapperDisplayName: 'UserIsNotAuthenticated' -}) diff --git a/examples/react-router-3/components/Admin.js b/examples/react-router-3/components/Admin.js deleted file mode 100644 index a4d72cd..0000000 --- a/examples/react-router-3/components/Admin.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' -import { connect } from 'react-redux' - -const Admin = ({ authData }) => { - return
                          {`Welcome admin user: ${authData.name}`}
                          -} - -export default connect(state => ({ authData: state.user.data }))(Admin) diff --git a/examples/react-router-3/components/App.js b/examples/react-router-3/components/App.js deleted file mode 100644 index bbb10f7..0000000 --- a/examples/react-router-3/components/App.js +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react' -import { Link } from 'react-router' -import { connect } from 'react-redux' -import { logout } from '../actions/user' - -function App({ children, logout }) { - return ( -
                          -
                          - Links: - {' '} - Home - {' '} - {'Foo (Login Required)'} - {' '} - {'Admin'} - {' '} - Login - {' '} - -
                          -
                          {children}
                          -
                          - ) -} - -export default connect(false, { logout })(App) diff --git a/examples/react-router-3/components/Foo.js b/examples/react-router-3/components/Foo.js deleted file mode 100644 index 4fd0357..0000000 --- a/examples/react-router-3/components/Foo.js +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react' -import { connect } from 'react-redux' - -const Foo = ({ authData }) => { - return ( -
                          {`I am Foo! Welcome ${authData.name}`}
                          - ) -} -export default connect(state => ({ authData: state.user.data }))(Foo) diff --git a/examples/react-router-3/components/Home.js b/examples/react-router-3/components/Home.js deleted file mode 100644 index 4222e32..0000000 --- a/examples/react-router-3/components/Home.js +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react' - -export default function Home() { - return ( -
                          -

                          {"Welcome! Why dont you login and check out Foo? Or log in as an admin and click Admin"}

                          -

                          {"Or just try to navigate there and you will be redirected"}

                          -

                          {"Dont forget to try logging out on any page!"}

                          -
                          - ) -} diff --git a/examples/react-router-3/components/Loading.js b/examples/react-router-3/components/Loading.js deleted file mode 100644 index f81a487..0000000 --- a/examples/react-router-3/components/Loading.js +++ /dev/null @@ -1,5 +0,0 @@ -import React from 'react' - -export default function Loading() { - return
                          Logging you in...
                          -} diff --git a/examples/react-router-3/components/Login.js b/examples/react-router-3/components/Login.js deleted file mode 100644 index a53c67a..0000000 --- a/examples/react-router-3/components/Login.js +++ /dev/null @@ -1,36 +0,0 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' -import { connect } from 'react-redux' - -import { login } from '../actions/user' - -export class LoginContainer extends Component { - - static propTypes = { - login: PropTypes.func.isRequired - }; - - onClick = (e) => { - e.preventDefault() - this.props.login({ - name: this.refs.name.value, - isAdmin: this.refs.admin.checked - }) - }; - - render() { - return ( -
                          -

                          Enter your name

                          - -
                          - {'Admin?'} - -
                          - -
                          - ) - } - -} -export default connect(null, { login })(LoginContainer) diff --git a/examples/react-router-3/components/index.js b/examples/react-router-3/components/index.js deleted file mode 100644 index 96305b8..0000000 --- a/examples/react-router-3/components/index.js +++ /dev/null @@ -1,6 +0,0 @@ -export App from './App' -export Home from './Home' -export Foo from './Foo' -export Admin from './Admin' -export Login from './Login' -export Loading from './Loading' diff --git a/examples/react-router-3/constants.js b/examples/react-router-3/constants.js deleted file mode 100644 index 1bc282f..0000000 --- a/examples/react-router-3/constants.js +++ /dev/null @@ -1,3 +0,0 @@ -export const USER_LOGGING_IN = 'USER_LOGGING_IN' -export const USER_LOGGED_IN = 'USER_LOGGED_IN' -export const USER_LOGGED_OUT = 'USER_LOGGED_OUT' diff --git a/examples/react-router-3/index.html b/examples/react-router-3/index.html deleted file mode 100644 index 70c9309..0000000 --- a/examples/react-router-3/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - redux-auth-wrapper basic example - - - -
                          - - diff --git a/examples/react-router-3/package.json b/examples/react-router-3/package.json deleted file mode 100644 index ac32302..0000000 --- a/examples/react-router-3/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "raw-loading-example", - "version": "0.0.0", - "dependencies": { - "react-router": "3.2.5", - "react-router-redux": "4.0.8", - "redux-thunk": "2.3.0" - }, - "devDependencies": { - "babel-loader": "7.1.5", - "html-webpack-plugin": "3.2.0", - "webpack": "4.41.5", - "webpack-cli": "3.3.10", - "webpack-dev-server": "3.10.1" - }, - "scripts": { - "start": "webpack-dev-server --config webpack.config.babel.js --progress" - } -} diff --git a/examples/react-router-3/reducers/index.js b/examples/react-router-3/reducers/index.js deleted file mode 100644 index f07b84c..0000000 --- a/examples/react-router-3/reducers/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import user from './user' - -module.exports = { user } diff --git a/examples/react-router-3/reducers/user.js b/examples/react-router-3/reducers/user.js deleted file mode 100644 index a55de43..0000000 --- a/examples/react-router-3/reducers/user.js +++ /dev/null @@ -1,19 +0,0 @@ -import * as constants from '../constants' - -const initialState = { - data: null, - isLoading: false -} - -export default function userUpdate(state = initialState, { type, payload }) { - switch (type) { - case constants.USER_LOGGING_IN: - return { ...initialState, isLoading: true } - case constants.USER_LOGGED_IN: - return { data: payload, isLoading: false } - case constants.USER_LOGGED_OUT: - return initialState - default: - return state - } -} diff --git a/examples/react-router-3/webpack.config.babel.js b/examples/react-router-3/webpack.config.babel.js deleted file mode 100644 index 70d344a..0000000 --- a/examples/react-router-3/webpack.config.babel.js +++ /dev/null @@ -1,52 +0,0 @@ -import path from 'path' -import fs from 'fs' -import HtmlWebpackPlugin from 'html-webpack-plugin' - -module.exports = { - entry: './app.js', - output: { - path: path.join(__dirname, 'dist'), - filename: 'bundle.js' - }, - devServer: { - inline: true, - historyApiFallback: true, - stats: { - colors: true, - hash: false, - version: false, - chunks: false, - children: false - } - }, - module: { - rules: [ { - test: /\.js$/, - loaders: [ 'babel-loader' ], - exclude: /node_modules/, - include: __dirname - } ] - }, - plugins: [ - new HtmlWebpackPlugin({ - template: 'index.html', // Load a custom template - inject: 'body' // Inject all scripts into the body - }) - ] -} - -// This will make the redux-auth-wrapper module resolve to the -// latest src instead of using it from npm. Remove this if running -// outside of the source. -const lib = path.join(__dirname, '..', '..', 'lib') -if (fs.existsSync(lib)) { - // Use the latest src - module.exports.resolve = { alias: { 'redux-auth-wrapper': lib } } - // module.exports.module.loaders.push({ - // test: /\.js$/, - // loaders: [ 'babel' ], - // include: lib - // }) -} else { - throw "redux-auth-wrapper source not built. Run the following: 'pushd ../.. && rm -rf node_modules && yarn install && yarn run build && popd' and then rerun 'yarn start'" -} diff --git a/examples/react-router-3/yarn.lock b/examples/react-router-3/yarn.lock deleted file mode 100644 index 66313df..0000000 --- a/examples/react-router-3/yarn.lock +++ /dev/null @@ -1,4375 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/node@*": - version "13.1.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.2.tgz#fe94285bf5e0782e1a9e5a8c482b1c34465fa385" - integrity sha512-B8emQA1qeKerqd1dmIsQYnXi+mmAzTB7flExjmy5X1aVAKFNNNDubkavwR13kR6JnpeLp3aLoJhwn9trWPAyFQ== - -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== - -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== - -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== - -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== - dependencies: - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== - -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== - -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== - -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn@^6.2.1: - version "6.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" - integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== - -ajv@^6.1.0, ajv@^6.10.2: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -asap@~2.0.3: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -babel-loader@7.1.5: - version "7.1.5" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz#e3ee0cd7394aa557e013b02d3e492bfd07aa6d68" - integrity sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw== - dependencies: - find-cache-dir "^1.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - 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" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - 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" - -boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - 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" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - 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" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= - dependencies: - 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" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cacache@^12.0.2: - version "12.0.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" - integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - 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" - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -chalk@2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chokidar@^2.0.2, chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chownr@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" - integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== - -chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@4.2.x: - version "4.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" - integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== - dependencies: - source-map "~0.6.0" - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compressible@~2.0.16: - version "2.0.17" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== - dependencies: - mime-db ">= 1.40.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - 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" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-js@^1.0.0: - version "1.2.7" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" - integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY= - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - 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" - -create-react-class@^15.5.1: - version "15.6.3" - resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.3.tgz#2d73237fb3f970ae6ebe011a9e66f46dbca80036" - integrity sha512-M+/3Q6E6DLO6Yx3OwrWjwHBnvfXXYA7W+dFjt/ZDBemHO1DDZhsalX/NUtnTYclN6GfnBDRh4qRHjcDHmlJBJg== - dependencies: - fbjs "^0.8.9" - loose-envify "^1.3.1" - object-assign "^4.1.1" - -cross-spawn@6.0.5, cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - 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" - -css-select@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.1.1, debug@^3.2.5: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -dom-converter@^0.2: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^1.5.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -elliptic@^6.0.0: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - integrity sha1-U4tm8+5izRq1HsMjgp0flIDHS+s= - dependencies: - iconv-lite "~0.4.13" - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - tapable "^1.0.0" - -enhanced-resolve@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" - integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -entities@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" - integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== - -errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" - -es-abstract@^1.17.0-next.1: - version "1.17.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0.tgz#f42a517d0036a5591dbb2c463591dc8bb50309b1" - integrity sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== - dependencies: - estraverse "^4.1.0" - -estraverse@^4.1.0, estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" - integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== - -eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - 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@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - 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" - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - -express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - 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.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - 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" - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== - dependencies: - websocket-driver ">=0.5.1" - -fbjs@^0.8.9: - version "0.8.17" - resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" - integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= - dependencies: - core-js "^1.0.0" - isomorphic-fetch "^2.1.1" - loose-envify "^1.0.0" - object-assign "^4.1.0" - promise "^7.1.1" - setimmediate "^1.0.5" - ua-parser-js "^0.7.18" - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -findup-sync@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0: - version "1.14.8" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" - integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.11" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" - integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob@^7.0.3, glob@^7.1.3, glob@^7.1.4: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - 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" - -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - 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@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== - -handle-thing@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" - integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@1.2.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -history@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/history/-/history-3.3.0.tgz#fcedcce8f12975371545d735461033579a6dae9c" - integrity sha1-/O3M6PEpdTcVRdc1RhAzV5ptrpw= - dependencies: - invariant "^2.2.1" - loose-envify "^1.2.0" - query-string "^4.2.2" - warning "^3.0.0" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoist-non-react-statics@^2.3.1: - version "2.5.5" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" - integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw== - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-entities@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= - -html-minifier@^3.2.3: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== - dependencies: - 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@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" - integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= - dependencies: - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - tapable "^1.0.0" - toposort "^1.0.0" - util.promisify "1.0.0" - -htmlparser2@^3.3.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -"http-parser-js@>=0.4.0 <0.4.11": - version "0.4.10" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" - integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy@^1.17.0: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -iconv-lite@0.4.24, iconv-lite@~0.4.13: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -import-local@2.0.0, import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.4, ini@^1.3.5: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -interpret@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - -invariant@^2.2.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" - integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== - -ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.0.4, is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== - dependencies: - has "^1.0.3" - -is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -isomorphic-fetch@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" - integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= - dependencies: - node-fetch "^1.0.1" - whatwg-fetch ">=0.10.0" - -"js-tokens@^3.0.0 || ^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json3@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.3: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -loglevel@^1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" - integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== - -loose-envify@^1.0.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memory-fs@^0.4.0, memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - 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" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.42.0, "mime-db@>= 1.40.0 < 2": - version "1.42.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" - integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== - -mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.25" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" - integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== - dependencies: - mime-db "1.42.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" - integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== - -mimic-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -nan@^2.12.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - -node-fetch@^1.0.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - -node-forge@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" - integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== - -object-is@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" - integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.getownpropertydescriptors@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-locale@^3.0.0, os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" - integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== - dependencies: - p-try "^2.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pako@~1.0.5: - version "1.0.10" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" - integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= - dependencies: - no-case "^2.2.0" - -parse-asn1@^5.0.0: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -portfinder@^1.0.25: - version "1.0.25" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" - integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.1" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -pretty-error@^2.0.2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= - dependencies: - renderkid "^2.0.1" - utila "~0.4" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -promise@^7.1.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" - integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== - dependencies: - asap "~2.0.3" - -prop-types@^15.7.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - -proxy-addr@~2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" - integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.0" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -query-string@^4.2.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-is@^16.8.1, react-is@^16.8.6: - version "16.12.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" - integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== - -react-router-redux@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/react-router-redux/-/react-router-redux-4.0.8.tgz#227403596b5151e182377dab835b5d45f0f8054e" - integrity sha1-InQDWWtRUeGCN32rg1tdRfD4BU4= - -react-router@3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-3.2.5.tgz#6f5ce8f4f0b4ff6a6b2fc6106d7619e342fb57be" - integrity sha512-0/edMhPfOLRZ5IT3y6UkCpW7a13WrnGMR75ayAh2ZLynujEJOSptJt856GKnoCMW+7rk0/WYGUp/QaZNS9dTKg== - dependencies: - create-react-class "^15.5.1" - history "^3.0.0" - hoist-non-react-statics "^2.3.1" - invariant "^2.2.1" - loose-envify "^1.2.0" - prop-types "^15.7.2" - react-is "^16.8.6" - warning "^3.0.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== - dependencies: - 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" - -readable-stream@^3.0.6, readable-stream@^3.1.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" - integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -redux-thunk@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" - integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" - integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== - dependencies: - css-select "^1.1.0" - dom-converter "^0.2" - htmlparser2 "^3.3.0" - strip-ansi "^3.0.0" - utila "^0.4.0" - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.7: - version "1.10.7" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" - integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== - dependencies: - node-forge "0.9.0" - -semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4, setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - -sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" - integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== - dependencies: - faye-websocket "^0.10.0" - uuid "^3.0.1" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.12: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" - integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string.prototype.trimleft@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" - integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - -string.prototype.trimright@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" - integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -supports-color@6.1.0, supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -terser-webpack-plugin@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" - integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2: - version "4.5.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.5.1.tgz#63b52d6b6ce344aa6fedcd0ee06a695799eb50bd" - integrity sha512-lH9zLIbX8PRBEFCTvfHGCy0s9HEKnNso1Dx9swSopF3VUnFLB8DpQ61tHxoofovNC/sG0spajJM3EIIRSTByiQ== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== - dependencies: - setimmediate "^1.0.4" - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= - -tslib@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -ua-parser-js@^0.7.18: - version "0.7.31" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.31.tgz#649a656b191dffab4f21d5e053e27ca17cbff5c6" - integrity sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ== - -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== - dependencies: - commander "~2.19.0" - source-map "~0.6.1" - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-parse@^1.4.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@^0.4.0, utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.0.1, uuid@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== - -v8-compile-cache@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -warning@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" - integrity sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w= - dependencies: - loose-envify "^1.0.0" - -watchpack@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" - integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== - dependencies: - chokidar "^2.0.2" - graceful-fs "^4.1.2" - neo-async "^2.5.0" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -webpack-cli@3.3.10: - version "3.3.10" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.10.tgz#17b279267e9b4fb549023fae170da8e6e766da13" - integrity sha512-u1dgND9+MXaEt74sJR4PR7qkPxXUSQ0RXYq8x1L6Jg1MYVEmGPrH6Ah6C4arD4r0J1P5HKjRqpab36k0eIzPqg== - dependencies: - chalk "2.4.2" - cross-spawn "6.0.5" - enhanced-resolve "4.1.0" - findup-sync "3.0.0" - global-modules "2.0.0" - import-local "2.0.0" - interpret "1.2.0" - loader-utils "1.2.3" - supports-color "6.1.0" - v8-compile-cache "2.0.3" - yargs "13.2.4" - -webpack-dev-middleware@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" - integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.1.tgz#1ff3e5cccf8e0897aa3f5909c654e623f69b1c0e" - integrity sha512-AGG4+XrrXn4rbZUueyNrQgO4KGnol+0wm3MPdqGLmmA+NofZl3blZQKxZ9BND6RDNuvAK9OMYClhjOSnxpWRoA== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.2.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.6" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.25" - schema-utils "^1.0.0" - selfsigned "^1.10.7" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "0.3.19" - sockjs-client "1.4.0" - spdy "^4.0.1" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "12.0.5" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-sources@^1.4.0, webpack-sources@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@4.41.5: - version "4.41.5" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" - integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.2.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.1" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.6.0" - webpack-sources "^1.4.1" - -websocket-driver@>=0.5.1: - version "0.7.3" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" - integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== - dependencies: - http-parser-js ">=0.4.0 <0.4.11" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whatwg-fetch@>=0.10.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz#fc804e458cc460009b1a2b966bc8817d2578aefb" - integrity sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q== - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.14, which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -ws@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^13.1.0: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - 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@13.2.4: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - os-locale "^3.1.0" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.0" diff --git a/examples/react-router-4/.babelrc b/examples/react-router-4/.babelrc deleted file mode 100644 index 7008890..0000000 --- a/examples/react-router-4/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["es2015", "react", "stage-0"] -} diff --git a/examples/react-router-4/README.md b/examples/react-router-4/README.md deleted file mode 100644 index a1f3780..0000000 --- a/examples/react-router-4/README.md +++ /dev/null @@ -1,19 +0,0 @@ -redux-auth-wrapper react router 4 example -================================= - -This is an example of redux-auth-wrapper that uses `authenticatingSelector` with `LoadingComponent` -to show a loading screen while the user logs in. This example also demonstrates how to use the UserAuthWrapper for -wrapping the Login Component in an HOC. - -This example uses React-Router 4.x - -**To run, follow these steps:** - -1. Go to the root of this project (up two folders) and run `npm install && npm run build` -2. In this folder, run `npm install` -3. In this folder, `npm start` -4. `Browse to http://localhost:8080` - -Login as any user to access the protected page `protected`. -Login with the admin box check to access the admin section. -Logout from any protected page to get redirect back to the login page. diff --git a/examples/react-router-4/actions/user.js b/examples/react-router-4/actions/user.js deleted file mode 100644 index 388b220..0000000 --- a/examples/react-router-4/actions/user.js +++ /dev/null @@ -1,20 +0,0 @@ -import * as constants from '../constants' - -export const login = data => dispatch => { - dispatch({ - type: constants.USER_LOGGING_IN - }) - // Wait 2 seconds before "logging in" - setTimeout(() => { - dispatch({ - type: constants.USER_LOGGED_IN, - payload: data - }) - }, 2000) -} - -export function logout() { - return { - type: constants.USER_LOGGED_OUT - } -} diff --git a/examples/react-router-4/app.js b/examples/react-router-4/app.js deleted file mode 100644 index 6c09ee8..0000000 --- a/examples/react-router-4/app.js +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react' -import ReactDOM from 'react-dom' -import { createStore, combineReducers, applyMiddleware, compose } from 'redux' -import { Provider } from 'react-redux' -import thunkMiddleware from 'redux-thunk' - -import * as reducers from './reducers' -import App from './components/App' - -const reducer = combineReducers(Object.assign({}, reducers, {})) - -const enhancer = compose( - // Middleware you want to use in development: - applyMiddleware(thunkMiddleware), -) - -// Note: passing enhancer as the last argument requires redux@>=3.1.0 -const store = createStore(reducer, enhancer) - -ReactDOM.render( - -
                          - -
                          -
                          , - document.getElementById('mount') -) diff --git a/examples/react-router-4/auth.js b/examples/react-router-4/auth.js deleted file mode 100644 index 3c90ad7..0000000 --- a/examples/react-router-4/auth.js +++ /dev/null @@ -1,43 +0,0 @@ -import locationHelperBuilder from 'redux-auth-wrapper/history4/locationHelper' -import { connectedRouterRedirect } from 'redux-auth-wrapper/history4/redirect' -import connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper' - -import Loading from './components/Loading' - -const locationHelper = locationHelperBuilder({}) - -const userIsAuthenticatedDefaults = { - authenticatedSelector: state => state.user.data !== null, - authenticatingSelector: state => state.user.isLoading, - wrapperDisplayName: 'UserIsAuthenticated' -} - -export const userIsAuthenticated = connectedAuthWrapper(userIsAuthenticatedDefaults) - -export const userIsAuthenticatedRedir = connectedRouterRedirect({ - ...userIsAuthenticatedDefaults, - AuthenticatingComponent: Loading, - redirectPath: '/login' -}) - -export const userIsAdminRedir = connectedRouterRedirect({ - redirectPath: '/', - allowRedirectBack: false, - authenticatedSelector: state => state.user.data !== null && state.user.data.isAdmin, - predicate: user => user.isAdmin, - wrapperDisplayName: 'UserIsAdmin' -}) - -const userIsNotAuthenticatedDefaults = { - // Want to redirect the user when they are done loading and authenticated - authenticatedSelector: state => state.user.data === null && state.user.isLoading === false, - wrapperDisplayName: 'UserIsNotAuthenticated' -} - -export const userIsNotAuthenticated = connectedAuthWrapper(userIsNotAuthenticatedDefaults) - -export const userIsNotAuthenticatedRedir = connectedRouterRedirect({ - ...userIsNotAuthenticatedDefaults, - redirectPath: (state, ownProps) => locationHelper.getRedirectQueryParam(ownProps) || '/protected', - allowRedirectBack: false -}) diff --git a/examples/react-router-4/components/Admin.js b/examples/react-router-4/components/Admin.js deleted file mode 100644 index 57cec30..0000000 --- a/examples/react-router-4/components/Admin.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react' -import { connect } from 'react-redux' - -const Admin = ({ authData }) => { - return
                          {`Welcome admin user: ${authData.name}. You must be logged in as an admin if you are seeing this page.`}
                          -} - -export default connect(state => ({ authData: state.user.data }))(Admin) diff --git a/examples/react-router-4/components/App.css b/examples/react-router-4/components/App.css deleted file mode 100644 index ae7c5c0..0000000 --- a/examples/react-router-4/components/App.css +++ /dev/null @@ -1,136 +0,0 @@ -body { - margin: 0; - font-family: Tahoma, Verdana, Segoe, sans-serif; -} -.wrapper { - display: flex; - flex-direction: row; - flex-wrap: wrap; -} -.navigation { - flex: 1 0 60%; - width: 60%; - background-color: #263238; - min-height: 30px; - display: flex; -} - -.navigation a, .authNavigation a { - color: white; - text-decoration: none; - padding: 10px 10px 10px 10px; -} -.authNavigation { - flex: 0 1 20%; - width: 20%; - background-color: #263238; - min-height: 30px; - display: flex; - flex-direction: row-reverse; -} -.login { - width: 50%; - margin: 40px auto; -} -.login .username { - -moz-appearance: none; - -webkit-appearance: none; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - border: 1px solid transparent; - border-radius: 3px; - -webkit-box-shadow: none; - box-shadow: none; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - font-size: 1rem; - height: 2.25em; - line-height: 1.5; - padding: 5px 10px; - border-color: #dbdbdb; - color: #363636; - -webkit-box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); - box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); - max-width: 100%; - width: 100%; - margin-bottom: 20px; -} -.checkbox { - width: 100%; -} -.checkbox input { - margin-right: 10px; -} -.button { - -moz-appearance: none; - -webkit-appearance: none; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - border: 1px solid transparent; - border-radius: 3px; - -webkit-box-shadow: none; - box-shadow: none; - display: -webkit-inline-box; - display: -ms-inline-flexbox; - display: inline-flex; - font-size: 1rem; - height: 2.25em; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - line-height: 1.5; - padding-bottom: calc(0.375em - 1px); - padding-left: calc(0.625em - 1px); - padding-right: calc(0.625em - 1px); - padding-top: calc(0.375em - 1px); - position: relative; - vertical-align: top; - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-color: white; - border-color: #dbdbdb; - color: #363636; - cursor: pointer; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - padding-left: 0.75em; - padding-right: 0.75em; - text-align: center; - white-space: nowrap; - margin-top: 20px; - background-color: #00d1b2; - border-color: transparent; - color: #fff; -} -.content { - flex: 1 0 100%; - padding: 10px; -} - -.content h2 { - font-family: Arial Black, Arial Bold, Gadget, sans-serif; - margin-top: 0; -} -.active { - background-color: #006064; -} - -.code { - font-family: courier; - padding: 1em; - border: 1px solid #ccc; -} - -.username { - text-decoration: none; - padding: 10px 10px 10px 10px; - font-weight: bold; - color: coral; -} diff --git a/examples/react-router-4/components/App.js b/examples/react-router-4/components/App.js deleted file mode 100644 index e809477..0000000 --- a/examples/react-router-4/components/App.js +++ /dev/null @@ -1,61 +0,0 @@ -import React from 'react' -import { BrowserRouter as Router, Route, NavLink } from 'react-router-dom' -import { connect } from 'react-redux' -import styles from './App.css' -import { logout } from '../actions/user' -import { userIsAuthenticatedRedir, userIsNotAuthenticatedRedir, userIsAdminRedir, - userIsAuthenticated, userIsNotAuthenticated } from '../auth' - -import AdminComponent from './Admin' -import ProtectedComponent from './Protected' -import LoginComponent from './Login' -import Home from './Home' - -const getUserName = user => { - if (user.data) { - return `Welcome ${user.data.name}` - } - return `Not logged in` -} - -// Need to apply the hocs here to avoid applying them inside the render method -const Login = userIsNotAuthenticatedRedir(LoginComponent) -const Protected = userIsAuthenticatedRedir(ProtectedComponent) -const Admin = userIsAuthenticatedRedir(userIsAdminRedir(AdminComponent)) - -// Only show login when the user is not logged in and logout when logged in -// Could have also done this with a single wrapper and `FailureComponent` -const UserName = ({ user }) => (
                          {getUserName(user)}
                          ) -const LoginLink = userIsNotAuthenticated(() => Login) -const LogoutLink = userIsAuthenticated(({ logout }) => logout()}>Logout) - -function App({ user, logout }) { - return ( - -
                          - - -
                          - - - - -
                          -
                          -
                          - ) -} - -const mapStateToProps = state => ({ - user: state.user -}) - -export default connect(mapStateToProps, { logout })(App) diff --git a/examples/react-router-4/components/Home.js b/examples/react-router-4/components/Home.js deleted file mode 100644 index c6f0aea..0000000 --- a/examples/react-router-4/components/Home.js +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react' - -export default function Home() { - return ( -
                          -

                          {"This demo serves as an example on how to use redux-auth-wrapper with react-router-4"}

                          -

                          {"Notice that Protected and Admin routes are protected and you will have to log in to see them."}

                          -

                          {"The Admin page required you to be logged in as an admin. Click Login to begin the demo."}

                          -
                          - ) -} diff --git a/examples/react-router-4/components/Loading.js b/examples/react-router-4/components/Loading.js deleted file mode 100644 index f81a487..0000000 --- a/examples/react-router-4/components/Loading.js +++ /dev/null @@ -1,5 +0,0 @@ -import React from 'react' - -export default function Loading() { - return
                          Logging you in...
                          -} diff --git a/examples/react-router-4/components/Login.js b/examples/react-router-4/components/Login.js deleted file mode 100644 index c808942..0000000 --- a/examples/react-router-4/components/Login.js +++ /dev/null @@ -1,32 +0,0 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' -import { connect } from 'react-redux' -import styles from './App.css' -import { login } from '../actions/user' - -export class LoginContainer extends Component { - - static propTypes = { - login: PropTypes.func.isRequired - }; - - onClick = (e) => { - e.preventDefault() - this.props.login({ - name: this.refs.name.value, - isAdmin: this.refs.admin.checked - }) - }; - - render() { - return ( -
                          -
                          - -
                          -
                          - ) - } - -} -export default connect(null, { login })(LoginContainer) diff --git a/examples/react-router-4/components/Protected.js b/examples/react-router-4/components/Protected.js deleted file mode 100644 index cba3ae6..0000000 --- a/examples/react-router-4/components/Protected.js +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react' -import { connect } from 'react-redux' - -const Protected = ({ authData }) => { - return ( -
                          {`This is a protected page, you must be logged in if you are seeing this. Welcome ${authData.name}`}
                          - ) -} -export default connect(state => ({ authData: state.user.data }))(Protected) diff --git a/examples/react-router-4/constants.js b/examples/react-router-4/constants.js deleted file mode 100644 index 1bc282f..0000000 --- a/examples/react-router-4/constants.js +++ /dev/null @@ -1,3 +0,0 @@ -export const USER_LOGGING_IN = 'USER_LOGGING_IN' -export const USER_LOGGED_IN = 'USER_LOGGED_IN' -export const USER_LOGGED_OUT = 'USER_LOGGED_OUT' diff --git a/examples/react-router-4/index.html b/examples/react-router-4/index.html deleted file mode 100644 index d67a184..0000000 --- a/examples/react-router-4/index.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - redux-auth-wrapper loading rrv4 example - - - -
                          - - diff --git a/examples/react-router-4/package.json b/examples/react-router-4/package.json deleted file mode 100644 index 5db59bd..0000000 --- a/examples/react-router-4/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "raw-loading-rrv4-example", - "version": "0.0.0", - "dependencies": { - "react-router": "5.1.2", - "react-router-dom": "5.1.2", - "redux-thunk": "2.3.0" - }, - "devDependencies": { - "babel-loader": "7.1.5", - "css-loader": "^0.28.4", - "html-webpack-plugin": "3.2.0", - "style-loader": "^0.18.2", - "webpack": "4.41.5", - "webpack-cli": "3.3.10", - "webpack-dev-server": "3.10.1" - }, - "scripts": { - "start": "webpack-dev-server --config webpack.config.babel.js --progress" - } -} diff --git a/examples/react-router-4/reducers/index.js b/examples/react-router-4/reducers/index.js deleted file mode 100644 index fb7e717..0000000 --- a/examples/react-router-4/reducers/index.js +++ /dev/null @@ -1,5 +0,0 @@ -import user from './user' - -module.exports = { - user -} diff --git a/examples/react-router-4/reducers/user.js b/examples/react-router-4/reducers/user.js deleted file mode 100644 index a55de43..0000000 --- a/examples/react-router-4/reducers/user.js +++ /dev/null @@ -1,19 +0,0 @@ -import * as constants from '../constants' - -const initialState = { - data: null, - isLoading: false -} - -export default function userUpdate(state = initialState, { type, payload }) { - switch (type) { - case constants.USER_LOGGING_IN: - return { ...initialState, isLoading: true } - case constants.USER_LOGGED_IN: - return { data: payload, isLoading: false } - case constants.USER_LOGGED_OUT: - return initialState - default: - return state - } -} diff --git a/examples/react-router-4/webpack.config.babel.js b/examples/react-router-4/webpack.config.babel.js deleted file mode 100644 index f251353..0000000 --- a/examples/react-router-4/webpack.config.babel.js +++ /dev/null @@ -1,59 +0,0 @@ -import path from 'path' -import fs from 'fs' -import HtmlWebpackPlugin from 'html-webpack-plugin' - -module.exports = { - entry: './app.js', - output: { - path: path.join(__dirname, 'dist'), - filename: 'bundle.js' - }, - devServer: { - inline: true, - historyApiFallback: true, - stats: { - colors: true, - hash: false, - version: false, - chunks: false, - children: false - } - }, - module: { - rules: [ - { - test: /\.js$/, - loaders: [ 'babel-loader' ], - exclude: /node_modules/, - include: __dirname - }, - { - test: /\.css$/, - loader: 'style-loader!css-loader?module=true&importLoaders=1&localIdentName=[name]_[local]_[hash:base64:5]', - exclude: /semantic/ - } - ] - }, - plugins: [ - new HtmlWebpackPlugin({ - template: 'index.html', // Load a custom template - inject: 'body' // Inject all scripts into the body - }) - ] -} - -// This will make the redux-auth-wrapper module resolve to the -// latest src instead of using it from npm. Remove this if running -// outside of the source. -const lib = path.join(__dirname, '..', '..', 'lib') -if (fs.existsSync(lib)) { - // Use the latest src - module.exports.resolve = { alias: { 'redux-auth-wrapper': lib } } - // module.exports.module.loaders.push({ - // test: /\.js$/, - // loaders: [ 'babel' ], - // include: lib - // }) -} else { - throw "redux-auth-wrapper source not built. Run the following: 'pushd ../.. && rm -rf node_modules && yarn install && yarn run build && popd' and then rerun 'yarn start'" -} diff --git a/examples/react-router-4/yarn.lock b/examples/react-router-4/yarn.lock deleted file mode 100644 index 6bfa47d..0000000 --- a/examples/react-router-4/yarn.lock +++ /dev/null @@ -1,5154 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/runtime@^7.1.2", "@babel/runtime@^7.4.0": - version "7.7.7" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.7.7.tgz#194769ca8d6d7790ec23605af9ee3e42a0aa79cf" - integrity sha512-uCnC2JEVAu8AKB5do1WRIsvrdJ0flYx/A/9f/6chdacnEZ7LmavjdsDXr5ksYBegxtuTPR5Va9/+13QF/kFkCA== - dependencies: - regenerator-runtime "^0.13.2" - -"@types/events@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" - integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== - -"@types/glob@^7.1.1": - version "7.1.1" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" - integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== - dependencies: - "@types/events" "*" - "@types/minimatch" "*" - "@types/node" "*" - -"@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== - -"@types/node@*": - version "13.1.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.2.tgz#fe94285bf5e0782e1a9e5a8c482b1c34465fa385" - integrity sha512-B8emQA1qeKerqd1dmIsQYnXi+mmAzTB7flExjmy5X1aVAKFNNNDubkavwR13kR6JnpeLp3aLoJhwn9trWPAyFQ== - -"@webassemblyjs/ast@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" - integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== - dependencies: - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - -"@webassemblyjs/floating-point-hex-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" - integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== - -"@webassemblyjs/helper-api-error@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" - integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== - -"@webassemblyjs/helper-buffer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" - integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== - -"@webassemblyjs/helper-code-frame@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" - integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== - dependencies: - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/helper-fsm@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" - integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== - -"@webassemblyjs/helper-module-context@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" - integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== - dependencies: - "@webassemblyjs/ast" "1.8.5" - mamacro "^0.0.3" - -"@webassemblyjs/helper-wasm-bytecode@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" - integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== - -"@webassemblyjs/helper-wasm-section@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" - integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - -"@webassemblyjs/ieee754@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" - integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" - integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" - integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== - -"@webassemblyjs/wasm-edit@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" - integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/helper-wasm-section" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-opt" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - "@webassemblyjs/wast-printer" "1.8.5" - -"@webassemblyjs/wasm-gen@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" - integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wasm-opt@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" - integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-buffer" "1.8.5" - "@webassemblyjs/wasm-gen" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - -"@webassemblyjs/wasm-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" - integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-wasm-bytecode" "1.8.5" - "@webassemblyjs/ieee754" "1.8.5" - "@webassemblyjs/leb128" "1.8.5" - "@webassemblyjs/utf8" "1.8.5" - -"@webassemblyjs/wast-parser@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" - integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/floating-point-hex-parser" "1.8.5" - "@webassemblyjs/helper-api-error" "1.8.5" - "@webassemblyjs/helper-code-frame" "1.8.5" - "@webassemblyjs/helper-fsm" "1.8.5" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/wast-printer@1.8.5": - version "1.8.5" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" - integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/wast-parser" "1.8.5" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn@^6.2.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -ajv-errors@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" - integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== - -ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" - integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== - -ajv@^5.0.0: - version "5.5.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" - integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= - dependencies: - co "^4.6.0" - fast-deep-equal "^1.0.0" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.3.0" - -ajv@^6.1.0, ajv@^6.10.2: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -alphanum-sort@^1.0.1, alphanum-sort@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" - integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= - -ansi-colors@^3.0.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" - integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA== - -ansi-html@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ansi-html/-/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" - integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - -aproba@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= - -array-flatten@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" - integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== - -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -assert@^1.1.1: - version "1.5.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" - integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== - dependencies: - object-assign "^4.1.1" - util "0.10.3" - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== - dependencies: - lodash "^4.17.14" - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -autoprefixer@^6.3.1: - version "6.7.7" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014" - integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ= - dependencies: - 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" - -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-loader@7.1.5: - version "7.1.5" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.5.tgz#e3ee0cd7394aa557e013b02d3e492bfd07aa6d68" - integrity sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw== - dependencies: - find-cache-dir "^1.0.0" - loader-utils "^1.0.2" - mkdirp "^0.5.1" - -balanced-match@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" - integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg= - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - 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" - -batch@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" - integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= - -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - -big.js@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" - integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== - -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bluebird@^3.5.5: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== - dependencies: - bytes "3.1.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.7.2" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" - -bonjour@^3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/bonjour/-/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" - integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= - dependencies: - 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" - -boolbase@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1, braces@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - 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" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= - -browserify-aes@^1.0.0, browserify-aes@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - 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" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= - dependencies: - 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" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== - dependencies: - pako "~1.0.5" - -browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6: - version "1.7.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9" - integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk= - dependencies: - caniuse-db "^1.0.30000639" - electron-to-chromium "^1.2.7" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -buffer-indexof@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" - integrity sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= - -buffer@^4.3.0: - version "4.9.2" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" - integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" - integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= - -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cacache@^12.0.2: - version "12.0.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" - integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - 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" - -camel-case@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camelcase@^5.0.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-api@^1.5.2: - version "1.6.1" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" - integrity sha1-tTTnxzTE+B7F++isoq0kNUuWLGw= - dependencies: - browserslist "^1.3.6" - caniuse-db "^1.0.30000529" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639: - version "1.0.30001017" - resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30001017.tgz#5e796982558eed4053256137d28458c83e380b77" - integrity sha512-I59zfU8ZEGGM/uRN6ZgdrLmgnSCzQUcit4HrPa3IsC0Fd19IxsT9KVA+08PsL82TzEaiSMp0QbhgFNK1W9puig== - -chalk@2.4.2, chalk@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - 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" - -chokidar@^2.0.2, chokidar@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - dependencies: - anymatch "^2.0.0" - async-each "^1.0.1" - braces "^2.3.2" - glob-parent "^3.1.0" - inherits "^2.0.3" - is-binary-path "^1.0.0" - is-glob "^4.0.0" - normalize-path "^3.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.2.1" - upath "^1.1.1" - optionalDependencies: - fsevents "^1.2.7" - -chownr@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" - integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== - -chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -clap@^1.0.9: - version "1.2.3" - resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51" - integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA== - dependencies: - chalk "^1.1.3" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@4.2.x: - version "4.2.1" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" - integrity sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g== - dependencies: - source-map "~0.6.0" - -cliui@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" - integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - wrap-ansi "^2.0.0" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -coa@~1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd" - integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0= - dependencies: - q "^1.1.2" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.3.0, color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-string@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991" - integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE= - dependencies: - color-name "^1.0.0" - -color@^0.11.0: - version "0.11.4" - resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764" - integrity sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q= - dependencies: - clone "^1.0.2" - color-convert "^1.3.0" - color-string "^0.3.0" - -colormin@^1.0.5: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133" - integrity sha1-6i90IKcrlogaOKrlnsEkpvcpgTM= - dependencies: - color "^0.11.0" - css-color-names "0.0.4" - has "^1.0.1" - -colors@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= - -commander@2.17.x: - version "2.17.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" - integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@~2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" - integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -compressible@~2.0.16: - version "2.0.17" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" - integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== - dependencies: - mime-db ">= 1.40.0 < 2" - -compression@^1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" - integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== - dependencies: - accepts "~1.3.5" - bytes "3.0.0" - compressible "~2.0.16" - debug "2.6.9" - on-headers "~1.0.2" - safe-buffer "5.1.2" - vary "~1.1.2" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.5.0: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -connect-history-api-fallback@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" - integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== - -console-browserify@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" - integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" - integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= - -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= - -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== - -copy-concurrently@^1.0.0: - version "1.0.5" - resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" - integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== - dependencies: - 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" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -create-ecdh@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" - integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - -create-hash@^1.1.0, create-hash@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - 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" - -cross-spawn@6.0.5, cross-spawn@^6.0.0: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - 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" - -css-color-names@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" - integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= - -css-loader@^0.28.4: - version "0.28.11" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.28.11.tgz#c3f9864a700be2711bb5a2462b2389b1a392dab7" - integrity sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg== - dependencies: - babel-code-frame "^6.26.0" - css-selector-tokenizer "^0.7.0" - cssnano "^3.10.0" - icss-utils "^2.1.0" - loader-utils "^1.0.2" - lodash.camelcase "^4.3.0" - object-assign "^4.1.1" - postcss "^5.0.6" - postcss-modules-extract-imports "^1.2.0" - postcss-modules-local-by-default "^1.2.0" - postcss-modules-scope "^1.1.0" - postcss-modules-values "^1.3.0" - postcss-value-parser "^3.3.0" - source-list-map "^2.0.0" - -css-select@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" - integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= - dependencies: - boolbase "~1.0.0" - css-what "2.1" - domutils "1.5.1" - nth-check "~1.0.1" - -css-selector-tokenizer@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" - integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA== - dependencies: - cssesc "^0.1.0" - fastparse "^1.1.1" - regexpu-core "^1.0.0" - -css-what@2.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" - integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== - -cssesc@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" - integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= - -cssnano@^3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38" - integrity sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg= - dependencies: - 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" - -csso@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85" - integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U= - dependencies: - clap "^1.0.9" - source-map "^0.5.3" - -cyclist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" - integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.1.1, debug@^3.2.5: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -decamelize@^1.1.2, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -deep-equal@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -default-gateway@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" - integrity sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA== - dependencies: - execa "^1.0.0" - ip-regex "^2.1.0" - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -defined@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= - -del@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" - integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== - dependencies: - "@types/glob" "^7.1.1" - globby "^6.1.0" - is-path-cwd "^2.0.0" - is-path-in-cwd "^2.0.0" - p-map "^2.0.0" - pify "^4.0.1" - rimraf "^2.6.3" - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - -detect-node@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dns-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" - integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= - -dns-packet@^1.3.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-1.3.4.tgz#e3455065824a2507ba886c55a89963bb107dec6f" - integrity sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA== - dependencies: - ip "^1.1.0" - safe-buffer "^5.0.1" - -dns-txt@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dns-txt/-/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" - integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= - dependencies: - buffer-indexof "^1.0.0" - -dom-converter@^0.2: - version "0.2.0" - resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" - integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== - dependencies: - utila "~0.4" - -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== - -domelementtype@1, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== - -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - -domutils@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" - integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^1.5.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -duplexify@^3.4.2, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -electron-to-chromium@^1.2.7: - version "1.3.322" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz#a6f7e1c79025c2b05838e8e344f6e89eb83213a8" - integrity sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA== - -elliptic@^6.0.0: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.0.0, end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" - integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.4.0" - tapable "^1.0.0" - -enhanced-resolve@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" - integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== - dependencies: - graceful-fs "^4.1.2" - memory-fs "^0.5.0" - tapable "^1.0.0" - -entities@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - -entities@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" - integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== - -errno@^0.1.3, errno@~0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== - dependencies: - prr "~1.0.1" - -es-abstract@^1.17.0-next.1: - version "1.17.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.0.tgz#f42a517d0036a5591dbb2c463591dc8bb50309b1" - integrity sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.1.5" - is-regex "^1.0.5" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimleft "^2.1.1" - string.prototype.trimright "^2.1.1" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -esprima@^2.6.0: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE= - -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== - dependencies: - estraverse "^4.1.0" - -estraverse@^4.1.0, estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -events@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" - integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== - -eventsource@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" - integrity sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ== - dependencies: - original "^1.0.0" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - 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@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - 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" - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - -express@^4.17.1: - version "4.17.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" - integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== - dependencies: - accepts "~1.3.7" - array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" - content-type "~1.0.4" - cookie "0.4.0" - 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.2" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" - range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" - statuses "~1.5.0" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - 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" - -fast-deep-equal@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" - integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= - -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fastparse@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" - integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== - -faye-websocket@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" - integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= - dependencies: - websocket-driver ">=0.5.1" - -faye-websocket@~0.11.1: - version "0.11.3" - resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" - integrity sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA== - dependencies: - websocket-driver ">=0.5.1" - -figgy-pudding@^3.5.1: - version "3.5.2" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" - integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.3" - statuses "~1.5.0" - unpipe "~1.0.0" - -find-cache-dir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" - integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= - dependencies: - commondir "^1.0.1" - make-dir "^1.0.0" - pkg-dir "^2.0.0" - -find-cache-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -findup-sync@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -flatten@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" - integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== - -flush-write-stream@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - -follow-redirects@^1.0.0: - version "1.14.8" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" - integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -from2@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fs-write-stream-atomic@^1.0.8: - version "1.0.10" - resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" - integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= - dependencies: - graceful-fs "^4.1.2" - iferr "^0.1.5" - imurmurhash "^0.1.4" - readable-stream "1 || 2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^1.2.7: - version "1.2.11" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" - integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-stream@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -glob@^7.0.3, glob@^7.1.3, glob@^7.1.4: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - 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" - -global-modules@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - -globby@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" - integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= - dependencies: - 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@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== - -gud@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" - integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== - -handle-thing@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" - integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^2.0.0" - -has-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" - integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.1, has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@1.2.x: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -history@^4.9.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" - integrity sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew== - dependencies: - "@babel/runtime" "^7.1.2" - loose-envify "^1.2.0" - resolve-pathname "^3.0.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - value-equal "^1.0.1" - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -hoist-non-react-statics@^3.1.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#101685d3aff3b23ea213163f6e8e12f4f111e19f" - integrity sha512-wbg3bpgA/ZqWrZuMOeJi8+SKMhr7X9TesL/rXMjTzh0p0JUBo3II8DHboYbuIXWRlttrUFxwcu/5kygrCw8fJw== - dependencies: - react-is "^16.7.0" - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -hpack.js@^2.1.6: - version "2.1.6" - resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" - integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= - dependencies: - inherits "^2.0.1" - obuf "^1.0.0" - readable-stream "^2.0.1" - wbuf "^1.1.0" - -html-comment-regex@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" - integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== - -html-entities@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" - integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= - -html-minifier@^3.2.3: - version "3.5.21" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" - integrity sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA== - dependencies: - 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@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" - integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= - dependencies: - html-minifier "^3.2.3" - loader-utils "^0.2.16" - lodash "^4.17.3" - pretty-error "^2.0.2" - tapable "^1.0.0" - toposort "^1.0.0" - util.promisify "1.0.0" - -htmlparser2@^3.3.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -http-deceiver@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" - integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= - -http-errors@1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.6.2: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - -http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -"http-parser-js@>=0.4.0 <0.4.11": - version "0.4.10" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" - integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= - -http-proxy-middleware@0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" - integrity sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q== - dependencies: - http-proxy "^1.17.0" - is-glob "^4.0.0" - lodash "^4.17.11" - micromatch "^3.1.10" - -http-proxy@^1.17.0: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -icss-replace-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" - integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= - -icss-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" - integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= - dependencies: - postcss "^6.0.1" - -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== - -iferr@^0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" - integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= - -import-local@2.0.0, import-local@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" - integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== - dependencies: - pkg-dir "^3.0.0" - resolve-cwd "^2.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indexes-of@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" - integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= - -infer-owner@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" - integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= - -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.4, ini@^1.3.5: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== - -internal-ip@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" - integrity sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg== - dependencies: - default-gateway "^4.2.0" - ipaddr.js "^1.9.0" - -interpret@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" - integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -ip-regex@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" - integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= - -ip@^1.1.0, ip@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" - integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= - -ipaddr.js@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" - integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== - -ipaddr.js@^1.9.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-absolute-url@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" - integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= - -is-absolute-url@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" - integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== - -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-path-cwd@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - -is-path-in-cwd@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" - integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== - dependencies: - is-path-inside "^2.1.0" - -is-path-inside@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== - dependencies: - path-is-inside "^1.0.2" - -is-plain-obj@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-regex@^1.0.4, is-regex@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" - integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== - dependencies: - has "^1.0.3" - -is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= - -is-svg@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9" - integrity sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk= - dependencies: - html-comment-regex "^1.1.0" - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" - integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -js-base64@^2.1.9: - version "2.5.1" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" - integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== - -"js-tokens@^3.0.0 || ^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -js-yaml@~3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" - integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A= - dependencies: - argparse "^1.0.7" - esprima "^2.6.0" - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-schema-traverse@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" - integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json3@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" - integrity sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA== - -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -killable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" - integrity sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg== - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -loader-runner@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" - integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== - -loader-utils@1.2.3, loader-utils@^1.0.2, loader-utils@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@^0.2.16: - version "0.2.17" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" - integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= - dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" - object-assign "^4.0.1" - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= - -lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= - -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.3: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -loglevel@^1.6.6: - version "1.6.6" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.6.tgz#0ee6300cc058db6b3551fa1c4bf73b83bb771312" - integrity sha512-Sgr5lbboAUBo3eXCSPL4/KoVz3ROKquOjcctxmHIt+vol2DrqTQe3SwkKKuYhEiWB5kYa13YyopJ69deJ1irzQ== - -loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -make-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -mamacro@^0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" - integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -math-expression-evaluator@^1.2.14: - version "1.2.17" - resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac" - integrity sha1-3oGf282E3M2PrlnGrreWFbnSZqw= - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memory-fs@^0.4.0, memory-fs@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" - integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -memory-fs@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" - integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== - dependencies: - errno "^0.1.3" - readable-stream "^2.0.1" - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - 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" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.42.0, "mime-db@>= 1.40.0 < 2": - version "1.42.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" - integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== - -mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.25" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" - integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== - dependencies: - mime-db "1.42.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.4: - version "2.4.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" - integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== - -mimic-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mini-create-react-context@^0.3.0: - version "0.3.2" - resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.3.2.tgz#79fc598f283dd623da8e088b05db8cddab250189" - integrity sha512-2v+OeetEyliMt5VHMXsBhABoJ0/M4RCe7fatd/fBy6SMiKazUSEt3gxxypfnk2SHMkdBYvorHRoQxuGoiwbzAw== - dependencies: - "@babel/runtime" "^7.4.0" - gud "^1.0.0" - tiny-warning "^1.0.2" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -mississippi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" - integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== - dependencies: - concat-stream "^1.5.0" - duplexify "^3.4.2" - end-of-stream "^1.1.0" - flush-write-stream "^1.0.0" - from2 "^2.1.0" - parallel-transform "^1.1.0" - pump "^3.0.0" - pumpify "^1.3.3" - stream-each "^1.1.0" - through2 "^2.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@^0.5.1, mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -move-concurrently@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" - integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= - dependencies: - aproba "^1.1.1" - copy-concurrently "^1.0.0" - fs-write-stream-atomic "^1.0.8" - mkdirp "^0.5.1" - rimraf "^2.5.4" - run-queue "^1.0.3" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -multicast-dns-service-types@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" - integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= - -multicast-dns@^6.0.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" - integrity sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g== - dependencies: - dns-packet "^1.3.1" - thunky "^1.0.2" - -nan@^2.12.1: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -neo-async@^2.5.0, neo-async@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - -node-forge@0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579" - integrity sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ== - -node-libs-browser@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" - integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^3.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.1" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.11.0" - vm-browserify "^1.0.1" - -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - -normalize-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= - -normalize-url@^1.4.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c" - integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw= - dependencies: - object-assign "^4.0.1" - prepend-http "^1.0.0" - query-string "^4.1.0" - sort-keys "^1.0.0" - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= - dependencies: - path-key "^2.0.0" - -nth-check@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== - dependencies: - boolbase "~1.0.0" - -num2fraction@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" - integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" - integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== - -object-is@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.0.2.tgz#6b80eb84fe451498f65007982f035a5b445edec4" - integrity sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ== - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.getownpropertydescriptors@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -obuf@^1.0.0, obuf@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" - integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== - -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -opn@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" - integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== - dependencies: - is-wsl "^1.1.0" - -original@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/original/-/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" - integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== - dependencies: - url-parse "^1.4.3" - -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - -os-locale@^3.0.0, os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" - integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== - dependencies: - p-try "^2.0.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-map@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-retry@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" - integrity sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w== - dependencies: - retry "^0.12.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -pako@~1.0.5: - version "1.0.10" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" - integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== - -parallel-transform@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" - integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== - dependencies: - cyclist "^1.0.1" - inherits "^2.0.3" - readable-stream "^2.1.5" - -param-case@2.1.x: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= - dependencies: - no-case "^2.2.0" - -parse-asn1@^5.0.0: - version "5.1.5" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" - integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== - dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -parseurl@~1.3.2, parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-browserify@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" - integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= - -path-to-regexp@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" - integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== - dependencies: - isarray "0.0.1" - -pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -pkg-dir@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" - integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= - dependencies: - find-up "^2.1.0" - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -portfinder@^1.0.25: - version "1.0.25" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" - integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== - dependencies: - async "^2.6.2" - debug "^3.1.1" - mkdirp "^0.5.1" - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -postcss-calc@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e" - integrity sha1-d7rnypKK2FcW4v2kLyYb98HWW14= - dependencies: - postcss "^5.0.2" - postcss-message-helpers "^2.0.0" - reduce-css-calc "^1.2.6" - -postcss-colormin@^2.1.8: - version "2.2.2" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b" - integrity sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks= - dependencies: - colormin "^1.0.5" - postcss "^5.0.13" - postcss-value-parser "^3.2.3" - -postcss-convert-values@^2.3.4: - version "2.6.1" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d" - integrity sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0= - dependencies: - postcss "^5.0.11" - postcss-value-parser "^3.1.2" - -postcss-discard-comments@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d" - integrity sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0= - dependencies: - postcss "^5.0.14" - -postcss-discard-duplicates@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932" - integrity sha1-uavye4isGIFYpesSq8riAmO5GTI= - dependencies: - postcss "^5.0.4" - -postcss-discard-empty@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5" - integrity sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU= - dependencies: - postcss "^5.0.14" - -postcss-discard-overridden@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58" - integrity sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg= - dependencies: - postcss "^5.0.16" - -postcss-discard-unused@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433" - integrity sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM= - dependencies: - postcss "^5.0.14" - uniqs "^2.0.0" - -postcss-filter-plugins@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec" - integrity sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ== - dependencies: - postcss "^5.0.4" - -postcss-merge-idents@^2.1.5: - version "2.1.7" - resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270" - integrity sha1-TFUwMTwI4dWzu/PSu8dH4njuonA= - dependencies: - has "^1.0.1" - postcss "^5.0.10" - postcss-value-parser "^3.1.1" - -postcss-merge-longhand@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658" - integrity sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg= - dependencies: - postcss "^5.0.4" - -postcss-merge-rules@^2.0.3: - version "2.1.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721" - integrity sha1-0d9d+qexrMO+VT8OnhDofGG19yE= - dependencies: - browserslist "^1.5.2" - caniuse-api "^1.5.2" - postcss "^5.0.4" - postcss-selector-parser "^2.2.2" - vendors "^1.0.0" - -postcss-message-helpers@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e" - integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4= - -postcss-minify-font-values@^1.0.2: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69" - integrity sha1-S1jttWZB66fIR0qzUmyv17vey2k= - dependencies: - object-assign "^4.0.1" - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-minify-gradients@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1" - integrity sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE= - dependencies: - postcss "^5.0.12" - postcss-value-parser "^3.3.0" - -postcss-minify-params@^1.0.4: - version "1.2.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3" - integrity sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM= - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.2" - postcss-value-parser "^3.0.2" - uniqs "^2.0.0" - -postcss-minify-selectors@^2.0.4: - version "2.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf" - integrity sha1-ssapjAByz5G5MtGkllCBFDEXNb8= - dependencies: - alphanum-sort "^1.0.2" - has "^1.0.1" - postcss "^5.0.14" - postcss-selector-parser "^2.0.0" - -postcss-modules-extract-imports@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" - integrity sha512-6jt9XZwUhwmRUhb/CkyJY020PYaPJsCyt3UjbaWo6XEbH/94Hmv6MP7fG2C5NDU/BcHzyGYxNtHvM+LTf9HrYw== - dependencies: - postcss "^6.0.1" - -postcss-modules-local-by-default@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" - integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-scope@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" - integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= - dependencies: - css-selector-tokenizer "^0.7.0" - postcss "^6.0.1" - -postcss-modules-values@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" - integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= - dependencies: - icss-replace-symbols "^1.1.0" - postcss "^6.0.1" - -postcss-normalize-charset@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1" - integrity sha1-757nEhLX/nWceO0WL2HtYrXLk/E= - dependencies: - postcss "^5.0.5" - -postcss-normalize-url@^3.0.7: - version "3.0.8" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222" - integrity sha1-EI90s/L82viRov+j6kWSJ5/HgiI= - dependencies: - is-absolute-url "^2.0.0" - normalize-url "^1.4.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - -postcss-ordered-values@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d" - integrity sha1-7sbCpntsQSqNsgQud/6NpD+VwR0= - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.1" - -postcss-reduce-idents@^2.2.2: - version "2.4.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3" - integrity sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM= - dependencies: - postcss "^5.0.4" - postcss-value-parser "^3.0.2" - -postcss-reduce-initial@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea" - integrity sha1-aPgGlfBF0IJjqHmtJA343WT2ROo= - dependencies: - postcss "^5.0.4" - -postcss-reduce-transforms@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1" - integrity sha1-/3b02CEkN7McKYpC0uFEQCV3GuE= - dependencies: - has "^1.0.1" - postcss "^5.0.8" - postcss-value-parser "^3.0.1" - -postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90" - integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A= - dependencies: - flatten "^1.0.2" - indexes-of "^1.0.1" - uniq "^1.0.1" - -postcss-svgo@^2.1.1: - version "2.1.6" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d" - integrity sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0= - dependencies: - is-svg "^2.0.0" - postcss "^5.0.14" - postcss-value-parser "^3.2.3" - svgo "^0.7.0" - -postcss-unique-selectors@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d" - integrity sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0= - dependencies: - alphanum-sort "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" - integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== - -postcss-zindex@^2.0.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22" - integrity sha1-0hCd3AVbka9n/EyzsCWUZjnSryI= - dependencies: - has "^1.0.1" - postcss "^5.0.4" - uniqs "^2.0.0" - -postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.16: - version "5.2.18" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" - integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== - dependencies: - chalk "^1.1.3" - js-base64 "^2.1.9" - source-map "^0.5.6" - supports-color "^3.2.3" - -postcss@^6.0.1: - version "6.0.23" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" - integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== - dependencies: - chalk "^2.4.1" - source-map "^0.6.1" - supports-color "^5.4.0" - -prepend-http@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= - -pretty-error@^2.0.2: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" - integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= - dependencies: - renderkid "^2.0.1" - utila "~0.4" - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= - -promise-inflight@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" - integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= - -prop-types@^15.6.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - -proxy-addr@~2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" - integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== - dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.0" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= - -punycode@^1.2.4: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -q@^1.1.2: - version "1.5.1" - resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" - integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= - -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== - -query-string@^4.1.0: - version "4.3.4" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb" - integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= - dependencies: - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@^1.2.1, range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== - dependencies: - bytes "3.1.0" - http-errors "1.7.2" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: - version "16.12.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" - integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== - -react-router-dom@5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.1.2.tgz#06701b834352f44d37fbb6311f870f84c76b9c18" - integrity sha512-7BPHAaIwWpZS074UKaw1FjVdZBSVWEk8IuDXdB+OkLb8vd/WRQIpA4ag9WQk61aEfQs47wHyjWUoUGGZxpQXew== - dependencies: - "@babel/runtime" "^7.1.2" - history "^4.9.0" - loose-envify "^1.3.1" - prop-types "^15.6.2" - react-router "5.1.2" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -react-router@5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.1.2.tgz#6ea51d789cb36a6be1ba5f7c0d48dd9e817d3418" - integrity sha512-yjEuMFy1ONK246B+rsa0cUam5OeAQ8pyclRDgpxuSCrAlJ1qN9uZ5IgyKC7gQg0w8OM50NXHEegPh/ks9YuR2A== - dependencies: - "@babel/runtime" "^7.1.2" - history "^4.9.0" - hoist-non-react-statics "^3.1.0" - loose-envify "^1.3.1" - mini-create-react-context "^0.3.0" - path-to-regexp "^1.7.0" - prop-types "^15.6.2" - react-is "^16.6.0" - tiny-invariant "^1.0.2" - tiny-warning "^1.0.0" - -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== - dependencies: - 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" - -readable-stream@^3.0.6, readable-stream@^3.1.1: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" - integrity sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -reduce-css-calc@^1.2.6: - version "1.3.0" - resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716" - integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY= - dependencies: - balanced-match "^0.4.2" - math-expression-evaluator "^1.2.14" - reduce-function-call "^1.0.1" - -reduce-function-call@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.3.tgz#60350f7fb252c0a67eb10fd4694d16909971300f" - integrity sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ== - dependencies: - balanced-match "^1.0.0" - -redux-thunk@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622" - integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw== - -regenerate@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - -regenerator-runtime@^0.13.2: - version "0.13.3" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" - integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -regexpu-core@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" - integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= - dependencies: - jsesc "~0.5.0" - -relateurl@0.2.x: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - -renderkid@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" - integrity sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA== - dependencies: - css-select "^1.1.0" - dom-converter "^0.2" - htmlparser2 "^3.3.0" - strip-ansi "^3.0.0" - utila "^0.4.0" - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= - -resolve-cwd@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" - integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= - dependencies: - resolve-from "^3.0.0" - -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-pathname@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" - integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -retry@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" - integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= - -rimraf@^2.5.4, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -run-queue@^1.0.0, run-queue@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" - integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= - dependencies: - aproba "^1.1.1" - -safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -schema-utils@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" - integrity sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8= - dependencies: - ajv "^5.0.0" - -schema-utils@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" - integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== - dependencies: - ajv "^6.1.0" - ajv-errors "^1.0.0" - ajv-keywords "^3.1.0" - -select-hose@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" - integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= - -selfsigned@^1.10.7: - version "1.10.7" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-1.10.7.tgz#da5819fd049d5574f28e88a9bcc6dbc6e6f3906b" - integrity sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA== - dependencies: - node-forge "0.9.0" - -semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -serialize-javascript@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" - integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== - -serve-index@^1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" - integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= - dependencies: - accepts "~1.3.4" - batch "0.6.1" - debug "2.6.9" - escape-html "~1.0.3" - http-errors "~1.6.2" - mime-types "~2.1.17" - parseurl "~1.3.2" - -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= - dependencies: - shebang-regex "^1.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= - -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sockjs-client@1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.4.0.tgz#c9f2568e19c8fd8173b4997ea3420e0bb306c7d5" - integrity sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g== - dependencies: - debug "^3.2.5" - eventsource "^1.0.7" - faye-websocket "~0.11.1" - inherits "^2.0.3" - json3 "^3.3.2" - url-parse "^1.4.3" - -sockjs@0.3.19: - version "0.3.19" - resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" - integrity sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw== - dependencies: - faye-websocket "^0.10.0" - uuid "^3.0.1" - -sort-keys@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" - integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= - dependencies: - is-plain-obj "^1.0.0" - -source-list-map@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@~0.5.12: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.3, source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spdy-transport@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" - integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== - dependencies: - debug "^4.1.0" - detect-node "^2.0.4" - hpack.js "^2.1.6" - obuf "^1.1.2" - readable-stream "^3.0.6" - wbuf "^1.7.3" - -spdy@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" - integrity sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA== - dependencies: - debug "^4.1.0" - handle-thing "^2.0.0" - http-deceiver "^1.2.7" - select-hose "^2.0.0" - spdy-transport "^3.0.0" - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -ssri@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.2.tgz#157939134f20464e7301ddba3e90ffa8f7728ac5" - integrity sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q== - dependencies: - figgy-pudding "^3.5.1" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -stream-browserify@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" - integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== - dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" - -stream-each@^1.1.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" - integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== - dependencies: - end-of-stream "^1.1.0" - stream-shift "^1.0.0" - -stream-http@^2.7.2: - version "2.8.3" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" - integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.6" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.0.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string.prototype.trimleft@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" - integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - -string.prototype.trimright@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" - integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== - dependencies: - define-properties "^1.1.3" - function-bind "^1.1.1" - -string_decoder@^1.0.0, string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= - -style-loader@^0.18.2: - version "0.18.2" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.18.2.tgz#cc31459afbcd6d80b7220ee54b291a9fd66ff5eb" - integrity sha512-WPpJPZGUxWYHWIUMNNOYqql7zh85zGmr84FdTVWq52WTIkqlW9xSxD3QYWi/T31cqn9UNSsietVEgGn2aaSCzw== - dependencies: - loader-utils "^1.0.2" - schema-utils "^0.3.0" - -supports-color@6.1.0, supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" - integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= - dependencies: - has-flag "^1.0.0" - -supports-color@^5.3.0, supports-color@^5.4.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -svgo@^0.7.0: - version "0.7.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5" - integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U= - dependencies: - coa "~1.0.1" - colors "~1.1.2" - csso "~2.3.1" - js-yaml "~3.7.0" - mkdirp "~0.5.1" - sax "~1.2.1" - whet.extend "~0.9.9" - -tapable@^1.0.0, tapable@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - -terser-webpack-plugin@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" - integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== - dependencies: - cacache "^12.0.2" - find-cache-dir "^2.1.0" - is-wsl "^1.1.0" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" - source-map "^0.6.1" - terser "^4.1.2" - webpack-sources "^1.4.0" - worker-farm "^1.7.0" - -terser@^4.1.2: - version "4.5.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.5.1.tgz#63b52d6b6ce344aa6fedcd0ee06a695799eb50bd" - integrity sha512-lH9zLIbX8PRBEFCTvfHGCy0s9HEKnNso1Dx9swSopF3VUnFLB8DpQ61tHxoofovNC/sG0spajJM3EIIRSTByiQ== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -through2@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -thunky@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" - integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== - -timers-browserify@^2.0.4: - version "2.0.11" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" - integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== - dependencies: - setimmediate "^1.0.4" - -tiny-invariant@^1.0.2: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.6.tgz#b3f9b38835e36a41c843a3b0907a5a7b3755de73" - integrity sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA== - -tiny-warning@^1.0.0, tiny-warning@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" - integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== - -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" - integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -toposort@^1.0.0: - version "1.0.7" - resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" - integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= - -tslib@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== - -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= - -type-is@~1.6.17, type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -uglify-js@3.4.x: - version "3.4.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" - integrity sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw== - dependencies: - commander "~2.19.0" - source-map "~0.6.1" - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= - -uniqs@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" - integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= - -unique-filename@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" - integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== - dependencies: - unique-slug "^2.0.0" - -unique-slug@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" - integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== - dependencies: - imurmurhash "^0.1.4" - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - -uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -url-parse@^1.4.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util.promisify@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" - integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA== - dependencies: - define-properties "^1.1.2" - object.getownpropertydescriptors "^2.0.3" - -util@0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= - dependencies: - inherits "2.0.1" - -util@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" - integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== - dependencies: - inherits "2.0.3" - -utila@^0.4.0, utila@~0.4: - version "0.4.0" - resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" - integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= - -uuid@^3.0.1, uuid@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== - -v8-compile-cache@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" - integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== - -value-equal@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" - integrity sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw== - -vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -vendors@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" - integrity sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw== - -vm-browserify@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" - integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== - -watchpack@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" - integrity sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA== - dependencies: - chokidar "^2.0.2" - graceful-fs "^4.1.2" - neo-async "^2.5.0" - -wbuf@^1.1.0, wbuf@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" - integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== - dependencies: - minimalistic-assert "^1.0.0" - -webpack-cli@3.3.10: - version "3.3.10" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.10.tgz#17b279267e9b4fb549023fae170da8e6e766da13" - integrity sha512-u1dgND9+MXaEt74sJR4PR7qkPxXUSQ0RXYq8x1L6Jg1MYVEmGPrH6Ah6C4arD4r0J1P5HKjRqpab36k0eIzPqg== - dependencies: - chalk "2.4.2" - cross-spawn "6.0.5" - enhanced-resolve "4.1.0" - findup-sync "3.0.0" - global-modules "2.0.0" - import-local "2.0.0" - interpret "1.2.0" - loader-utils "1.2.3" - supports-color "6.1.0" - v8-compile-cache "2.0.3" - yargs "13.2.4" - -webpack-dev-middleware@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz#0019c3db716e3fa5cecbf64f2ab88a74bab331f3" - integrity sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw== - dependencies: - memory-fs "^0.4.1" - mime "^2.4.4" - mkdirp "^0.5.1" - range-parser "^1.2.1" - webpack-log "^2.0.0" - -webpack-dev-server@3.10.1: - version "3.10.1" - resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-3.10.1.tgz#1ff3e5cccf8e0897aa3f5909c654e623f69b1c0e" - integrity sha512-AGG4+XrrXn4rbZUueyNrQgO4KGnol+0wm3MPdqGLmmA+NofZl3blZQKxZ9BND6RDNuvAK9OMYClhjOSnxpWRoA== - dependencies: - ansi-html "0.0.7" - bonjour "^3.5.0" - chokidar "^2.1.8" - compression "^1.7.4" - connect-history-api-fallback "^1.6.0" - debug "^4.1.1" - del "^4.1.1" - express "^4.17.1" - html-entities "^1.2.1" - http-proxy-middleware "0.19.1" - import-local "^2.0.0" - internal-ip "^4.3.0" - ip "^1.1.5" - is-absolute-url "^3.0.3" - killable "^1.0.1" - loglevel "^1.6.6" - opn "^5.5.0" - p-retry "^3.0.1" - portfinder "^1.0.25" - schema-utils "^1.0.0" - selfsigned "^1.10.7" - semver "^6.3.0" - serve-index "^1.9.1" - sockjs "0.3.19" - sockjs-client "1.4.0" - spdy "^4.0.1" - strip-ansi "^3.0.1" - supports-color "^6.1.0" - url "^0.11.0" - webpack-dev-middleware "^3.7.2" - webpack-log "^2.0.0" - ws "^6.2.1" - yargs "12.0.5" - -webpack-log@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/webpack-log/-/webpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" - integrity sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg== - dependencies: - ansi-colors "^3.0.0" - uuid "^3.3.2" - -webpack-sources@^1.4.0, webpack-sources@^1.4.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" - integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@4.41.5: - version "4.41.5" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" - integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw== - dependencies: - "@webassemblyjs/ast" "1.8.5" - "@webassemblyjs/helper-module-context" "1.8.5" - "@webassemblyjs/wasm-edit" "1.8.5" - "@webassemblyjs/wasm-parser" "1.8.5" - acorn "^6.2.1" - ajv "^6.10.2" - ajv-keywords "^3.4.1" - chrome-trace-event "^1.0.2" - enhanced-resolve "^4.1.0" - eslint-scope "^4.0.3" - json-parse-better-errors "^1.0.2" - loader-runner "^2.4.0" - loader-utils "^1.2.3" - memory-fs "^0.4.1" - micromatch "^3.1.10" - mkdirp "^0.5.1" - neo-async "^2.6.1" - node-libs-browser "^2.2.1" - schema-utils "^1.0.0" - tapable "^1.1.3" - terser-webpack-plugin "^1.4.3" - watchpack "^1.6.0" - webpack-sources "^1.4.1" - -websocket-driver@>=0.5.1: - version "0.7.3" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" - integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== - dependencies: - http-parser-js ">=0.4.0 <0.4.11" - safe-buffer ">=5.1.0" - websocket-extensions ">=0.1.1" - -websocket-extensions@>=0.1.1: - version "0.1.4" - resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" - integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== - -whet.extend@~0.9.9: - version "0.9.9" - resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1" - integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE= - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^1.2.14, which@^1.2.9, which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -worker-farm@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" - integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== - dependencies: - errno "~0.1.7" - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -ws@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - -xtend@^4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== - -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yargs-parser@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" - integrity sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^13.1.0: - version "13.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" - integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs@12.0.5: - version "12.0.5" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" - integrity sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== - dependencies: - 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@13.2.4: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - os-locale "^3.1.0" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.0" diff --git a/gitbook/fonts/fontawesome/FontAwesome.otf b/gitbook/fonts/fontawesome/FontAwesome.otf new file mode 100644 index 0000000..d4de13e Binary files /dev/null and b/gitbook/fonts/fontawesome/FontAwesome.otf differ diff --git a/gitbook/fonts/fontawesome/fontawesome-webfont.eot b/gitbook/fonts/fontawesome/fontawesome-webfont.eot new file mode 100644 index 0000000..c7b00d2 Binary files /dev/null and b/gitbook/fonts/fontawesome/fontawesome-webfont.eot differ diff --git a/gitbook/fonts/fontawesome/fontawesome-webfont.svg b/gitbook/fonts/fontawesome/fontawesome-webfont.svg new file mode 100644 index 0000000..8b66187 --- /dev/null +++ b/gitbook/fonts/fontawesome/fontawesome-webfont.svg @@ -0,0 +1,685 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/gitbook/fonts/fontawesome/fontawesome-webfont.ttf b/gitbook/fonts/fontawesome/fontawesome-webfont.ttf new file mode 100644 index 0000000..f221e50 Binary files /dev/null and b/gitbook/fonts/fontawesome/fontawesome-webfont.ttf differ diff --git a/gitbook/fonts/fontawesome/fontawesome-webfont.woff b/gitbook/fonts/fontawesome/fontawesome-webfont.woff new file mode 100644 index 0000000..6e7483c Binary files /dev/null and b/gitbook/fonts/fontawesome/fontawesome-webfont.woff differ diff --git a/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 b/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 new file mode 100644 index 0000000..7eb74fd Binary files /dev/null and b/gitbook/fonts/fontawesome/fontawesome-webfont.woff2 differ diff --git a/gitbook/gitbook-plugin-fontsettings/fontsettings.js b/gitbook/gitbook-plugin-fontsettings/fontsettings.js new file mode 100644 index 0000000..ff7be71 --- /dev/null +++ b/gitbook/gitbook-plugin-fontsettings/fontsettings.js @@ -0,0 +1,240 @@ +require(['gitbook', 'jquery'], function(gitbook, $) { + // Configuration + var MAX_SIZE = 4, + MIN_SIZE = 0, + BUTTON_ID; + + // Current fontsettings state + var fontState; + + // Default themes + var THEMES = [ + { + config: 'white', + text: 'White', + id: 0 + }, + { + config: 'sepia', + text: 'Sepia', + id: 1 + }, + { + config: 'night', + text: 'Night', + id: 2 + } + ]; + + // Default font families + var FAMILIES = [ + { + config: 'serif', + text: 'Serif', + id: 0 + }, + { + config: 'sans', + text: 'Sans', + id: 1 + } + ]; + + // Return configured themes + function getThemes() { + return THEMES; + } + + // Modify configured themes + function setThemes(themes) { + THEMES = themes; + updateButtons(); + } + + // Return configured font families + function getFamilies() { + return FAMILIES; + } + + // Modify configured font families + function setFamilies(families) { + FAMILIES = families; + updateButtons(); + } + + // Save current font settings + function saveFontSettings() { + gitbook.storage.set('fontState', fontState); + update(); + } + + // Increase font size + function enlargeFontSize(e) { + e.preventDefault(); + if (fontState.size >= MAX_SIZE) return; + + fontState.size++; + saveFontSettings(); + } + + // Decrease font size + function reduceFontSize(e) { + e.preventDefault(); + if (fontState.size <= MIN_SIZE) return; + + fontState.size--; + saveFontSettings(); + } + + // Change font family + function changeFontFamily(configName, e) { + if (e && e instanceof Event) { + e.preventDefault(); + } + + var familyId = getFontFamilyId(configName); + fontState.family = familyId; + saveFontSettings(); + } + + // Change type of color theme + function changeColorTheme(configName, e) { + if (e && e instanceof Event) { + e.preventDefault(); + } + + var $book = gitbook.state.$book; + + // Remove currently applied color theme + if (fontState.theme !== 0) + $book.removeClass('color-theme-'+fontState.theme); + + // Set new color theme + var themeId = getThemeId(configName); + fontState.theme = themeId; + if (fontState.theme !== 0) + $book.addClass('color-theme-'+fontState.theme); + + saveFontSettings(); + } + + // Return the correct id for a font-family config key + // Default to first font-family + function getFontFamilyId(configName) { + // Search for plugin configured font family + var configFamily = $.grep(FAMILIES, function(family) { + return family.config == configName; + })[0]; + // Fallback to default font family + return (!!configFamily)? configFamily.id : 0; + } + + // Return the correct id for a theme config key + // Default to first theme + function getThemeId(configName) { + // Search for plugin configured theme + var configTheme = $.grep(THEMES, function(theme) { + return theme.config == configName; + })[0]; + // Fallback to default theme + return (!!configTheme)? configTheme.id : 0; + } + + function update() { + var $book = gitbook.state.$book; + + $('.font-settings .font-family-list li').removeClass('active'); + $('.font-settings .font-family-list li:nth-child('+(fontState.family+1)+')').addClass('active'); + + $book[0].className = $book[0].className.replace(/\bfont-\S+/g, ''); + $book.addClass('font-size-'+fontState.size); + $book.addClass('font-family-'+fontState.family); + + if(fontState.theme !== 0) { + $book[0].className = $book[0].className.replace(/\bcolor-theme-\S+/g, ''); + $book.addClass('color-theme-'+fontState.theme); + } + } + + function init(config) { + // Search for plugin configured font family + var configFamily = getFontFamilyId(config.family), + configTheme = getThemeId(config.theme); + + // Instantiate font state object + fontState = gitbook.storage.get('fontState', { + size: config.size || 2, + family: configFamily, + theme: configTheme + }); + + update(); + } + + function updateButtons() { + // Remove existing fontsettings buttons + if (!!BUTTON_ID) { + gitbook.toolbar.removeButton(BUTTON_ID); + } + + // Create buttons in toolbar + BUTTON_ID = gitbook.toolbar.createButton({ + icon: 'fa fa-font', + label: 'Font Settings', + className: 'font-settings', + dropdown: [ + [ + { + text: 'A', + className: 'font-reduce', + onClick: reduceFontSize + }, + { + text: 'A', + className: 'font-enlarge', + onClick: enlargeFontSize + } + ], + $.map(FAMILIES, function(family) { + family.onClick = function(e) { + return changeFontFamily(family.config, e); + }; + + return family; + }), + $.map(THEMES, function(theme) { + theme.onClick = function(e) { + return changeColorTheme(theme.config, e); + }; + + return theme; + }) + ] + }); + } + + // Init configuration at start + gitbook.events.bind('start', function(e, config) { + var opts = config.fontsettings; + + // Generate buttons at start + updateButtons(); + + // Init current settings + init(opts); + }); + + // Expose API + gitbook.fontsettings = { + enlargeFontSize: enlargeFontSize, + reduceFontSize: reduceFontSize, + setTheme: changeColorTheme, + setFamily: changeFontFamily, + getThemes: getThemes, + setThemes: setThemes, + getFamilies: getFamilies, + setFamilies: setFamilies + }; +}); + + diff --git a/gitbook/gitbook-plugin-fontsettings/website.css b/gitbook/gitbook-plugin-fontsettings/website.css new file mode 100644 index 0000000..26591fe --- /dev/null +++ b/gitbook/gitbook-plugin-fontsettings/website.css @@ -0,0 +1,291 @@ +/* + * Theme 1 + */ +.color-theme-1 .dropdown-menu { + background-color: #111111; + border-color: #7e888b; +} +.color-theme-1 .dropdown-menu .dropdown-caret .caret-inner { + border-bottom: 9px solid #111111; +} +.color-theme-1 .dropdown-menu .buttons { + border-color: #7e888b; +} +.color-theme-1 .dropdown-menu .button { + color: #afa790; +} +.color-theme-1 .dropdown-menu .button:hover { + color: #73553c; +} +/* + * Theme 2 + */ +.color-theme-2 .dropdown-menu { + background-color: #2d3143; + border-color: #272a3a; +} +.color-theme-2 .dropdown-menu .dropdown-caret .caret-inner { + border-bottom: 9px solid #2d3143; +} +.color-theme-2 .dropdown-menu .buttons { + border-color: #272a3a; +} +.color-theme-2 .dropdown-menu .button { + color: #62677f; +} +.color-theme-2 .dropdown-menu .button:hover { + color: #f4f4f5; +} +.book .book-header .font-settings .font-enlarge { + line-height: 30px; + font-size: 1.4em; +} +.book .book-header .font-settings .font-reduce { + line-height: 30px; + font-size: 1em; +} +.book.color-theme-1 .book-body { + color: #704214; + background: #f3eacb; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section { + background: #f3eacb; +} +.book.color-theme-2 .book-body { + color: #bdcadb; + background: #1c1f2b; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section { + background: #1c1f2b; +} +.book.font-size-0 .book-body .page-inner section { + font-size: 1.2rem; +} +.book.font-size-1 .book-body .page-inner section { + font-size: 1.4rem; +} +.book.font-size-2 .book-body .page-inner section { + font-size: 1.6rem; +} +.book.font-size-3 .book-body .page-inner section { + font-size: 2.2rem; +} +.book.font-size-4 .book-body .page-inner section { + font-size: 4rem; +} +.book.font-family-0 { + font-family: Georgia, serif; +} +.book.font-family-1 { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal { + color: #704214; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal a { + color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h3, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h4, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h5, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 { + color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h1, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h2 { + border-color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal h6 { + color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal hr { + background-color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal blockquote { + border-color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal pre, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal code { + background: #fdf6e3; + color: #657b83; + border-color: #f8df9c; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal .highlight { + background-color: inherit; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table th, +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table td { + border-color: #f5d06c; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr { + color: inherit; + background-color: #fdf6e3; + border-color: #444444; +} +.book.color-theme-1 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) { + background-color: #fbeecb; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal { + color: #bdcadb; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal a { + color: #3eb1d0; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h3, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h4, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h5, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 { + color: #fffffa; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h1, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h2 { + border-color: #373b4e; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal h6 { + color: #373b4e; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal hr { + background-color: #373b4e; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal blockquote { + border-color: #373b4e; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal pre, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal code { + color: #9dbed8; + background: #2d3143; + border-color: #2d3143; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal .highlight { + background-color: #282a39; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table th, +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table td { + border-color: #3b3f54; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr { + color: #b6c2d2; + background-color: #2d3143; + border-color: #3b3f54; +} +.book.color-theme-2 .book-body .page-wrapper .page-inner section.normal table tr:nth-child(2n) { + background-color: #35394b; +} +.book.color-theme-1 .book-header { + color: #afa790; + background: transparent; +} +.book.color-theme-1 .book-header .btn { + color: #afa790; +} +.book.color-theme-1 .book-header .btn:hover { + color: #73553c; + background: none; +} +.book.color-theme-1 .book-header h1 { + color: #704214; +} +.book.color-theme-2 .book-header { + color: #7e888b; + background: transparent; +} +.book.color-theme-2 .book-header .btn { + color: #3b3f54; +} +.book.color-theme-2 .book-header .btn:hover { + color: #fffff5; + background: none; +} +.book.color-theme-2 .book-header h1 { + color: #bdcadb; +} +.book.color-theme-1 .book-body .navigation { + color: #afa790; +} +.book.color-theme-1 .book-body .navigation:hover { + color: #73553c; +} +.book.color-theme-2 .book-body .navigation { + color: #383f52; +} +.book.color-theme-2 .book-body .navigation:hover { + color: #fffff5; +} +/* + * Theme 1 + */ +.book.color-theme-1 .book-summary { + color: #afa790; + background: #111111; + border-right: 1px solid rgba(0, 0, 0, 0.07); +} +.book.color-theme-1 .book-summary .book-search { + background: transparent; +} +.book.color-theme-1 .book-summary .book-search input, +.book.color-theme-1 .book-summary .book-search input:focus { + border: 1px solid transparent; +} +.book.color-theme-1 .book-summary ul.summary li.divider { + background: #7e888b; + box-shadow: none; +} +.book.color-theme-1 .book-summary ul.summary li i.fa-check { + color: #33cc33; +} +.book.color-theme-1 .book-summary ul.summary li.done > a { + color: #877f6a; +} +.book.color-theme-1 .book-summary ul.summary li a, +.book.color-theme-1 .book-summary ul.summary li span { + color: #877f6a; + background: transparent; + font-weight: normal; +} +.book.color-theme-1 .book-summary ul.summary li.active > a, +.book.color-theme-1 .book-summary ul.summary li a:hover { + color: #704214; + background: transparent; + font-weight: normal; +} +/* + * Theme 2 + */ +.book.color-theme-2 .book-summary { + color: #bcc1d2; + background: #2d3143; + border-right: none; +} +.book.color-theme-2 .book-summary .book-search { + background: transparent; +} +.book.color-theme-2 .book-summary .book-search input, +.book.color-theme-2 .book-summary .book-search input:focus { + border: 1px solid transparent; +} +.book.color-theme-2 .book-summary ul.summary li.divider { + background: #272a3a; + box-shadow: none; +} +.book.color-theme-2 .book-summary ul.summary li i.fa-check { + color: #33cc33; +} +.book.color-theme-2 .book-summary ul.summary li.done > a { + color: #62687f; +} +.book.color-theme-2 .book-summary ul.summary li a, +.book.color-theme-2 .book-summary ul.summary li span { + color: #c1c6d7; + background: transparent; + font-weight: 600; +} +.book.color-theme-2 .book-summary ul.summary li.active > a, +.book.color-theme-2 .book-summary ul.summary li a:hover { + color: #f4f4f5; + background: #252737; + font-weight: 600; +} diff --git a/gitbook/gitbook-plugin-ga/plugin.js b/gitbook/gitbook-plugin-ga/plugin.js new file mode 100644 index 0000000..ff21e9c --- /dev/null +++ b/gitbook/gitbook-plugin-ga/plugin.js @@ -0,0 +1,17 @@ +require(["gitbook"], function(gitbook) { + // Load analytics.js + gitbook.events.bind("start", function(e, config) { + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + var cfg = config.ga; + ga('create', cfg.token, cfg.configuration); + }); + + // Notify pageview + gitbook.events.bind("page.change", function() { + ga('send', 'pageview', window.location.pathname+window.location.search); + }); +}); diff --git a/gitbook/gitbook-plugin-github-edit/plugin.js b/gitbook/gitbook-plugin-github-edit/plugin.js new file mode 100644 index 0000000..20abbfd --- /dev/null +++ b/gitbook/gitbook-plugin-github-edit/plugin.js @@ -0,0 +1,50 @@ +require([ 'gitbook' ], function (gitbook) { + handleEditButton = function (e, config) { + /** + * [defaultOption: default option] + * @type {Object} + */ + const defaultOption = { + 'url': 'https://github.com', + 'repo': 'aleen42/PersonalWiki', + 'branch': 'master' + }; + + /** if users have its option, and then combine it with default options */ + if (config['github-edit']) { + // @deprecated + // if (this.options.pluginsConfig['page-treeview']) { + for (var item in defaultOption) { + /** special for copyright */ + // @deprecated + const configOption = config['github-edit']; + + // defaultOption[item] = this.options.pluginsConfig['page-treeview'][item] || defaultOption[item]; + if (item in configOption) { + defaultOption[item] = configOption[item]; + } + } + } + + const configRoot = config['root']; + + gitbook.toolbar.createButton({ + icon: 'fa fa-pencil-square-o ', + label: 'Edit on GitHub', + position: 'right', + onClick: function () { + window.open(defaultOption.url + + '/' + + defaultOption.repo + + '/edit/' + + defaultOption.branch + + (configRoot ? '/' + configRoot : '') + + '/' + + gitbook.state.filepath + ); + } + }); + }; + + gitbook.events.bind('start', handleEditButton); +}); diff --git a/gitbook/gitbook-plugin-github/plugin.js b/gitbook/gitbook-plugin-github/plugin.js new file mode 100644 index 0000000..14810ce --- /dev/null +++ b/gitbook/gitbook-plugin-github/plugin.js @@ -0,0 +1,14 @@ +require([ 'gitbook' ], function (gitbook) { + gitbook.events.bind('start', function (e, config) { + var githubURL = config.github.url; + + gitbook.toolbar.createButton({ + icon: 'fa fa-github', + label: 'GitHub', + position: 'right', + onClick: function() { + window.open(githubURL) + } + }); + }); +}); diff --git a/gitbook/gitbook-plugin-heading-anchors/anchor-style.js b/gitbook/gitbook-plugin-heading-anchors/anchor-style.js new file mode 100644 index 0000000..f46ebd3 --- /dev/null +++ b/gitbook/gitbook-plugin-heading-anchors/anchor-style.js @@ -0,0 +1,8 @@ +anchors.options = { + icon: '#' + ,placement: 'right' +} + +gitbook.events.bind('page.change', function(){ + anchors.add('h1,h2,h3,h4,h5') +}) diff --git a/gitbook/gitbook-plugin-lunr/lunr.min.js b/gitbook/gitbook-plugin-lunr/lunr.min.js new file mode 100644 index 0000000..6aa6bc7 --- /dev/null +++ b/gitbook/gitbook-plugin-lunr/lunr.min.js @@ -0,0 +1,7 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 0.5.12 + * Copyright (C) 2015 Oliver Nightingale + * MIT Licensed + * @license + */ +!function(){var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.5.12",t.utils={},t.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},t.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},t.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},t.EventEmitter.prototype.hasHandler=function(t){return t in this.events},t.tokenizer=function(t){return arguments.length&&null!=t&&void 0!=t?Array.isArray(t)?t.map(function(t){return t.toLowerCase()}):t.toString().trim().toLowerCase().split(/[\s\-]+/):[]},t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.registeredFunctions[e];if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");this._stack.splice(i,0,n)},t.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);-1!=e&&this._stack.splice(e,1)},t.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,i=this._stack.length,o=0;n>o;o++){for(var r=t[o],s=0;i>s&&(r=this._stack[s](r,o,t),void 0!==r);s++);void 0!==r&&e.push(r)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){this._magnitude=void 0;var i=this.list;if(!i)return this.list=new t.Vector.Node(e,n,i),this.length++;if(en.idx?n=n.next:(i+=e.val*n.val,e=e.next,n=n.next);return i},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){var t,e;for(t=0;t1;){if(r===t)return o;t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o]}return r===t?o:-1},t.SortedSet.prototype.locationFor=function(t){for(var e=0,n=this.elements.length,i=n-e,o=e+Math.floor(i/2),r=this.elements[o];i>1;)t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o];return r>t?o:t>r?o+1:void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,i=0,o=0,r=this.length,s=e.length,a=this.elements,h=e.elements;;){if(i>r-1||o>s-1)break;a[i]!==h[o]?a[i]h[o]&&o++:(n.add(a[i]),i++,o++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,i;return this.length>=t.length?(e=this,n=t):(e=t,n=this),i=e.clone(),i.add.apply(i,n.toArray()),i},t.SortedSet.prototype.toJSON=function(){return this.toArray()},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.Store,this.tokenStore=new t.TokenStore,this.corpusTokens=new t.SortedSet,this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},t.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;return n._fields=e.fields,n._ref=e.ref,n.documentStore=t.Store.load(e.documentStore),n.tokenStore=t.TokenStore.load(e.tokenStore),n.corpusTokens=t.SortedSet.load(e.corpusTokens),n.pipeline=t.Pipeline.load(e.pipeline),n},t.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},t.Index.prototype.ref=function(t){return this._ref=t,this},t.Index.prototype.add=function(e,n){var i={},o=new t.SortedSet,r=e[this._ref],n=void 0===n?!0:n;this._fields.forEach(function(n){var r=this.pipeline.run(t.tokenizer(e[n.name]));i[n.name]=r,t.SortedSet.prototype.add.apply(o,r)},this),this.documentStore.set(r,o),t.SortedSet.prototype.add.apply(this.corpusTokens,o.toArray());for(var s=0;s0&&(i=1+Math.log(this.documentStore.length/n)),this._idfCache[e]=i},t.Index.prototype.search=function(e){var n=this.pipeline.run(t.tokenizer(e)),i=new t.Vector,o=[],r=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*r,h=this,l=this.tokenStore.expand(e).reduce(function(n,o){var r=h.corpusTokens.indexOf(o),s=h.idf(o),l=1,u=new t.SortedSet;if(o!==e){var c=Math.max(3,o.length-e.length);l=1/Math.log(c)}return r>-1&&i.insert(r,a*s*l),Object.keys(h.tokenStore.get(o)).forEach(function(t){u.add(t)}),n.union(u)},new t.SortedSet);o.push(l)},this);var a=o.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:i.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),i=n.length,o=new t.Vector,r=0;i>r;r++){var s=n.elements[r],a=this.tokenStore.get(s)[e].tf,h=this.idf(s);o.insert(this.corpusTokens.indexOf(s),a*h)}return o},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,i){return n[i]=t.SortedSet.load(e.store[i]),n},{}),n},t.Store.prototype.set=function(t,e){this.has(t)||this.length++,this.store[t]=e},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",o=n+"[^aeiouy]*",r=i+"[aeiou]*",s="^("+o+")?"+r+o,a="^("+o+")?"+r+o+"("+r+")?$",h="^("+o+")?"+r+o+r+o,l="^("+o+")?"+i,u=new RegExp(s),c=new RegExp(h),f=new RegExp(a),d=new RegExp(l),p=/^(.+?)(ss|i)es$/,m=/^(.+?)([^s])s$/,v=/^(.+?)eed$/,y=/^(.+?)(ed|ing)$/,g=/.$/,S=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),x=new RegExp("^"+o+i+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,_=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,F=/^(.+?)(s|t)(ion)$/,O=/^(.+?)e$/,P=/ll$/,N=new RegExp("^"+o+i+"[^aeiouwxy]$"),T=function(n){var i,o,r,s,a,h,l;if(n.length<3)return n;if(r=n.substr(0,1),"y"==r&&(n=r.toUpperCase()+n.substr(1)),s=p,a=m,s.test(n)?n=n.replace(s,"$1$2"):a.test(n)&&(n=n.replace(a,"$1$2")),s=v,a=y,s.test(n)){var T=s.exec(n);s=u,s.test(T[1])&&(s=g,n=n.replace(s,""))}else if(a.test(n)){var T=a.exec(n);i=T[1],a=d,a.test(i)&&(n=i,a=S,h=w,l=x,a.test(n)?n+="e":h.test(n)?(s=g,n=n.replace(s,"")):l.test(n)&&(n+="e"))}if(s=k,s.test(n)){var T=s.exec(n);i=T[1],n=i+"i"}if(s=b,s.test(n)){var T=s.exec(n);i=T[1],o=T[2],s=u,s.test(i)&&(n=i+t[o])}if(s=E,s.test(n)){var T=s.exec(n);i=T[1],o=T[2],s=u,s.test(i)&&(n=i+e[o])}if(s=_,a=F,s.test(n)){var T=s.exec(n);i=T[1],s=c,s.test(i)&&(n=i)}else if(a.test(n)){var T=a.exec(n);i=T[1]+T[2],a=c,a.test(i)&&(n=i)}if(s=O,s.test(n)){var T=s.exec(n);i=T[1],s=c,a=f,h=N,(s.test(i)||a.test(i)&&!h.test(i))&&(n=i)}return s=P,a=c,s.test(n)&&a.test(n)&&(s=g,n=n.replace(s,"")),"y"==r&&(n=r.toLowerCase()+n.substr(1)),n};return T}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.stopWordFilter=function(e){return e&&t.stopWordFilter.stopWords[e]!==e?e:void 0},t.stopWordFilter.stopWords={a:"a",able:"able",about:"about",across:"across",after:"after",all:"all",almost:"almost",also:"also",am:"am",among:"among",an:"an",and:"and",any:"any",are:"are",as:"as",at:"at",be:"be",because:"because",been:"been",but:"but",by:"by",can:"can",cannot:"cannot",could:"could",dear:"dear",did:"did","do":"do",does:"does",either:"either","else":"else",ever:"ever",every:"every","for":"for",from:"from",get:"get",got:"got",had:"had",has:"has",have:"have",he:"he",her:"her",hers:"hers",him:"him",his:"his",how:"how",however:"however",i:"i","if":"if","in":"in",into:"into",is:"is",it:"it",its:"its",just:"just",least:"least",let:"let",like:"like",likely:"likely",may:"may",me:"me",might:"might",most:"most",must:"must",my:"my",neither:"neither",no:"no",nor:"nor",not:"not",of:"of",off:"off",often:"often",on:"on",only:"only",or:"or",other:"other",our:"our",own:"own",rather:"rather",said:"said",say:"say",says:"says",she:"she",should:"should",since:"since",so:"so",some:"some",than:"than",that:"that",the:"the",their:"their",them:"them",then:"then",there:"there",these:"these",they:"they","this":"this",tis:"tis",to:"to",too:"too",twas:"twas",us:"us",wants:"wants",was:"was",we:"we",were:"were",what:"what",when:"when",where:"where",which:"which","while":"while",who:"who",whom:"whom",why:"why",will:"will","with":"with",would:"would",yet:"yet",you:"you",your:"your"},t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(t){var e=t.replace(/^\W+/,"").replace(/\W+$/,"");return""===e?void 0:e},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.TokenStore=function(){this.root={docs:{}},this.length=0},t.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},t.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,i=t[0],o=t.slice(1);return i in n||(n[i]={docs:{}}),0===o.length?(n[i].docs[e.ref]=e,void(this.length+=1)):this.add(o,e,n[i])},t.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;n code[class*="language-"], +pre[class*="language-"] { + background-color: #fdfdfd; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + margin-bottom: 1em; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + position: relative; + padding: .2em; + -webkit-border-radius: 0.3em; + -moz-border-radius: 0.3em; + -ms-border-radius: 0.3em; + -o-border-radius: 0.3em; + border-radius: 0.3em; + color: #c92c2c; + border: 1px solid rgba(0, 0, 0, 0.1); +} + +pre[class*="language-"]:before, +pre[class*="language-"]:after { + content: ''; + z-index: -2; + display: block; + position: absolute; + bottom: 0.75em; + left: 0.18em; + width: 40%; + height: 20%; + -webkit-box-shadow: 0px 13px 8px #979797; + -moz-box-shadow: 0px 13px 8px #979797; + box-shadow: 0px 13px 8px #979797; + -webkit-transform: rotate(-2deg); + -moz-transform: rotate(-2deg); + -ms-transform: rotate(-2deg); + -o-transform: rotate(-2deg); + transform: rotate(-2deg); +} + +:not(pre) > code[class*="language-"]:after, +pre[class*="language-"]:after { + right: 0.75em; + left: auto; + -webkit-transform: rotate(2deg); + -moz-transform: rotate(2deg); + -ms-transform: rotate(2deg); + -o-transform: rotate(2deg); + transform: rotate(2deg); +} + +.token.comment, +.token.block-comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #7D8B99; +} + +.token.punctuation { + color: #5F6364; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.function-name, +.token.constant, +.token.symbol, +.token.deleted { + color: #c92c2c; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.function, +.token.builtin, +.token.inserted { + color: #2f9c0a; +} + +.token.operator, +.token.entity, +.token.url, +.token.variable { + color: #a67f59; + background: rgba(255, 255, 255, 0.5); +} + +.token.atrule, +.token.attr-value, +.token.keyword, +.token.class-name { + color: #1990b8; +} + +.token.regex, +.token.important { + color: #e90; +} + +.language-css .token.string, +.style .token.string { + color: #a67f59; + background: rgba(255, 255, 255, 0.5); +} + +.token.important { + font-weight: normal; +} + +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +.namespace { + opacity: .7; +} + +@media screen and (max-width: 767px) { + pre[class*="language-"]:before, + pre[class*="language-"]:after { + bottom: 14px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + +} + +/* Plugin styles */ +.token.tab:not(:empty):before, +.token.cr:before, +.token.lf:before { + color: #e0d7d1; +} + +/* Plugin styles: Line Numbers */ +pre[class*="language-"].line-numbers { + padding-left: 0; +} + +pre[class*="language-"].line-numbers code { + padding-left: 3.8em; +} + +pre[class*="language-"].line-numbers .line-numbers-rows { + left: 0; +} + +/* Plugin styles: Line Highlight */ +pre[class*="language-"][data-line] { + padding-top: 0; + padding-bottom: 0; + padding-left: 0; +} +pre[data-line] code { + position: relative; + padding-left: 4em; +} +pre .line-highlight { + margin-top: 0; +} \ No newline at end of file diff --git a/gitbook/gitbook-plugin-prism/prism-dark.css b/gitbook/gitbook-plugin-prism/prism-dark.css new file mode 100644 index 0000000..a8047fc --- /dev/null +++ b/gitbook/gitbook-plugin-prism/prism-dark.css @@ -0,0 +1,126 @@ +/** + * prism.js Dark theme for JavaScript, CSS and HTML + * Based on the slides of the talk “/Reg(exp){2}lained/” + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: white; + text-shadow: 0 -.1em .2em black; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +pre[class*="language-"], +:not(pre) > code[class*="language-"] { + background: hsl(30, 20%, 25%); +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; + border: .3em solid hsl(30, 20%, 40%); + border-radius: .5em; + box-shadow: 1px 1px .5em black inset; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .15em .2em .05em; + border-radius: .3em; + border: .13em solid hsl(30, 20%, 40%); + box-shadow: 1px 1px .3em -.1em black inset; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: hsl(30, 20%, 50%); +} + +.token.punctuation { + opacity: .7; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol { + color: hsl(350, 40%, 70%); +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: hsl(75, 70%, 60%); +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string, +.token.variable { + color: hsl(40, 90%, 60%); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: hsl(350, 40%, 70%); +} + +.token.regex, +.token.important { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +.token.deleted { + color: red; +} diff --git a/gitbook/gitbook-plugin-prism/prism-funky.css b/gitbook/gitbook-plugin-prism/prism-funky.css new file mode 100644 index 0000000..f2614d1 --- /dev/null +++ b/gitbook/gitbook-plugin-prism/prism-funky.css @@ -0,0 +1,115 @@ +/** + * prism.js Funky theme + * Based on “Polyfilling the gaps” talk slides http://lea.verou.me/polyfilling-the-gaps/ + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + font-family: Consolas, Monaco, 'Andale Mono', monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +/* Code blocks */ +pre[class*="language-"] { + padding: .4em .8em; + margin: .5em 0; + overflow: auto; + background: url('data:image/svg+xml;charset=utf-8,%0D%0A%0D%0A%0D%0A<%2Fsvg>'); + background-size: 1em 1em; +} + +code[class*="language-"] { + background: black; + color: white; + box-shadow: -.3em 0 0 .3em black, .3em 0 0 .3em black; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .2em; + border-radius: .3em; + box-shadow: none; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #aaa; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol { + color: #0cf; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin { + color: yellow; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.toke.variable, +.token.inserted { + color: yellowgreen; +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: deeppink; +} + +.token.regex, +.token.important { + color: orange; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +.token.deleted { + color: red; +} diff --git a/gitbook/gitbook-plugin-prism/prism-okaidia.css b/gitbook/gitbook-plugin-prism/prism-okaidia.css new file mode 100644 index 0000000..3ff2e3c --- /dev/null +++ b/gitbook/gitbook-plugin-prism/prism-okaidia.css @@ -0,0 +1,119 @@ +/** + * okaidia theme for JavaScript, CSS and HTML + * Loosely based on Monokai textmate theme by http://www.monokai.nl/ + * @author ocodia + */ + +code[class*="language-"], +pre[class*="language-"] { + color: #f8f8f2; + text-shadow: 0 1px rgba(0, 0, 0, 0.3); + font-family: Consolas, Monaco, 'Andale Mono', monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; + border-radius: 0.3em; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #272822; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #f8f8f2; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.constant, +.token.symbol, +.token.deleted { + color: #f92672; +} + +.token.boolean, +.token.number { + color: #ae81ff; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #a6e22e; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string, +.token.variable { + color: #f8f8f2; +} + +.token.atrule, +.token.attr-value, +.token.function { + color: #e6db74; +} + +.token.keyword { + color: #66d9ef; +} + +.token.regex, +.token.important { + color: #fd971f; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} diff --git a/gitbook/gitbook-plugin-prism/prism-tomorrow.css b/gitbook/gitbook-plugin-prism/prism-tomorrow.css new file mode 100644 index 0000000..c998fb2 --- /dev/null +++ b/gitbook/gitbook-plugin-prism/prism-tomorrow.css @@ -0,0 +1,119 @@ +/** + * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML + * Based on https://github.com/chriskempson/tomorrow-theme + * @author Rose Pritchard + */ + +code[class*="language-"], +pre[class*="language-"] { + color: #ccc; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; + +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #2d2d2d; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; +} + +.token.comment, +.token.block-comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: #999; +} + +.token.punctuation { + color: #ccc; +} + +.token.tag, +.token.attr-name, +.token.namespace, +.token.deleted { + color: #e2777a; +} + +.token.function-name { + color: #6196cc; +} + +.token.boolean, +.token.number, +.token.function { + color: #f08d49; +} + +.token.property, +.token.class-name, +.token.constant, +.token.symbol { + color: #f8c555; +} + +.token.selector, +.token.important, +.token.atrule, +.token.keyword, +.token.builtin { + color: #cc99cd; +} + +.token.string, +.token.char, +.token.attr-value, +.token.regex, +.token.variable { + color: #7ec699; +} + +.token.operator, +.token.entity, +.token.url { + color: #67cdcc; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +.token.inserted { + color: green; +} diff --git a/gitbook/gitbook-plugin-prism/prism-twilight.css b/gitbook/gitbook-plugin-prism/prism-twilight.css new file mode 100644 index 0000000..89dbe84 --- /dev/null +++ b/gitbook/gitbook-plugin-prism/prism-twilight.css @@ -0,0 +1,199 @@ +/** + * prism.js Twilight theme + * Based (more or less) on the Twilight theme originally of Textmate fame. + * @author Remy Bach + */ +code[class*="language-"], +pre[class*="language-"] { + color: white; + direction: ltr; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + text-align: left; + text-shadow: 0 -.1em .2em black; + white-space: pre; + word-spacing: normal; + word-break: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"], +:not(pre) > code[class*="language-"] { + background: hsl(0, 0%, 8%); /* #141414 */ +} + +/* Code blocks */ +pre[class*="language-"] { + border-radius: .5em; + border: .3em solid hsl(0, 0%, 33%); /* #282A2B */ + box-shadow: 1px 1px .5em black inset; + margin: .5em 0; + overflow: auto; + padding: 1em; +} + +pre[class*="language-"]::selection { + /* Safari */ + background: hsl(200, 4%, 16%); /* #282A2B */ +} + +pre[class*="language-"]::selection { + /* Firefox */ + background: hsl(200, 4%, 16%); /* #282A2B */ +} + +/* Text Selection colour */ +pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */ +} + +pre[class*="language-"]::selection, pre[class*="language-"] ::selection, +code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */ +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + border-radius: .3em; + border: .13em solid hsl(0, 0%, 33%); /* #545454 */ + box-shadow: 1px 1px .3em -.1em black inset; + padding: .15em .2em .05em; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: hsl(0, 0%, 47%); /* #777777 */ +} + +.token.punctuation { + opacity: .7; +} + +.namespace { + opacity: .7; +} + +.token.tag, +.token.boolean, +.token.number, +.token.deleted { + color: hsl(14, 58%, 55%); /* #CF6A4C */ +} + +.token.keyword, +.token.property, +.token.selector, +.token.constant, +.token.symbol, +.token.builtin { + color: hsl(53, 89%, 79%); /* #F9EE98 */ +} + +.token.attr-name, +.token.attr-value, +.token.string, +.token.char, +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string, +.token.variable, +.token.inserted { + color: hsl(76, 21%, 52%); /* #8F9D6A */ +} + +.token.atrule { + color: hsl(218, 22%, 55%); /* #7587A6 */ +} + +.token.regex, +.token.important { + color: hsl(42, 75%, 65%); /* #E9C062 */ +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + +pre[data-line] { + padding: 1em 0 1em 3em; + position: relative; +} + +/* Markup */ +.language-markup .token.tag, +.language-markup .token.attr-name, +.language-markup .token.punctuation { + color: hsl(33, 33%, 52%); /* #AC885B */ +} + +/* Make the tokens sit above the line highlight so the colours don't look faded. */ +.token { + position: relative; + z-index: 1; +} + +.line-highlight { + background: -moz-linear-gradient(left, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */ + background: -o-linear-gradient(left, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */ + background: -webkit-linear-gradient(left, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */ + background: hsla(0, 0%, 33%, 0.25); /* #545454 */ + background: linear-gradient(left, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */ + border-bottom: 1px dashed hsl(0, 0%, 33%); /* #545454 */ + border-top: 1px dashed hsl(0, 0%, 33%); /* #545454 */ + left: 0; + line-height: inherit; + margin-top: 0.75em; /* Same as .prism’s padding-top */ + padding: inherit 0; + pointer-events: none; + position: absolute; + right: 0; + white-space: pre; + z-index: 0; +} + +.line-highlight:before, +.line-highlight[data-end]:after { + background-color: hsl(215, 15%, 59%); /* #8794A6 */ + border-radius: 999px; + box-shadow: 0 1px white; + color: hsl(24, 20%, 95%); /* #F5F2F0 */ + content: attr(data-start); + font: bold 65%/1.5 sans-serif; + left: .6em; + min-width: 1em; + padding: 0 .5em; + position: absolute; + text-align: center; + text-shadow: none; + top: .4em; + vertical-align: .3em; +} + +.line-highlight[data-end]:after { + bottom: .4em; + content: attr(data-end); + top: auto; +} diff --git a/gitbook/gitbook-plugin-prism/prism.css b/gitbook/gitbook-plugin-prism/prism.css new file mode 100644 index 0000000..a04c82c --- /dev/null +++ b/gitbook/gitbook-plugin-prism/prism.css @@ -0,0 +1,135 @@ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, pre[class*="language-"] ::selection, +code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #a67f59; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} diff --git a/gitbook/gitbook-plugin-search/lunr.min.js b/gitbook/gitbook-plugin-search/lunr.min.js new file mode 100644 index 0000000..6aa6bc7 --- /dev/null +++ b/gitbook/gitbook-plugin-search/lunr.min.js @@ -0,0 +1,7 @@ +/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 0.5.12 + * Copyright (C) 2015 Oliver Nightingale + * MIT Licensed + * @license + */ +!function(){var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.5.12",t.utils={},t.utils.warn=function(t){return function(e){t.console&&console.warn&&console.warn(e)}}(this),t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=t;if("function"!=typeof e)throw new TypeError("last argument must be a function");n.forEach(function(t){this.hasHandler(t)||(this.events[t]=[]),this.events[t].push(e)},this)},t.EventEmitter.prototype.removeListener=function(t,e){if(this.hasHandler(t)){var n=this.events[t].indexOf(e);this.events[t].splice(n,1),this.events[t].length||delete this.events[t]}},t.EventEmitter.prototype.emit=function(t){if(this.hasHandler(t)){var e=Array.prototype.slice.call(arguments,1);this.events[t].forEach(function(t){t.apply(void 0,e)})}},t.EventEmitter.prototype.hasHandler=function(t){return t in this.events},t.tokenizer=function(t){return arguments.length&&null!=t&&void 0!=t?Array.isArray(t)?t.map(function(t){return t.toLowerCase()}):t.toString().trim().toLowerCase().split(/[\s\-]+/):[]},t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.registeredFunctions[e];if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._stack.indexOf(e);if(-1==i)throw new Error("Cannot find existingFn");this._stack.splice(i,0,n)},t.Pipeline.prototype.remove=function(t){var e=this._stack.indexOf(t);-1!=e&&this._stack.splice(e,1)},t.Pipeline.prototype.run=function(t){for(var e=[],n=t.length,i=this._stack.length,o=0;n>o;o++){for(var r=t[o],s=0;i>s&&(r=this._stack[s](r,o,t),void 0!==r);s++);void 0!==r&&e.push(r)}return e},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Vector=function(){this._magnitude=null,this.list=void 0,this.length=0},t.Vector.Node=function(t,e,n){this.idx=t,this.val=e,this.next=n},t.Vector.prototype.insert=function(e,n){this._magnitude=void 0;var i=this.list;if(!i)return this.list=new t.Vector.Node(e,n,i),this.length++;if(en.idx?n=n.next:(i+=e.val*n.val,e=e.next,n=n.next);return i},t.Vector.prototype.similarity=function(t){return this.dot(t)/(this.magnitude()*t.magnitude())},t.SortedSet=function(){this.length=0,this.elements=[]},t.SortedSet.load=function(t){var e=new this;return e.elements=t,e.length=t.length,e},t.SortedSet.prototype.add=function(){var t,e;for(t=0;t1;){if(r===t)return o;t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o]}return r===t?o:-1},t.SortedSet.prototype.locationFor=function(t){for(var e=0,n=this.elements.length,i=n-e,o=e+Math.floor(i/2),r=this.elements[o];i>1;)t>r&&(e=o),r>t&&(n=o),i=n-e,o=e+Math.floor(i/2),r=this.elements[o];return r>t?o:t>r?o+1:void 0},t.SortedSet.prototype.intersect=function(e){for(var n=new t.SortedSet,i=0,o=0,r=this.length,s=e.length,a=this.elements,h=e.elements;;){if(i>r-1||o>s-1)break;a[i]!==h[o]?a[i]h[o]&&o++:(n.add(a[i]),i++,o++)}return n},t.SortedSet.prototype.clone=function(){var e=new t.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},t.SortedSet.prototype.union=function(t){var e,n,i;return this.length>=t.length?(e=this,n=t):(e=t,n=this),i=e.clone(),i.add.apply(i,n.toArray()),i},t.SortedSet.prototype.toJSON=function(){return this.toArray()},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.Store,this.tokenStore=new t.TokenStore,this.corpusTokens=new t.SortedSet,this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var t=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,t)},t.Index.prototype.off=function(t,e){return this.eventEmitter.removeListener(t,e)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;return n._fields=e.fields,n._ref=e.ref,n.documentStore=t.Store.load(e.documentStore),n.tokenStore=t.TokenStore.load(e.tokenStore),n.corpusTokens=t.SortedSet.load(e.corpusTokens),n.pipeline=t.Pipeline.load(e.pipeline),n},t.Index.prototype.field=function(t,e){var e=e||{},n={name:t,boost:e.boost||1};return this._fields.push(n),this},t.Index.prototype.ref=function(t){return this._ref=t,this},t.Index.prototype.add=function(e,n){var i={},o=new t.SortedSet,r=e[this._ref],n=void 0===n?!0:n;this._fields.forEach(function(n){var r=this.pipeline.run(t.tokenizer(e[n.name]));i[n.name]=r,t.SortedSet.prototype.add.apply(o,r)},this),this.documentStore.set(r,o),t.SortedSet.prototype.add.apply(this.corpusTokens,o.toArray());for(var s=0;s0&&(i=1+Math.log(this.documentStore.length/n)),this._idfCache[e]=i},t.Index.prototype.search=function(e){var n=this.pipeline.run(t.tokenizer(e)),i=new t.Vector,o=[],r=this._fields.reduce(function(t,e){return t+e.boost},0),s=n.some(function(t){return this.tokenStore.has(t)},this);if(!s)return[];n.forEach(function(e,n,s){var a=1/s.length*this._fields.length*r,h=this,l=this.tokenStore.expand(e).reduce(function(n,o){var r=h.corpusTokens.indexOf(o),s=h.idf(o),l=1,u=new t.SortedSet;if(o!==e){var c=Math.max(3,o.length-e.length);l=1/Math.log(c)}return r>-1&&i.insert(r,a*s*l),Object.keys(h.tokenStore.get(o)).forEach(function(t){u.add(t)}),n.union(u)},new t.SortedSet);o.push(l)},this);var a=o.reduce(function(t,e){return t.intersect(e)});return a.map(function(t){return{ref:t,score:i.similarity(this.documentVector(t))}},this).sort(function(t,e){return e.score-t.score})},t.Index.prototype.documentVector=function(e){for(var n=this.documentStore.get(e),i=n.length,o=new t.Vector,r=0;i>r;r++){var s=n.elements[r],a=this.tokenStore.get(s)[e].tf,h=this.idf(s);o.insert(this.corpusTokens.indexOf(s),a*h)}return o},t.Index.prototype.toJSON=function(){return{version:t.version,fields:this._fields,ref:this._ref,documentStore:this.documentStore.toJSON(),tokenStore:this.tokenStore.toJSON(),corpusTokens:this.corpusTokens.toJSON(),pipeline:this.pipeline.toJSON()}},t.Index.prototype.use=function(t){var e=Array.prototype.slice.call(arguments,1);e.unshift(this),t.apply(this,e)},t.Store=function(){this.store={},this.length=0},t.Store.load=function(e){var n=new this;return n.length=e.length,n.store=Object.keys(e.store).reduce(function(n,i){return n[i]=t.SortedSet.load(e.store[i]),n},{}),n},t.Store.prototype.set=function(t,e){this.has(t)||this.length++,this.store[t]=e},t.Store.prototype.get=function(t){return this.store[t]},t.Store.prototype.has=function(t){return t in this.store},t.Store.prototype.remove=function(t){this.has(t)&&(delete this.store[t],this.length--)},t.Store.prototype.toJSON=function(){return{store:this.store,length:this.length}},t.stemmer=function(){var t={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},e={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",o=n+"[^aeiouy]*",r=i+"[aeiou]*",s="^("+o+")?"+r+o,a="^("+o+")?"+r+o+"("+r+")?$",h="^("+o+")?"+r+o+r+o,l="^("+o+")?"+i,u=new RegExp(s),c=new RegExp(h),f=new RegExp(a),d=new RegExp(l),p=/^(.+?)(ss|i)es$/,m=/^(.+?)([^s])s$/,v=/^(.+?)eed$/,y=/^(.+?)(ed|ing)$/,g=/.$/,S=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),x=new RegExp("^"+o+i+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,b=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,_=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,F=/^(.+?)(s|t)(ion)$/,O=/^(.+?)e$/,P=/ll$/,N=new RegExp("^"+o+i+"[^aeiouwxy]$"),T=function(n){var i,o,r,s,a,h,l;if(n.length<3)return n;if(r=n.substr(0,1),"y"==r&&(n=r.toUpperCase()+n.substr(1)),s=p,a=m,s.test(n)?n=n.replace(s,"$1$2"):a.test(n)&&(n=n.replace(a,"$1$2")),s=v,a=y,s.test(n)){var T=s.exec(n);s=u,s.test(T[1])&&(s=g,n=n.replace(s,""))}else if(a.test(n)){var T=a.exec(n);i=T[1],a=d,a.test(i)&&(n=i,a=S,h=w,l=x,a.test(n)?n+="e":h.test(n)?(s=g,n=n.replace(s,"")):l.test(n)&&(n+="e"))}if(s=k,s.test(n)){var T=s.exec(n);i=T[1],n=i+"i"}if(s=b,s.test(n)){var T=s.exec(n);i=T[1],o=T[2],s=u,s.test(i)&&(n=i+t[o])}if(s=E,s.test(n)){var T=s.exec(n);i=T[1],o=T[2],s=u,s.test(i)&&(n=i+e[o])}if(s=_,a=F,s.test(n)){var T=s.exec(n);i=T[1],s=c,s.test(i)&&(n=i)}else if(a.test(n)){var T=a.exec(n);i=T[1]+T[2],a=c,a.test(i)&&(n=i)}if(s=O,s.test(n)){var T=s.exec(n);i=T[1],s=c,a=f,h=N,(s.test(i)||a.test(i)&&!h.test(i))&&(n=i)}return s=P,a=c,s.test(n)&&a.test(n)&&(s=g,n=n.replace(s,"")),"y"==r&&(n=r.toLowerCase()+n.substr(1)),n};return T}(),t.Pipeline.registerFunction(t.stemmer,"stemmer"),t.stopWordFilter=function(e){return e&&t.stopWordFilter.stopWords[e]!==e?e:void 0},t.stopWordFilter.stopWords={a:"a",able:"able",about:"about",across:"across",after:"after",all:"all",almost:"almost",also:"also",am:"am",among:"among",an:"an",and:"and",any:"any",are:"are",as:"as",at:"at",be:"be",because:"because",been:"been",but:"but",by:"by",can:"can",cannot:"cannot",could:"could",dear:"dear",did:"did","do":"do",does:"does",either:"either","else":"else",ever:"ever",every:"every","for":"for",from:"from",get:"get",got:"got",had:"had",has:"has",have:"have",he:"he",her:"her",hers:"hers",him:"him",his:"his",how:"how",however:"however",i:"i","if":"if","in":"in",into:"into",is:"is",it:"it",its:"its",just:"just",least:"least",let:"let",like:"like",likely:"likely",may:"may",me:"me",might:"might",most:"most",must:"must",my:"my",neither:"neither",no:"no",nor:"nor",not:"not",of:"of",off:"off",often:"often",on:"on",only:"only",or:"or",other:"other",our:"our",own:"own",rather:"rather",said:"said",say:"say",says:"says",she:"she",should:"should",since:"since",so:"so",some:"some",than:"than",that:"that",the:"the",their:"their",them:"them",then:"then",there:"there",these:"these",they:"they","this":"this",tis:"tis",to:"to",too:"too",twas:"twas",us:"us",wants:"wants",was:"was",we:"we",were:"were",what:"what",when:"when",where:"where",which:"which","while":"while",who:"who",whom:"whom",why:"why",will:"will","with":"with",would:"would",yet:"yet",you:"you",your:"your"},t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter"),t.trimmer=function(t){var e=t.replace(/^\W+/,"").replace(/\W+$/,"");return""===e?void 0:e},t.Pipeline.registerFunction(t.trimmer,"trimmer"),t.TokenStore=function(){this.root={docs:{}},this.length=0},t.TokenStore.load=function(t){var e=new this;return e.root=t.root,e.length=t.length,e},t.TokenStore.prototype.add=function(t,e,n){var n=n||this.root,i=t[0],o=t.slice(1);return i in n||(n[i]={docs:{}}),0===o.length?(n[i].docs[e.ref]=e,void(this.length+=1)):this.add(o,e,n[i])},t.TokenStore.prototype.has=function(t){if(!t)return!1;for(var e=this.root,n=0;n element for each result + res.results.forEach(function(res) { + var $li = $('
                        • ', { + 'class': 'search-results-item' + }); + + var $title = $('

                          '); + + var $link = $('', { + 'href': gitbook.state.basePath + '/' + res.url, + 'text': res.title + }); + + var content = res.body.trim(); + if (content.length > MAX_DESCRIPTION_SIZE) { + content = content.slice(0, MAX_DESCRIPTION_SIZE).trim()+'...'; + } + var $content = $('

                          ').html(content); + + $link.appendTo($title); + $title.appendTo($li); + $content.appendTo($li); + $li.appendTo($searchList); + }); + } + + function launchSearch(q) { + // Add class for loading + $body.addClass('with-search'); + $body.addClass('search-loading'); + + // Launch search query + throttle(gitbook.search.query(q, 0, MAX_RESULTS) + .then(function(results) { + displayResults(results); + }) + .always(function() { + $body.removeClass('search-loading'); + }), 1000); + } + + function closeSearch() { + $body.removeClass('with-search'); + $bookSearchResults.removeClass('open'); + } + + function launchSearchFromQueryString() { + var q = getParameterByName('q'); + if (q && q.length > 0) { + // Update search input + $searchInput.val(q); + + // Launch search + launchSearch(q); + } + } + + function bindSearch() { + // Bind DOM + $searchInput = $('#book-search-input input'); + $bookSearchResults = $('#book-search-results'); + $searchList = $bookSearchResults.find('.search-results-list'); + $searchTitle = $bookSearchResults.find('.search-results-title'); + $searchResultsCount = $searchTitle.find('.search-results-count'); + $searchQuery = $searchTitle.find('.search-query'); + + // Launch query based on input content + function handleUpdate() { + var q = $searchInput.val(); + + if (q.length == 0) { + closeSearch(); + } + else { + launchSearch(q); + } + } + + // Detect true content change in search input + // Workaround for IE < 9 + var propertyChangeUnbound = false; + $searchInput.on('propertychange', function(e) { + if (e.originalEvent.propertyName == 'value') { + handleUpdate(); + } + }); + + // HTML5 (IE9 & others) + $searchInput.on('input', function(e) { + // Unbind propertychange event for IE9+ + if (!propertyChangeUnbound) { + $(this).unbind('propertychange'); + propertyChangeUnbound = true; + } + + handleUpdate(); + }); + + // Push to history on blur + $searchInput.on('blur', function(e) { + // Update history state + if (usePushState) { + var uri = updateQueryString('q', $(this).val()); + history.pushState({ path: uri }, null, uri); + } + }); + } + + gitbook.events.on('page.change', function() { + bindSearch(); + closeSearch(); + + // Launch search based on query parameter + if (gitbook.search.isInitialized()) { + launchSearchFromQueryString(); + } + }); + + gitbook.events.on('search.ready', function() { + bindSearch(); + + // Launch search from query param at start + launchSearchFromQueryString(); + }); + + function getParameterByName(name) { + var url = window.location.href; + name = name.replace(/[\[\]]/g, '\\$&'); + var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)', 'i'), + results = regex.exec(url); + if (!results) return null; + if (!results[2]) return ''; + return decodeURIComponent(results[2].replace(/\+/g, ' ')); + } + + function updateQueryString(key, value) { + value = encodeURIComponent(value); + + var url = window.location.href; + var re = new RegExp('([?&])' + key + '=.*?(&|#|$)(.*)', 'gi'), + hash; + + if (re.test(url)) { + if (typeof value !== 'undefined' && value !== null) + return url.replace(re, '$1' + key + '=' + value + '$2$3'); + else { + hash = url.split('#'); + url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, ''); + if (typeof hash[1] !== 'undefined' && hash[1] !== null) + url += '#' + hash[1]; + return url; + } + } + else { + if (typeof value !== 'undefined' && value !== null) { + var separator = url.indexOf('?') !== -1 ? '&' : '?'; + hash = url.split('#'); + url = hash[0] + separator + key + '=' + value; + if (typeof hash[1] !== 'undefined' && hash[1] !== null) + url += '#' + hash[1]; + return url; + } + else + return url; + } + } +}); diff --git a/gitbook/gitbook-plugin-sharing/buttons.js b/gitbook/gitbook-plugin-sharing/buttons.js new file mode 100644 index 0000000..709a4e4 --- /dev/null +++ b/gitbook/gitbook-plugin-sharing/buttons.js @@ -0,0 +1,90 @@ +require(['gitbook', 'jquery'], function(gitbook, $) { + var SITES = { + 'facebook': { + 'label': 'Facebook', + 'icon': 'fa fa-facebook', + 'onClick': function(e) { + e.preventDefault(); + window.open('http://www.facebook.com/sharer/sharer.php?s=100&p[url]='+encodeURIComponent(location.href)); + } + }, + 'twitter': { + 'label': 'Twitter', + 'icon': 'fa fa-twitter', + 'onClick': function(e) { + e.preventDefault(); + window.open('http://twitter.com/home?status='+encodeURIComponent(document.title+' '+location.href)); + } + }, + 'google': { + 'label': 'Google+', + 'icon': 'fa fa-google-plus', + 'onClick': function(e) { + e.preventDefault(); + window.open('https://plus.google.com/share?url='+encodeURIComponent(location.href)); + } + }, + 'weibo': { + 'label': 'Weibo', + 'icon': 'fa fa-weibo', + 'onClick': function(e) { + e.preventDefault(); + window.open('http://service.weibo.com/share/share.php?content=utf-8&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title)); + } + }, + 'instapaper': { + 'label': 'Instapaper', + 'icon': 'fa fa-instapaper', + 'onClick': function(e) { + e.preventDefault(); + window.open('http://www.instapaper.com/text?u='+encodeURIComponent(location.href)); + } + }, + 'vk': { + 'label': 'VK', + 'icon': 'fa fa-vk', + 'onClick': function(e) { + e.preventDefault(); + window.open('http://vkontakte.ru/share.php?url='+encodeURIComponent(location.href)); + } + } + }; + + + + gitbook.events.bind('start', function(e, config) { + var opts = config.sharing; + + // Create dropdown menu + var menu = $.map(opts.all, function(id) { + var site = SITES[id]; + + return { + text: site.label, + onClick: site.onClick + }; + }); + + // Create main button with dropdown + if (menu.length > 0) { + gitbook.toolbar.createButton({ + icon: 'fa fa-share-alt', + label: 'Share', + position: 'right', + dropdown: [menu] + }); + } + + // Direct actions to share + $.each(SITES, function(sideId, site) { + if (!opts[sideId]) return; + + gitbook.toolbar.createButton({ + icon: site.icon, + label: site.text, + position: 'right', + onClick: site.onClick + }); + }); + }); +}); diff --git a/gitbook/gitbook.js b/gitbook/gitbook.js new file mode 100644 index 0000000..10000c7 --- /dev/null +++ b/gitbook/gitbook.js @@ -0,0 +1,4 @@ +!function e(t,n,r){function o(s,a){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[s]={exports:{}};t[s][0].call(l.exports,function(e){var n=t[s][1][e];return o(n?n:e)},l,l.exports,e,t,n,r)}return n[s].exports}for(var i="function"==typeof require&&require,s=0;s0&&t-1 in e)}function o(e,t,n){return de.isFunction(t)?de.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?de.grep(e,function(e){return e===t!==n}):"string"!=typeof t?de.grep(e,function(e){return se.call(t,e)>-1!==n}):je.test(t)?de.filter(t,e,n):(t=de.filter(t,e),de.grep(e,function(e){return se.call(t,e)>-1!==n&&1===e.nodeType}))}function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function s(e){var t={};return de.each(e.match(qe)||[],function(e,n){t[n]=!0}),t}function a(e){return e}function u(e){throw e}function c(e,t,n){var r;try{e&&de.isFunction(r=e.promise)?r.call(e).done(t).fail(n):e&&de.isFunction(r=e.then)?r.call(e,t,n):t.call(void 0,e)}catch(e){n.call(void 0,e)}}function l(){te.removeEventListener("DOMContentLoaded",l),e.removeEventListener("load",l),de.ready()}function f(){this.expando=de.expando+f.uid++}function p(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Ie.test(e)?JSON.parse(e):e)}function h(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Pe,"-$&").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n=p(n)}catch(e){}Re.set(e,t,n)}else n=void 0;return n}function d(e,t,n,r){var o,i=1,s=20,a=r?function(){return r.cur()}:function(){return de.css(e,t,"")},u=a(),c=n&&n[3]||(de.cssNumber[t]?"":"px"),l=(de.cssNumber[t]||"px"!==c&&+u)&&$e.exec(de.css(e,t));if(l&&l[3]!==c){c=c||l[3],n=n||[],l=+u||1;do i=i||".5",l/=i,de.style(e,t,l+c);while(i!==(i=a()/u)&&1!==i&&--s)}return n&&(l=+l||+u||0,o=n[1]?l+(n[1]+1)*n[2]:+n[2],r&&(r.unit=c,r.start=l,r.end=o)),o}function g(e){var t,n=e.ownerDocument,r=e.nodeName,o=Ue[r];return o?o:(t=n.body.appendChild(n.createElement(r)),o=de.css(t,"display"),t.parentNode.removeChild(t),"none"===o&&(o="block"),Ue[r]=o,o)}function m(e,t){for(var n,r,o=[],i=0,s=e.length;i-1)o&&o.push(i);else if(c=de.contains(i.ownerDocument,i),s=v(f.appendChild(i),"script"),c&&y(s),n)for(l=0;i=s[l++];)Ve.test(i.type||"")&&n.push(i);return f}function b(){return!0}function w(){return!1}function T(){try{return te.activeElement}catch(e){}}function C(e,t,n,r,o,i){var s,a;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(a in t)C(e,a,n,r,t[a],i);return e}if(null==r&&null==o?(o=n,r=n=void 0):null==o&&("string"==typeof n?(o=r,r=void 0):(o=r,r=n,n=void 0)),o===!1)o=w;else if(!o)return e;return 1===i&&(s=o,o=function(e){return de().off(e),s.apply(this,arguments)},o.guid=s.guid||(s.guid=de.guid++)),e.each(function(){de.event.add(this,t,o,r,n)})}function j(e,t){return de.nodeName(e,"table")&&de.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e:e}function k(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function E(e){var t=rt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function S(e,t){var n,r,o,i,s,a,u,c;if(1===t.nodeType){if(Fe.hasData(e)&&(i=Fe.access(e),s=Fe.set(t,i),c=i.events)){delete s.handle,s.events={};for(o in c)for(n=0,r=c[o].length;n1&&"string"==typeof d&&!pe.checkClone&&nt.test(d))return e.each(function(n){var i=e.eq(n);g&&(t[0]=d.call(this,n,i.html())),A(i,t,r,o)});if(p&&(i=x(t,e[0].ownerDocument,!1,e,o),s=i.firstChild,1===i.childNodes.length&&(i=s),s||o)){for(a=de.map(v(i,"script"),k),u=a.length;f=0&&nC.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[$]=!0,e}function o(e){var t=L.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function i(e,t){for(var n=e.split("|"),r=n.length;r--;)C.attrHandle[n[r]]=t}function s(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function a(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return function(t){return"form"in t?t.parentNode&&t.disabled===!1?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&je(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var o,i=e([],n.length,t),s=i.length;s--;)n[o=i[s]]&&(n[o]=!(r[o]=n[o]))})})}function f(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function p(){}function h(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var o=e.length;o--;)if(!e[o](t,n,r))return!1;return!0}:e[0]}function m(e,n,r){for(var o=0,i=n.length;o-1&&(r[c]=!(s[c]=f))}}else x=v(x===s?x.splice(d,x.length):x),i?i(null,s,x,u):K.apply(s,x)})}function x(e){for(var t,n,r,o=e.length,i=C.relative[e[0].type],s=i||C.relative[" "],a=i?1:0,u=d(function(e){return e===t},s,!0),c=d(function(e){return ee(t,e)>-1},s,!0),l=[function(e,n,r){var o=!i&&(r||n!==A)||((t=n).nodeType?u(e,n,r):c(e,n,r));return t=null,o}];a1&&g(l),a>1&&h(e.slice(0,a-1).concat({value:" "===e[a-2].type?"*":""})).replace(ae,"$1"),n,a0,i=e.length>0,s=function(r,s,a,u,c){var l,f,p,h=0,d="0",g=r&&[],m=[],y=A,x=r||i&&C.find.TAG("*",c),b=B+=null==y?1:Math.random()||.1,w=x.length;for(c&&(A=s===L||s||c);d!==w&&null!=(l=x[d]);d++){if(i&&l){for(f=0,s||l.ownerDocument===L||(O(l),a=!F);p=e[f++];)if(p(l,s||L,a)){u.push(l);break}c&&(B=b)}o&&((l=!p&&l)&&h--,r&&g.push(l))}if(h+=d,o&&d!==h){for(f=0;p=n[f++];)p(g,m,s,a);if(r){if(h>0)for(;d--;)g[d]||m[d]||(m[d]=Q.call(u));m=v(m)}K.apply(u,m),c&&!r&&m.length>0&&h+n.length>1&&t.uniqueSort(u)}return c&&(B=b,A=y),g};return o?r(s):s}var w,T,C,j,k,E,S,N,A,q,D,O,L,H,F,R,I,P,M,$="sizzle"+1*new Date,W=e.document,B=0,_=0,U=n(),z=n(),X=n(),V=function(e,t){return e===t&&(D=!0),0},G={}.hasOwnProperty,Y=[],Q=Y.pop,J=Y.push,K=Y.push,Z=Y.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),le=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(ie),pe=new RegExp("^"+re+"$"),he={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+oe),PSEUDO:new RegExp("^"+ie),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},de=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,xe=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),be=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},we=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,Te=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},Ce=function(){O()},je=d(function(e){return e.disabled===!0&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{K.apply(Y=Z.call(W.childNodes),W.childNodes),Y[W.childNodes.length].nodeType}catch(e){K={apply:Y.length?function(e,t){J.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}T=t.support={},k=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},O=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:W;return r!==L&&9===r.nodeType&&r.documentElement?(L=r,H=L.documentElement,F=!k(L),W!==L&&(n=L.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Ce,!1):n.attachEvent&&n.attachEvent("onunload",Ce)),T.attributes=o(function(e){return e.className="i",!e.getAttribute("className")}),T.getElementsByTagName=o(function(e){return e.appendChild(L.createComment("")),!e.getElementsByTagName("*").length}),T.getElementsByClassName=me.test(L.getElementsByClassName),T.getById=o(function(e){return H.appendChild(e).id=$,!L.getElementsByName||!L.getElementsByName($).length}),T.getById?(C.filter.ID=function(e){var t=e.replace(xe,be);return function(e){return e.getAttribute("id")===t}},C.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n=t.getElementById(e);return n?[n]:[]}}):(C.filter.ID=function(e){var t=e.replace(xe,be);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},C.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&F){var n,r,o,i=t.getElementById(e);if(i){if(n=i.getAttributeNode("id"),n&&n.value===e)return[i];for(o=t.getElementsByName(e),r=0;i=o[r++];)if(n=i.getAttributeNode("id"),n&&n.value===e)return[i]}return[]}}),C.find.TAG=T.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):T.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],o=0,i=t.getElementsByTagName(e);if("*"===e){for(;n=i[o++];)1===n.nodeType&&r.push(n);return r}return i},C.find.CLASS=T.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&F)return t.getElementsByClassName(e)},I=[],R=[],(T.qsa=me.test(L.querySelectorAll))&&(o(function(e){H.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&R.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||R.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+$+"-]").length||R.push("~="),e.querySelectorAll(":checked").length||R.push(":checked"),e.querySelectorAll("a#"+$+"+*").length||R.push(".#.+[+~]")}),o(function(e){e.innerHTML="";var t=L.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&R.push("name"+ne+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&R.push(":enabled",":disabled"),H.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&R.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),R.push(",.*:")})),(T.matchesSelector=me.test(P=H.matches||H.webkitMatchesSelector||H.mozMatchesSelector||H.oMatchesSelector||H.msMatchesSelector))&&o(function(e){T.disconnectedMatch=P.call(e,"*"),P.call(e,"[s!='']:x"),I.push("!=",ie)}),R=R.length&&new RegExp(R.join("|")),I=I.length&&new RegExp(I.join("|")),t=me.test(H.compareDocumentPosition),M=t||me.test(H.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},V=t?function(e,t){if(e===t)return D=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!T.sortDetached&&t.compareDocumentPosition(e)===n?e===L||e.ownerDocument===W&&M(W,e)?-1:t===L||t.ownerDocument===W&&M(W,t)?1:q?ee(q,e)-ee(q,t):0:4&n?-1:1)}:function(e,t){if(e===t)return D=!0,0;var n,r=0,o=e.parentNode,i=t.parentNode,a=[e],u=[t];if(!o||!i)return e===L?-1:t===L?1:o?-1:i?1:q?ee(q,e)-ee(q,t):0;if(o===i)return s(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;a[r]===u[r];)r++;return r?s(a[r],u[r]):a[r]===W?-1:u[r]===W?1:0},L):L},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==L&&O(e),n=n.replace(le,"='$1']"),T.matchesSelector&&F&&!X[n+" "]&&(!I||!I.test(n))&&(!R||!R.test(n)))try{var r=P.call(e,n);if(r||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return t(n,L,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==L&&O(e),M(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==L&&O(e);var n=C.attrHandle[t.toLowerCase()],r=n&&G.call(C.attrHandle,t.toLowerCase())?n(e,t,!F):void 0;return void 0!==r?r:T.attributes||!F?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.escape=function(e){return(e+"").replace(we,Te)},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,o=0;if(D=!T.detectDuplicates,q=!T.sortStable&&e.slice(0),e.sort(V),D){for(;t=e[o++];)t===e[o]&&(r=n.push(o));for(;r--;)e.splice(n[r],1)}return q=null,e},j=t.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=j(e)}else if(3===o||4===o)return e.nodeValue}else for(;t=e[r++];)n+=j(t);return n},C=t.selectors={cacheLength:50,createPseudo:r,match:he,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xe,be),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,be),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return he.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=E(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(xe,be).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=U[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&U(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(o){var i=t.attr(o,e);return null==i?"!="===n:!n||(i+="","="===n?i===r:"!="===n?i!==r:"^="===n?r&&0===i.indexOf(r):"*="===n?r&&i.indexOf(r)>-1:"$="===n?r&&i.slice(-r.length)===r:"~="===n?(" "+i.replace(se," ")+" ").indexOf(r)>-1:"|="===n&&(i===r||i.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,o){var i="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===o?function(e){return!!e.parentNode}:function(t,n,u){var c,l,f,p,h,d,g=i!==s?"nextSibling":"previousSibling",m=t.parentNode,v=a&&t.nodeName.toLowerCase(),y=!u&&!a,x=!1;if(m){if(i){for(;g;){for(p=t;p=p[g];)if(a?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&y){for(p=m,f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],h=c[0]===B&&c[1],x=h&&c[2],p=h&&m.childNodes[h];p=++h&&p&&p[g]||(x=h=0)||d.pop();)if(1===p.nodeType&&++x&&p===t){l[e]=[B,h,x];break}}else if(y&&(p=t,f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),c=l[e]||[],h=c[0]===B&&c[1],x=h),x===!1)for(;(p=++h&&p&&p[g]||(x=h=0)||d.pop())&&((a?p.nodeName.toLowerCase()!==v:1!==p.nodeType)||!++x||(y&&(f=p[$]||(p[$]={}),l=f[p.uniqueID]||(f[p.uniqueID]={}),l[e]=[B,x]),p!==t)););return x-=o,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var o,i=C.pseudos[e]||C.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return i[$]?i(n):i.length>1?(o=[e,e,"",n],C.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,o=i(e,n),s=o.length;s--;)r=ee(e,o[s]),e[r]=!(t[r]=o[s])}):function(e){return i(e,0,o)}):i}},pseudos:{not:r(function(e){var t=[],n=[],o=S(e.replace(ae,"$1"));return o[$]?r(function(e,t,n,r){for(var i,s=o(e,null,r,[]),a=e.length;a--;)(i=s[a])&&(e[a]=!(t[a]=i))}):function(e,r,i){return t[0]=e,o(t,null,i,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){ +return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(xe,be),function(t){return(t.textContent||t.innerText||j(t)).indexOf(e)>-1}}),lang:r(function(e){return pe.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(xe,be).toLowerCase(),function(t){var n;do if(n=F?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===H},focus:function(e){return e===L.activeElement&&(!L.hasFocus||L.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:c(!1),disabled:c(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!C.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return de.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(s=i[0]).type&&9===t.nodeType&&F&&C.relative[i[1].type]){if(t=(C.find.ID(s.matches[0].replace(xe,be),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(i.shift().value.length)}for(o=he.needsContext.test(e)?0:i.length;o--&&(s=i[o],!C.relative[a=s.type]);)if((u=C.find[a])&&(r=u(s.matches[0].replace(xe,be),ye.test(i[0].type)&&f(t.parentNode)||t))){if(i.splice(o,1),e=r.length&&h(i),!e)return K.apply(n,r),n;break}}return(c||S(e,l))(r,t,!F,n,!t||ye.test(e)&&f(t.parentNode)||t),n},T.sortStable=$.split("").sort(V).join("")===$,T.detectDuplicates=!!D,O(),T.sortDetached=o(function(e){return 1&e.compareDocumentPosition(L.createElement("fieldset"))}),o(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||i("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),T.attributes&&o(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||i("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),o(function(e){return null==e.getAttribute("disabled")})||i(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);de.find=xe,de.expr=xe.selectors,de.expr[":"]=de.expr.pseudos,de.uniqueSort=de.unique=xe.uniqueSort,de.text=xe.getText,de.isXMLDoc=xe.isXML,de.contains=xe.contains,de.escapeSelector=xe.escape;var be=function(e,t,n){for(var r=[],o=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(o&&de(e).is(n))break;r.push(e)}return r},we=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},Te=de.expr.match.needsContext,Ce=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,je=/^.[^:#\[\.,]*$/;de.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?de.find.matchesSelector(r,e)?[r]:[]:de.find.matches(e,de.grep(t,function(e){return 1===e.nodeType}))},de.fn.extend({find:function(e){var t,n,r=this.length,o=this;if("string"!=typeof e)return this.pushStack(de(e).filter(function(){for(t=0;t1?de.uniqueSort(n):n},filter:function(e){return this.pushStack(o(this,e||[],!1))},not:function(e){return this.pushStack(o(this,e||[],!0))},is:function(e){return!!o(this,"string"==typeof e&&Te.test(e)?de(e):e||[],!1).length}});var ke,Ee=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,Se=de.fn.init=function(e,t,n){var r,o;if(!e)return this;if(n=n||ke,"string"==typeof e){if(r="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:Ee.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof de?t[0]:t,de.merge(this,de.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:te,!0)),Ce.test(r[1])&&de.isPlainObject(t))for(r in t)de.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return o=te.getElementById(r[2]),o&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):de.isFunction(e)?void 0!==n.ready?n.ready(e):e(de):de.makeArray(e,this)};Se.prototype=de.fn,ke=de(te);var Ne=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};de.fn.extend({has:function(e){var t=de(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&de.find.matchesSelector(n,e))){i.push(n);break}return this.pushStack(i.length>1?de.uniqueSort(i):i)},index:function(e){return e?"string"==typeof e?se.call(de(e),this[0]):se.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(de.uniqueSort(de.merge(this.get(),de(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),de.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return be(e,"parentNode")},parentsUntil:function(e,t,n){return be(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return be(e,"nextSibling")},prevAll:function(e){return be(e,"previousSibling")},nextUntil:function(e,t,n){return be(e,"nextSibling",n)},prevUntil:function(e,t,n){return be(e,"previousSibling",n)},siblings:function(e){return we((e.parentNode||{}).firstChild,e)},children:function(e){return we(e.firstChild)},contents:function(e){return e.contentDocument||de.merge([],e.childNodes)}},function(e,t){de.fn[e]=function(n,r){var o=de.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(o=de.filter(r,o)),this.length>1&&(Ae[e]||de.uniqueSort(o),Ne.test(e)&&o.reverse()),this.pushStack(o)}});var qe=/[^\x20\t\r\n\f]+/g;de.Callbacks=function(e){e="string"==typeof e?s(e):de.extend({},e);var t,n,r,o,i=[],a=[],u=-1,c=function(){for(o=e.once,r=t=!0;a.length;u=-1)for(n=a.shift();++u-1;)i.splice(n,1),n<=u&&u--}),this},has:function(e){return e?de.inArray(e,i)>-1:i.length>0},empty:function(){return i&&(i=[]),this},disable:function(){return o=a=[],i=n="",this},disabled:function(){return!i},lock:function(){return o=a=[],n||t||(i=n=""),this},locked:function(){return!!o},fireWith:function(e,n){return o||(n=n||[],n=[e,n.slice?n.slice():n],a.push(n),t||c()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l},de.extend({Deferred:function(t){var n=[["notify","progress",de.Callbacks("memory"),de.Callbacks("memory"),2],["resolve","done",de.Callbacks("once memory"),de.Callbacks("once memory"),0,"resolved"],["reject","fail",de.Callbacks("once memory"),de.Callbacks("once memory"),1,"rejected"]],r="pending",o={state:function(){return r},always:function(){return i.done(arguments).fail(arguments),this},catch:function(e){return o.then(null,e)},pipe:function(){var e=arguments;return de.Deferred(function(t){de.each(n,function(n,r){var o=de.isFunction(e[r[4]])&&e[r[4]];i[r[1]](function(){var e=o&&o.apply(this,arguments);e&&de.isFunction(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,o?[e]:arguments)})}),e=null}).promise()},then:function(t,r,o){function i(t,n,r,o){return function(){var c=this,l=arguments,f=function(){var e,f;if(!(t=s&&(r!==u&&(c=void 0,l=[e]),n.rejectWith(c,l))}};t?p():(de.Deferred.getStackHook&&(p.stackTrace=de.Deferred.getStackHook()),e.setTimeout(p))}}var s=0;return de.Deferred(function(e){n[0][3].add(i(0,e,de.isFunction(o)?o:a,e.notifyWith)),n[1][3].add(i(0,e,de.isFunction(t)?t:a)),n[2][3].add(i(0,e,de.isFunction(r)?r:u))}).promise()},promise:function(e){return null!=e?de.extend(e,o):o}},i={};return de.each(n,function(e,t){var s=t[2],a=t[5];o[t[1]]=s.add,a&&s.add(function(){r=a},n[3-e][2].disable,n[0][2].lock),s.add(t[3].fire),i[t[0]]=function(){return i[t[0]+"With"](this===i?void 0:this,arguments),this},i[t[0]+"With"]=s.fireWith}),o.promise(i),t&&t.call(i,i),i},when:function(e){var t=arguments.length,n=t,r=Array(n),o=re.call(arguments),i=de.Deferred(),s=function(e){return function(n){r[e]=this,o[e]=arguments.length>1?re.call(arguments):n,--t||i.resolveWith(r,o)}};if(t<=1&&(c(e,i.done(s(n)).resolve,i.reject),"pending"===i.state()||de.isFunction(o[n]&&o[n].then)))return i.then();for(;n--;)c(o[n],s(n),i.reject);return i.promise()}});var De=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;de.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&De.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},de.readyException=function(t){e.setTimeout(function(){throw t})};var Oe=de.Deferred();de.fn.ready=function(e){return Oe.then(e).catch(function(e){de.readyException(e)}),this},de.extend({isReady:!1,readyWait:1,holdReady:function(e){e?de.readyWait++:de.ready(!0)},ready:function(e){(e===!0?--de.readyWait:de.isReady)||(de.isReady=!0,e!==!0&&--de.readyWait>0||Oe.resolveWith(te,[de]))}}),de.ready.then=Oe.then,"complete"===te.readyState||"loading"!==te.readyState&&!te.documentElement.doScroll?e.setTimeout(de.ready):(te.addEventListener("DOMContentLoaded",l),e.addEventListener("load",l));var Le=function(e,t,n,r,o,i,s){var a=0,u=e.length,c=null==n;if("object"===de.type(n)){o=!0;for(a in n)Le(e,t,a,n[a],!0,i,s)}else if(void 0!==r&&(o=!0,de.isFunction(r)||(s=!0),c&&(s?(t.call(e,r),t=null):(c=t,t=function(e,t,n){return c.call(de(e),n)})),t))for(;a1,null,!0)},removeData:function(e){return this.each(function(){Re.remove(this,e)})}}),de.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Fe.get(e,t),n&&(!r||de.isArray(n)?r=Fe.access(e,t,de.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=de.queue(e,t),r=n.length,o=n.shift(),i=de._queueHooks(e,t),s=function(){de.dequeue(e,t)};"inprogress"===o&&(o=n.shift(),r--),o&&("fx"===t&&n.unshift("inprogress"),delete i.stop,o.call(e,s,i)),!r&&i&&i.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Fe.get(e,n)||Fe.access(e,n,{empty:de.Callbacks("once memory").add(function(){Fe.remove(e,[t+"queue",n])})})}}),de.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,Ve=/^$|\/(?:java|ecma)script/i,Ge={option:[1,""],thead:[1,"","
                          "],col:[2,"","
                          "],tr:[2,"","
                          "],td:[3,"","
                          "],_default:[0,"",""]};Ge.optgroup=Ge.option,Ge.tbody=Ge.tfoot=Ge.colgroup=Ge.caption=Ge.thead,Ge.th=Ge.td;var Ye=/<|&#?\w+;/;!function(){var e=te.createDocumentFragment(),t=e.appendChild(te.createElement("div")),n=te.createElement("input");n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),t.appendChild(n),pe.checkClone=t.cloneNode(!0).cloneNode(!0).lastChild.checked,t.innerHTML="",pe.noCloneChecked=!!t.cloneNode(!0).lastChild.defaultValue}();var Qe=te.documentElement,Je=/^key/,Ke=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ze=/^([^.]*)(?:\.(.+)|)/;de.event={global:{},add:function(e,t,n,r,o){var i,s,a,u,c,l,f,p,h,d,g,m=Fe.get(e);if(m)for(n.handler&&(i=n,n=i.handler,o=i.selector),o&&de.find.matchesSelector(Qe,o),n.guid||(n.guid=de.guid++),(u=m.events)||(u=m.events={}),(s=m.handle)||(s=m.handle=function(t){return"undefined"!=typeof de&&de.event.triggered!==t.type?de.event.dispatch.apply(e,arguments):void 0}),t=(t||"").match(qe)||[""],c=t.length;c--;)a=Ze.exec(t[c])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h&&(f=de.event.special[h]||{},h=(o?f.delegateType:f.bindType)||h,f=de.event.special[h]||{},l=de.extend({type:h,origType:g,data:r,handler:n,guid:n.guid,selector:o,needsContext:o&&de.expr.match.needsContext.test(o),namespace:d.join(".")},i),(p=u[h])||(p=u[h]=[],p.delegateCount=0,f.setup&&f.setup.call(e,r,d,s)!==!1||e.addEventListener&&e.addEventListener(h,s)),f.add&&(f.add.call(e,l),l.handler.guid||(l.handler.guid=n.guid)),o?p.splice(p.delegateCount++,0,l):p.push(l),de.event.global[h]=!0)},remove:function(e,t,n,r,o){var i,s,a,u,c,l,f,p,h,d,g,m=Fe.hasData(e)&&Fe.get(e);if(m&&(u=m.events)){for(t=(t||"").match(qe)||[""],c=t.length;c--;)if(a=Ze.exec(t[c])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){for(f=de.event.special[h]||{},h=(r?f.delegateType:f.bindType)||h,p=u[h]||[],a=a[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=i=p.length;i--;)l=p[i],!o&&g!==l.origType||n&&n.guid!==l.guid||a&&!a.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(p.splice(i,1),l.selector&&p.delegateCount--,f.remove&&f.remove.call(e,l));s&&!p.length&&(f.teardown&&f.teardown.call(e,d,m.handle)!==!1||de.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)de.event.remove(e,h+t[c],n,r,!0);de.isEmptyObject(u)&&Fe.remove(e,"handle events")}},dispatch:function(e){var t,n,r,o,i,s,a=de.event.fix(e),u=new Array(arguments.length),c=(Fe.get(this,"events")||{})[a.type]||[],l=de.event.special[a.type]||{};for(u[0]=a,t=1;t=1))for(;c!==this;c=c.parentNode||this)if(1===c.nodeType&&("click"!==e.type||c.disabled!==!0)){for(i=[],s={},n=0;n-1:de.find(o,this,null,[c]).length),s[o]&&i.push(r);i.length&&a.push({elem:c,handlers:i})}return c=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,tt=/\s*$/g;de.extend({htmlPrefilter:function(e){return e.replace(et,"<$1>")},clone:function(e,t,n){var r,o,i,s,a=e.cloneNode(!0),u=de.contains(e.ownerDocument,e);if(!(pe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||de.isXMLDoc(e)))for(s=v(a),i=v(e),r=0,o=i.length;r0&&y(s,!u&&v(e,"script")),a},cleanData:function(e){for(var t,n,r,o=de.event.special,i=0;void 0!==(n=e[i]);i++)if(He(n)){if(t=n[Fe.expando]){if(t.events)for(r in t.events)o[r]?de.event.remove(n,r):de.removeEvent(n,r,t.handle);n[Fe.expando]=void 0}n[Re.expando]&&(n[Re.expando]=void 0)}}}),de.fn.extend({detach:function(e){return q(this,e,!0)},remove:function(e){return q(this,e)},text:function(e){return Le(this,function(e){return void 0===e?de.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=j(this,e);t.appendChild(e)}})},prepend:function(){return A(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=j(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return A(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(de.cleanData(v(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return de.clone(this,e,t)})},html:function(e){return Le(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!tt.test(e)&&!Ge[(Xe.exec(e)||["",""])[1].toLowerCase()]){e=de.htmlPrefilter(e);try{for(;n1)}}),de.Tween=I,I.prototype={constructor:I,init:function(e,t,n,r,o,i){this.elem=e,this.prop=n,this.easing=o||de.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=i||(de.cssNumber[n]?"":"px")},cur:function(){var e=I.propHooks[this.prop];return e&&e.get?e.get(this):I.propHooks._default.get(this)},run:function(e){var t,n=I.propHooks[this.prop];return this.options.duration?this.pos=t=de.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):I.propHooks._default.set(this),this}},I.prototype.init.prototype=I.prototype,I.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=de.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){de.fx.step[e.prop]?de.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[de.cssProps[e.prop]]&&!de.cssHooks[e.prop]?e.elem[e.prop]=e.now:de.style(e.elem,e.prop,e.now+e.unit)}}},I.propHooks.scrollTop=I.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},de.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},de.fx=I.prototype.init,de.fx.step={};var ht,dt,gt=/^(?:toggle|show|hide)$/,mt=/queueHooks$/;de.Animation=de.extend(U,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,$e.exec(t),n),n}]},tweener:function(e,t){de.isFunction(e)?(t=e,e=["*"]):e=e.match(qe);for(var n,r=0,o=e.length;r1)},removeAttr:function(e){return this.each(function(){de.removeAttr(this,e)})}}),de.extend({attr:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return"undefined"==typeof e.getAttribute?de.prop(e,t,n):(1===i&&de.isXMLDoc(e)||(o=de.attrHooks[t.toLowerCase()]||(de.expr.match.bool.test(t)?vt:void 0)),void 0!==n?null===n?void de.removeAttr(e,t):o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:(e.setAttribute(t,n+""),n):o&&"get"in o&&null!==(r=o.get(e,t))?r:(r=de.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!pe.radioValue&&"radio"===t&&de.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,o=t&&t.match(qe);if(o&&1===e.nodeType)for(;n=o[r++];)e.removeAttribute(n)}}),vt={set:function(e,t,n){return t===!1?de.removeAttr(e,n):e.setAttribute(n,n),n}},de.each(de.expr.match.bool.source.match(/\w+/g),function(e,t){var n=yt[t]||de.find.attr;yt[t]=function(e,t,r){var o,i,s=t.toLowerCase();return r||(i=yt[s],yt[s]=o,o=null!=n(e,t,r)?s:null,yt[s]=i),o}});var xt=/^(?:input|select|textarea|button)$/i,bt=/^(?:a|area)$/i;de.fn.extend({prop:function(e,t){return Le(this,de.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[de.propFix[e]||e]})}}),de.extend({prop:function(e,t,n){var r,o,i=e.nodeType;if(3!==i&&8!==i&&2!==i)return 1===i&&de.isXMLDoc(e)||(t=de.propFix[t]||t,o=de.propHooks[t]),void 0!==n?o&&"set"in o&&void 0!==(r=o.set(e,n,t))?r:e[t]=n:o&&"get"in o&&null!==(r=o.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=de.find.attr(e,"tabindex");return t?parseInt(t,10):xt.test(e.nodeName)||bt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),pe.optSelected||(de.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),de.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){de.propFix[this.toLowerCase()]=this}),de.fn.extend({addClass:function(e){var t,n,r,o,i,s,a,u=0;if(de.isFunction(e))return this.each(function(t){de(this).addClass(e.call(this,t,X(this)))});if("string"==typeof e&&e)for(t=e.match(qe)||[];n=this[u++];)if(o=X(n),r=1===n.nodeType&&" "+z(o)+" "){for(s=0;i=t[s++];)r.indexOf(" "+i+" ")<0&&(r+=i+" ");a=z(r),o!==a&&n.setAttribute("class",a)}return this},removeClass:function(e){var t,n,r,o,i,s,a,u=0;if(de.isFunction(e))return this.each(function(t){de(this).removeClass(e.call(this,t,X(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(qe)||[];n=this[u++];)if(o=X(n),r=1===n.nodeType&&" "+z(o)+" "){for(s=0;i=t[s++];)for(;r.indexOf(" "+i+" ")>-1;)r=r.replace(" "+i+" "," ");a=z(r),o!==a&&n.setAttribute("class",a)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):de.isFunction(e)?this.each(function(n){de(this).toggleClass(e.call(this,n,X(this),t),t)}):this.each(function(){var t,r,o,i;if("string"===n)for(r=0,o=de(this),i=e.match(qe)||[];t=i[r++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||(t=X(this),t&&Fe.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||e===!1?"":Fe.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+z(X(n))+" ").indexOf(t)>-1)return!0;return!1}});var wt=/\r/g;de.fn.extend({val:function(e){var t,n,r,o=this[0];{if(arguments.length)return r=de.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=r?e.call(this,n,de(this).val()):e,null==o?o="":"number"==typeof o?o+="":de.isArray(o)&&(o=de.map(o,function(e){return null==e?"":e+""})),t=de.valHooks[this.type]||de.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,o,"value")||(this.value=o))});if(o)return t=de.valHooks[o.type]||de.valHooks[o.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(o,"value"))?n:(n=o.value,"string"==typeof n?n.replace(wt,""):null==n?"":n)}}}),de.extend({valHooks:{option:{get:function(e){var t=de.find.attr(e,"value");return null!=t?t:z(de.text(e))}},select:{get:function(e){var t,n,r,o=e.options,i=e.selectedIndex,s="select-one"===e.type,a=s?null:[],u=s?i+1:o.length;for(r=i<0?u:s?i:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),i}}}}),de.each(["radio","checkbox"],function(){de.valHooks[this]={set:function(e,t){if(de.isArray(t))return e.checked=de.inArray(de(e).val(),t)>-1}},pe.checkOn||(de.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Tt=/^(?:focusinfocus|focusoutblur)$/;de.extend(de.event,{trigger:function(t,n,r,o){var i,s,a,u,c,l,f,p=[r||te],h=ce.call(t,"type")?t.type:t,d=ce.call(t,"namespace")?t.namespace.split("."):[];if(s=a=r=r||te,3!==r.nodeType&&8!==r.nodeType&&!Tt.test(h+de.event.triggered)&&(h.indexOf(".")>-1&&(d=h.split("."),h=d.shift(),d.sort()),c=h.indexOf(":")<0&&"on"+h,t=t[de.expando]?t:new de.Event(h,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=d.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:de.makeArray(n,[t]),f=de.event.special[h]||{},o||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!o&&!f.noBubble&&!de.isWindow(r)){for(u=f.delegateType||h,Tt.test(u+h)||(s=s.parentNode);s;s=s.parentNode)p.push(s),a=s;a===(r.ownerDocument||te)&&p.push(a.defaultView||a.parentWindow||e)}for(i=0;(s=p[i++])&&!t.isPropagationStopped();)t.type=i>1?u:f.bindType||h,l=(Fe.get(s,"events")||{})[t.type]&&Fe.get(s,"handle"),l&&l.apply(s,n),l=c&&s[c],l&&l.apply&&He(s)&&(t.result=l.apply(s,n),t.result===!1&&t.preventDefault());return t.type=h,o||t.isDefaultPrevented()||f._default&&f._default.apply(p.pop(),n)!==!1||!He(r)||c&&de.isFunction(r[h])&&!de.isWindow(r)&&(a=r[c],a&&(r[c]=null),de.event.triggered=h,r[h](),de.event.triggered=void 0,a&&(r[c]=a)),t.result}},simulate:function(e,t,n){var r=de.extend(new de.Event,n,{type:e,isSimulated:!0});de.event.trigger(r,null,t)}}),de.fn.extend({trigger:function(e,t){return this.each(function(){de.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return de.event.trigger(e,t,n,!0)}}),de.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){de.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),de.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),pe.focusin="onfocusin"in e,pe.focusin||de.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){de.event.simulate(t,e.target,de.event.fix(e))};de.event.special[t]={setup:function(){var r=this.ownerDocument||this,o=Fe.access(r,t);o||r.addEventListener(e,n,!0),Fe.access(r,t,(o||0)+1)},teardown:function(){var r=this.ownerDocument||this,o=Fe.access(r,t)-1;o?Fe.access(r,t,o):(r.removeEventListener(e,n,!0),Fe.remove(r,t))}}});var Ct=e.location,jt=de.now(),kt=/\?/;de.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||de.error("Invalid XML: "+t),n};var Et=/\[\]$/,St=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;de.param=function(e,t){var n,r=[],o=function(e,t){var n=de.isFunction(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(de.isArray(e)||e.jquery&&!de.isPlainObject(e))de.each(e,function(){o(this.name,this.value)});else for(n in e)V(n,e[n],t,o);return r.join("&")},de.fn.extend({serialize:function(){return de.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=de.prop(this,"elements");return e?de.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!de(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!ze.test(e))}).map(function(e,t){var n=de(this).val();return null==n?null:de.isArray(n)?de.map(n,function(e){return{name:t.name,value:e.replace(St,"\r\n")}}):{name:t.name,value:n.replace(St,"\r\n")}}).get()}});var qt=/%20/g,Dt=/#.*$/,Ot=/([?&])_=[^&]*/,Lt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ht=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ft=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Pt={},Mt="*/".concat("*"),$t=te.createElement("a");$t.href=Ct.href,de.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Ht.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Mt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":de.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Q(Q(e,de.ajaxSettings),t):Q(de.ajaxSettings,e)},ajaxPrefilter:G(It),ajaxTransport:G(Pt),ajax:function(t,n){function r(t,n,r,a){var c,p,h,b,w,T=n;l||(l=!0,u&&e.clearTimeout(u),o=void 0,s=a||"",C.readyState=t>0?4:0,c=t>=200&&t<300||304===t,r&&(b=J(d,C,r)),b=K(d,b,C,c),c?(d.ifModified&&(w=C.getResponseHeader("Last-Modified"),w&&(de.lastModified[i]=w),w=C.getResponseHeader("etag"),w&&(de.etag[i]=w)),204===t||"HEAD"===d.type?T="nocontent":304===t?T="notmodified":(T=b.state,p=b.data,h=b.error,c=!h)):(h=T,!t&&T||(T="error",t<0&&(t=0))),C.status=t,C.statusText=(n||T)+"",c?v.resolveWith(g,[p,T,C]):v.rejectWith(g,[C,T,h]),C.statusCode(x),x=void 0,f&&m.trigger(c?"ajaxSuccess":"ajaxError",[C,d,c?p:h]),y.fireWith(g,[C,T]),f&&(m.trigger("ajaxComplete",[C,d]),--de.active||de.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var o,i,s,a,u,c,l,f,p,h,d=de.ajaxSetup({},n),g=d.context||d,m=d.context&&(g.nodeType||g.jquery)?de(g):de.event,v=de.Deferred(),y=de.Callbacks("once memory"),x=d.statusCode||{},b={},w={},T="canceled",C={readyState:0,getResponseHeader:function(e){var t;if(l){if(!a)for(a={};t=Lt.exec(s);)a[t[1].toLowerCase()]=t[2];t=a[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return l?s:null},setRequestHeader:function(e,t){return null==l&&(e=w[e.toLowerCase()]=w[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==l&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(l)C.always(e[C.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||T;return o&&o.abort(t),r(0,t),this}};if(v.promise(C),d.url=((t||d.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=(d.dataType||"*").toLowerCase().match(qe)||[""],null==d.crossDomain){c=te.createElement("a");try{c.href=d.url,c.href=c.href,d.crossDomain=$t.protocol+"//"+$t.host!=c.protocol+"//"+c.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&"string"!=typeof d.data&&(d.data=de.param(d.data,d.traditional)),Y(It,d,n,C),l)return C;f=de.event&&d.global,f&&0===de.active++&&de.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Ft.test(d.type),i=d.url.replace(Dt,""),d.hasContent?d.data&&d.processData&&0===(d.contentType||"").indexOf("application/x-www-form-urlencoded")&&(d.data=d.data.replace(qt,"+")):(h=d.url.slice(i.length),d.data&&(i+=(kt.test(i)?"&":"?")+d.data,delete d.data),d.cache===!1&&(i=i.replace(Ot,"$1"),h=(kt.test(i)?"&":"?")+"_="+jt++ +h),d.url=i+h),d.ifModified&&(de.lastModified[i]&&C.setRequestHeader("If-Modified-Since",de.lastModified[i]),de.etag[i]&&C.setRequestHeader("If-None-Match",de.etag[i])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&C.setRequestHeader("Content-Type",d.contentType),C.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Mt+"; q=0.01":""):d.accepts["*"]);for(p in d.headers)C.setRequestHeader(p,d.headers[p]);if(d.beforeSend&&(d.beforeSend.call(g,C,d)===!1||l))return C.abort();if(T="abort",y.add(d.complete),C.done(d.success),C.fail(d.error),o=Y(Pt,d,n,C)){if(C.readyState=1,f&&m.trigger("ajaxSend",[C,d]),l)return C;d.async&&d.timeout>0&&(u=e.setTimeout(function(){C.abort("timeout")},d.timeout));try{l=!1,o.send(b,r)}catch(e){if(l)throw e;r(-1,e)}}else r(-1,"No Transport");return C},getJSON:function(e,t,n){return de.get(e,t,n,"json")},getScript:function(e,t){return de.get(e,void 0,t,"script")}}),de.each(["get","post"],function(e,t){de[t]=function(e,n,r,o){return de.isFunction(n)&&(o=o||r,r=n,n=void 0),de.ajax(de.extend({url:e,type:t,dataType:o,data:n,success:r},de.isPlainObject(e)&&e))}}),de._evalUrl=function(e){return de.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,throws:!0})},de.fn.extend({wrapAll:function(e){var t;return this[0]&&(de.isFunction(e)&&(e=e.call(this[0])),t=de(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return de.isFunction(e)?this.each(function(t){de(this).wrapInner(e.call(this,t))}):this.each(function(){var t=de(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=de.isFunction(e);return this.each(function(n){de(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){de(this).replaceWith(this.childNodes)}),this}}),de.expr.pseudos.hidden=function(e){return!de.expr.pseudos.visible(e)},de.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},de.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Wt={0:200,1223:204},Bt=de.ajaxSettings.xhr();pe.cors=!!Bt&&"withCredentials"in Bt,pe.ajax=Bt=!!Bt,de.ajaxTransport(function(t){var n,r;if(pe.cors||Bt&&!t.crossDomain)return{send:function(o,i){var s,a=t.xhr();if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(s in t.xhrFields)a[s]=t.xhrFields[s];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||o["X-Requested-With"]||(o["X-Requested-With"]="XMLHttpRequest");for(s in o)a.setRequestHeader(s,o[s]);n=function(e){return function(){n&&(n=r=a.onload=a.onerror=a.onabort=a.onreadystatechange=null,"abort"===e?a.abort():"error"===e?"number"!=typeof a.status?i(0,"error"):i(a.status,a.statusText):i(Wt[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=n(),r=a.onerror=n("error"),void 0!==a.onabort?a.onabort=r:a.onreadystatechange=function(){4===a.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{a.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),de.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),de.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return de.globalEval(e),e}}}),de.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),de.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,o){t=de(" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/package.json b/package.json deleted file mode 100644 index 7b798f2..0000000 --- a/package.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "name": "redux-auth-wrapper", - "version": "3.0.0", - "main": "index.js", - "description": "A utility library for handling authentication and authorization for redux and react-router", - "scripts": { - "build": "mkdirp lib && babel ./src --out-dir ./lib", - "build:clean": "rimraf ./lib", - "build:copyFiles": "cp -rf package.json LICENSE.txt README.md lib/.", - "dist": "cd lib && yarn publish", - "dist:prepare": "yarn run build:clean && yarn run build && yarn run build:copyFiles", - "lint": "eslint src test examples", - "test": "mocha --compilers js:babel-core/register --recursive --require test/init.js test/authWrapper-test.js", - "test:cov": "babel-node --max-old-space-size=4076 $(yarn bin)/babel-istanbul cover $(yarn bin)/_mocha -- --require test/init.js test/authWrapper-test.js", - "test:watch": "mocha --compilers js:babel-core/register --recursive --require test/init.js -w test/authWrapper-test.js", - "docs:clean": "rimraf _book", - "docs:prepare": "gitbook install", - "docs:build": "yarn run docs:prepare && gitbook build", - "docs:watch": "yarn run docs:prepare && gitbook serve", - "docs:publish": "yarn run docs:clean && yarn run docs:build && cp README.md _book && cd _book && git init && git commit --allow-empty -m 'update book' && git checkout -b gh-pages && touch .nojekyll && git add . && git commit -am 'update book' && git push git@github.com:mjrussell/redux-auth-wrapper gh-pages --force" - }, - "repository": { - "type": "git", - "url": "https://github.com/mjrussell/redux-auth-wrapper.git" - }, - "authors": [ - "Matthew Russell" - ], - "license": "MIT", - "devDependencies": { - "babel-cli": "6.26.0", - "babel-core": "6.26.3", - "babel-eslint": "10.0.3", - "babel-istanbul": "0.12.2", - "babel-plugin-transform-decorators-legacy": "1.3.5", - "babel-polyfill": "6.26.0", - "babel-preset-es2015": "6.24.1", - "babel-preset-react": "6.24.1", - "babel-preset-stage-0": "6.24.1", - "chai": "4.2.0", - "coveralls": "3.0.9", - "enzyme": "3.11.0", - "enzyme-adapter-react-16": "1.15.2", - "eslint": "6.8.0", - "eslint-plugin-react": "7.17.0", - "expect": "24.9.0", - "gitbook-cli": "2.3.2", - "jsdom": "15.2.1", - "lodash": "4.17.21", - "mkdirp": "0.5.1", - "mocha": "6.2.2", - "prop-types": "^15.7.2", - "react": "16.12.0", - "react-dom": "16.12.0", - "react-redux": "7.1.3", - "redux": "4.0.5", - "rimraf": "3.0.0", - "sinon": "8.0.2" - }, - "dependencies": { - "hoist-non-react-statics": "^3.3.0", - "invariant": "^2.2.4", - "lodash.isempty": "^4.4.0", - "query-string": "^6.9.0" - } -} diff --git a/runTests.sh b/runTests.sh deleted file mode 100755 index b2e9ebc..0000000 --- a/runTests.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -rm -rf node_modules/react-router* -rm -rf node_modules/history - -if [ "$REACT_ROUTER_VERSION" = "3" ]; then - yarn add react-router@3.2.5 - yarn add react-router-redux@4.0.8 - yarn run test:cov test/rrv3-test.js -elif [ "$REACT_ROUTER_VERSION" = "4" ]; then - yarn add react-router@5.1.2 - yarn add history@4.7.2 - yarn add connected-react-router@6.6.1 - yarn run test:cov test/rrv4-test.js -fi diff --git a/search_index.json b/search_index.json new file mode 100644 index 0000000..cc0c975 --- /dev/null +++ b/search_index.json @@ -0,0 +1 @@ +{"index":{"version":"0.5.12","fields":[{"name":"title","boost":10},{"name":"keywords","boost":15},{"name":"body","boost":1}],"ref":"url","documentStore":{"store":{"./":["+","1.0","1.x","1.x.","1.x?","16.3.","2","2,","2.0","2.x","3","3.x","4/5",">=","api","applications.","ask","auth","authent","author","before.","big","both","break","brows","changes.","channel.","check","close","come","components!","connect","decoupl","detail","document","documentation,","exampl","extern","first","flexibl","get","gitter","guid","handl","have","here.","https://mjrussell.github.io/redux","increas","instal","intern","introduc","issu","issue!","issues,","jwt","librari","look","massiv","migrat","more","never","npm","open","out","pleas","problem.","provid","question","react","read","readm","redux","redux.","replac","rewrite!","router","same","save","search","section","see","start","still","submit","support","test","troubl","trouble?","troubleshoot","updat","us","util","v2:","v5","version","wrapper","wrapper,","you'v"],"docs/Getting-Started/Overview.html":["\"same\"","'./component/mycomponent.js'","(","(es6):","(es7):","(even","(react",")",",","...","/>","3","3):","4","=","@authwrapp","abramov'","ad","advic","again,","altern","anoth","appli","are,","auth","authwrapper(foo))","authwrapper(mycomponent)","authwrapper,","below,","blog","bug","caus","cb(null,","check","class","code.","compon","components.","config","consid","const","creat","dan","decoupl","default","directli","document.getelementbyid('mount')","easi","examples,","exist","export","extend","extrem","failur","file","file:","follow","function","get","getcompon","great","have.","hide","higher","hoc","however,","import","important,","insid","keep","logic","loops.","make","mounting/unmount","myauthcompon","mycompon","myparentcompon","nativ","nest","new","on","order","otherwis","out","outsid","over","overview","perform","permiss","place.","pleas","post:","power","prevent","problem","proper","react","reactdom.render(","reactdom.render:","read","redux","render","render()","render:","return","rout","router","safe","separ","skip","start","subtl","take","them,","tool","tutori","tutorials.","understand.","unfamiliar","us","user","userisauthenticated(mycomponent)","wrap","wrapper","wrapper).","{","{routes}","}","}}"],"docs/Getting-Started/ReactRouter3.html":["!==","'/landing',","'/login',","'react","'redux","'userisauthenticated'","'userisauthenticated',","'userisnotauthenticated'","(/landing).","(not","(null).","(ssr)","(state,","(there","//","/login?redirect=%2fprofil","/profile,","/profile.","3","3,","=","=>","access","action","ad","add","additionally,","allow","allowredirectback:","alreadi","anim","anoth","api","app","appear","appli","auth","authent","authenticatedselector:","authenticatingcompon","authenticatingcomponent:","authenticatingselector","authenticatingselector:","authentication/author","away","back","base","both","brows","build","case,","certain","chang","check","client.","common","compon","component,","config","connectedreduxredirect","connectedreduxredirect({","connectedrouterredirect","connectedrouterredirect({","const","contain","creator","credenti","current","data","decid","definition.","details.","determin","directli","dispatch","display","displayed.","documentation.","done","easili","easily:","exampl","fail","false,","first","follow","glance,","great,","half","helper:","here","higher","history/rout","hoc","however,","however.","import","in,","in.","instead","instead,","integr","interact","know","land","load","loadingspinner,","locat","locationhelp","locationhelper.getredirectqueryparam(ownprops)","locationhelperbuild","locationhelperbuilder({})","log","login","luckili","mani","method.","more","name","navig","need","next","nice","none","note","notic","null,","null:","object","object.","object:","occurs:","on","one,","onent","order","otherwise:","out","ownprops)","page","page,","param","paramet","part","pass","perform","places,","possible!)","prevent","problem","profil","props.","protect","protect.","queri","react","recheck","redirect","redirectact","redirectaction.","redirectaction:","redirectpath:","redux","redux'","render","requir","return","rout","route.","router","router:","routeract","routeractions.replace,","routing,","secur","see","send","server","side","situations.","solve:","sort","specifi","specified,","state","state.us","state.user.data","state.user.data.","state.user.isloading,","step","store","store.","swap","this,","trigger","true","true,","unnecessari","url","us","user","user'","userisauthent","userisnotauthent","valid","want","we'v","withrout","withrouter(userisnotauthenticated(login))","work","workarounds)","wrapper","wrapper.","wrapper/history3/locationhelper'","wrapper/history3/redirect'","wrapperdisplayname:","{","||","}","})"],"docs/Getting-Started/ReactRouter4.html":["!==","'/landing',","'/login',","'connect","'redux","'userisauthenticated'","'userisauthenticated',","'userisnotauthenticated'","(/landing).","(null).","(state,","//","/login?redirect=%2fprofil","/profile,","/profile.","3","3.x","4","4,","4.","4/5","5","5.","=","===","=>","access","action","ad","add","additionally,","allow","allowredirectback:","alreadi","anim","anoth","api","app","appli","auth","authenticatedselector:","authenticatingcompon","authenticatingcomponent:","authenticatingselector","authenticatingselector:","away","back","base","both","brows","build","case,","chang","changes.","check","client.","compat","compon","component,","components!","config","connectedreduxredirect","connectedreduxredirect({","connectedrouterredirect","connectedrouterredirect({","const","contain","creator","credenti","cycl","data","data,","definition.","details.","determin","directli","dispatch","display","displayed.","documentation.","done","easili","easily:","exampl","fail","false,","favor","few","first","follow","fulli","guid","half","helper:","higher","history/rout","hoc","however.","import","in,","in.","insid","instead","integr","interact","know","land","let'","life","load","loadingspinn","locat","locationhelp","locationhelper.getredirectqueryparam(ownprops)","locationhelperbuild","locationhelperbuilder({})","log","logic","login","luckili","mainli","mani","methods.","more","name","navig","need","next","nice","none","note","note:","notic","null,","null:","object","object.","object:","occurs:","on","onchang","one,","onent","order","otherwise:","out","ownprops)","page","page,","param","paramet","part","pass","perform","places,","prevent","profil","props.","protect.","queri","react","redirect","redirectact","redirectaction.","redirectaction:","redirectpath:","redux","refer","remov","render","replac","replace,","requir","return","rout","route.","router","router'","router:","routing,","same","secur","see","selector","send","show","similar","sort","specifi","specified,","state","state.us","state.user.data","state.user.isloading,","step","swap","this,","those","trigger","true","true,","url","us","user","user'","userisauthent","userisnotauthent","valid","veri","want","we'v","withrout","withrouter(userisnotauthenticated(login))","work","wrapper","wrapper.","wrapper/history4/locationhelper'","wrapper/history4/redirect'","wrapperdisplayname:","{","||","}","})"],"docs/Getting-Started/ReactNative.html":["auth","doc","exampl","help","improv","nativ","native?","pleas","pull","react","redirect","redux","request!","submit","us","wrapper"],"docs/Getting-Started/HidingAlternate.html":["!==","&&","'adminorelse',","'adminorhomelink',","'redux","'visibleonlyadmin',","()","(component,","...","//","=","=>","access","addit","admin","adminonlylink","adminorels","alreadi","altern","anoth","appli","application,","application.","auth","authenticatedselector","authenticatedselector:","authwrapp","authwrapper({","authwrapper.","automat","call","class","code:","common","compon","component,","connect","connect,","connectedauthwrapp","connectedauthwrapper({","const","control","createclass","dashboard","depend","differ","display","don't","dont","easi","easili","element","exampl","extend","extra","failurecompon","failurecomponent)","failurecomponent:","false,","false.","flexibl","function","here","hide","hoc","hoc.","home","import","link","make","more","mycompon","non","null","overhead","page","parent.","pass","permissions.","prop","properti","provid","redux","regular","render","render()","rendered.","requir","return","section","section)","selector","show","simpli","simplic","state","state.","state.us","state.user.isadmin,","throughout","tradit","true,","un","unconnect","us","user","user'","user.","version.","via","visibleonlyadmin","visibleonlyadmin(()","want","wrap","wrapper","wrapper/authwrapper'","wrapper/connectedauthwrapper'","wrapperdisplayname:","you,","{","}","})","})(component)"],"docs/Getting-Started/NestingWrappers.html":["!==","'/app',","'/login',","'bob'","'redux'","'userisadmin',","'userisauthenticated'","'userisonlybob',","(assum","(composed)","//","/admin","/app","/login","=","===","=>","abov","accident","addit","admin","admin.","administrator.","allowredirectback.","allowredirectback:","anoth","appli","apply!","aren't","attent","auth","auth.","authenticated,","authenticatedselector:","author","authwrapp","authwrapper({","bob:","both","button","chain","check","check).","checks,","compon","component,","component:","compos","compose(userisauthenticated,","connectedrouterredirect({","consid","const","constraint","creat","differ","display","don't","easili","end","especi","example,","fals","first","first,","following:","functions,","happen","higher","hoc","hocs,","import","instead","log","name","nest","nesting,","now","null,","onc","onlybob","onlybob(mybutton)","onlybobbutton","order","order.","otherwise,","pay","prevent","protect","provid","recompose:","redirect","redirectpath","redirectpath:","redux,","result","secur","sent","skip","state","state.us","state.user.firstnam","state.user.isadmin,","such","they'v","think","time.","togeth","together.","up","us","user","userisadmin","userisadmin)","userisadminchain","userisauthent","want","weren't","wrapper","wrapperdisplayname:","wrong","{","}","})"],"docs/Migrating.html":["!==","&&","'/login',","'adminorelse',","'redux","'userisauthenticated'","'visibleonlyadmin',","(3","(component,","(null)","(or","//","/login","1.x","2.x","2/3.","4","4)","=","=>","additionally,","admin","adminonlylink","adminorels","adopt","allow","altern","apis.","appli","auth","authdata","authenticatedselector","authenticatedselector,","authenticatedselector:","authenticatingcompon","authenticatingcomponent:","authenticatingselector,","authenticatingselector:","authselector","authselector.","authselector:","authwrapper({","besid","block","break","build","chang","child","class","combin","come","complain","compon","components,","components.","compos","connect","connectedauthwrapp","connectedauthwrapper({","connectedreduxredirect","connectedreduxredirect({","connectedrouterredirect","const","creat","createclass","dashboard","data,","default","design","detail","develop","differ","directly).","disabl","display","down","even","export","failur","failurecompon","failurecomponent)","failurecomponent,","failurecomponent.","failurecomponent:","failureredirectpath","fals","first","following:","function","handl","helper","helper,","hide","histori","history3","history4","import","instead.","integr","largest","level.","loading,","loadingcompon","loadingcomponent:","longer","look","lot","lower","made","main","mani","mapprop","mapprops.","migrat","miss","more","motiv","need","note:","noth","now","now,","null","null,","numer","option","pass","perform","pieces.","plan","practic","predic","predicate:","prevent","previously:","project","prop","properti","provid","quickli","react","realli","recompose.","redirect","redirectaction,","redirectaction:","redirection,","redirectpath","redirectpath:","redux","redux.","regular","remov","renam","render","return","router","router,","router.","routeractions.replace,","routers.","routing.","section)","see","sens","show","simpl","simplic","singl","small","small,","special","specifi","split","start","state","state.us","state.user,","state.user.data","state.user.data,","state.user.isadmin,","state.user.isloading,","still","such","support","then,","therefore,","they'v","those","two","unforeseen","upgrad","us","used.","user","user.isadmin,","userauthwrapp","userauthwrapper({","userisauthent","util","v1","v1.x","v1.x:","v2.x","v2.x:","valu","veri","version","visibleonlyadmin","visibleonlyadmin(()","way","without","work","wrapper","wrapper'","wrapper,","wrapper/connectedauthwrapper'","wrapper/history3/redirect'","wrapperdisplaynam","wrapperdisplayname:","{","}","})","})(component)"],"docs/Troubleshooting.html":["!==","&&","'/login',","'adminorhomelink',","'react","'replace'","(","()","(see",")",".","=","=>","admin","adminonlylink","also,","appli","auth","authenticatedselector:","authwrapper({","be","builders,","cases,","check","child","class","common","compon","component,","component.","component:","configur","connectedrouterredirect","connectedrouterredirect(mycomponent)","connectedrouterredirect({","const","correct:","details).","directli","document","down","elsewher","extend","failurecomponent:","first","follow","have","helper","higher","histori","hoc","home","import","incorrect:","instanc","instanti","issu","issues.","it:","librari","locat","location.","make","mean","more","mycompon","new","null","object","object.","order","out","pass","pleas","proper","properti","protectedcompon","react","read","redirect","redirectpath:","redux","rememb","render","render()","replac","requir","result","return","right","router';","router.","section","section)","shouldn't","solv","state","state.us","state.user.data.","state.user.isadmin,","sure","troubl","troubleshoot","typeerror:","uncaught","undefin","undefined.","us","userisauthent","userisauthenticated(mycomponent)","visibleonlyadmin","visibleonlyadmin(()","without","withrout","withrouter(userisauthenticated(mycomponent))","wrap","wrapper","wrapper?","wrapperdisplayname:","wrappers.","you'v","{","{adminonlylink}","}","})"],"docs/API.html":["'redux","(location:","(nextstate:","(props:","(react","(state:","(store:","3/histori","4/histori",":","=>","?","?allowredirectback:","?authenticatingcomponent:","?authenticatingselector:","?failurecomponent:","?locationselector:","?redirectqueryparamname:","?wrapperdisplayname:","allowredirectback:","api","appli","auth","authenticatedselector:","authwrapp","authwrapper({","begin","boolean","boolean,","booleans.","both","compon","connectedauthwrapp","connectedauthwrapper({","connectedreduxredirect","connectedreduxredirect({","connectedrouterredirect","connectedrouterredirect({","createonent","createonenter({","createredirectloc:","default","document","false.","function","getredirectqueryparam:","helper","higherordercompon","hoc","import","isauthent","isauthenticating,","locationhelp","locationhelper:","locationhelperbuild","locationhelperbuilder({","locationobject","locationobject,","name","nextstate:","object","object)","object,","object:","option","out","ownprops:","paramet","params.","progress!","prop","pull","queri","reactclass","reactfunctionalcompon","read","redirect","redirectaction:","redirectpath","redirectpath:","reduxaction,","replace:","return","router","string","string)","string,","take","type:","us","v3)","v4)","void))","wrapper","wrapper/authwrapper'","wrapper/connectedauthwrapper'","wrapper/history3/locationhelper'","wrapper/history3/redirect'","wrapper/history4/locationhelper'","wrapper/history4/redirect'","{","|","}","})","}):"],"docs/AdvancedUsage/OtherRouters.html":["document","help","improv","integr","pull","request!","router","submit"],"docs/AdvancedUsage/ReactRouter3.html":["!==","'../src/history3/redirect'","'home',","'unprotected',","(","(!redirected)","(...args)","(...listofonenters)","(fn)","(if","(nextstate,","(store)","(store,","(todo",");","...prop","//","//thi","3","=","===","=>","`onenter`","`replace`","`replace`.","advanc","app","appli","approach","argument","auth","authent","authenticatedselector,","authenticatedselector:","authenticatingselector,","befor","call","case","chain","children","children,","client","cloneel","compon","connect","connectedreduxredirect({","const","createonent","createonenter({","differ","down","dure","each","example)","execut","failureredirectpath","false,","false;","first","first,","fn(store,","function","getrout","go","hook","html.","implement","import","instead","left","listofonenters.foreach((onenter)","multipl","name","need","nest","nextstat","nextstate,","note","null,","on","onent","onenter(store,","onenter,","onenter.","onenteradmin","onenterauth","onenterchain","parent","paths,","prop.","props));","props.","protect","provid","react","react.cloneelement(children,","receiv","redirect","redirectpath:","redux","render","replace(...args);","replace)","replacestate)","replacestate);","requir","return","right.","rout","router","router'","router3","second","selector","send","server","side","ssr","state","state.us","state.user.isadmin","stop","such","thing","times.","true;","us","usag","user","userisadmin","userisauthent","userisauthenticated(({","using)","variation,","want","without","wrap","wrappedreplac","wrappedreplace);","wrapper","wrapper.","wrappers,","{","}","})","});","};"],"docs/AdvancedUsage/Redux.html":["!==","&&","'./notificationactions';","'/app',","'react","'redux","'sorry,","'userisadmin'","(dispatch)","(newloc)","+","//","/app","3","=","=>","access","action","add","addit","addnotif","admin","administrator'","advanc","allowredirectback:","auth","authenticatedselector:","authorization,","be","browserhistori","browserhistory.replace(newloc);","chain","connectedreduxredirect","connectedreduxredirect({","const","depend","dispatch","dispatch(addnotification({","dispatch(replace(newloc));","display","doesn't","equival","exampl","export","extra","false,","follow","histori","import","make","messag","message:","middlewar","middleware.","non","note:","notif","null","occurs.","on","paramet","protect","react","redirect","redirectact","redirectaction:","redirectpath:","redux","redux';","replac","resource.","rout","router","router';","router.","singleton","slightli","solut","state","state.us","state.user.isadmin,","store'","sure","this,","thunk","us","usag","user","userisadmin","want","work","wrapper","wrapper/history3/redirect'","wrapperdisplayname:","{","}","})","}));","},"]},"length":13},"tokenStore":{"root":{"1":{"6":{"docs":{},".":{"3":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}},"docs":{}}},"docs":{},".":{"0":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}},"docs":{},"x":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},".":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}},"?":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}}},"2":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}},",":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}},".":{"0":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}},"docs":{},"x":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.009029345372460496}}}},"/":{"3":{"docs":{},".":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}},"docs":{}}},"3":{"docs":{"./":{"ref":"./","tf":0.013245033112582781},"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":3.3398409255242223},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},".":{"docs":{},"x":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}},")":{"docs":{},":":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247}}},"/":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}}}}}}},"4":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":3.3376344086021503},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},"/":{"5":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}}}}}},",":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},".":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},")":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}},"5":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}},".":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}},"docs":{},"+":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}},">":{"docs":{},"=":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}},"a":{"docs":{},"p":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/API.html":{"ref":"docs/API.html","tf":10.004264392324094}},"s":{"docs":{},".":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}},"p":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},"l":{"docs":{},"i":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.03896103896103896},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.015810276679841896},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.029288702928870293},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}},",":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}},".":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}}}}},"y":{"docs":{},"!":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}},"r":{"docs":{},"o":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}},"s":{"docs":{},"k":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.046357615894039736},"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.019522776572668113},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.015053763440860216},"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":0.058823529411764705},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.019762845849802372},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.029345372460496615},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.012552301255230125},"docs/API.html":{"ref":"docs/API.html","tf":0.019189765458422176},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.013245033112582781},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.006772009029345372}},":":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.008676789587852495},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.008602150537634409},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.015625},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.006772009029345372},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.016736401673640166},"docs/API.html":{"ref":"docs/API.html","tf":0.01279317697228145},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.02158273381294964},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}}},",":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.015625}}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.008676789587852495},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.008602150537634409},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},":":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064}},":":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"/":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"r":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.013245033112582781},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}},"i":{"docs":{},"z":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.007905138339920948},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"f":{"docs":{},"o":{"docs":{},"o":{"docs":{},")":{"docs":{},")":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}},"m":{"docs":{},"y":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},")":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658}}}}}}}}}}}}}},"{":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}},",":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}},".":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}}}}},".":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}},".":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}},":":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.006772009029345372}}}}}}}}}}}},"o":{"docs":{},"m":{"docs":{},"a":{"docs":{},"t":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}}},"b":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"o":{"docs":{},"v":{"docs":{},"'":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}}},"o":{"docs":{},"v":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}},"d":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}},"v":{"docs":{},"i":{"docs":{},"c":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":5.005347593582887}}}}}},"d":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"i":{"docs":{},"t":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"y":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}}}}},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"i":{"docs":{},"f":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}}}},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.023715415019762844},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.015625},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.011286681715575621},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0213903743315508}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}}}},".":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},".":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}},"'":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}}}}}}}}}},"o":{"docs":{},"p":{"docs":{},"t":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}},"g":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},",":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}},"l":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":3.341238471673254},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.011286681715575621}}}}}},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},":":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}},".":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{},"i":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.008602150537634409},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}},"s":{"docs":{},"o":{"docs":{},",":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"h":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.007905138339920948},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}},"i":{"docs":{},"m":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}},"r":{"docs":{},"e":{"docs":{},",":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}},"g":{"docs":{},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}},"c":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}},"i":{"docs":{},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.008602150537634409},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0213903743315508}}}}}}},"w":{"docs":{},"a":{"docs":{},"y":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}},"b":{"docs":{},"e":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},"e":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}}}},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},",":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}},"s":{"docs":{},"i":{"docs":{},"d":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}},"i":{"docs":{},"g":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}},"o":{"docs":{},"t":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}},"b":{"docs":{},":":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}},"o":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"n":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.014925373134328358}},",":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.03624733475479744}}},"s":{"docs":{},".":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"k":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}},"o":{"docs":{},"w":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}},"e":{"docs":{},"r":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}},"y":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},")":{"docs":{},";":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}},"c":{"docs":{},"k":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}},"u":{"docs":{},"g":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},",":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}}}},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204}}}},"s":{"docs":{},"e":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204}}}}}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.006772009029345372}},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}},"n":{"docs":{},"e":{"docs":{},"l":{"docs":{},".":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}}}},"i":{"docs":{},"n":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.010416666666666666},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{"./":{"ref":"./","tf":0.013245033112582781},"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.013015184381778741},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.010752688172043012},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.03125},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}},")":{"docs":{},".":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}},"s":{"docs":{},",":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547}},",":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}},"n":{"docs":{},"e":{"docs":{},"e":{"docs":{},"l":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.012987012987012988},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.015810276679841896},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}}}},"i":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.08225108225108226},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.019522776572668113},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.021505376344086023},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":3.38866930171278},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.01805869074492099},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.029288702928870293},"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"s":{"docs":{},"!":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},".":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}},":":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}},".":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}},"s":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.020833333333333332},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},"e":{"docs":{},"(":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}},"l":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}},"m":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}}}},"b":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}}},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547}},"e":{"docs":{},"d":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"x":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/API.html":{"ref":"docs/API.html","tf":0.008528784648187633},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"(":{"docs":{},"{":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.01079136690647482},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}}}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415},"docs/API.html":{"ref":"docs/API.html","tf":0.008528784648187633}},"(":{"docs":{},"{":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.010416666666666666},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}}},"m":{"docs":{},"y":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},")":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"{":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}}}}}}}}}}}}},",":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}},"f":{"docs":{},"i":{"docs":{},"g":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204}},"u":{"docs":{},"r":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}},"s":{"docs":{},"i":{"docs":{},"d":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}},"t":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.017316017316017316},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.010845986984815618},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.010752688172043012},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.02766798418972332},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.026041666666666668},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.01580135440180587},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.03765690376569038},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.04316546762589928},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}},"r":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204}}}}},"r":{"docs":{},"o":{"docs":{},"l":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}},"d":{"docs":{},"e":{"docs":{},".":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}},":":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},":":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"s":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658}}}},"s":{"docs":{},"e":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},"s":{"docs":{},",":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}},"l":{"docs":{},"l":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}},"b":{"docs":{},"(":{"docs":{},"n":{"docs":{},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},",":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.010416666666666666},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},"o":{"docs":{},"r":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204}}}},"e":{"docs":{},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"{":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.01079136690647482}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}}}}}}}}}}}}}}}}},"d":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}}},"e":{"docs":{},"r":{"docs":{},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}}}}},"u":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}}}}},"y":{"docs":{},"c":{"docs":{},"l":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}},"d":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"u":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}},"i":{"docs":{},"d":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}},"t":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},"s":{"docs":{},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},")":{"docs":{},".":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}}},"e":{"docs":{},"r":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}},"f":{"docs":{},"a":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}},"i":{"docs":{},"n":{"docs":{},"i":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}}}}},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}}},"s":{"docs":{},"i":{"docs":{},"g":{"docs":{},"n":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}},"v":{"docs":{},"e":{"docs":{},"l":{"docs":{},"o":{"docs":{},"p":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}}}}},"o":{"docs":{},"c":{"docs":{"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":0.058823529411764705}},"u":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083},"docs/AdvancedUsage/OtherRouters.html":{"ref":"docs/AdvancedUsage/OtherRouters.html","tf":0.125}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"b":{"docs":{},"y":{"docs":{},"i":{"docs":{},"d":{"docs":{},"(":{"docs":{},"'":{"docs":{},"m":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{},"'":{"docs":{},")":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"e":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},"'":{"docs":{},"t":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}},"t":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}},"w":{"docs":{},"n":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}},"e":{"docs":{},"s":{"docs":{},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}}}}},"a":{"docs":{},"n":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}},"t":{"docs":{},"a":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}},",":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}},"s":{"docs":{},"h":{"docs":{},"b":{"docs":{},"o":{"docs":{},"a":{"docs":{},"r":{"docs":{},"d":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.007905138339920948},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.009029345372460496}}}}}}}}}},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"l":{"docs":{},"i":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}},"y":{"docs":{},")":{"docs":{},".":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}}},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.016042780748663103}},"(":{"docs":{},"a":{"docs":{},"d":{"docs":{},"d":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"(":{"docs":{},"{":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"(":{"docs":{},"n":{"docs":{},"e":{"docs":{},"w":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},")":{"docs":{},")":{"docs":{},";":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}}}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"a":{"docs":{},"y":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.008676789587852495},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.008602150537634409},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.015810276679841896},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}}},"a":{"docs":{},"b":{"docs":{},"l":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}},"f":{"docs":{},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}},"e":{"docs":{},"x":{"docs":{},"a":{"docs":{},"m":{"docs":{},"p":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.013245033112582781},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":0.058823529411764705},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"e":{"docs":{},"s":{"docs":{},",":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}},",":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}},")":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}},"n":{"docs":{},"d":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.012987012987012988},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}}}},"r":{"docs":{},"e":{"docs":{},"m":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}},"a":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}},"e":{"docs":{},"c":{"docs":{},"u":{"docs":{},"t":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547}}}}}}},"a":{"docs":{},"s":{"docs":{},"i":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}},"l":{"docs":{},"i":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}},"y":{"docs":{},":":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}},"c":{"docs":{},"h":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}},"s":{"docs":{},"e":{"docs":{},"w":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}}}},"n":{"docs":{},"d":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}},"s":{"docs":{},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.010416666666666666}}}}}}},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.009029345372460496}}}}},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"v":{"docs":{},"a":{"docs":{},"l":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}}}}}},"f":{"docs":{},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},",":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.010416666666666666},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}},"l":{"docs":{},"e":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658}},":":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658}}}}}},"l":{"docs":{},"e":{"docs":{},"x":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}}},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}},"u":{"docs":{},"r":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.006772009029345372}},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.007905138339920948},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.011286681715575621}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},")":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}},":":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}},".":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"s":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},"e":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}},".":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}},";":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}},"v":{"docs":{},"o":{"docs":{},"r":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}},"o":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},":":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.015810276679841896},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.01079136690647482}},"s":{"docs":{},",":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}}}},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}},"e":{"docs":{},"w":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}},"n":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},",":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547}}}}}}}}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":5}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}},"i":{"docs":{},"t":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}}}},"u":{"docs":{},"i":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.013245033112582781},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"t":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}}}},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"c":{"docs":{},"e":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}}}}},"o":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}},"v":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.013245033112582781},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}},".":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}},"l":{"docs":{},"f":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}},".":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}},"l":{"docs":{},"p":{"docs":{"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":0.058823529411764705},"docs/AdvancedUsage/OtherRouters.html":{"ref":"docs/AdvancedUsage/OtherRouters.html","tf":0.125}},"e":{"docs":{},"r":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/API.html":{"ref":"docs/API.html","tf":0.008528784648187633}},":":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}},"t":{"docs":{},"t":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{},"/":{"docs":{},"/":{"docs":{},"m":{"docs":{},"j":{"docs":{},"r":{"docs":{},"u":{"docs":{},"s":{"docs":{},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"l":{"docs":{},".":{"docs":{},"g":{"docs":{},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"u":{"docs":{},"b":{"docs":{},".":{"docs":{},"i":{"docs":{},"o":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"u":{"docs":{},"x":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"m":{"docs":{},"l":{"docs":{},".":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}},"i":{"docs":{},"d":{"docs":{},"e":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":3.3530961791831353},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.006772009029345372}}}},"g":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.030303030303030304},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}},"o":{"docs":{},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.014925373134328358}}}}}}}}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"3":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}},"4":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}},"docs":{},"/":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}},"i":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}}}}},"o":{"docs":{},"c":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.012987012987012988},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.02092050209205021},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}},".":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}},"s":{"docs":{},",":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}},"w":{"docs":{},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{},",":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}},"m":{"docs":{},"e":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}}},"o":{"docs":{},"k":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}},"i":{"docs":{},"n":{"docs":{},"c":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}}},"o":{"docs":{},"r":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},":":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}}}}}}}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}},"n":{"docs":{},"c":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}},"t":{"docs":{},"i":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}},".":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}},"i":{"docs":{},"d":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.012987012987012988},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}},"g":{"docs":{},"r":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/AdvancedUsage/OtherRouters.html":{"ref":"docs/AdvancedUsage/OtherRouters.html","tf":5.125}}}}},"r":{"docs":{},"o":{"docs":{},"d":{"docs":{},"u":{"docs":{},"c":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}}}}},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}},"s":{"docs":{},"s":{"docs":{},"u":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}},"e":{"docs":{},"!":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}},"s":{"docs":{},",":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}},".":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}}}}}}}}}}}}}},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.013015184381778741},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.012903225806451613},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.015810276679841896},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.015625},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.020316027088036117},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/API.html":{"ref":"docs/API.html","tf":0.019189765458422176},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.026737967914438502}},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{},",":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}}}},"r":{"docs":{},"o":{"docs":{},"v":{"docs":{"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":0.058823529411764705},"docs/AdvancedUsage/OtherRouters.html":{"ref":"docs/AdvancedUsage/OtherRouters.html","tf":0.125}}}}},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}},"t":{"docs":{},":":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}},"j":{"docs":{},"w":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.013245033112582781}}}}},"l":{"docs":{},"i":{"docs":{},"b":{"docs":{},"r":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}},"f":{"docs":{},"e":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}},"n":{"docs":{},"k":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"f":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},".":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"h":{"docs":{},"(":{"docs":{},"(":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},")":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"o":{"docs":{},"k":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}},"p":{"docs":{},"s":{"docs":{},".":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}},"g":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.010845986984815618},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.010752688172043012},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.020833333333333332}},"i":{"docs":{},"c":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},"n":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.010845986984815618},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.010752688172043012}}}}},"a":{"docs":{},"d":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"s":{"docs":{},"p":{"docs":{},"i":{"docs":{},"n":{"docs":{},"n":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}},"e":{"docs":{},"r":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}}}}}}},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},":":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}}}}}}}}}},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"p":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"(":{"docs":{},"o":{"docs":{},"w":{"docs":{},"n":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"s":{"docs":{},")":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"b":{"docs":{},"u":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/API.html":{"ref":"docs/API.html","tf":0.008528784648187633}},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"{":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}},"}":{"docs":{},")":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}}}}}}},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}}}}}}}}},".":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}},"o":{"docs":{},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}},",":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}}}}}}}}}}}}}}},"n":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}}},"t":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}},"w":{"docs":{},"e":{"docs":{},"r":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204}}}},"r":{"docs":{},"g":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}},"u":{"docs":{},"c":{"docs":{},"k":{"docs":{},"i":{"docs":{},"l":{"docs":{},"i":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}},"e":{"docs":{},"t":{"docs":{},"'":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}},"v":{"docs":{},"e":{"docs":{},"l":{"docs":{},".":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}},"f":{"docs":{},"t":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}},"m":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"i":{"docs":{},"v":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}}},"k":{"docs":{},"e":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.007905138339920948},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}},"n":{"docs":{},"i":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}},"i":{"docs":{},"n":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},"l":{"docs":{},"i":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}},"d":{"docs":{},"e":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}},"p":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},"s":{"docs":{},".":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}}},"i":{"docs":{},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":5.00902934537246}}}}}},"s":{"docs":{},"s":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}},"d":{"docs":{},"d":{"docs":{},"l":{"docs":{},"e":{"docs":{},"w":{"docs":{},"a":{"docs":{},"r":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"e":{"docs":{},".":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"/":{"docs":{},"u":{"docs":{},"n":{"docs":{},"m":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}}}}}}}}}}},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}},"y":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.017316017316017316},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}}}}}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}}}}}}}}}},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{},"o":{"docs":{},"d":{"docs":{},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}},"s":{"docs":{},".":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}},"a":{"docs":{},"n":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}},"s":{"docs":{},"s":{"docs":{},"a":{"docs":{},"g":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"e":{"docs":{},":":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}}}}},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{},"i":{"docs":{},"p":{"docs":{},"l":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.01079136690647482}}}}}}}}},"n":{"docs":{},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}},"s":{"docs":{},"t":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":5.015625},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.01079136690647482}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}},"w":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}},"e":{"docs":{},"d":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.006772009029345372},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547}}}},"x":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},"e":{"docs":{},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.008528784648187633}}},",":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.014388489208633094}}}}}}}}}}},"p":{"docs":{},"m":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"v":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":5.0588235294117645}},"e":{"docs":{},"?":{"docs":{"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":0.058823529411764705}}}}}}},"m":{"docs":{},"e":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}},"v":{"docs":{},"i":{"docs":{},"g":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064}}}}}},"i":{"docs":{},"c":{"docs":{},"e":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204}}}}},"o":{"docs":{},"n":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}},"e":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}},"t":{"docs":{},"e":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},":":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}},"i":{"docs":{},"c":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},"f":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}},"h":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}},"w":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.010416666666666666},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.006772009029345372},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.016736401673640166},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.008676789587852495},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.008602150537634409},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.014388489208633094}}},":":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}},"m":{"docs":{},"e":{"docs":{},"r":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}},"o":{"docs":{},"p":{"docs":{},"e":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.013245033112582781}}}},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}}},"u":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.013245033112582781},"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}},"s":{"docs":{},"i":{"docs":{},"d":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}},"n":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"e":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},"n":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.01079136690647482}},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},",":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}},",":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}},".":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}}}},"c":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.010416666666666666}},"h":{"docs":{},"a":{"docs":{},"n":{"docs":{},"g":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}},"l":{"docs":{},"y":{"docs":{},"b":{"docs":{},"o":{"docs":{},"b":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}},"(":{"docs":{},"m":{"docs":{},"y":{"docs":{},"b":{"docs":{},"u":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{},")":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}}}}}},"b":{"docs":{},"u":{"docs":{},"t":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}}}}}}}},"r":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.030303030303030304},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.015625},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}},".":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"w":{"docs":{},"i":{"docs":{},"s":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}},"e":{"docs":{},":":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},",":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}}}}},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658}},"v":{"docs":{},"i":{"docs":{},"e":{"docs":{},"w":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}},"h":{"docs":{},"e":{"docs":{},"a":{"docs":{},"d":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}}}},"b":{"docs":{},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}},":":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}},")":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.046908315565031986}}},",":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.053304904051172705}}}}}}}},"c":{"docs":{},"c":{"docs":{},"u":{"docs":{},"r":{"docs":{},"s":{"docs":{},":":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},".":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}}}}},"w":{"docs":{},"n":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"s":{"docs":{},")":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.029850746268656716}}}}}}}}}}},"p":{"docs":{},"l":{"docs":{},"e":{"docs":{},"a":{"docs":{},"s":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":0.058823529411764705},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}},"s":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}},"n":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}},"r":{"docs":{},"o":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}},".":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}}}},"v":{"docs":{},"i":{"docs":{},"d":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}},"p":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.007905138339920948},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}},"e":{"docs":{},"r":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}},"t":{"docs":{},"i":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}},"s":{"docs":{},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}},")":{"docs":{},")":{"docs":{},";":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}},".":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},"e":{"docs":{},"d":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.012552301255230125}}}}}}}}}}}}}},"j":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}},"g":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"!":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}}}}},"e":{"docs":{},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}},"i":{"docs":{},"o":{"docs":{},"u":{"docs":{},"s":{"docs":{},"l":{"docs":{},"y":{"docs":{},":":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}}},"d":{"docs":{},"i":{"docs":{},"c":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},":":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}}}}}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}},"e":{"docs":{},"r":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"m":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}},"m":{"docs":{},"i":{"docs":{},"s":{"docs":{},"s":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}}}}}}}},"o":{"docs":{},"s":{"docs":{},"t":{"docs":{},":":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"!":{"docs":{},")":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}}}}}}},"w":{"docs":{},"e":{"docs":{},"r":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}},"a":{"docs":{},"g":{"docs":{},"e":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.008676789587852495},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.010752688172043012},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.007905138339920948}},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204}}}}},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}},"e":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}},"s":{"docs":{},".":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},".":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}},"s":{"docs":{},"s":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}}},"y":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}},"t":{"docs":{},"h":{"docs":{},"s":{"docs":{},",":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":0.058823529411764705},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083},"docs/AdvancedUsage/OtherRouters.html":{"ref":"docs/AdvancedUsage/OtherRouters.html","tf":0.125}}}}},"i":{"docs":{},"e":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},".":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}}}},"r":{"docs":{},"i":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}},"i":{"docs":{},"c":{"docs":{},"k":{"docs":{},"l":{"docs":{},"i":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.06622516556291391},"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.017316017316017316},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":3.346348517715112},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":3.354838709677419},"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":5.117647058823529},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.011286681715575621},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":3.344124700239808},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0213903743315508}},"d":{"docs":{},"o":{"docs":{},"m":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658}}},":":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}}}}}}}},"c":{"docs":{},"l":{"docs":{},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.023454157782515993}}}}}}},"f":{"docs":{},"u":{"docs":{},"n":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"l":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.023454157782515993}}}}}}}}}}}}}}}}}},".":{"docs":{},"c":{"docs":{},"l":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"m":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"(":{"docs":{},"c":{"docs":{},"h":{"docs":{},"i":{"docs":{},"l":{"docs":{},"d":{"docs":{},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},",":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{"./":{"ref":"./","tf":10.006622516556291},"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}},"m":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}},"l":{"docs":{},"l":{"docs":{},"i":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}},"d":{"docs":{},"u":{"docs":{},"x":{"docs":{"./":{"ref":"./","tf":0.059602649006622516},"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.021691973969631236},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.01935483870967742},"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":0.058823529411764705},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.007905138339920948},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.01580135440180587},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":5.0588235294117645}},".":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}},"'":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}},";":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}},",":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}}}}}}},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.01735357917570499},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.021505376344086023},"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":0.058823529411764705},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.010416666666666666},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.013544018058690745},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415},"docs/API.html":{"ref":"docs/API.html","tf":0.006396588486140725},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.014388489208633094},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.026737967914438502}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},":":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"h":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}},":":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.008676789587852495},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.008602150537634409},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.010416666666666666},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/API.html":{"ref":"docs/API.html","tf":0.0255863539445629},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.02158273381294964},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}}}}},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"e":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}},"(":{"docs":{},".":{"docs":{},".":{"docs":{},".":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},"s":{"docs":{},")":{"docs":{},";":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}}}},")":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},")":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.01079136690647482}},";":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"i":{"docs":{},"t":{"docs":{},"e":{"docs":{},"!":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}}}}},"n":{"docs":{},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.013015184381778741},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.008602150537634409},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.016736401673640166},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547}},"(":{"docs":{},")":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}}},":":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}}},"a":{"docs":{},"m":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}},"t":{"docs":{},"u":{"docs":{},"r":{"docs":{},"n":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}},"c":{"docs":{},"h":{"docs":{},"e":{"docs":{},"c":{"docs":{},"k":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}}},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{},":":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}},".":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}},"e":{"docs":{},"i":{"docs":{},"v":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}},"q":{"docs":{},"u":{"docs":{},"i":{"docs":{},"r":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{},"!":{"docs":{"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":0.058823529411764705},"docs/AdvancedUsage/OtherRouters.html":{"ref":"docs/AdvancedUsage/OtherRouters.html","tf":0.125}}}}}}}},"f":{"docs":{},"e":{"docs":{},"r":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}},"m":{"docs":{},"o":{"docs":{},"v":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.006772009029345372}}}},"e":{"docs":{},"m":{"docs":{},"b":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}},"g":{"docs":{},"u":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}}}},"s":{"docs":{},"u":{"docs":{},"l":{"docs":{},"t":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}},"o":{"docs":{},"u":{"docs":{},"r":{"docs":{},"c":{"docs":{},"e":{"docs":{},".":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.012987012987012988},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.01735357917570499},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.015053763440860216},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.014388489208633094},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"e":{"docs":{},"r":{"3":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":3.333333333333333}}},"docs":{"./":{"ref":"./","tf":0.059602649006622516},"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.012987012987012988},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":3.346348517715112},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":3.3505376344086018},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.011286681715575621},"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165},"docs/AdvancedUsage/OtherRouters.html":{"ref":"docs/AdvancedUsage/OtherRouters.html","tf":5.125},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.03208556149732621}},":":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}}}}}}}}}}}}}}},"'":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},";":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}},".":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}},"s":{"docs":{},".":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},".":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}},".":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}},"s":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}},"v":{"docs":{},"e":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}},"f":{"docs":{},"e":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.012987012987012988}}}}},"e":{"docs":{},"a":{"docs":{},"r":{"docs":{},"c":{"docs":{},"h":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}}},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}},")":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}}}}}},"u":{"docs":{},"r":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.010416666666666666}}}},"o":{"docs":{},"n":{"docs":{},"d":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}},"e":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}},"n":{"docs":{},"d":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.010845986984815618},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.010752688172043012},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}},"t":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.015625}}},"s":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}},"r":{"docs":{},"v":{"docs":{},"e":{"docs":{},"r":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.01079136690647482}}}}}},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}},"t":{"docs":{},"a":{"docs":{},"r":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":5},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}},"t":{"docs":{},"e":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.013015184381778741},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.015053763440860216},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.015625},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.01805869074492099},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.016736401673640166},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.02158273381294964},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}},".":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}},"u":{"docs":{},"s":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.012552301255230125},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.014388489208633094},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{},"a":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}},"i":{"docs":{},"s":{"docs":{},"l":{"docs":{},"o":{"docs":{},"a":{"docs":{},"d":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547}},",":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}}}}}},"f":{"docs":{},"i":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}}}}},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}}}}}}}},"i":{"docs":{},"l":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}},"e":{"docs":{},"p":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247}},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}},"'":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}},"p":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}},"r":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.029850746268656716}},")":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.014925373134328358}}},",":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.04904051172707889}}}}}}}},"u":{"docs":{},"b":{"docs":{},"m":{"docs":{},"i":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":0.058823529411764705},"docs/AdvancedUsage/OtherRouters.html":{"ref":"docs/AdvancedUsage/OtherRouters.html","tf":0.125}}}}},"t":{"docs":{},"l":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}},"p":{"docs":{},"p":{"docs":{},"o":{"docs":{},"r":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}},"c":{"docs":{},"h":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}},"r":{"docs":{},"e":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}},"k":{"docs":{},"i":{"docs":{},"p":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}},"i":{"docs":{},"d":{"docs":{},"e":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547}}}},"t":{"docs":{},"u":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}}}}}}}},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"a":{"docs":{},"r":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}},"p":{"docs":{},"l":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},"i":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}},"c":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}},"n":{"docs":{},"g":{"docs":{},"l":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}},"e":{"docs":{},"t":{"docs":{},"o":{"docs":{},"n":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}}}}}}},"o":{"docs":{},"l":{"docs":{},"v":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}},"e":{"docs":{},":":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}},"u":{"docs":{},"t":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}},"r":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}},"p":{"docs":{},"e":{"docs":{},"c":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},"e":{"docs":{},"d":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}},"a":{"docs":{},"l":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}},"l":{"docs":{},"i":{"docs":{},"t":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}},"w":{"docs":{},"a":{"docs":{},"p":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}},"h":{"docs":{},"o":{"docs":{},"w":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}},"u":{"docs":{},"l":{"docs":{},"d":{"docs":{},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}}}}},"m":{"docs":{},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}},"s":{"docs":{},"r":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":3.3369304556354913}}}},"l":{"docs":{},"i":{"docs":{},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{},"l":{"docs":{},"i":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}}}}}}},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"b":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}},"e":{"docs":{},"?":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}},"s":{"docs":{},"h":{"docs":{},"o":{"docs":{},"o":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":10.00418410041841}}}}}}}}}}}},"i":{"docs":{},"g":{"docs":{},"g":{"docs":{},"e":{"docs":{},"r":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}},"u":{"docs":{},"e":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204}},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}},";":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}},"a":{"docs":{},"d":{"docs":{},"i":{"docs":{},"t":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}},"a":{"docs":{},"k":{"docs":{},"e":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}},"h":{"docs":{},"e":{"docs":{},"m":{"docs":{},",":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}},"y":{"docs":{},"'":{"docs":{},"v":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.010416666666666666},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}},"n":{"docs":{},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}},"r":{"docs":{},"e":{"docs":{},"f":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}}},"i":{"docs":{},"s":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}},"n":{"docs":{},"k":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}},"g":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}},"o":{"docs":{},"s":{"docs":{},"e":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"g":{"docs":{},"h":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}}}}},"u":{"docs":{},"n":{"docs":{},"k":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}},"o":{"docs":{},"o":{"docs":{},"l":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}},"g":{"docs":{},"e":{"docs":{},"t":{"docs":{},"h":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.010416666666666666}},"e":{"docs":{},"r":{"docs":{},".":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"i":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.017316017316017316}},"a":{"docs":{},"l":{"docs":{},"s":{"docs":{},".":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}}}}}},"i":{"docs":{},"m":{"docs":{},"e":{"docs":{},".":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}},"s":{"docs":{},".":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}},"w":{"docs":{},"o":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}},"y":{"docs":{},"p":{"docs":{},"e":{"docs":{},"e":{"docs":{},"r":{"docs":{},"r":{"docs":{},"o":{"docs":{},"r":{"docs":{},":":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}}},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}}},"u":{"docs":{},"p":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}},"d":{"docs":{},"a":{"docs":{},"t":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}}}},"g":{"docs":{},"r":{"docs":{},"a":{"docs":{},"d":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}},"s":{"docs":{"./":{"ref":"./","tf":0.019867549668874173},"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.012987012987012988},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.015184381778741865},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.010752688172043012},"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":0.058823529411764705},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.007905138339920948},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.020833333333333332},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.022573363431151242},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.02158273381294964},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0213903743315508}},"e":{"docs":{},"r":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.03036876355748373},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.030107526881720432},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.03125},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.013544018058690745},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"i":{"docs":{},"s":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.008676789587852495},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.008602150537634409},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.020833333333333332},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547}},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"(":{"docs":{},"m":{"docs":{},"y":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},")":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}}}}}}}}},"(":{"docs":{},"{":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}}}}}}}}},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.010416666666666666},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}},")":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}},"c":{"docs":{},"h":{"docs":{},"a":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}}}}}},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}}}}}}}},"'":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}},".":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}},"i":{"docs":{},"s":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},",":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.006772009029345372}},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"{":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.006772009029345372}}}}}}}}}}}}}}}},"d":{"docs":{},".":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}},"a":{"docs":{},"g":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},")":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}},"t":{"docs":{},"i":{"docs":{},"l":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}},"n":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}},"d":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},".":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}}}},"f":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}},"e":{"docs":{},"d":{"docs":{},".":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"m":{"docs":{},"i":{"docs":{},"l":{"docs":{},"i":{"docs":{},"a":{"docs":{},"r":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}}}},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"s":{"docs":{},"e":{"docs":{},"e":{"docs":{},"n":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}}}}}},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"e":{"docs":{},"s":{"docs":{},"s":{"docs":{},"a":{"docs":{},"r":{"docs":{},"i":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}}},"a":{"docs":{},"u":{"docs":{},"g":{"docs":{},"h":{"docs":{},"t":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}}}},"r":{"docs":{},"l":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204}}}}},"v":{"1":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":5}},".":{"docs":{},"x":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}},":":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}},"2":{"docs":{},":":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}},".":{"docs":{},"x":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}},":":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}}},"3":{"docs":{},")":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}},"4":{"docs":{},")":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}},"5":{"docs":{"./":{"ref":"./","tf":0.006622516556291391}}},"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{"./":{"ref":"./","tf":0.039735099337748346},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.009029345372460496}},".":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}}},"i":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}}},"a":{"docs":{},"l":{"docs":{},"i":{"docs":{},"d":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}},"u":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}},"r":{"docs":{},"i":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},",":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}}},"i":{"docs":{},"a":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}},"(":{"docs":{},"(":{"docs":{},")":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"i":{"docs":{},"d":{"docs":{},")":{"docs":{},")":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.007905138339920948},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{"./":{"ref":"./","tf":0.039735099337748346},"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.008676789587852495},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.015053763440860216},"docs/Getting-Started/ReactNative.html":{"ref":"docs/Getting-Started/ReactNative.html","tf":0.058823529411764705},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":5.005208333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.022573363431151242},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.01079136690647482},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},",":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}},")":{"docs":{},".":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}},"/":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"3":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"'":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"'":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/API.html":{"ref":"docs/API.html","tf":0.006396588486140725},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}}}}}}}}}}},"4":{"docs":{},"/":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"h":{"docs":{},"e":{"docs":{},"l":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"'":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"'":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204},"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}}}}}}}}}}}}},"docs":{}}}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"'":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"'":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.007905138339920948},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}}}}}}}}}}}}}}}}}}}}}}},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"y":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},"e":{"docs":{},":":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.008676789587852495},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.008602150537634409},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.015810276679841896},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.015625},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.013544018058690745},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}}}}}}}}}},"'":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.006772009029345372}}},"?":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}},"s":{"docs":{},".":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}},",":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}},"d":{"docs":{},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},"e":{"docs":{},")":{"docs":{},";":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"g":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}},"a":{"docs":{},"n":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.008676789587852495},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.008602150537634409},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.015810276679841896},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}}}},"y":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}},"e":{"docs":{},"'":{"docs":{},"v":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}},"r":{"docs":{},"e":{"docs":{},"n":{"docs":{},"'":{"docs":{},"t":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}},"i":{"docs":{},"t":{"docs":{},"h":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}},"e":{"docs":{},"r":{"docs":{},"(":{"docs":{},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"(":{"docs":{},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},")":{"docs":{},")":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}}}}}}}}}}}}}}}}}}}},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"(":{"docs":{},"m":{"docs":{},"y":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},")":{"docs":{},")":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}},"o":{"docs":{},"r":{"docs":{},"k":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"a":{"docs":{},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"n":{"docs":{},"d":{"docs":{},"s":{"docs":{},")":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}}}}}}}}}}},"y":{"docs":{},"o":{"docs":{},"u":{"docs":{},"'":{"docs":{},"v":{"docs":{"./":{"ref":"./","tf":0.006622516556291391},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}},",":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}}}}}},"\"":{"docs":{},"s":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},"\"":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}}},"'":{"docs":{},".":{"docs":{},"/":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"/":{"docs":{},"m":{"docs":{},"y":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},".":{"docs":{},"j":{"docs":{},"s":{"docs":{},"'":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658}}}}}}}}}}}}}}}}}}}}}}}}}}},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"i":{"docs":{},"f":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"'":{"docs":{},";":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}}}}}}}}}}}}}}}}}}}},".":{"docs":{},"/":{"docs":{},"s":{"docs":{},"r":{"docs":{},"c":{"docs":{},"/":{"docs":{},"h":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},"y":{"3":{"docs":{},"/":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"'":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}}}}},"docs":{}}}}}}}}}}}}}}},"/":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"'":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}}}},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{},"'":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}}}}}}}},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"'":{"docs":{},",":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}},"d":{"docs":{},"u":{"docs":{},"x":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.013544018058690745},"docs/API.html":{"ref":"docs/API.html","tf":0.019189765458422176},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0053475935828877}},"'":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"'":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}}}}},"u":{"docs":{},"s":{"docs":{},"e":{"docs":{},"r":{"docs":{},"i":{"docs":{},"s":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"'":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.004338394793926247},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.004301075268817204}}}}}}}}}}}}}}}},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"'":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}},",":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}}},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"'":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}}}}}}}}}}}}},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"b":{"docs":{},"o":{"docs":{},"b":{"docs":{},"'":{"docs":{},",":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}}}}}}}}}},"n":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"t":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},"'":{"docs":{},",":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.014388489208633094}}}}}}}}}}}}}}},"c":{"docs":{},"o":{"docs":{},"n":{"docs":{},"n":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},"l":{"docs":{},"s":{"docs":{},"e":{"docs":{},"'":{"docs":{},",":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}}}}},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{},"'":{"docs":{},",":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}}}}}}}}}}}}}}}}}},"v":{"docs":{},"i":{"docs":{},"s":{"docs":{},"i":{"docs":{},"b":{"docs":{},"l":{"docs":{},"e":{"docs":{},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"'":{"docs":{},",":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.007905138339920948},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}}}}}}}}}}}}}}}}},"b":{"docs":{},"o":{"docs":{},"b":{"docs":{},"'":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}},"h":{"docs":{},"o":{"docs":{},"m":{"docs":{},"e":{"docs":{},"'":{"docs":{},",":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547}}}}}}}},"s":{"docs":{},"o":{"docs":{},"r":{"docs":{},"r":{"docs":{},"y":{"docs":{},",":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}}}}},"(":{"3":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}},"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},"e":{"docs":{},"s":{"6":{"docs":{},")":{"docs":{},":":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}},"7":{"docs":{},")":{"docs":{},":":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}},"docs":{}},"v":{"docs":{},"e":{"docs":{},"n":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}},"r":{"docs":{},"e":{"docs":{},"a":{"docs":{},"c":{"docs":{},"t":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329},"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}}}}}}},"/":{"docs":{},"l":{"docs":{},"a":{"docs":{},"n":{"docs":{},"d":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},")":{"docs":{},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}}}}}},"n":{"docs":{},"o":{"docs":{},"t":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}},"u":{"docs":{},"l":{"docs":{},"l":{"docs":{},")":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}},"e":{"docs":{},"x":{"docs":{},"t":{"docs":{},"s":{"docs":{},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.014925373134328358}}},",":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547}}}}}}}}}},"w":{"docs":{},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},")":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}}}}},"s":{"docs":{},"s":{"docs":{},"r":{"docs":{},")":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}},"t":{"docs":{},"a":{"docs":{},"t":{"docs":{},"e":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.03624733475479744}}}}}},"o":{"docs":{},"r":{"docs":{},"e":{"docs":{},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}}},")":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}},",":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}},"e":{"docs":{},"e":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"r":{"docs":{},"e":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237}}}}}},"o":{"docs":{},"d":{"docs":{},"o":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}},")":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}}},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},",":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}}}},"s":{"docs":{},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}}}}}},"a":{"docs":{},"s":{"docs":{},"s":{"docs":{},"u":{"docs":{},"m":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}}},"o":{"docs":{},"r":{"docs":{"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}}}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{},"s":{"docs":{},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.008528784648187633}}}}}}}},"!":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"e":{"docs":{},"d":{"docs":{},")":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}}}}}},".":{"docs":{},".":{"docs":{},".":{"docs":{},"a":{"docs":{},"r":{"docs":{},"g":{"docs":{},"s":{"docs":{},")":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}},"l":{"docs":{},"i":{"docs":{},"s":{"docs":{},"t":{"docs":{},"o":{"docs":{},"f":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"s":{"docs":{},")":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"n":{"docs":{},")":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547}}}}},"i":{"docs":{},"f":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"p":{"docs":{},"a":{"docs":{},"t":{"docs":{},"c":{"docs":{},"h":{"docs":{},")":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}}}}}}}},")":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.017316017316017316},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083}},";":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}},",":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.008658008658008658}}},".":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}},".":{"docs":{},".":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.021645021645021644},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"p":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}},"/":{"docs":{},">":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}},"/":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.021691973969631236},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.025806451612903226},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.015810276679841896},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.015625},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.009029345372460496},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0213903743315508}},"t":{"docs":{},"h":{"docs":{},"i":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}},"l":{"docs":{},"o":{"docs":{},"g":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.010416666666666666},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.002257336343115124}},"?":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"=":{"docs":{},"%":{"2":{"docs":{},"f":{"docs":{},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}}}},"docs":{}}}}}}}}}}}}}}}}},"p":{"docs":{},"r":{"docs":{},"o":{"docs":{},"f":{"docs":{},"i":{"docs":{},"l":{"docs":{},"e":{"docs":{},",":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}},".":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333}}}}}},"p":{"docs":{},"p":{"docs":{"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.010416666666666666},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}}},"=":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.017316017316017316},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.010845986984815618},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.010752688172043012},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.02766798418972332},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.026041666666666668},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.01580135440180587},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.03765690376569038},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.050359712230215826},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}},">":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.013015184381778741},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.012903225806451613},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.03162055335968379},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.015625},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.029345372460496615},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.03347280334728033},"docs/API.html":{"ref":"docs/API.html","tf":0.07036247334754797},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.05755395683453238},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.03208556149732621}}},"=":{"docs":{},"=":{"docs":{"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547}}}}},"@":{"docs":{},"a":{"docs":{},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}}}}}}},"k":{"docs":{},"e":{"docs":{},"e":{"docs":{},"p":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}},"n":{"docs":{},"o":{"docs":{},"w":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}}}},"{":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.021645021645021644},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.007905138339920948},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.009029345372460496},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.02092050209205021},"docs/API.html":{"ref":"docs/API.html","tf":0.014925373134328358},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.02158273381294964},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.026737967914438502}},"r":{"docs":{},"o":{"docs":{},"u":{"docs":{},"t":{"docs":{},"e":{"docs":{},"s":{"docs":{},"}":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}}}}}}}},"a":{"docs":{},"d":{"docs":{},"m":{"docs":{},"i":{"docs":{},"n":{"docs":{},"o":{"docs":{},"n":{"docs":{},"l":{"docs":{},"y":{"docs":{},"l":{"docs":{},"i":{"docs":{},"n":{"docs":{},"k":{"docs":{},"}":{"docs":{"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.0041841004184100415}}}}}}}}}}}}}}}}},"}":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.017316017316017316},"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.006507592190889371},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.007905138339920948},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.009029345372460496},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.02092050209205021},"docs/API.html":{"ref":"docs/API.html","tf":0.014925373134328358},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.007194244604316547},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.016042780748663103}},"}":{"docs":{"docs/Getting-Started/Overview.html":{"ref":"docs/Getting-Started/Overview.html","tf":0.004329004329004329}}},")":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.008676789587852495},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.008602150537634409},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.015625},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.009029345372460496},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.016736401673640166},"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.025179856115107913},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}},"(":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},")":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.003952569169960474},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248}}}}}}}}}}}}},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.014925373134328358}}},";":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}},")":{"docs":{},";":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}},";":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.01079136690647482}}},",":{"docs":{"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}},"!":{"docs":{},"=":{"docs":{},"=":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.008676789587852495},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.0064516129032258064},"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Getting-Started/NestingWrappers.html":{"ref":"docs/Getting-Started/NestingWrappers.html","tf":0.005208333333333333},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.006772009029345372},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.016736401673640166},"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.014388489208633094},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}}},"|":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.06823027718550106}},"|":{"docs":{"docs/Getting-Started/ReactRouter3.html":{"ref":"docs/Getting-Started/ReactRouter3.html","tf":0.0021691973969631237},"docs/Getting-Started/ReactRouter4.html":{"ref":"docs/Getting-Started/ReactRouter4.html","tf":0.002150537634408602}}}},"&":{"docs":{},"&":{"docs":{"docs/Getting-Started/HidingAlternate.html":{"ref":"docs/Getting-Started/HidingAlternate.html","tf":0.011857707509881422},"docs/Migrating.html":{"ref":"docs/Migrating.html","tf":0.004514672686230248},"docs/Troubleshooting.html":{"ref":"docs/Troubleshooting.html","tf":0.008368200836820083},"docs/AdvancedUsage/Redux.html":{"ref":"docs/AdvancedUsage/Redux.html","tf":0.0106951871657754}}}},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}}},"?":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0021321961620469083}},"a":{"docs":{},"l":{"docs":{},"l":{"docs":{},"o":{"docs":{},"w":{"docs":{},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"b":{"docs":{},"a":{"docs":{},"c":{"docs":{},"k":{"docs":{},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.010660980810234541}}}}}}}}}}}}}}}}}}},"u":{"docs":{},"t":{"docs":{},"h":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"i":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"n":{"docs":{},"g":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.014925373134328358}}}}}}}}}}}},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.01279317697228145}}}}}}}}}}}}}}}}}}}}}}}}},"f":{"docs":{},"a":{"docs":{},"i":{"docs":{},"l":{"docs":{},"u":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"o":{"docs":{},"m":{"docs":{},"p":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}}}}}}}}}}}}}}}}}}},"l":{"docs":{},"o":{"docs":{},"c":{"docs":{},"a":{"docs":{},"t":{"docs":{},"i":{"docs":{},"o":{"docs":{},"n":{"docs":{},"s":{"docs":{},"e":{"docs":{},"l":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"o":{"docs":{},"r":{"docs":{},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.0042643923240938165}}}}}}}}}}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"d":{"docs":{},"i":{"docs":{},"r":{"docs":{},"e":{"docs":{},"c":{"docs":{},"t":{"docs":{},"q":{"docs":{},"u":{"docs":{},"e":{"docs":{},"r":{"docs":{},"y":{"docs":{},"p":{"docs":{},"a":{"docs":{},"r":{"docs":{},"a":{"docs":{},"m":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.014925373134328358}}}}}}}}}}}}}}}}}}}}}}}}},"w":{"docs":{},"r":{"docs":{},"a":{"docs":{},"p":{"docs":{},"p":{"docs":{},"e":{"docs":{},"r":{"docs":{},"d":{"docs":{},"i":{"docs":{},"s":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"y":{"docs":{},"n":{"docs":{},"a":{"docs":{},"m":{"docs":{},"e":{"docs":{},":":{"docs":{"docs/API.html":{"ref":"docs/API.html","tf":0.014925373134328358}}}}}}}}}}}}}}}}}}}}}},"`":{"docs":{},"o":{"docs":{},"n":{"docs":{},"e":{"docs":{},"n":{"docs":{},"t":{"docs":{},"e":{"docs":{},"r":{"docs":{},"`":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}},"r":{"docs":{},"e":{"docs":{},"p":{"docs":{},"l":{"docs":{},"a":{"docs":{},"c":{"docs":{},"e":{"docs":{},"`":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}},".":{"docs":{"docs/AdvancedUsage/ReactRouter3.html":{"ref":"docs/AdvancedUsage/ReactRouter3.html","tf":0.0035971223021582736}}}}}}}}}}}}},"length":1640},"corpusTokens":["!==","\"same\"","&&","'../src/history3/redirect'","'./component/mycomponent.js'","'./notificationactions';","'/app',","'/landing',","'/login',","'adminorelse',","'adminorhomelink',","'bob'","'connect","'home',","'react","'redux","'redux'","'replace'","'sorry,","'unprotected',","'userisadmin'","'userisadmin',","'userisauthenticated'","'userisauthenticated',","'userisnotauthenticated'","'userisonlybob',","'visibleonlyadmin',","(","(!redirected)","()","(...args)","(...listofonenters)","(/landing).","(3","(assum","(component,","(composed)","(dispatch)","(es6):","(es7):","(even","(fn)","(if","(location:","(newloc)","(nextstate,","(nextstate:","(not","(null)","(null).","(or","(props:","(react","(see","(ssr)","(state,","(state:","(store)","(store,","(store:","(there","(todo",")",");","+",",",".","...","...prop","//","//thi","/>","/admin","/app","/login","/login?redirect=%2fprofil","/profile,","/profile.","1.0","1.x","1.x.","1.x?","16.3.","2","2,","2.0","2.x","2/3.","3","3):","3,","3.x","3/histori","4","4)","4,","4.","4/5","4/histori","5","5.",":","=","===","=>",">=","?","?allowredirectback:","?authenticatingcomponent:","?authenticatingselector:","?failurecomponent:","?locationselector:","?redirectqueryparamname:","?wrapperdisplayname:","@authwrapp","`onenter`","`replace`","`replace`.","abov","abramov'","access","accident","action","ad","add","addit","additionally,","addnotif","admin","admin.","administrator'","administrator.","adminonlylink","adminorels","adopt","advanc","advic","again,","allow","allowredirectback.","allowredirectback:","alreadi","also,","altern","anim","anoth","api","apis.","app","appear","appli","application,","application.","applications.","apply!","approach","are,","aren't","argument","ask","attent","auth","auth.","authdata","authent","authenticated,","authenticatedselector","authenticatedselector,","authenticatedselector:","authenticatingcompon","authenticatingcomponent:","authenticatingselector","authenticatingselector,","authenticatingselector:","authentication/author","author","authorization,","authselector","authselector.","authselector:","authwrapp","authwrapper(foo))","authwrapper(mycomponent)","authwrapper({","authwrapper,","authwrapper.","automat","away","back","base","be","befor","before.","begin","below,","besid","big","block","blog","bob:","boolean","boolean,","booleans.","both","break","brows","browserhistori","browserhistory.replace(newloc);","bug","build","builders,","button","call","case","case,","cases,","caus","cb(null,","certain","chain","chang","changes.","channel.","check","check).","checks,","child","children","children,","class","client","client.","cloneel","close","code.","code:","combin","come","common","compat","complain","compon","component,","component.","component:","components!","components,","components.","compos","compose(userisauthenticated,","config","configur","connect","connect,","connectedauthwrapp","connectedauthwrapper({","connectedreduxredirect","connectedreduxredirect({","connectedrouterredirect","connectedrouterredirect(mycomponent)","connectedrouterredirect({","consid","const","constraint","contain","control","correct:","creat","createclass","createonent","createonenter({","createredirectloc:","creator","credenti","current","cycl","dan","dashboard","data","data,","decid","decoupl","default","definition.","depend","design","detail","details).","details.","determin","develop","differ","directli","directly).","disabl","dispatch","dispatch(addnotification({","dispatch(replace(newloc));","display","displayed.","doc","document","document.getelementbyid('mount')","documentation,","documentation.","doesn't","don't","done","dont","down","dure","each","easi","easili","easily:","element","elsewher","end","equival","especi","even","exampl","example)","example,","examples,","execut","exist","export","extend","extern","extra","extrem","fail","failur","failurecompon","failurecomponent)","failurecomponent,","failurecomponent.","failurecomponent:","failureredirectpath","fals","false,","false.","false;","favor","few","file","file:","first","first,","flexibl","fn(store,","follow","following:","fulli","function","functions,","get","getcompon","getredirectqueryparam:","getrout","gitter","glance,","go","great","great,","guid","half","handl","happen","have","have.","help","helper","helper,","helper:","here","here.","hide","higher","higherordercompon","histori","history/rout","history3","history4","hoc","hoc.","hocs,","home","hook","however,","however.","html.","https://mjrussell.github.io/redux","implement","import","important,","improv","in,","in.","incorrect:","increas","insid","instal","instanc","instanti","instead","instead,","instead.","integr","interact","intern","introduc","isauthent","isauthenticating,","issu","issue!","issues,","issues.","it:","jwt","keep","know","land","largest","left","let'","level.","librari","life","link","listofonenters.foreach((onenter)","load","loading,","loadingcompon","loadingcomponent:","loadingspinn","loadingspinner,","locat","location.","locationhelp","locationhelper.getredirectqueryparam(ownprops)","locationhelper:","locationhelperbuild","locationhelperbuilder({","locationhelperbuilder({})","locationobject","locationobject,","log","logic","login","longer","look","loops.","lot","lower","luckili","made","main","mainli","make","mani","mapprop","mapprops.","massiv","mean","messag","message:","method.","methods.","middlewar","middleware.","migrat","miss","more","motiv","mounting/unmount","multipl","myauthcompon","mycompon","myparentcompon","name","nativ","native?","navig","need","nest","nesting,","never","new","next","nextstat","nextstate,","nextstate:","nice","non","none","note","note:","noth","notic","notif","now","now,","npm","null","null,","null:","numer","object","object)","object,","object.","object:","occurs.","occurs:","on","onc","onchang","one,","onent","onenter(store,","onenter,","onenter.","onenteradmin","onenterauth","onenterchain","onlybob","onlybob(mybutton)","onlybobbutton","open","option","order","order.","otherwis","otherwise,","otherwise:","out","outsid","over","overhead","overview","ownprops)","ownprops:","page","page,","param","paramet","params.","parent","parent.","part","pass","paths,","pay","perform","permiss","permissions.","pieces.","place.","places,","plan","pleas","possible!)","post:","power","practic","predic","predicate:","prevent","previously:","problem","problem.","profil","progress!","project","prop","prop.","proper","properti","props));","props.","protect","protect.","protectedcompon","provid","pull","queri","question","quickli","react","react.cloneelement(children,","reactclass","reactdom.render(","reactdom.render:","reactfunctionalcompon","read","readm","realli","receiv","recheck","recompose.","recompose:","redirect","redirectact","redirectaction,","redirectaction.","redirectaction:","redirection,","redirectpath","redirectpath:","redux","redux'","redux';","redux,","redux.","reduxaction,","refer","regular","rememb","remov","renam","render","render()","render:","rendered.","replac","replace(...args);","replace)","replace,","replace:","replacestate)","replacestate);","request!","requir","resource.","result","return","rewrite!","right","right.","rout","route.","router","router'","router';","router,","router.","router3","router:","routeract","routeractions.replace,","routers.","routing,","routing.","safe","same","save","search","second","section","section)","secur","see","selector","send","sens","sent","separ","server","shouldn't","show","side","similar","simpl","simpli","simplic","singl","singleton","situations.","skip","slightli","small","small,","solut","solv","solve:","sort","special","specifi","specified,","split","ssr","start","state","state.","state.us","state.user,","state.user.data","state.user.data,","state.user.data.","state.user.firstnam","state.user.isadmin","state.user.isadmin,","state.user.isloading,","step","still","stop","store","store'","store.","string","string)","string,","submit","subtl","such","support","sure","swap","take","test","them,","then,","therefore,","they'v","thing","think","this,","those","throughout","thunk","time.","times.","togeth","together.","tool","tradit","trigger","troubl","trouble?","troubleshoot","true","true,","true;","tutori","tutorials.","two","type:","typeerror:","un","uncaught","unconnect","undefin","undefined.","understand.","unfamiliar","unforeseen","unnecessari","up","updat","upgrad","url","us","usag","used.","user","user'","user.","user.isadmin,","userauthwrapp","userauthwrapper({","userisadmin","userisadmin)","userisadminchain","userisauthent","userisauthenticated(({","userisauthenticated(mycomponent)","userisnotauthent","using)","util","v1","v1.x","v1.x:","v2.x","v2.x:","v2:","v3)","v4)","v5","valid","valu","variation,","veri","version","version.","via","visibleonlyadmin","visibleonlyadmin(()","void))","want","way","we'v","weren't","without","withrout","withrouter(userisauthenticated(mycomponent))","withrouter(userisnotauthenticated(login))","work","workarounds)","wrap","wrappedreplac","wrappedreplace);","wrapper","wrapper'","wrapper).","wrapper,","wrapper.","wrapper/authwrapper'","wrapper/connectedauthwrapper'","wrapper/history3/locationhelper'","wrapper/history3/redirect'","wrapper/history4/locationhelper'","wrapper/history4/redirect'","wrapper?","wrapperdisplaynam","wrapperdisplayname:","wrappers,","wrappers.","wrong","you'v","you,","{","{adminonlylink}","{routes}","|","||","}","})","})(component)","}));","}):","});","},","};","}}"],"pipeline":["stopWordFilter","stemmer"]},"store":{"./":{"url":"./","title":"Read Me","keywords":"","body":"redux-auth-wrapper\n\n\n\n\n\nDecouple your Authentication and Authorization from your components!\nnpm install --save redux-auth-wrapper\nredux-auth-wrapper is a utility library for handling authentication and authorization in react + redux applications.\nRead the documentation at https://mjrussell.github.io/redux-auth-wrapper\nVersion 3\nVersion 3.x has the same external API as version 2, however it only supports React >= 16.3. It is also tested with react-router v5 and connected-react-router which replaced react-router-redux.\nVersion 2\nVersion 2.x is a big internal rewrite! It provides a massive increase in flexibility when using redux-auth-wrapper and also introduces some breaking changes. See the Migration Guide for more details if coming from 1.x. Or check out the Getting Started guide if you've never used redux-auth-wrapper before.\nLooking for Version 1.x? You can browse the 1.x README here.\nSubmitting Issues\nHaving trouble? First check out the Troubleshooting section of the documentation, and then search the issues, both open and closed for your problem. If you are still having trouble or have a question on using redux-auth-wrapper, please open an issue! You can also ask on the gitter channel.\nExamples\n\nReact Router 3\nReact Router 4/5\n\nOther examples not yet updated to v2:\n\nRedux-Router and React-Router 1.0 with JWT\nReact-Router-Redux and React-Router 2.0 with JWT\n\n"},"docs/Getting-Started/Overview.html":{"url":"docs/Getting-Started/Overview.html","title":"Getting Started","keywords":"","body":"Overview\nHigher Order Components\nredux-auth-wrapper makes use of higher order components to decouple the rendering logic in your components from the permissions a user might have. If you are unfamiliar with using higher order components or where to apply them, please read below, otherwise skip to the Tutorials.\nFor a great read on what higher order components are, check out Dan Abramov's blog post:\nHigher Order Components.\n\nA higher-order component is just a function that takes an existing component and returns another component that wraps it\n\nWhere to apply\nHigher order components are extremely powerful tools for adding logic to your components and keeping them easy to understand. It is important, however, to apply HOCs in the proper place. Failure to do so can cause subtle bugs and performance problems in your code.\nIn all of the following examples, we use the hoc authWrapper, but this advice applies for all HOCs (even ones not from redux-auth-wrapper).\nSafe to Apply\nDirectly inside ReactDOM.render:\nReactDOM.render(\n \n \n \n \n ...\n \n \n ,\n document.getElementById('mount')\n)\n\nSeparate route config file:\nconst routes = (\n \n \n ...\n \n)\n\nReactDOM.render( \n \n \n {routes}\n \n ,\n document.getElementById('mount')\n)\n\nApplied in the component file (es7):\n@authWrapper\nexport default class MyComponent extends Component {\n ...\n}\n\nApplied in the component file (es6):\nclass MyComponent extends Component {\n ...\n}\nexport default UserIsAuthenticated(MyComponent)\n\nApplied outside the component file:\nimport MyComponent from './component/mycomponent.js'\n\nconst MyAuthComponent = authWrapper(MyComponent)\n\nNot Safe to Apply\nThe following are all not safe because they create a new component over and over again, preventing react from considering these the \"same\" component and causing mounting/unmounting loops.\nInside of render:\nimport MyComponent from './component/MyComponent.js'\n\nclass MyParentComponent extends Component {\n render() {\n const MyAuthComponent = authWrapper(MyComponent)\n return \n }\n}\n\nInside of any getComponent (react router 3):\nconst routes = (\n \n {\n cb(null, authWrapper(Foo))\n }} />\n ...\n \n)\n\nTutorials\n\nReact Router 3 Tutorial\nReact Router 4 Tutorial\nReact Native Tutorial\nHiding and Alternative Components\nNesting Wrappers\n\n"},"docs/Getting-Started/ReactRouter3.html":{"url":"docs/Getting-Started/ReactRouter3.html","title":"React Router 3","keywords":"","body":"React Router 3 Redirection\nAt first glance, it appears that redux-auth-wrapper is unnecessary in React Router 3 because of the onEnter method.\nonEnter is great, and useful in certain situations. However, here are some common auth problems onEnter does not solve:\n\nDecide authentication/authorization from redux store data (there are some workarounds)\nRecheck auth when the store changes but not the current route (not possible!)\n\nInstead, we can use redux-auth-wrapper to protect React Router 3 routes with auth checks to more easily interact with our redux store.\nSecuring a Route\nTo add redirection to your app with React Router 3, import the following helper:\nimport { connectedRouterRedirect } from 'redux-auth-wrapper/history3/redirect'\n\nThe connectedRouterRedirect will build the redirect higher order component, but we have to first pass in a config object. The wrapper needs to know how to determine if a user is allowed to access the route.\nconst userIsAuthenticated = connectedRouterRedirect({\n // The url to redirect user to if they fail\n redirectPath: '/login',\n // Determine if the user is authenticated or not\n authenticatedSelector: state => state.user !== null,\n // A nice display name for this check\n wrapperDisplayName: 'UserIsAuthenticated'\n})\n\nuserIsAuthenticated is a Higher Order Component, so we can apply it to the component we want to protect. You can do this in many places, see where to apply the wrappers for more details. In our case, we apply it directly in the route definition.\n\n\nWhen the user navigates to /profile, one of the following occurs:\n\nIf The state.user is null:\n The user is redirected to /login?redirect=%2Fprofile\n Notice the url contains the query parameter redirect for sending the user back to after you log them into your app\n\nOtherwise:\n The component is rendered\n\n\nRedirecting from Login\nWe've only done half of the work however. When a user logs into the login page, we want to send them back to /profile. Additionally, if a user is already logged in, but navigates to our login page, we may want to send them to a landing page (/landing). Luckily we can easily do both of these with another wrapper.\nimport locationHelperBuilder from 'redux-auth-wrapper/history3/locationHelper'\n\nconst locationHelper = locationHelperBuilder({})\n\nconst userIsNotAuthenticated = connectedRouterRedirect({\n // This sends the user either to the query param route if we have one, or to the landing page if none is specified and the user is already logged in\n redirectPath: (state, ownProps) => locationHelper.getRedirectQueryParam(ownProps) || '/landing',\n // This prevents us from adding the query parameter when we send the user away from the login page\n allowRedirectBack: false,\n // Determine if the user is authenticated or not\n authenticatedSelector: state => state.user.data !== null,\n // A nice display name for this check\n wrapperDisplayName: 'UserIsNotAuthenticated'\n})\n\n\n\n\nThe locationHelper requires the location object in props. If the component is not rendered as part of a route component then you must use the withRouter HOC from react-router:\nwithRouter(userIsNotAuthenticated(Login))\n\nDisplaying an AuthenticatingComponent Component\nIts often useful to display some sort of loading component or animation when you are checking if the user's credentials are valid or if the user is already logged in. We can add a loading component to both our Login and Profile page easily:\nWhen authenticatingSelector returns true, no redirection will be performed and the the specified AuthenticatingComponent will be displayed. If no AuthenticatingComponent is specified, then no component will be rendered (null).\nconst userIsAuthenticated = connectedRouterRedirect({\n redirectPath: '/login',\n authenticatedSelector: state => state.user.data. !== null,\n wrapperDisplayName: 'UserIsAuthenticated'\n // Returns true if the user auth state is loading\n authenticatingSelector: state => state.user.isLoading,\n // Render this component when the authenticatingSelector returns true\n AuthenticatingComponent: LoadingSpinner,\n})\n\nYou can also add an authenticatingSelector and AuthenticatingComponent\nIntegrating with redux-based routing\nIf you want to dispatch a redux action to perform navigation instead of interacting directly with the history/router object then you can pass the redux action creator to redirectAction. Note that using redirectAction is not required if you use redux-based or redux-integrated routing, it only changes how the route change is triggered in the client.\nTo do this, swap out the import of connectedRouterRedirect for connectedReduxRedirect and pass the redirectAction parameter to the config object:\nimport { connectedReduxRedirect } from 'redux-auth-wrapper/history3/redirect'\nimport { routerActions } from 'react-router-redux'\n\nconst userIsAuthenticated = connectedReduxRedirect({\n redirectPath: '/login',\n authenticatedSelector: state => state.user !== null,\n wrapperDisplayName: 'UserIsAuthenticated',\n // This should be a redux action creator\n redirectAction: routerActions.replace,\n})\n\nNext Steps\nCheck out the examples or browse the API documentation. If you are using server side rendering (SSR) with React Router 3, you should also check out the Server Side Rendering documentation.\n"},"docs/Getting-Started/ReactRouter4.html":{"url":"docs/Getting-Started/ReactRouter4.html","title":"React Router 4","keywords":"","body":"React Router 4/5 Redirection\nnote: this guide refers mainlys to React Router 4. React Router 5 is the same API and redux-auth-wrapper 3.x is fully compatible with React Router 5.\nReact Router 4 removed onEnter and onChange in favor of performing those routing logic actions inside component life cycle methods. This is what redux-auth-wrapper already does with Higher Order Components!\nUsing redux-auth-wrapper with React Router 4 is very similar to React Router 3 with a few changes.\nSecuring a Route\nTo add redirection to your app with React Router 4, import the following helper:\nimport { connectedRouterRedirect } from 'redux-auth-wrapper/history4/redirect'\n\nThe connectedRouterRedirect will build the redirect higher order component, but we have to first pass in a config object. The wrapper needs to know how to determine if a user is allowed to access the route.\nconst userIsAuthenticated = connectedRouterRedirect({\n // The url to redirect user to if they fail\n redirectPath: '/login',\n // If selector is true, wrapper will not redirect\n // For example let's check that state contains user data\n authenticatedSelector: state => state.user.data !== null,\n // A nice display name for this check\n wrapperDisplayName: 'UserIsAuthenticated'\n})\n\nuserIsAuthenticated is a Higher Order Component, so we can apply it to the component we want to protect. You can do this in many places, see where to apply the wrappers for more details. In our case, we apply it directly in the route definition.\n\n\nWhen the user navigates to /profile, one of the following occurs:\n\nIf The state.user is null:\n The user is redirected to /login?redirect=%2Fprofile\n Notice the url contains the query parameter redirect for sending the user back to after you log them into your app\n\nOtherwise:\n The component is rendered\n\n\nRedirecting from Login\nWe've only done half of the work however. When a user logs into the login page, we want to send them back to /profile. Additionally, if a user is already logged in, but navigates to our login page, we may want to send them to a landing page (/landing). Luckily we can easily do both of these with another wrapper.\nimport locationHelperBuilder from 'redux-auth-wrapper/history4/locationHelper'\n\nconst locationHelper = locationHelperBuilder({})\n\nconst userIsNotAuthenticated = connectedRouterRedirect({\n // This sends the user either to the query param route if we have one, or to the landing page if none is specified and the user is already logged in\n redirectPath: (state, ownProps) => locationHelper.getRedirectQueryParam(ownProps) || '/landing',\n // This prevents us from adding the query parameter when we send the user away from the login page\n allowRedirectBack: false,\n // If selector is true, wrapper will not redirect\n // So if there is no user data, then we show the page\n authenticatedSelector: state => state.user.data === null,\n // A nice display name for this check\n wrapperDisplayName: 'UserIsNotAuthenticated'\n})\n\n\n\n\nThe locationHelper requires the location object in props. If the component is not rendered as part of a route component then you must use the withRouter HOC from react-router:\nwithRouter(userIsNotAuthenticated(Login))\n\nDisplaying an AuthenticatingComponent Component\nIts often useful to display some sort of loading component or animation when you are checking if the user's credentials are valid or if the user is already logged in. We can add a loading component to both our Login and Profile page easily:\nWhen authenticatingSelector returns true, no redirection will be performed and the the specified AuthenticatingComponent will be displayed. If no AuthenticatingComponent is specified, then no component will be rendered (null).\nconst userIsAuthenticated = connectedRouterRedirect({\n redirectPath: '/login',\n authenticatedSelector: state => state.user.data !== null,\n wrapperDisplayName: 'UserIsAuthenticated',\n // Returns true if the user auth state is loading\n authenticatingSelector: state => state.user.isLoading,\n // Render this component when the authenticatingSelector returns true\n AuthenticatingComponent: LoadingSpinner\n})\n\nYou can also add an authenticatingSelector and AuthenticatingComponent\nIntegrating with redux-based routing\nIf you want to dispatch a redux action to perform navigation instead of interacting directly with the history/router object then you can pass the redux action creator to redirectAction. Note that using redirectAction is not required if you use redux-based or redux-integrated routing, it only changes how the route change is triggered in the client.\nTo do this, swap out the import of connectedRouterRedirect for connectedReduxRedirect and pass the redirectAction parameter to the config object:\nimport { connectedReduxRedirect } from 'redux-auth-wrapper/history4/redirect'\nimport { replace } from 'connected-react-router'\n\nconst userIsAuthenticated = connectedReduxRedirect({\n redirectPath: '/login',\n authenticatedSelector: state => state.user !== null,\n wrapperDisplayName: 'UserIsAuthenticated',\n // This should be a redux action creator\n redirectAction: replace,\n})\n\nNext Steps\nCheck out the examples or browse the API documentation.\n"},"docs/Getting-Started/ReactNative.html":{"url":"docs/Getting-Started/ReactNative.html","title":"React Native","keywords":"","body":"React Native Redirection\nUsing redux-auth-wrapper with React Native? Please help improve these docs and the examples by submitting a Pull Request!\n"},"docs/Getting-Started/HidingAlternate.html":{"url":"docs/Getting-Started/HidingAlternate.html","title":"Hiding and Alternate Components","keywords":"","body":"Hiding and Displaying Alternate Components\nIn addition to controlling what pages users can access in an application, another common requirement is to hide or display different elements on the page depending on the user's permissions. redux-auth-wrapper also provides an HOC that makes this easy to do in your application.\nHiding a Component\nIf you want to hide a component, you can import the connectedAuthWrapper HOC. When the authenticatedSelector returns true, the wrapped component will be rendered and passed all props from the parent. When the authenticatedSelector returns false, no component will be rendered.\nHere is an example that hides a link from a non-admin user.\nimport connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper'\n\nconst visibleOnlyAdmin = connectedAuthWrapper({\n authenticatedSelector: state => state.user !== null && state.user.isAdmin,\n wrapperDisplayName: 'VisibleOnlyAdmin',\n})\n\n// Applying to a function component for simplicity but could be Class or createClass component\nconst AdminOnlyLink = visibleOnlyAdmin(() => Admin Section)\n\nDisplaying an Alternate Component\nYou can also display a component when the authenticatedSelector returns false. Simply pass the FailureComponent property to the authWrapper.\nimport connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper'\n\nconst visibleOnlyAdmin = connectedAuthWrapper({\n authenticatedSelector: state => state.user !== null && state.user.isAdmin,\n wrapperDisplayName: 'AdminOrHomeLink',\n FailureComponent: () => Home Section\n})\n\n// Applying to a function component for simplicity but could be Class or createClass component\nconst AdminOnlyLink = visibleOnlyAdmin(() => Admin Section)\n\nYou can also easily wrap the call to authWrapper in a function to make it more flexible to apply throughout your code:\nconst adminOrElse = (Component, FailureComponent) => connectedAuthWrapper({\n authenticatedSelector: state => state.user !== null && state.user.isAdmin,\n wrapperDisplayName: 'AdminOrElse',\n FailureComponent\n})(Component)\n\n// Show Admin dashboard to admins and user dashboard to regular users\n\n\nUnconnected Wrapper\nIf you don't want to have redux-auth-wrapper connect your selector automatically for you, you can use the un-connected version. This might be useful if you are already connecting the component and dont want the extra overhead of another connect, or want to pass the props in via traditional state.\nimport authWrapper from 'redux-auth-wrapper/authWrapper'\n\nconst visibleOnlyAdmin = authWrapper({\n wrapperDisplayName: 'VisibleOnlyAdmin',\n})\n\n// Applying to a function component for simplicity but could be Class or createClass component\nconst AdminOnlyLink = visibleOnlyAdmin(() => Admin Section)\n\nclass MyComponent extends Component {\n\n ...\n\n render() {\n \n \n \n }\n\n}\n\n"},"docs/Getting-Started/NestingWrappers.html":{"url":"docs/Getting-Started/NestingWrappers.html","title":"Nesting Wrappers","keywords":"","body":"Nesting Wrappers\nBoth the redirection HOCs and authWrapper can be nested (composed) together to create additional constraints for auth. This is especially useful when you want to provide authorization checks, such as checking a user is logged in and also an administrator.\nFor example, we can create a button that will only display for logged in users named Bob:\nconst onlyBob = authWrapper({\n authenticatedSelector: state => state.user.firstName === 'Bob'\n wrapperDisplayName: 'UserIsOnlyBob',\n})\n\nconst OnlyBobButton = onlyBob(MyButton)\n\nWhen nesting redirection HOCs, it is important to pay attention to the order of the nesting, especially if you are using a different redirectPath or allowRedirectBack. Consider the following:\nconst userIsAuthenticated = connectedRouterRedirect({\n redirectPath: '/login',\n authenticatedSelector: state => state.user !== null,\n wrapperDisplayName: 'UserIsAuthenticated'\n})\n\nconst userIsAdmin = connectedRouterRedirect({\n authenticatedSelector: state => state.user.isAdmin,\n redirectPath: '/app',\n wrapperDisplayName: 'UserIsAdmin',\n allowRedirectBack: false\n})\n\n// Now to secure the component: first check if the user is authenticated, and then check if the user is an admin\n\n\nBecause the userIsAuthenticated check happens first, if the users aren't logged in they will be sent to the /login first, skipping the admin check all together. Then once they've authenticated, they can be checked for if they are an admin. Otherwise, they would be sent to /app which might also be protected by a userIsAuthenticated and then get sent to /login from there (assuming another auth check). This would result in the user ending up at /app once they've authenticated, instead of at /admin if they are an admin but weren't logged in at the time.\nChaining using compose\nSince Higher Order Components are functions, they can easily be chained together using compose to prevent accidentally applying them in the wrong order. compose can be imported from redux, or recompose:\nimport { compose } from 'redux'\n\n// userIsAuthenticated and userIsAdmin from above\nconst userIsAdminChain = compose(userIsAuthenticated, userIsAdmin)\n\n// Now to secure the component, you don't have to think which order to apply!\n\n\n"},"docs/Migrating.html":{"url":"docs/Migrating.html","title":"Migrating from V1","keywords":"","body":"Migrating from Version 1.x to Version 2.x\nMotivation for 2.x\nredux-auth-wrapper has really changed a lot since it was first designed as a small specialized utility for handling redirection with react-router-redux. Since then, it has been adopted by many developers and they've used it in numerous unforeseen and useful ways such as hiding components, displaying alternate components, and integrating with other routers. Additionally, redux-auth-wrapper needed to support two version of React Router (3 and 4) which had very different APIs. Therefore, version 2.x breaks redux-auth-wrapper into many more small, composable pieces. redux-auth-wrapper still provides a simple import for those looking to get started quickly with React Router, but also allows for developers to import the building blocks to create redirection wrappers that work with any router (or history directly). You can even use redux-auth-wrapper 2.x in a project without redux or even routing.\nThe largest change is that wrappers that perform redirection have been split from those that hide or display alternate components using FailureComponent.\nThis made practical sense since using a FailureComponent disabled the redirection, yet the wrapper would still complain\nabout missing redirection helpers like history even when they would not be used. Now you can use Failure Component wrappers\nwithout even a router.\nMigrating redirection wrappers\nThe main changes are the following:\n\nCombined authSelector and predicate into a single authenticatedSelector\nNo longer passed authData as a prop to child components. This was the return value of authSelector. If you need your auth data, just connect it at a lower level.\nrenamed LoadingComponent to AuthenticatingComponent\nrenamed failureRedirectPath to redirectPath\nredirectPath no longer defaults to /login\nremoved FailureComponent from the redirect helper, see Migrating failure and alternative components for details\nRemoved mapProps. If you need to prevent passing down any props from redux-auth-wrapper, use mapProps from recompose.\n\nPreviously:\nv1.x:\nimport { UserAuthWrapper } from 'redux-auth-wrapper'\n\nconst UserIsAuthenticated = UserAuthWrapper({\n authSelector: state => state.user.data,\n authenticatingSelector: state => state.user.isLoading,\n LoadingComponent: Loading,\n redirectAction: routerActions.replace,\n wrapperDisplayName: 'UserIsAuthenticated'\n})\n\nv2.x:\n// NOTE: use history3 because coming from React Router 2/3. If planning to upgrade to React Router 4 use history4\nimport { connectedReduxRedirect } from 'redux-auth-wrapper/history3/redirect'\n\nexport const userIsAuthenticated = connectedReduxRedirect({\n redirectPath: '/login',\n authenticatedSelector: state => state.user.data !== null,\n authenticatingSelector: state => state.user.isLoading,\n AuthenticatingComponent: Loading,\n redirectAction: routerActions.replace,\n wrapperDisplayName: 'UserIsAuthenticated'\n})\n\nNote: If not using redirectAction, import connectedRouterRedirect instead.\nMigrating failure and alternative components\n\nCombined authSelector and predicate into a single authenticatedSelector\nFailureComponent is optional now, not specifying it will render nothing (null) when the authenticatedSelector returns false\nAll properties besides authenticatedSelector, authenticatingSelector, FailureComponent, and wrapperDisplayName have been removed\n\nHiding Components\nv1.x\nimport { UserAuthWrapper } from 'redux-auth-wrapper'\n\n\nconst VisibleOnlyAdmin = UserAuthWrapper({\n authSelector: state => state.user,\n wrapperDisplayName: 'VisibleOnlyAdmin',\n predicate: user => user.isAdmin,\n FailureComponent: null\n})\n\n// Applying to a function component for simplicity but could be Class or createClass component\nconst AdminOnlyLink = VisibleOnlyAdmin(() => Admin Section)\n\nv2.x\nimport connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper'\n\nconst visibleOnlyAdmin = authWrapper({\n authenticatedSelector: state => state.user !== null && state.user.isAdmin,\n wrapperDisplayName: 'VisibleOnlyAdmin',\n})\n\nAlternate Components\nv1.x\nimport { UserAuthWrapper } from 'redux-auth-wrapper'\n\nconst AdminOrElse = (Component, FailureComponent) => UserAuthWrapper({\n authSelector: state => state.user,\n wrapperDisplayName: 'AdminOrElse',\n predicate: user => user.isAdmin,\n FailureComponent\n})(Component)\n\n// Show Admin dashboard to admins and user dashboard to regular users\n\n\nv2.x\nimport connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper'\n\nconst adminOrElse = (Component, FailureComponent) => connectedAuthWrapper({\n authenticatedSelector: state => state.user !== null && state.user.isAdmin,\n wrapperDisplayName: 'AdminOrElse',\n FailureComponent\n})(Component)\n\n// Show Admin dashboard to admins and user dashboard to regular users\n\n\n"},"docs/Troubleshooting.html":{"url":"docs/Troubleshooting.html","title":"Troubleshooting","keywords":"","body":"Troubleshooting and Common Issues\nHaving trouble with redux-auth-wrapper? Check out the following common issues.\nApplying the HOC\nMake sure that when using the helpers from redux-auth-wrapper that you are applying the HOC to your component and in the right location (see where to apply the wrappers for more details). Most imports from this library are HOC builders, requiring first a configuration object. For instance you shouldn't be applying the connectedRouterRedirect directly to a component:\nIncorrect:\nconst ProtectedComponent = connectedRouterRedirect(MyComponent)\n\nCorrect:\nconst userIsAuthenticated = connectedRouterRedirect({\n redirectPath: '/login',\n authenticatedSelector: state => state.user !== null\n})\n\nconst ProtectedComponent = userIsAuthenticated(MyComponent)\n\nAlso, please be sure that you've applied the HOC in a proper location. Check out the documentation on where to apply auth wrappers.\nRendering the wrapped component\nAlso remember that the result of an HOC being applied to a Component is a new Component, so you cannot render it without instantiating it:\nIncorrect:\nconst visibleOnlyAdmin = authWrapper({\n authenticatedSelector: state => state.user !== null && state.user.isAdmin,\n wrapperDisplayName: 'AdminOrHomeLink',\n FailureComponent: () => Home Section\n})\n\nconst AdminOnlyLink = visibleOnlyAdmin(() => Admin Section)\n\n class MyComponent extends Component {\n render() {\n return (\n \n {AdminOnlyLink}\n \n )\n\n }\n }\n\nCorrect:\nconst visibleOnlyAdmin = authWrapper({\n authenticatedSelector: state => state.user !== null && state.user.isAdmin,\n wrapperDisplayName: 'AdminOrHomeLink',\n FailureComponent: () => Home Section\n})\n\nconst AdminOnlyLink = visibleOnlyAdmin(() => Admin Section)\n\n class MyComponent extends Component {\n render() {\n return (\n \n \n \n )\n\n }\n }\n\nReplace of undefined\nThe redirect helpers make us of the history object from React Router. In most cases, this is passed down because the wrapped component is rendered as a child of . However if you render the component elsewhere you might get Uncaught TypeError: Cannot read property 'replace' of undefined. This likely means the history object was not passed to the component. You can solve this by using the withRouter higher order component:\nimport { withRouter } from 'react-router';\nconst userIsAuthenticated = connectedRouterRedirect({\n redirectPath: '/login',\n authenticatedSelector: state => state.user.data. !== null\n})\n\nconst ProtectedComponent = withRouter(userIsAuthenticated(MyComponent))\n\n"},"docs/API.html":{"url":"docs/API.html","title":"API","keywords":"","body":"API\nHow to read the API\n\nParameter names beginning with ? are optional\nHigherOrderComponent is a function of type: ReactClass | ReactFunctionalComponent | string =>\n ReactClass | ReactFunctionalComponent | string\n\n\nRedirection Helpers (React Router 3/History v3)\nconnectedRouterRedirect\nimport { connectedRouterRedirect } from 'redux-auth-wrapper/history3/redirect'\n\nconnectedRouterRedirect({\n redirectPath: string | (state: Object, ownProps: Object) => string,\n authenticatedSelector: (state: Object, ownProps: Object) => boolean,\n ?authenticatingSelector: (state: Object, ownProps: Object) => boolean,\n ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string,\n ?wrapperDisplayName: string,\n ?allowRedirectBack: boolean | (nextState: Object, redirectPath: String) => boolean,\n ?redirectQueryParamName: string\n}): HigherOrderComponent\n\nconnectedReduxRedirect\nimport { connectedReduxRedirect } from 'redux-auth-wrapper/history3/redirect'\n\nconnectedReduxRedirect({\n redirectPath: string | (state: Object, ownProps: Object) => string,\n authenticatedSelector: (state: Object, ownProps: Object) => boolean,\n ?authenticatingSelector: (state: Object, ownProps: Object) => boolean,\n ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string,\n ?wrapperDisplayName: string,\n ?allowRedirectBack: boolean | (nextState: Object, redirectPath: String) => boolean,\n ?redirectQueryParamName: string\n}): HigherOrderComponent\n\ncreateOnEnter\nimport { createOnEnter } from 'redux-auth-wrapper/history3/redirect'\n\ncreateOnEnter({\n redirectPath: string | (state: Object, nextState: Object) => string,\n authenticatedSelector: (state: Object, nextState: Object) => boolean,\n ?authenticatingSelector: (state: Object, nextState: Object) => boolean,\n ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string,\n ?wrapperDisplayName: string,\n ?allowRedirectBack: boolean | (nextState: Object, redirectPath: String) => boolean,\n ?redirectQueryParamName: string\n}): (store: Object, nextState: Object: replace: (location: Object => void))\n\nlocationHelperBuilder\nHelper used by the redirection and useful for pulling the redirectPath out of the query params.\nimport locationHelperBuilder from 'redux-auth-wrapper/history3/locationHelper'\n\nlocationHelperBuilder({\n ?redirectQueryParamName: string,\n ?locationSelector: (props: Object) => LocationObject\n}) : LocationHelper\n\n\nLocationHelper: {\n getRedirectQueryParam: (props: Object) => string,\n createRedirectLoc: allowRedirectBack: boolean => (nextState: Object, redirectPath: string) => LocationObject,\n}\n\nRedirection Helpers (React Router 4/History v4)\nconnectedRouterRedirect\nimport { connectedRouterRedirect } from 'redux-auth-wrapper/history4/redirect'\n\nconnectedRouterRedirect({\n redirectPath: string | (state: Object, ownProps: Object) => string,\n authenticatedSelector: (state: Object, ownProps: Object) => boolean,\n ?authenticatingSelector: (state: Object, ownProps: Object) => boolean,\n ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string,\n ?wrapperDisplayName: string,\n ?allowRedirectBack: boolean | (nextState: Object, redirectPath: String) => boolean,\n ?redirectQueryParamName: string\n}): HigherOrderComponent\n\nconnectedReduxRedirect\nimport { connectedReduxRedirect } from 'redux-auth-wrapper/history4/redirect'\n\nconnectedReduxRedirect({\n redirectPath: string | (state: Object, ownProps: Object) => string,\n redirectAction: (location: Object) => ReduxAction,\n authenticatedSelector: (state: Object, ownProps: Object) => boolean,\n ?authenticatingSelector: (state: Object, ownProps: Object) => boolean,\n ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string,\n ?wrapperDisplayName: string,\n ?allowRedirectBack: boolean | (nextState: Object, redirectPath: String) => boolean,\n ?redirectQueryParamName: string\n}): HigherOrderComponent\n\nlocationHelperBuilder\nimport locationHelperBuilder from 'redux-auth-wrapper/history4/locationHelper'\n\nlocationHelperBuilder({\n ?redirectQueryParamName: string,\n ?locationSelector: (props: Object) => LocationObject\n}) : LocationHelper\n\n\nLocationHelper: {\n getRedirectQueryParam: (props: Object) => string,\n createRedirectLoc: allowRedirectBack: boolean => (nextState: Object, redirectPath: string) => LocationObject,\n}\n\nOther Wrappers\nauthWrapper\nimport authWrapper from 'redux-auth-wrapper/authWrapper'\n\nauthWrapper({\n ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string,\n ?FailureComponent: ReactClass | ReactFunctionalComponent | string,\n ?wrapperDisplayName: string\n}): HigherOrderComponent\n\nThe returned Component after applying a Component to the HOC takes as props isAuthenticated and isAuthenticating, both of which are booleans. isAuthenticating defaults to false.\nconnectedAuthWrapper\nimport connectedAuthWrapper from 'redux-auth-wrapper/connectedAuthWrapper'\n\nconnectedAuthWrapper({\n authenticatedSelector: (state: Object, ownProps: Object) => boolean,\n ?authenticatingSelector: (state: Object, ownProps: Object) => boolean,\n ?AuthenticatingComponent: ReactClass | ReactFunctionalComponent | string,\n ?FailureComponent: ReactClass | ReactFunctionalComponent | string,\n ?wrapperDisplayName: string\n}): HigherOrderComponent\n\nOther Helpers\nDocumentation in progress!\n"},"docs/AdvancedUsage/OtherRouters.html":{"url":"docs/AdvancedUsage/OtherRouters.html","title":"Integrating with other Routers","keywords":"","body":"Integrating with other Routers\nHelp us improve this documentation by submitting a pull request!\n"},"docs/AdvancedUsage/ReactRouter3.html":{"url":"docs/AdvancedUsage/ReactRouter3.html","title":"React Router3 and SSR","keywords":"","body":"React Router 3 Advanced Usage\nProtecting Multiple Routes\nBecause routes in React Router 3 are not required to have paths, you can use nesting to protect multiple routes without applying\nthe wrapper multiple times.\nconst Authenticated = userIsAuthenticated(({ children, ...props }) => React.cloneElement(children, props));\n\n\n \n \n \n \n \n \n\n\nOne thing to note is that if you use named children routes (TODO example) then you may need to use a different approach than cloneElement with the children prop.\nServer Side Rendering\nIf you are using redux-auth-wrapper for redirection in apps that use Server Side Rendering you may need to use the onEnter. This is because in most cases your server should redirect users before sending down the client HTML.\nimport { createOnEnter } from '../src/history3/redirect'\n\nconst connect = (fn) => (nextState, replaceState) => fn(store, nextState, replaceState)\n\nconst userIsAuthenticated = connectedReduxRedirect({\n redirectPath: 'unprotected',\n authenticatedSelector: state => state.user !== null,\n})\n\nconst onEnter = createOnEnter({\n redirectPath: 'unprotected',\n authenticatedSelector: state => state.user !== null,\n})\n\n\n \n \n\nDuring onEnter, selectors such as authenticatedSelector, authenticatingSelector, and failureRedirectPath (if you are using)\nthe function variation, will receive react-router's nextState as their second argument instead of the component props.\nWith nested wrappers\nTo implement SSR with nested wrappers, you will have to provide a function to chain onEnter functions of each wrapper.\nconst onEnterAuth = createOnEnter({\n redirectPath: 'unprotected',\n authenticatedSelector: state => state.user !== null,\n})\n\nconst userIsAuthenticated = connectedReduxRedirect({\n redirectPath: 'unprotected',\n authenticatedSelector: state => state.user !== null,\n})\n\nconst onEnterAdmin = createOnEnter({\n redirectPath: 'home',\n authenticatedSelector: state => state.user.isAdmin === false,\n})\n\nconst userIsAdmin = connectedReduxRedirect({\n redirectPath: 'home',\n authenticatedSelector: state => state.user.isAdmin === false,\n})\n\nconst getRoutes = (store) => {\n const connect = (fn) => (nextState, replaceState) => fn(store, nextState, replaceState);\n\n //This executes the parent onEnter first, going from left to right.\n // `replace` has to be wrapped because we want to stop executing `onEnter` hooks\n // after the first call to `replace`.\n const onEnterChain = (...listOfOnEnters) => (store, nextState, replace) => {\n let redirected = false;\n const wrappedReplace = (...args) => {\n replace(...args);\n redirected = true;\n };\n listOfOnEnters.forEach((onEnter) => {\n if (!redirected) {\n onEnter(store, nextState, wrappedReplace);\n }\n });\n };\n\n return (\n \n \n \n \n \n \n \n );\n};\n\n"},"docs/AdvancedUsage/Redux.html":{"url":"docs/AdvancedUsage/Redux.html","title":"Advanced Redux","keywords":"","body":"Redux Advanced Usage\nDispatching an Additional Redux Action on Redirect\nYou may want to dispatch an additional redux action when a redirect occurs. One example of this is to display a notification message\nthat the user is being redirected or doesn't have access to that protected resource. To do this, you can chain the redirectAction\nparameter using redux-thunk middleware. It depends slightly on if you are using a redux + routing solution or just React Router.\nNote: make sure you add redux-thunk to your store's middleware or else the following will not work\nUsing react-router-redux or redux-router and dispatching an extra redux action in the wrapper\nimport { replace } from 'react-router-redux'; // Or your redux-router equivalent\nimport { connectedReduxRedirect } from 'redux-auth-wrapper/history3/redirect'\nimport addNotification from './notificationActions';\n\n// Admin Authorization, redirects non-admins to /app\nexport const userIsAdmin = connectedReduxRedirect({\n redirectPath: '/app',\n allowRedirectBack: false,\n authenticatedSelector: state => state.user !== null && state.user.isAdmin,\n redirectAction: (newLoc) => (dispatch) => {\n dispatch(replace(newLoc));\n dispatch(addNotification({ message: 'Sorry, you are not an administrator' }));\n },\n wrapperDisplayName: 'UserIsAdmin'\n})\n\nUsing React Router with history singleton and extra redux action\nimport { browserHistory } from 'react-router'; // react router 3\nimport addNotification from './notificationActions';\n\n// Admin Authorization, redirects non-admins to /app\nexport const userIsAdmin = connectedReduxRedirect({\n redirectPath: '/app',\n allowRedirectBack: false,\n authenticatedSelector: state => state.user !== null && state.user.isAdmin,\n redirectAction: (newLoc) => (dispatch) => {\n browserHistory.replace(newLoc);\n dispatch(addNotification({ message: 'Sorry, you are not an administrator' }));\n },\n wrapperDisplayName: 'UserIsAdmin'\n})\n\n"}}} \ No newline at end of file diff --git a/src/authWrapper.js b/src/authWrapper.js deleted file mode 100644 index d897c50..0000000 --- a/src/authWrapper.js +++ /dev/null @@ -1,50 +0,0 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' -import hoistStatics from 'hoist-non-react-statics' - -const defaults = { - AuthenticatingComponent: () => null, // dont render anything while authenticating - FailureComponent: () => null, // dont render anything on failure of the predicate - wrapperDisplayName: 'AuthWrapper' -} - -export default (args) => { - const { AuthenticatingComponent, FailureComponent, wrapperDisplayName } = { - ...defaults, - ...args - } - - // Wraps the component that needs the auth enforcement - function wrapComponent(DecoratedComponent) { - const displayName = DecoratedComponent.displayName || DecoratedComponent.name || 'Component' - - class UserAuthWrapper extends Component { - - static displayName = `${wrapperDisplayName}(${displayName})`; - - static propTypes = { - isAuthenticated: PropTypes.bool, - isAuthenticating: PropTypes.bool - }; - - static defaultProps = { - isAuthenticating: false - } - - render() { - const { isAuthenticated, isAuthenticating } = this.props - if (isAuthenticated) { - return - } else if(isAuthenticating) { - return - } else { - return - } - } - } - - return hoistStatics(UserAuthWrapper, DecoratedComponent) - } - - return wrapComponent -} diff --git a/src/connectedAuthWrapper.js b/src/connectedAuthWrapper.js deleted file mode 100644 index 6cafdcb..0000000 --- a/src/connectedAuthWrapper.js +++ /dev/null @@ -1,20 +0,0 @@ -import { connect } from 'react-redux' - -import authWrapper from './authWrapper' - -const connectedDefaults = { - authenticatingSelector: () => false -} - -export default (args) => { - const { authenticatedSelector, authenticatingSelector } = { - ...connectedDefaults, - ...args - } - - return (DecoratedComponent) => - connect((state, ownProps) => ({ - isAuthenticated: authenticatedSelector(state, ownProps), - isAuthenticating: authenticatingSelector(state, ownProps) - }))(authWrapper(args)(DecoratedComponent)) -} diff --git a/src/helper/redirect.js b/src/helper/redirect.js deleted file mode 100644 index e077057..0000000 --- a/src/helper/redirect.js +++ /dev/null @@ -1,101 +0,0 @@ -import { connect } from 'react-redux' -import invariant from 'invariant' - -import authWrapper from '../authWrapper' -import Redirect from '../redirect' - -const connectedDefaults = { - authenticatingSelector: () => false, - allowRedirectBack: true, - FailureComponent: Redirect, - redirectQueryParamName: 'redirect' -} - -export default ({ locationHelperBuilder, getRouterRedirect }) => { - - const connectedRouterRedirect = (args) => { - const allArgs = { ...connectedDefaults, ...args } - const { FailureComponent, redirectPath, authenticatedSelector, authenticatingSelector, allowRedirectBack, redirectQueryParamName } = allArgs - - const { createRedirectLoc } = locationHelperBuilder({ - redirectQueryParamName - }) - - let redirectPathSelector - if (typeof redirectPath === 'string') { - redirectPathSelector = () => redirectPath - } else if (typeof redirectPath === 'function') { - redirectPathSelector = redirectPath - } else { - invariant(false, 'redirectPath must be either a string or a function') - } - - let allowRedirectBackFn - if (typeof allowRedirectBack === 'boolean') { - allowRedirectBackFn = () => allowRedirectBack - } else if (typeof allowRedirectBack === 'function') { - allowRedirectBackFn = allowRedirectBack - } else { - invariant(false, 'allowRedirectBack must be either a boolean or a function') - } - - const redirect = (replace) => (props, path) => - replace(createRedirectLoc(allowRedirectBackFn(props, path))(props, path)) - - const ConnectedFailureComponent = connect((state, ownProps) => ({ - redirect: redirect(getRouterRedirect(ownProps)) - }))(FailureComponent) - - return (DecoratedComponent) => - connect((state, ownProps) => ({ - redirectPath: redirectPathSelector(state, ownProps), - isAuthenticated: authenticatedSelector(state, ownProps), - isAuthenticating: authenticatingSelector(state, ownProps) - }))(authWrapper({ ...allArgs, FailureComponent: ConnectedFailureComponent })(DecoratedComponent)) - } - - const connectedReduxRedirect = (args) => { - const allArgs = { ...connectedDefaults, ...args } - const { FailureComponent, redirectPath, authenticatedSelector, authenticatingSelector, allowRedirectBack, redirectAction, redirectQueryParamName } = allArgs - - const { createRedirectLoc } = locationHelperBuilder({ - redirectQueryParamName - }) - - let redirectPathSelector - if (typeof redirectPath === 'string') { - redirectPathSelector = () => redirectPath - } else if (typeof redirectPath === 'function') { - redirectPathSelector = redirectPath - } else { - invariant(false, 'redirectPath must be either a string or a function') - } - - let allowRedirectBackFn - if (typeof allowRedirectBack === 'boolean') { - allowRedirectBackFn = () => allowRedirectBack - } else if (typeof allowRedirectBack === 'function') { - allowRedirectBackFn = allowRedirectBack - } else { - invariant(false, 'allowRedirectBack must be either a boolean or a function') - } - - const createRedirect = (dispatch) => ({ - redirect: (props, path) => dispatch(redirectAction(createRedirectLoc(allowRedirectBackFn(props, path))(props, path))) - }) - - const ConnectedFailureComponent = connect(null, createRedirect)(FailureComponent) - - return (DecoratedComponent) => - connect((state, ownProps) => ({ - redirectPath: redirectPathSelector(state, ownProps), - isAuthenticated: authenticatedSelector(state, ownProps), - isAuthenticating: authenticatingSelector(state, ownProps) - }))(authWrapper({ ...allArgs, FailureComponent: ConnectedFailureComponent })(DecoratedComponent)) - } - - return { - connectedRouterRedirect, - connectedReduxRedirect - } -} diff --git a/src/history3/locationHelper.js b/src/history3/locationHelper.js deleted file mode 100644 index 1cb753a..0000000 --- a/src/history3/locationHelper.js +++ /dev/null @@ -1,47 +0,0 @@ -import url from 'url' - -const defaults = { - redirectQueryParamName: 'redirect', - locationSelector: ({ location }) => location -} - -export default (args) => { - const { redirectQueryParamName, locationSelector } = { - ...defaults, - ...args - } - - const getRedirectQueryParam = (props) => { - const location = locationSelector(props) - return location.query[redirectQueryParamName] - } - - const createRedirectLoc = allowRedirectBack => (props, redirectPath) => { - const location = locationSelector(props) - const redirectLoc = url.parse(redirectPath, true) - - let query - - if (allowRedirectBack) { - query = { [redirectQueryParamName]: `${location.pathname}${location.search}${location.hash}` } - } else { - query = {} - } - - query = { - ...query, - ...redirectLoc.query - } - - return { - pathname: redirectLoc.pathname, - hash: redirectLoc.hash, - query - } - } - - return { - getRedirectQueryParam, - createRedirectLoc - } -} diff --git a/src/history3/redirect.js b/src/history3/redirect.js deleted file mode 100644 index 3668622..0000000 --- a/src/history3/redirect.js +++ /dev/null @@ -1,54 +0,0 @@ -import locationHelperBuilder from '../history3/locationHelper' -import redirectUtil from '../helper/redirect' -import invariant from 'invariant' - -export const { connectedRouterRedirect, connectedReduxRedirect } = redirectUtil({ - locationHelperBuilder, - getRouterRedirect: ({ router }) => router.replace -}) - -const onEnterDefaults = { - allowRedirectBack: true, - authenticatingSelector: () => false, - redirectQueryParamName: 'redirect' -} - -export const createOnEnter = (config) => { - const { authenticatedSelector, authenticatingSelector, redirectPath, allowRedirectBack, redirectQueryParamName } = { - ...onEnterDefaults, - ...config - } - - let redirectPathSelector - if (typeof redirectPath === 'string') { - redirectPathSelector = () => redirectPath - } else if (typeof redirectPath === 'function') { - redirectPathSelector = redirectPath - } else { - invariant(false, 'redirectPath must be either a string or a function') - } - - let allowRedirectBackFn - if (typeof allowRedirectBack === 'boolean') { - allowRedirectBackFn = () => allowRedirectBack - } else if (typeof allowRedirectBack === 'function') { - allowRedirectBackFn = allowRedirectBack - } else { - invariant(false, 'allowRedirectBack must be either a boolean or a function') - } - - return (store, nextState, replace) => { - - const { createRedirectLoc } = locationHelperBuilder({ - redirectQueryParamName - }) - - const isAuthenticated = authenticatedSelector(store.getState(), nextState) - const isAuthenticating = authenticatingSelector(store.getState(), nextState) - - if (!isAuthenticated && !isAuthenticating) { - const redirectPath = redirectPathSelector(store.getState(), nextState) - replace(createRedirectLoc(allowRedirectBackFn(nextState, redirectPath))(nextState, redirectPath)) - } - } -} diff --git a/src/history4/locationHelper.js b/src/history4/locationHelper.js deleted file mode 100644 index d8b3ed1..0000000 --- a/src/history4/locationHelper.js +++ /dev/null @@ -1,49 +0,0 @@ -import url from 'url' -import { stringify, parse } from 'query-string' - -const defaults = { - redirectQueryParamName: 'redirect', - locationSelector: ({ location }) => location -} - -export default (args) => { - const { redirectQueryParamName, locationSelector } = { - ...defaults, - ...args - } - - const getRedirectQueryParam = (props) => { - const location = locationSelector(props) - const query = parse(location.search) - return query[redirectQueryParamName] - } - - const createRedirectLoc = allowRedirectBack => (props, redirectPath) => { - const location = locationSelector(props) - const redirectLoc = url.parse(redirectPath, true) - - let query - - if (allowRedirectBack) { - query = { [redirectQueryParamName]: `${location.pathname}${location.search}${location.hash}` } - } else { - query = {} - } - - query = { - ...query, - ...redirectLoc.query - } - - return { - pathname: redirectLoc.pathname, - hash: redirectLoc.hash, - search: stringify(query) - } - } - - return { - getRedirectQueryParam, - createRedirectLoc - } -} diff --git a/src/history4/redirect.js b/src/history4/redirect.js deleted file mode 100644 index a6a6351..0000000 --- a/src/history4/redirect.js +++ /dev/null @@ -1,7 +0,0 @@ -import locationHelperBuilder from '../history4/locationHelper' -import redirectUtil from '../helper/redirect' - -export const { connectedRouterRedirect, connectedReduxRedirect } = redirectUtil({ - locationHelperBuilder, - getRouterRedirect: ({ history }) => history.replace -}) diff --git a/src/redirect.js b/src/redirect.js deleted file mode 100644 index f1bb986..0000000 --- a/src/redirect.js +++ /dev/null @@ -1,19 +0,0 @@ -import { Component } from 'react' -import PropTypes from 'prop-types' - -export default class Redirect extends Component { - - static propTypes = { - redirectPath: PropTypes.string.isRequired, - redirect: PropTypes.func.isRequired - }; - - UNSAFE_componentWillMount() { - this.props.redirect(this.props, this.props.redirectPath) - } - - render() { - // Redirect should happen before this is rendered - return null - } -} diff --git a/test/authWrapper-test.js b/test/authWrapper-test.js deleted file mode 100644 index 84fc665..0000000 --- a/test/authWrapper-test.js +++ /dev/null @@ -1,249 +0,0 @@ -/* eslint-env node, mocha, jasmine */ -import React, { Component } from 'react' -import _ from 'lodash' -import { createStore, combineReducers } from 'redux' -import { Provider } from 'react-redux' -import { mount } from 'enzyme' - -import { userLoggedOut, userLoggedIn, userLoggingIn, authenticatedSelector, authenticatingSelector, userReducer, - UnprotectedComponent, FailureComponent, AuthenticatingComponent, userDataSelector } from './helpers' - -import authWrapper from '../src/authWrapper' -import connectedAuthWrapper from '../src/connectedAuthWrapper' - -const defaultConfig = { - authenticatedSelector -} - -describe('connectedAuthWrapper', () => { - it('renders the wrapped component on success and hides on failure', () => { - const auth = connectedAuthWrapper(defaultConfig) - - const rootReducer = combineReducers({ user: userReducer }) - const store = createStore(rootReducer) - - const AuthedComponent = auth(UnprotectedComponent) - - const wrapper = mount( - - - - ) - - expect(wrapper.find(UnprotectedComponent).length).to.equal(0) - expect(wrapper.find(AuthedComponent).html()).to.equal('') - - store.dispatch(userLoggedIn()) - wrapper.update() - - expect(wrapper.find(UnprotectedComponent).length).to.equal(1) - }) - - it('defaults to rendering nothing while authenticating', () => { - const auth = connectedAuthWrapper({ - ...defaultConfig, - authenticatingSelector - }) - - const rootReducer = combineReducers({ user: userReducer }) - const store = createStore(rootReducer) - - const AuthedComponent = auth(UnprotectedComponent) - - const wrapper = mount( - - - - ) - - expect(wrapper.find(UnprotectedComponent).length).to.equal(0) - expect(wrapper.find(AuthedComponent).html()).to.equal('') - - store.dispatch(userLoggingIn()) - wrapper.update() - - expect(wrapper.find(UnprotectedComponent).length).to.equal(0) - expect(wrapper.find(AuthedComponent).html()).to.equal('') - - store.dispatch(userLoggedIn()) - wrapper.update() - - expect(wrapper.find(UnprotectedComponent).length).to.equal(1) - }) - - it('renders the specified component on failure', () => { - const auth = connectedAuthWrapper({ - ...defaultConfig, - FailureComponent - }) - - const rootReducer = combineReducers({ user: userReducer }) - const store = createStore(rootReducer) - - const AuthedComponent = auth(UnprotectedComponent) - - const wrapper = mount( - - - - ) - - expect(wrapper.find(UnprotectedComponent).length).to.equal(0) - expect(wrapper.find(FailureComponent).length).to.equal(1) - - store.dispatch(userLoggedIn()) - wrapper.update() - expect(wrapper.find(UnprotectedComponent).length).to.equal(1) - - store.dispatch(userLoggedOut()) - wrapper.update() - - expect(wrapper.find(UnprotectedComponent).length).to.equal(0) - expect(wrapper.find(FailureComponent).length).to.equal(1) - }) - - it('supports a custom authenticated function', () => { - const auth = connectedAuthWrapper({ - ...defaultConfig, - authenticatedSelector: state => userDataSelector(state).firstName === 'Matt' - }) - - const rootReducer = combineReducers({ user: userReducer }) - const store = createStore(rootReducer) - - const AuthedComponent = auth(UnprotectedComponent) - - const wrapper = mount( - - - - ) - - expect(wrapper.find(UnprotectedComponent).length).to.equal(0) - - store.dispatch(userLoggedIn()) - wrapper.update() - - expect(wrapper.find(UnprotectedComponent).length).to.equal(0) - - store.dispatch(userLoggedOut()) - wrapper.update() - - expect(wrapper.find(UnprotectedComponent).length).to.equal(0) - - store.dispatch(userLoggedIn('Matt')) - wrapper.update() - - expect(wrapper.find(UnprotectedComponent).length).to.equal(1) - }) - - it('Allows for custom wrapper display name', () => { - const auth = connectedAuthWrapper({ - ...defaultConfig, - wrapperDisplayName: 'Better Name' - }) - - const rootReducer = combineReducers({ user: userReducer }) - const store = createStore(rootReducer) - - const AuthedComponent = auth(UnprotectedComponent) - - const wrapper = mount( - - - - ) - - expect(wrapper.find(UnprotectedComponent).length).to.equal(0) - expect(wrapper.find(AuthedComponent).html()).to.equal('') - - store.dispatch(userLoggedIn()) - wrapper.update() - - expect(wrapper.find(UnprotectedComponent).length).to.equal(1) - expect(wrapper.find(AuthedComponent).childAt(0).name()).to.equal('Better Name(UnprotectedComponent)') - }) - - it('Display name works for name-less components', () => { - const auth = connectedAuthWrapper(defaultConfig) - - const rootReducer = combineReducers({ user: userReducer }) - const store = createStore(rootReducer) - - const AuthedComponent = auth(() => null) - - const wrapper = mount( - - - - ) - - expect(wrapper.find(UnprotectedComponent).length).to.equal(0) - expect(wrapper.find(AuthedComponent).html()).to.equal('') - - store.dispatch(userLoggedIn()) - wrapper.update() - - expect(wrapper.find(AuthedComponent).childAt(0).name()).to.equal('AuthWrapper(Component)') - }) - - it('passes through props to components', () => { - const auth = connectedAuthWrapper({ - ...defaultConfig, - authenticatingSelector, - AuthenticatingComponent, - FailureComponent - }) - - const rootReducer = combineReducers({ user: userReducer }) - const store = createStore(rootReducer) - - const AuthedComponent = auth(UnprotectedComponent) - - const wrapper = mount( - - - - ) - - expect(wrapper.find(UnprotectedComponent).length).to.equal(0) - expect(_.omit(wrapper.find(FailureComponent).props(), [ 'dispatch' ])).to.deep.equal({ - isAuthenticated: false, isAuthenticating: false, testProp: 'test' - }) - - store.dispatch(userLoggingIn()) - wrapper.update() - - expect(wrapper.find(UnprotectedComponent).length).to.equal(0) - expect(_.omit(wrapper.find(AuthenticatingComponent).props(), [ 'dispatch' ])).to.deep.equal({ - isAuthenticated: false, isAuthenticating: true, testProp: 'test' - }) - - store.dispatch(userLoggedIn()) - wrapper.update() - - expect(wrapper.find(UnprotectedComponent).length).to.equal(1) - expect(_.omit(wrapper.find(UnprotectedComponent).props(), [ 'dispatch' ])).to.deep.equal({ - isAuthenticated: true, isAuthenticating: false, testProp: 'test' - }) - }) - - it('hoists statics to the wrapper', () => { - const auth = authWrapper(defaultConfig) - - class WithStatic extends Component { - static staticProp = true; - - render() { - return

                          - } - } - - WithStatic.staticFun = () => 'auth' - - const authed = auth(WithStatic) - expect(authed.staticProp).to.equal(true) - expect(authed.staticFun).to.be.a('function') - expect(authed.staticFun()).to.equal('auth') - }) -}) diff --git a/test/helpers.js b/test/helpers.js deleted file mode 100644 index d0ee695..0000000 --- a/test/helpers.js +++ /dev/null @@ -1,96 +0,0 @@ -import React, { Component } from 'react' -import PropTypes from 'prop-types' -import _ from 'lodash' - -export const USER_LOGGED_IN = 'USER_LOGGED_IN' -export const USER_LOGGED_OUT = 'USER_LOGGED_OUT' -export const USER_LOGGING_IN = 'USER_LOGGING_IN' - -export const userReducerInitialState = { - userData: {}, - isAuthenticating: false -} - -export const userReducer = (state = userReducerInitialState, { type, payload }) => { - if (type === USER_LOGGED_IN) { - return { - userData: payload, - isAuthenticating: false - } - } else if (type === USER_LOGGED_OUT) { - return userReducerInitialState - } else if (type === USER_LOGGING_IN) { - return { - ...state, - isAuthenticating: true - } - } - return state -} - -export const userDataSelector = state => state.user.userData - -export const authenticatedSelector = state => !_.isEmpty(userDataSelector(state)) - -export const authenticatingSelector = state => state.user.isAuthenticating - -export const userLoggedIn = (firstName = 'Test', lastName = 'McDuderson') => ({ - type: USER_LOGGED_IN, - payload: { - email: 'test@test.com', - firstName, - lastName - } -}) - -export const userLoggedOut = () => ({ - type: USER_LOGGED_OUT -}) - -export const userLoggingIn = () => ({ - type: USER_LOGGING_IN -}) - -export const defaultConfig = { - redirectPath: '/login', - authenticatedSelector, - authenticatingSelector -} - -export class AuthenticatingComponent extends Component { - render() { - return ( -
                          Loading!
                          - ) - } -} - -export function FailureComponent(props) { - if (props.authData) { - return
                          No Access for user: {props.authData.email}
                          - } else { - return
                          No Access
                          - } -} - -export class UnprotectedComponent extends Component { - render() { - return ( -
                          - ) - } -} - -export class UnprotectedParentComponent extends Component { - static propTypes = { - children: PropTypes.node - }; - - render() { - return ( -
                          - {this.props.children} -
                          - ) - } -} diff --git a/test/init.js b/test/init.js deleted file mode 100644 index db86f26..0000000 --- a/test/init.js +++ /dev/null @@ -1,17 +0,0 @@ -import chai from 'chai' -import jsdom from 'jsdom' -import Enzyme from 'enzyme' -import Adapter from 'enzyme-adapter-react-16' - -Enzyme.configure({ adapter: new Adapter() }) - -// Use except -global.expect = chai.expect - -// JsDom browser -const { JSDOM } = jsdom; - -const { document } = (new JSDOM('')).window; -global.document = document; -global.window = document.defaultView -global.navigator = global.window.navigator diff --git a/test/redirectBase-test.js b/test/redirectBase-test.js deleted file mode 100644 index 75ce568..0000000 --- a/test/redirectBase-test.js +++ /dev/null @@ -1,553 +0,0 @@ -/* eslint-env node, mocha, jasmine */ -import React, { Component } from 'react' -import sinon from 'sinon' -import _ from 'lodash' - -import Redirect from '../src/redirect' -import { userLoggedIn, userLoggedOut, userLoggingIn, userDataSelector, authenticatedSelector, defaultConfig, - UnprotectedComponent, AuthenticatingComponent, FailureComponent } from './helpers' - -export default (setupTest, versionName, getRouteParams, getQueryParams, getRedirectQueryParam, authWrapper) => { - - describe(`wrapper ${versionName} Base`, () => { - - it('redirects unauthenticated', () => { - const auth = authWrapper(defaultConfig) - const routes = [ - { path: '/login', component: UnprotectedComponent }, - { path: '/auth', component: auth(UnprotectedComponent) } - ] - - const { history, getLocation, wrapper } = setupTest(routes) - - expect(getLocation().pathname).to.equal('/') - expect(getQueryParams(getLocation())).to.be.empty - history.push('/auth') - wrapper.update() - - expect(getLocation().pathname).to.equal('/login') - expect(getQueryParams(getLocation())).to.deep.equal({ redirect: '/auth' }) - }) - - it('does not redirect if authenticating', () => { - const auth = authWrapper({ - ...defaultConfig, - authenticatingSelector: () => true, - AuthenticatingComponent: AuthenticatingComponent - }) - const routes = [ - { path: 'auth', component: auth(UnprotectedComponent) } - ] - - const { history, getLocation, wrapper } = setupTest(routes) - - expect(getLocation().pathname).to.equal('/') - expect(getQueryParams(getLocation())).to.be.empty - history.push('/auth') - wrapper.update() - - expect(getLocation().pathname).to.equal('/auth') - expect(getQueryParams(getLocation())).to.be.empty - }) - - it('by default ignores authenticating', () => { - const auth = authWrapper({ authenticatedSelector, redirectPath: '/login' }) - - const routes = [ - { path: '/login', component: UnprotectedComponent }, - { path: '/auth', component: auth(UnprotectedComponent) } - ] - - const { history, getLocation, wrapper } = setupTest(routes) - - expect(getLocation().pathname).to.equal('/') - expect(getQueryParams(getLocation())).to.be.empty - history.push('/auth') - wrapper.update() - - expect(getLocation().pathname).to.equal('/login') - expect(getQueryParams(getLocation())).to.deep.equal({ redirect: '/auth' }) - }) - - it('renders the specified component when authenticating', () => { - const auth = authWrapper({ - ...defaultConfig, - authenticatingSelector: () => true, - AuthenticatingComponent: AuthenticatingComponent - }) - const routes = [ - { path: '/auth', component: auth(UnprotectedComponent) } - ] - - const { wrapper, history } = setupTest(routes) - - history.push('/auth') - wrapper.update() - - const comp = wrapper.find(AuthenticatingComponent) - // Props from React-Router - expect(comp.props().location.pathname).to.equal('/auth') - }) - - it('renders nothing while authenticating and no AuthenticatingComponent set', () => { - const auth = authWrapper({ - ...defaultConfig, - authenticatingSelector: () => true - }) - const routes = [ - { path: '/auth', component: auth(UnprotectedComponent) } - ] - - const { wrapper, history } = setupTest(routes) - - history.push('/auth') - wrapper.update() - - const comp = wrapper.find('#testRoot') - // There is a child here. It is connect but it should render no html - expect(comp.childAt(0).html()).to.equal('') - }) - - it('renders the failure component when prop is set', () => { - const auth = authWrapper({ - ...defaultConfig, - authenticatedSelector: () => false, - FailureComponent - }) - const routes = [ - { path: '/auth', component: auth(UnprotectedComponent) } - ] - - const { history, store, wrapper } = setupTest(routes) - - store.dispatch(userLoggedIn()) - - history.push('/auth') - wrapper.update() - - const comp = wrapper.find(FailureComponent).last() - expect(comp.props().isAuthenticated).to.be.false - }) - - it('preserves query params on redirect', () => { - const auth = authWrapper(defaultConfig) - const routes = [ - { path: '/login', component: UnprotectedComponent }, - { path: '/auth', component: auth(UnprotectedComponent) } - ] - - const { history, getLocation, wrapper } = setupTest(routes) - - expect(getLocation().pathname).to.equal('/') - expect(getQueryParams(getLocation())).to.be.empty - history.push('/auth?test=foo') - wrapper.update() - - expect(getLocation().pathname).to.equal('/login') - expect(getQueryParams(getLocation())).to.deep.equal({ redirect: '/auth?test=foo' }) - }) - - it('allows authenticated users', () => { - const auth = authWrapper(defaultConfig) - const routes = [ - { path: '/login', component: UnprotectedComponent }, - { path: '/auth', component: auth(UnprotectedComponent) } - ] - - const { store, history, getLocation, wrapper } = setupTest(routes) - - store.dispatch(userLoggedIn()) - - history.push('/auth') - wrapper.update() - - expect(getLocation().pathname).to.equal('/auth') - }) - - it('redirects on no longer authorized', () => { - const auth = authWrapper(defaultConfig) - const routes = [ - { path: '/login', component: UnprotectedComponent }, - { path: '/auth', component: auth(UnprotectedComponent) } - ] - - const { store, history, getLocation, wrapper } = setupTest(routes) - - store.dispatch(userLoggedIn()) - - history.push('/auth') - wrapper.update() - expect(getLocation().pathname).to.equal('/auth') - - store.dispatch(userLoggedOut()) - wrapper.update() - expect(getLocation().pathname).to.equal('/login') - }) - - it('redirects if no longer authenticating', () => { - const auth = authWrapper(defaultConfig) - const routes = [ - { path: '/login', component: UnprotectedComponent }, - { path: '/auth', component: auth(UnprotectedComponent) } - ] - - const { store, history, getLocation, wrapper } = setupTest(routes) - - store.dispatch(userLoggingIn()) - - history.push('/auth') - wrapper.update() - expect(getLocation().pathname).to.equal('/auth') - - store.dispatch(userLoggedOut()) - wrapper.update() - expect(getLocation().pathname).to.equal('/login') - }) - - it('optionally prevents redirection', () => { - const auth = authWrapper({ - ...defaultConfig, - authenticatedSelector: () => false, - allowRedirectBack: false - }) - const routes = [ - { path: '/login', component: UnprotectedComponent }, - { path: '/auth', component: auth(UnprotectedComponent) } - ] - - const { history, store, getLocation, wrapper } = setupTest(routes) - - store.dispatch(userLoggedIn()) - wrapper.update() - - history.push('/auth') - wrapper.update() - expect(getLocation().pathname).to.equal('/login') - expect(getQueryParams(getLocation())).to.deep.equal({}) - }) - - it('optionally prevents redirection from a function result', () => { - const auth = authWrapper({ - ...defaultConfig, - authenticatedSelector: () => false, - allowRedirectBack: ({ location }, redirectPath) => location.pathname === '/auth' && redirectPath === '/login' - }) - const routes = [ - { path: '/login', component: UnprotectedComponent }, - { path: '/auth', component: auth(UnprotectedComponent) }, - { path: '/authNoRedir', component: auth(UnprotectedComponent) } - ] - - const { history, store, getLocation, wrapper } = setupTest(routes) - - store.dispatch(userLoggedIn()) - - history.push('/auth') - wrapper.update() - expect(getLocation().pathname).to.equal('/login') - expect(getQueryParams(getLocation())).to.deep.equal({ redirect: '/auth' }) - - history.push('/authNoRedir') - wrapper.update() - expect(getLocation().pathname).to.equal('/login') - expect(getQueryParams(getLocation())).to.deep.equal({}) - }) - - it('can be nested', () => { - const firstNameAuth = authWrapper({ - ...defaultConfig, - authenticatedSelector: (state) => userDataSelector(state).firstName === 'Test' - }) - - const lastNameAuth = authWrapper({ - ...defaultConfig, - authenticatedSelector: (state) => userDataSelector(state).lastName === 'McDuderson' - }) - - const routes = [ - { path: '/login', component: UnprotectedComponent }, - { path: '/auth', component: firstNameAuth(lastNameAuth(UnprotectedComponent)) } - ] - - const { history, store, getLocation, wrapper } = setupTest(routes) - - store.dispatch(userLoggedIn('NotTest')) - wrapper.update() - - history.push('/auth') - wrapper.update() - expect(getLocation().pathname).to.equal('/login') - expect(getQueryParams(getLocation())).to.deep.equal({ redirect: '/auth' }) - - store.dispatch(userLoggedIn('Test', 'NotMcDuderson')) - wrapper.update() - - history.push('/auth') - wrapper.update() - expect(getLocation().pathname).to.equal('/login') - expect(getQueryParams(getLocation())).to.deep.equal({ redirect: '/auth' }) - - store.dispatch(userLoggedIn()) - wrapper.update() - - history.push('/auth') - wrapper.update() - expect(getLocation().pathname).to.equal('/auth') - expect(getQueryParams(getLocation())).to.be.empty - }) - - it('passes props to authed components', () => { - const auth = authWrapper(defaultConfig) - const Child = auth(UnprotectedComponent) - - class PropParentComponent extends Component { - - render() { - // Need to pass down at least location from router, but can just pass it all down - return - } - } - - const routes = [ - { path: '/prop', component: PropParentComponent } - ] - const { history, store, wrapper } = setupTest(routes) - - store.dispatch(userLoggedIn()) - wrapper.update() - - history.push('/prop') - wrapper.update() - - const comp = wrapper.find(UnprotectedComponent) - // Props from React-Router - expect(comp.props().location.pathname).to.equal('/prop') - // Props from parent - expect(comp.props().testProp).to.equal(true) - // No extra wrapper props - expect(Object.keys(_.omit(wrapper.find(UnprotectedComponent).props(), [ - 'children', 'location', 'params', 'route', 'routeParams', 'router', 'routes', 'history', 'match', 'staticContext', 'dispatch' - ])).sort()).to.deep.equal([ - 'isAuthenticated', 'isAuthenticating', 'redirectPath', 'testProp' - ]) - }) - - it('passes ownProps for authenticated selector', () => { - const auth = authWrapper({ - ...defaultConfig, - authenticatedSelector: (state, ownProps) => { - const user = userDataSelector(state) - const params = getRouteParams(ownProps) // from React-Router - return user.firstName === 'Test' && params.id === '1' - } - }) - - const routes = [ - { path: '/login', component: UnprotectedComponent }, - { path: '/auth/:id', component: auth(UnprotectedComponent) } - ] - - const { history, store, getLocation, wrapper } = setupTest(routes) - - expect(getLocation().pathname).to.equal('/') - expect(getQueryParams(getLocation())).to.be.empty - - store.dispatch(userLoggedIn()) - wrapper.update() - - history.push('/auth/1') - wrapper.update() - expect(getLocation().pathname).to.equal('/auth/1') - expect(getQueryParams(getLocation())).to.be.empty - - history.push('/auth/2') - wrapper.update() - expect(getLocation().pathname).to.equal('/login') - expect(getQueryParams(getLocation())).to.deep.equal({ redirect: '/auth/2' }) - }) - - it('can override query param name', () => { - const auth = authWrapper({ - ...defaultConfig, - redirectQueryParamName: 'customRedirect' - }) - const routes = [ - { path: '/login', component: UnprotectedComponent }, - { path: '/auth', component: auth(UnprotectedComponent) } - ] - - const { history, getLocation, wrapper } = setupTest(routes) - - expect(getLocation().pathname).to.equal('/') - expect(getQueryParams(getLocation())).to.be.empty - - history.push('/auth') - wrapper.update() - expect(getLocation().pathname).to.equal('/login') - expect(getQueryParams(getLocation())).to.deep.equal({ customRedirect: '/auth' }) - }) - - it('can pass a selector for redirectPath', () => { - const auth = authWrapper({ - ...defaultConfig, - redirectPath: (state, ownProps) => { - if (!authenticatedSelector(state) && getRouteParams(ownProps).id === '1') { - return '/login/1' - } else { - return '/login/0' - } - } - }) - const routes = [ - { path: '/login/:id', component: UnprotectedComponent }, - { path: '/auth/:id', component: auth(UnprotectedComponent) } - ] - - const { history, getLocation, wrapper } = setupTest(routes) - - expect(getLocation().pathname).to.equal('/') - expect(getQueryParams(getLocation())).to.be.empty - - history.push('/auth/1') - wrapper.update() - expect(getLocation().pathname).to.equal('/login/1') - expect(getQueryParams(getLocation())).to.deep.equal({ redirect: '/auth/1' }) - - history.push('/auth/2') - wrapper.update() - expect(getLocation().pathname).to.equal('/login/0') - expect(getQueryParams(getLocation())).to.deep.equal({ redirect: '/auth/2' }) - }) - - it('only redirects once when props change but authentication is constant', () => { - - const redirect = sinon.stub().returns({ type: 'NO_REDIRECT' }) - - const auth = authWrapper({ - ...defaultConfig, - FailureComponent: (props) => , - authenticatedSelector: () => false - }) - - const routes = [ - { path: '/login', component: UnprotectedComponent }, - { path: '/auth', component: auth(UnprotectedComponent) } - ] - - const { history, store, wrapper } = setupTest(routes) - - history.push('/auth') - wrapper.update() - expect(redirect.calledOnce).to.equal(true) - - store.dispatch(userLoggedIn()) - wrapper.update() - expect(redirect.calledOnce).to.equal(true) - }) - - it('redirection preserves query params', () => { - const auth = authWrapper(defaultConfig) - const login = authWrapper({ - ...defaultConfig, - authenticatedSelector: state => !authenticatedSelector(state), - redirectPath: (state, ownProps) => getRedirectQueryParam(ownProps) || '/', - allowRedirectBack: false - }) - const routes = [ - { path: '/login', component: login(UnprotectedComponent) }, - { path: '/protected', component: auth(UnprotectedComponent) } - ] - - const { history, store, getLocation, wrapper } = setupTest(routes) - - expect(getLocation().pathname).to.equal('/') - expect(getQueryParams(getLocation())).to.be.empty - - history.push('/protected?param=foo') - wrapper.update() - expect(getLocation().pathname).to.equal('/login') - expect(getQueryParams(getLocation())).to.deep.equal({ redirect: '/protected?param=foo' }) - - store.dispatch(userLoggedIn()) - wrapper.update() - expect(getLocation().pathname).to.equal('/protected') - expect(getQueryParams(getLocation())).to.deep.equal({ param: 'foo' }) - }) - - it('redirection preserves hash fragment', () => { - const auth = authWrapper(defaultConfig) - const login = authWrapper({ - ...defaultConfig, - authenticatedSelector: state => !authenticatedSelector(state), - redirectPath: (state, ownProps) => getRedirectQueryParam(ownProps) || '/', - allowRedirectBack: false - }) - const routes = [ - { path: '/login', component: login(UnprotectedComponent) }, - { path: '/protected', component: auth(UnprotectedComponent) } - ] - - const { history, store, getLocation, wrapper } = setupTest(routes) - - expect(getLocation().pathname).to.equal('/') - expect(getQueryParams(getLocation())).to.be.empty - - history.push('/protected#foo') - wrapper.update() - expect(getLocation().pathname).to.equal('/login') - expect(getQueryParams(getLocation())).to.deep.equal({ redirect: '/protected#foo' }) - - store.dispatch(userLoggedIn()) - wrapper.update() - expect(getLocation().pathname).to.equal('/protected') - expect(getLocation().hash).to.equal('#foo') - expect(getQueryParams(getLocation())).to.be.empty - }) - - it('Throws invariant when redirectpath is not a function or string', () => { - expect(() => authWrapper({ ...defaultConfig, redirectPath: true })).to.throw(/redirectPath must be either a string or a function/) - expect(() => authWrapper({ ...defaultConfig, redirectPath: 1 })).to.throw(/redirectPath must be either a string or a function/) - expect(() => authWrapper({ ...defaultConfig, redirectPath: [] })).to.throw(/redirectPath must be either a string or a function/) - expect(() => authWrapper({ ...defaultConfig, redirectPath: {} })).to.throw(/redirectPath must be either a string or a function/) - }) - - it('Throws invariant when allowRedirectBack is not a function or boolean', () => { - expect(() => authWrapper({ ...defaultConfig, allowRedirectBack: 'login' })).to.throw(/allowRedirectBack must be either a boolean or a function/) - expect(() => authWrapper({ ...defaultConfig, allowRedirectBack: 1 })).to.throw(/allowRedirectBack must be either a boolean or a function/) - expect(() => authWrapper({ ...defaultConfig, allowRedirectBack: [] })).to.throw(/allowRedirectBack must be either a boolean or a function/) - expect(() => authWrapper({ ...defaultConfig, allowRedirectBack: {} })).to.throw(/allowRedirectBack must be either a boolean or a function/) - }) - - it("Doesn't cause re-render when store changes", () => { - const updatespy = sinon.spy() - - class UpdateComponent extends Component { - componentDidUpdate() { - updatespy() - } - - render() { - return
                          - } - } - - const auth = authWrapper(defaultConfig) - const routes = [ - { path: '/auth', component: auth(UpdateComponent) } - ] - - const { history, store, getLocation, wrapper } = setupTest(routes) - - store.dispatch(userLoggedIn()) - history.push('/auth') - wrapper.update() - - expect(getLocation().pathname).to.equal('/auth') - - expect(updatespy.called).to.be.false - store.dispatch(userLoggedIn()) - wrapper.update() - expect(updatespy.called).to.be.false - }) - }) -} diff --git a/test/rrv3-test.js b/test/rrv3-test.js deleted file mode 100644 index 8a91a7c..0000000 --- a/test/rrv3-test.js +++ /dev/null @@ -1,312 +0,0 @@ -/* eslint-env node, mocha, jasmine */ -import React, { Component } from 'react' -import PropTypes from 'prop-types' -import _ from 'lodash' -import createMemoryHistory from 'react-router/lib/createMemoryHistory' -import { routerMiddleware, syncHistoryWithStore, routerActions, routerReducer } from 'react-router-redux' -import { Router, Route } from 'react-router' -import { Provider } from 'react-redux' -import { createStore, applyMiddleware, combineReducers } from 'redux' -import sinon from 'sinon' -import { mount } from 'enzyme' - -import { userLoggedOut, userLoggedIn, userLoggingIn, authenticatedSelector, userReducer, UnprotectedComponent, UnprotectedParentComponent, defaultConfig } from './helpers' -import baseTests from './redirectBase-test' - -import { connectedRouterRedirect, connectedReduxRedirect, createOnEnter } from '../src/history3/redirect' -import locationHelperBuilder from '../src/history3/locationHelper' - -const locationHelper = locationHelperBuilder({}) - -class App extends Component { - static propTypes = { - children: PropTypes.node - }; - - render() { - return ( -
                          - {this.props.children} -
                          - ) - } -} - -const setupReactRouter3Test = (testRoutes) => { - const history = createMemoryHistory() - const rootReducer = combineReducers({ user: userReducer }) - const store = createStore(rootReducer) - const routes = ( - - {testRoutes.map((route, i) => )} - - ) - - const wrapper = mount( - - - {routes} - - - ) - - const getLocation = history.getCurrentLocation - - return { - history, - store, - wrapper, - getLocation - } -} - -const setupReactRouterReduxTest = (testRoutes) => { - const baseHistory = createMemoryHistory() - const middleware = routerMiddleware(baseHistory) - const rootReducer = combineReducers({ user: userReducer, routing: routerReducer }) - const routes = ( - - {testRoutes.map((route, i) => )} - - ) - - const store = createStore( - rootReducer, - applyMiddleware(middleware) - ) - const history = syncHistoryWithStore(baseHistory, store) - - const wrapper = mount( - - - {routes} - - - ) - - const getLocation = history.getCurrentLocation - - return { - history, - store, - wrapper, - getLocation - } -} - -const getRouteParams = (ownProps) => ownProps.routeParams -const getQueryParams = (location) => location.query - -baseTests(setupReactRouter3Test, 'React Router V3', getRouteParams, getQueryParams, - locationHelper.getRedirectQueryParam, connectedRouterRedirect) - -baseTests(setupReactRouterReduxTest, 'React Router V3 with react-router-redux', getRouteParams, getQueryParams, - locationHelper.getRedirectQueryParam, (config) => connectedReduxRedirect({ ...config, redirectAction: routerActions.replace })) - -describe('React Router V3 onEnter', () => { - it('provides an onEnter static function', () => { - let store - const connect = (fn) => (nextState, replaceState) => fn(store, nextState, replaceState) - const authenticatedSelectorSpy = sinon.spy(authenticatedSelector) - const failureRedirectSpy = sinon.spy(() => '/login') - - const onEnter = createOnEnter({ - redirectPath: failureRedirectSpy, - authenticatedSelector: authenticatedSelectorSpy - }) - - const routesOnEnter = [ - { path: 'login', component: UnprotectedComponent }, - { path: 'onEnter', component: UnprotectedComponent, onEnter: connect(onEnter) } - ] - - const { history, store: createdStore, getLocation, wrapper } = setupReactRouter3Test(routesOnEnter) - store = createdStore - - expect(getLocation().pathname).to.equal('/') - expect(getLocation().search).to.equal('') - - // Redirects when not authorized - store.dispatch(userLoggedOut()) - wrapper.update() - // Have to force re-check because wont recheck with store changes - history.push('/') - history.push('/onEnter') - wrapper.update() - expect(authenticatedSelectorSpy.calledOnce).to.be.true - expect(failureRedirectSpy.calledOnce).to.be.true - expect(failureRedirectSpy.firstCall.args[0].user).to.deep.equal(store.getState().user) // cant compare location because its changed - expect(Object.keys(failureRedirectSpy.firstCall.args[1])).to.deep.equal([ 'routes', 'params', 'location' ]) // cant compare location because its changed - expect(getLocation().pathname).to.equal('/login') - expect(getLocation().search).to.equal('?redirect=%2FonEnter') - }) - - it('supports isAuthenticating', () => { - let store - const connect = (fn) => (nextState, replaceState) => fn(store, nextState, replaceState) - const authenticatedSelectorSpy = sinon.spy(authenticatedSelector) - const authenticatingSelectorSpy = sinon.spy(state => state.user.isAuthenticating) - const failureRedirectSpy = sinon.spy(() => '/login') - - const onEnter = createOnEnter({ - redirectPath: failureRedirectSpy, - authenticatedSelector: authenticatedSelectorSpy, - authenticatingSelector: authenticatingSelectorSpy - }) - - const routesOnEnter = [ - { path: 'login', component: UnprotectedComponent }, - { path: 'onEnter', component: UnprotectedComponent, onEnter: connect(onEnter) } - ] - - const { history, store: createdStore, wrapper, getLocation } = setupReactRouter3Test(routesOnEnter) - store = createdStore - - expect(getLocation().pathname).to.equal('/') - expect(getLocation().search).to.equal('') - - // Supports isAuthenticating - store.dispatch(userLoggingIn()) - history.push('/onEnter') - wrapper.update() - const nextState = _.pick(wrapper.find(App).props(), [ 'location', 'params', 'routes' ]) - const storeState = store.getState() - expect(authenticatedSelectorSpy.calledOnce).to.be.true - // Passes store and nextState down to selectors and redirectPath - expect(authenticatedSelectorSpy.calledOnce).to.be.true - expect(authenticatedSelectorSpy.firstCall.args).to.deep.equal([ storeState, nextState ]) - expect(authenticatingSelectorSpy.calledOnce).to.be.true - expect(authenticatingSelectorSpy.firstCall.args).to.deep.equal([ storeState, nextState ]) - expect(getLocation().pathname).to.equal('/onEnter') - - // Redirects when not authorized - store.dispatch(userLoggedOut()) - // Have to force re-check because wont recheck with store changes - history.push('/') - history.push('/onEnter') - wrapper.update() - expect(authenticatingSelectorSpy.calledTwice).to.be.true - expect(authenticatedSelectorSpy.calledTwice).to.be.true - expect(failureRedirectSpy.calledOnce).to.be.true - expect(failureRedirectSpy.firstCall.args[0].user).to.deep.equal(store.getState().user) // cant compare location because its changed - expect(Object.keys(failureRedirectSpy.firstCall.args[1])).to.deep.equal([ 'routes', 'params', 'location' ]) // cant compare location because its changed - expect(getLocation().pathname).to.equal('/login') - expect(getLocation().search).to.equal('?redirect=%2FonEnter') - }) - - it('optionally prevents redirection from a function result', () => { - let store - const connect = (fn) => (nextState, replaceState) => fn(store, nextState, replaceState) - - const onEnter = createOnEnter({ - ...defaultConfig, - authenticatedSelector: () => false, - allowRedirectBack: ({ location }, redirectPath) => location.pathname === '/auth' && redirectPath === '/login' - }) - - const routesOnEnter = [ - { path: '/login', component: UnprotectedComponent }, - { path: '/auth', component: UnprotectedComponent, onEnter: connect(onEnter) }, - { path: '/authNoRedir', component: UnprotectedComponent, onEnter: connect(onEnter) } - ] - - const { history, store: createdStore, getLocation, wrapper } = setupReactRouter3Test(routesOnEnter) - store = createdStore - - store.dispatch(userLoggedIn()) - - history.push('/auth') - wrapper.update() - expect(getLocation().pathname).to.equal('/login') - expect(getQueryParams(getLocation())).to.deep.equal({ redirect: '/auth' }) - - history.push('/authNoRedir') - wrapper.update() - expect(getLocation().pathname).to.equal('/login') - expect(getQueryParams(getLocation())).to.deep.equal({}) - }) - - it('can pass a selector for redirectPath', () => { - let store - const connect = (fn) => (nextState, replaceState) => fn(store, nextState, replaceState) - - const onEnter = createOnEnter({ - ...defaultConfig, - redirectPath: (state, routerNextState) => { - if (!authenticatedSelector(state) && routerNextState.params.id === '1') { - return '/login/1' - } else { - return '/login/0' - } - } - }) - const routesOnEnter = [ - { path: '/login/:id', component: UnprotectedComponent }, - { path: '/auth/:id', component: UnprotectedComponent, onEnter: connect(onEnter) } - ] - - const { history, store: createdStore, getLocation, wrapper } = setupReactRouter3Test(routesOnEnter) - store = createdStore - - expect(getLocation().pathname).to.equal('/') - expect(getQueryParams(getLocation())).to.be.empty - - history.push('/auth/1') - wrapper.update() - expect(getLocation().pathname).to.equal('/login/1') - expect(getQueryParams(getLocation())).to.deep.equal({ redirect: '/auth/1' }) - - history.push('/auth/2') - wrapper.update() - expect(getLocation().pathname).to.equal('/login/0') - expect(getQueryParams(getLocation())).to.deep.equal({ redirect: '/auth/2' }) - }) - - it('Throws invariant when redirectpath is not a function or string', () => { - expect(() => createOnEnter({ ...defaultConfig, redirectPath: true })).to.throw(/redirectPath must be either a string or a function/) - expect(() => createOnEnter({ ...defaultConfig, redirectPath: 1 })).to.throw(/redirectPath must be either a string or a function/) - expect(() => createOnEnter({ ...defaultConfig, redirectPath: [] })).to.throw(/redirectPath must be either a string or a function/) - expect(() => createOnEnter({ ...defaultConfig, redirectPath: {} })).to.throw(/redirectPath must be either a string or a function/) - }) - - it('Throws invariant when allowRedirectBack is not a function or boolean', () => { - expect(() => createOnEnter({ ...defaultConfig, allowRedirectBack: 'login' })).to.throw(/allowRedirectBack must be either a boolean or a function/) - expect(() => createOnEnter({ ...defaultConfig, allowRedirectBack: 1 })).to.throw(/allowRedirectBack must be either a boolean or a function/) - expect(() => createOnEnter({ ...defaultConfig, allowRedirectBack: [] })).to.throw(/allowRedirectBack must be either a boolean or a function/) - expect(() => createOnEnter({ ...defaultConfig, allowRedirectBack: {} })).to.throw(/allowRedirectBack must be either a boolean or a function/) - }) -}) - -describe('wrapper React Router V3 Additions', () => { - - it('supports nested routes', () => { - const auth = connectedRouterRedirect(defaultConfig) - - const routes = [ - { path: 'login', component: UnprotectedComponent }, - { path: 'parent', component: auth(UnprotectedParentComponent), childRoutes: [ - { path: 'child', component: auth(UnprotectedComponent) } - ] } - ] - - const { history, store, getLocation, wrapper } = setupReactRouter3Test(routes) - - history.push('/parent/child') - wrapper.update() - expect(getLocation().pathname).to.equal('/login') - expect(getLocation().search).to.equal('?redirect=%2Fparent%2Fchild') - - store.dispatch(userLoggedIn()) - wrapper.update() - - history.push('/parent/child') - wrapper.update() - expect(getLocation().pathname).to.equal('/parent/child') - expect(getLocation().query).to.be.empty - - store.dispatch(userLoggedOut()) - wrapper.update() - expect(getLocation().pathname).to.equal('/login') - expect(getLocation().search).to.equal('?redirect=%2Fparent%2Fchild') - }) -}) diff --git a/test/rrv4-test.js b/test/rrv4-test.js deleted file mode 100644 index 1c823d2..0000000 --- a/test/rrv4-test.js +++ /dev/null @@ -1,85 +0,0 @@ -/* eslint-env node, mocha, jasmine */ -import React from 'react' -import createMemoryHistory from 'history/createMemoryHistory' -import { Router, Route, Switch } from 'react-router' -import { Provider } from 'react-redux' -import { createStore, applyMiddleware, combineReducers } from 'redux' -import { mount } from 'enzyme' -import { parse } from 'query-string' -import { ConnectedRouter, connectRouter, routerMiddleware, replace } from 'connected-react-router' - -import { userReducer } from './helpers' -import baseTests from './redirectBase-test' - -import { connectedRouterRedirect, connectedReduxRedirect } from '../src/history4/redirect' -import locationHelperBuilder from '../src/history4/locationHelper' - -const locationHelper = locationHelperBuilder({}) - -const setupReactRouter4Test = (testRoutes) => { - const history = createMemoryHistory() - const rootReducer = combineReducers({ user: userReducer }) - const store = createStore(rootReducer) - - const wrapper = mount( - - -
                          - - {testRoutes.map((routeConfig, i) => )} - -
                          -
                          -
                          - ) - - const getLocation = () => history.location - - return { - history, - store, - wrapper, - getLocation - } -} - -const setupReactRouterReduxTest = (testRoutes) => { - const history = createMemoryHistory() - const middleware = routerMiddleware(history) - const rootReducer = combineReducers({ user: userReducer, router: connectRouter(history) }) - - const store = createStore( - rootReducer, - applyMiddleware(middleware) - ) - - const wrapper = mount( - - -
                          - - {testRoutes.map((routeConfig, i) => )} - -
                          -
                          -
                          - ) - - const getLocation = () => history.location - - return { - history, - store, - wrapper, - getLocation - } -} - -const getRouteParams = (ownProps) => ownProps.match.params -const getQueryParams = (location) => parse(location.search) - -baseTests(setupReactRouter4Test, 'React Router V4', getRouteParams, getQueryParams, - locationHelper.getRedirectQueryParam, connectedRouterRedirect) - -baseTests(setupReactRouterReduxTest, 'React Router V4 with connected-react-router', getRouteParams, getQueryParams, - locationHelper.getRedirectQueryParam, (config) => connectedReduxRedirect({ ...config, redirectAction: replace })) diff --git a/yarn.lock b/yarn.lock index fe6d9a5..624d582 100644 --- a/yarn.lock +++ b/yarn.lock @@ -245,9 +245,9 @@ acorn-walk@^6.0.1: integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== acorn@^6.0.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + version "6.4.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.0.tgz#b659d2ffbafa24baf5db1cdbb2c94a983ecd2784" + integrity sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw== acorn@^7.1.0: version "7.1.0" @@ -1876,7 +1876,7 @@ commander@2.11.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" integrity sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ== -commander@^2.11.0, commander@^2.19.0, commander@^2.9.0: +commander@^2.11.0, commander@^2.19.0, commander@^2.9.0, commander@~2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -3244,14 +3244,13 @@ growl@1.10.5: integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== handlebars@^4.0.1: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + version "4.5.3" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.5.3.tgz#5cf75bd8714f7605713511a56be7c349becb0482" + integrity sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA== dependencies: - minimist "^1.2.5" neo-async "^2.6.0" + optimist "^0.6.1" source-map "^0.6.1" - wordwrap "^1.0.0" optionalDependencies: uglify-js "^3.1.4" @@ -3537,9 +3536,9 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ini@^1.3.4, ini@~1.3.0, ini@~1.3.4: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== init-package-json@~1.10.1: version "1.10.3" @@ -4263,10 +4262,10 @@ lodash.without@~4.4.0: resolved "https://registry.yarnpkg.com/lodash.without/-/lodash.without-4.4.0.tgz#3cd4574a00b67bae373a94b748772640507b7aac" integrity sha1-PNRXSgC2e643OpS3SHcmQFB7eqw= -lodash@4.17.21, lodash@^4.15.0, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +lodash@4.17.15, lodash@^4.15.0, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== lodash@4.17.4: version "4.17.4" @@ -4428,10 +4427,10 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= minimist@~0.0.1: version "0.0.10" @@ -4597,9 +4596,9 @@ nearley@^2.7.10: semver "^5.4.1" neo-async@^2.6.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== nice-try@^1.0.4: version "1.0.5" @@ -5186,7 +5185,7 @@ opener@~1.4.1, opener@~1.4.3: resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.3.tgz#5c6da2c5d7e5831e8ffa3964950f8d6674ac90b8" integrity sha1-XG2ixdflgx6P+jlklQ+NZnSskLg= -optimist@0.6.1: +optimist@0.6.1, optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= @@ -5358,9 +5357,9 @@ path-key@^2.0.0, path-key@^2.0.1: integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== path-to-regexp@^1.7.0: version "1.8.0" @@ -5370,9 +5369,9 @@ path-to-regexp@^1.7.0: isarray "0.0.1" pathval@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= performance-now@^0.2.0: version "0.2.0" @@ -6906,9 +6905,12 @@ typedarray@^0.0.6: integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= uglify-js@^3.1.4: - version "3.13.5" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.5.tgz#5d71d6dbba64cf441f32929b1efce7365bb4f113" - integrity sha512-xtB8yEqIkn7zmOyS2zUNBsYCBRhDkvlNxMMY2smuJ/qA8NCHeQvKCF3i9Z4k8FJH4+PJvZRtMrPynfZ75+CSZw== + version "3.7.3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.7.3.tgz#f918fce9182f466d5140f24bb0ff35c2d32dcc6a" + integrity sha512-7tINm46/3puUA4hCkKYo4Xdts+JDaVC9ZPRcG8Xw9R4nhO/gZgUM3TENq8IF4Vatk8qCig4MzP/c8G4u2BkVQg== + dependencies: + commander "~2.20.3" + source-map "~0.6.1" uid-number@0.0.6: version "0.0.6" @@ -7174,7 +7176,7 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wordwrap@1.0.x, wordwrap@^1.0.0: +wordwrap@1.0.x: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= @@ -7241,9 +7243,9 @@ write@1.0.3: mkdirp "^0.5.1" ws@^7.0.0: - version "7.5.7" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" - integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== + version "7.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.1.tgz#03ed52423cd744084b2cf42ed197c8b65a936b8e" + integrity sha512-sucePNSafamSKoOqoNfBd8V0StlkzJKL2ZAhGQinCfNQ+oacw+Pk7lcdAElecBF2VkLNZRiIb5Oi1Q5lVUVt2A== xdg-basedir@^3.0.0: version "3.0.0" @@ -7266,9 +7268,9 @@ xmlchars@^2.1.1: integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== y18n@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" - integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= y18n@^4.0.0: version "4.0.0"