diff --git a/.babelrc.js b/.babelrc.js
index 26ca221..fe789a5 100644
--- a/.babelrc.js
+++ b/.babelrc.js
@@ -8,23 +8,26 @@ const __PROD__ = NODE_ENV === "production";
const __TEST__ = NODE_ENV === "test";
const configs = {
- "@babel/plugin-proposal-decorators": {
- legacy: true,
- },
"@babel/preset-env"(pkg) {
return {
debug: !__TEST__,
loose: true,
shippedProposals: true,
targets: (() => {
+ const targets = {};
+ const browers = pkg.browserslist;
+ if (browers !== undefined) {
+ targets.browsers = browers;
+ }
let node = (pkg.engines || {}).node;
if (node !== undefined) {
const trimChars = "^=>~";
while (trimChars.includes(node[0])) {
node = node.slice(1);
}
- return { node: node };
+ targets.node = node;
}
+ return targets;
})(),
useBuiltIns: "@babel/polyfill" in (pkg.dependencies || {}) && "usage",
};
diff --git a/.eslintrc.js b/.eslintrc.js
index 8e00784..68eba91 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -3,6 +3,8 @@ module.exports = {
// standard configuration
"standard",
+ "plugin:compat/recommended",
+
// https://github.com/mysticatea/eslint-plugin-node#-rules
"plugin:node/recommended",
@@ -11,8 +13,6 @@ module.exports = {
"prettier/standard",
],
- parser: "babel-eslint",
-
rules: {
// prefer let/const over var
"no-var": "error",
@@ -29,4 +29,8 @@ module.exports = {
// uncomment if you are using a builder like Babel
"node/no-unsupported-features/es-syntax": "off",
},
+
+ settings: {
+ polyfills: ["promises"],
+ },
};
diff --git a/README.md b/README.md
index 5a0becb..59b6473 100644
--- a/README.md
+++ b/README.md
@@ -10,6 +10,7 @@ Differences with [freactal](https://github.com/FormidableLabs/freactal/):
- computed values are available in the `state` in effects
- `finalize` effect is triggered on unmount (symmetry with `initialize`)
- easy async effects
+- no state and effects injection (replace with [React context](https://reactjs.org/docs/context.html))
- async computed support
- update state by default: no need for `Object.assign()` and `{...state}`
- no [helper functions](https://github.com/FormidableLabs/freactal#helper-functions) (not necessary)
@@ -29,46 +30,69 @@ Installation of the [npm package](https://npmjs.org/package/reaclette):
```js
import React from "react";
import { render } from "react-dom";
-import { injectState, provideState } from "reaclette";
-
-const wrapComponentWithState = provideState({
- initialState: () => ({ counter: 0 }),
- effects: {
- addOne: () => (state, props) => ({ counter: state.counter + 1 }),
- },
- computed: {
- square: (state, props) => state.counter * state.counter,
+import { withStore } from "reaclette";
+
+const Component = withStore(
+ {
+ initialState: props => ({ counter: 0 }),
+ effects: {
+ addOne() {
+ this.state.counter += 1;
+ },
+ },
+ computed: {
+ square: (state, props) => state.counter * state.counter,
+ },
},
-});
-
-const Parent = wrapComponentWithState(() => );
-
-const Child = injectState(({ effects, state }) => (
-
-
Our counter is at: {state.counter}
-
Its squared value is: {state.square}
-
- Add one
-
-
-));
+ (store, props) => (
+
+
Our counter is at: {store.state.counter}
+
Its squared value is: {store.state.square}
+
+ Add one
+
+
+ )
+);
-render( , document.body);
+render( , document.body);
```
## API
```js
-import { provideState, injectState } from "reaclette";
+import { withStore } from "reaclette";
```
-### `provideState(options) => (Component => Component)`
+### `withStore(options, renderFunction)`
Create a decorator that associates a React component with a store.
-`options` is an object which can contain the following properties.
+`renderFunction`
+
+A function that receives `store` and `props` in parameters and returns a `React node` like so:
+
+```js
+(store, props) => ReactNode;
+```
+
+- `store`
+ Is an object containing the following properties:
+
+ - `state`
+ - [`effects`](#effects)
+ - [`resetState`](#reset-state)
+
+- `props`
+ Passed inputs to React node
+
+`options`
-#### `initialState(props) => object`
+Is an object which can contain the following properties:
+
+#### Initial state
+
+`initialState(props) => object`
This function returns the initial state of store, which can be computed from the properties of the decorated component.
@@ -78,53 +102,86 @@ This function returns the initial state of store, which can be computed from the
}
```
-#### `effects: { [string]: Effect }`
+#### Effects
-These functions can be called from application code (see `injectState`) and can do side-effects and/or mutate the state.
+`effects: { [string]: Effect }`
-When called, an effect is provided with one or more arguments: a reference to other effects and any arguments passed to the effect from the application code.
+These functions can be called from application code and can do side-effects and/or mutate the state.
-An effect can return:
+When called, an effect is provided with one or more arguments: a reference to other effects and any arguments passed to the effect from the application code.
-1. nothing (`undefined` or `null`)
-2. an object containing new properties to merge in the state
-3. a promise resolving to one of the above
-4. a function which receives the state and the props then returns one of the above
+Effects can access effects, state (read and write) and props (at the time the effect was called) via `this`, which is extremely
+handy for async effects:
```js
-{
- effects: {
- incrementCounter: (effects) => (state, props) => ({ counter: state.counter + 1 }),
- onInputChange: (effects, event) => ({ counter: +event.target.value }),
- }
-}
+const Component = withStore(
+ {
+ initialState: () => ({
+ data: undefined,
+ loading: false,
+ }),
+ effects: {
+ loadData: async function() {
+ const { state } = this;
+ const { effects } = this;
+ if (state.data !== undefined || state.loading) {
+ return;
+ }
+
+ state.loading = true;
+ try {
+ state.data = await fetchData();
+ } finally {
+ state.loading = false;
+ }
+ },
+ },
+ },
+ (store, props) => (
+
+ {store.state.loading ? (
+ "Loading..."
+ ) : (
+
{JSON.stringify(store.state.data, null, " ")}
+ )}
+
+ )
+);
+
+render( , document.body);
```
-Effects can also access effects, state (read and write) and props (at the time the effect was called) via `this`, which is extremely
-handy for async effects:
+Effects are always asynchronous; therefore, they must always be awaited.
```js
-provideState({
- initialState: () => ({
- data: undefined,
- loading: false,
- }),
- effects: {
- loadData: async function() {
- const { state } = this;
- if (state.data !== undefined || state.loading) {
- return;
- }
-
- state.loading = true;
- try {
- state.data = await fetchData();
- } finally {
- state.loading = false;
- }
+const Component = withStore(
+ {
+ initialState: props => ({ counter: 0 }),
+ effects: {
+ async addOne() {
+ const { state } = this;
+ const { effects } = this;
+ state.counter += 1;
+ if (state.counter > 5) {
+ await effects.addBonus();
+ }
+ },
+ addBonus() {
+ this.state.counter += 5;
+ },
},
},
-});
+ (store, props) => (
+
+
Our counter is at: {store.state.counter}
+
+ Add one
+
+
+ )
+);
+
+render( , document.body);
```
There are two special effects:
@@ -134,7 +191,9 @@ There are two special effects:
Note that these effects are **not called** on server side!
-#### `computed: { [string]: Compute }`
+#### Computed
+
+`computed: { [string]: Compute }`
_Computeds_ are lazy values derived from the state and the properties of the decorated component.
@@ -153,27 +212,30 @@ They are automatically (re-)computed when necessary.
Compute functions can be async which is extremely useful to fetch data:
```js
-const CitySelector = provideState({
- computed: {
- // the computed is undefined in the render before the promise settles
- //
- // rejections are not handled and will possibly trigger an
- // unhandledRejection event on the window object, the computed will stay
- // undefined
- async cities({ country }) {
- const response = await fetch(`/countries/${state.country}/cities`);
- return response.json();
+const CitySelector = withStore(
+ {
+ computed: {
+ // the computed is undefined in the render before the promise settles
+ //
+ // rejections are not handled and will possibly trigger an
+ // unhandledRejection event on the window object, the computed will stay
+ // undefined
+ async cities({ country }) {
+ const response = await fetch(`/countries/${state.country}/cities`);
+ return response.json();
+ },
},
},
-})(
- injectState(({ onChange, state, effects, value }) => (
-
- {state.cities !== undefined
- ? state.cites.map(city => {city} )
+ (store, props) => (
+
+ {store.state.cities !== undefined
+ ? store.state.cites.map(city => {city} )
: null}
- ))
+ )
);
+
+render( , document.body);
```
Even though computed can use state and props, they don't have to:
@@ -186,11 +248,7 @@ Even though computed can use state and props, they don't have to:
}
```
-### `injectState(Component) => Component`
-
-Makes
-
-#### `resetState()`
+#### Reset state
This function resets the state by calling `initialState` with the current properties of the decorated component.
@@ -199,23 +257,29 @@ This function resets the state by calling `initialState` with the current proper
This pseudo-effect is passed as a property by `injectState`:
```js
-const Component = injectState({ effects, state, resetState }) => (
-
-)
+const Component = withStore(
+ {
+ initialState: () => ({}),
+ effects: {},
+ },
+ (store, props) =>
+);
```
And also available from effects via their context:
```js
-const withState = provideState({
- // ...
- effects: {
- async myEffect () {
- await this.resetState()
- }
-})
+const Component = withStore(
+ {
+ // ...
+ effects: {
+ async myEffect() {
+ await this.resetState();
+ },
+ },
+ },
+ (store, props) => Reset
+);
```
## Recipes
@@ -227,164 +291,11 @@ const withState = provideState({
import Preact, { render } from "preact";
import factory from "reaclette/factory";
-const { injectState, provideState } = factory(Preact);
+const { withStore } = factory(Preact);
// The rest is the same.
```
-### Testing
-
-> This example comes from the excellent [Freactal documentation](https://github.com/FormidableLabs/freactal/#testing).
-
-`App.js`:
-
-```js
-import React from "react";
-import { injectState, provideState } from "reaclette";
-
-export default provideState({
- initialState: () => ({
- givenName: "Walter",
- familyName: "Harriman",
- }),
- effects: {
- onChangeGiven: (_, { target: { value } }) => state => ({
- givenName: value,
- }),
- onChangeFamily: (_, { target: { value } }) => state => ({
- familyName: value,
- }),
- },
- computed: {
- fullName: ({ givenName, familyName }) => `${givenName} ${familyName}`,
- greeting: ({ fullName }) => `Hi, ${fullName}, and welcome!`,
- },
-})(
- injectState(({ state, effects }) => (
-
-
{state.greeting}
-
-
- Enter your given name:{" "}
-
-
-
-
-
- Enter your family name:{" "}
-
-
-
-
- ))
-);
-```
-
-`App.spec.js`:
-
-```js
-import React from "react";
-import Adapter from "enzyme-adapter-react-16";
-import { configure, mount } from "enzyme";
-
-configure({ adapter: new Adapter() });
-
-import AppWithState from "./App.js";
-
-describe("my app", () => {
- // From the decorated component you can obtained the plain version
- // directly.
- const App = AppWithState.WrappedComponent;
-
- // We'll be re-using these values, so let's put it here for convenience.
- const state = {
- givenName: "Charlie",
- familyName: "In-the-box",
- fullName: "Charlie In-the-box",
- greeting: "Howdy there, kid!",
- };
-
- it("displays a greeting to the user", () => {
- // This test should be easy - all we have to do is ensure that
- // the string that is passed in is displayed correctly!
-
- // We're not doing anything with effects here, so let's not bother
- // setting them for now...
- const effects = {};
-
- // First, we mount the component, providing the expected state and effects.
- const el = mount( );
-
- // And then we can make assertions on the output.
- expect(el.find("#greeting").text()).toBe("Howdy there, kid!");
- });
-
- it("accepts changes to the given name", () => {
- // Next we're testing the conditions under which our component might
- // interact with the provided effects.
- const effects = {
- onChangeGiven: jest.fn(),
- onChangeFamily: jest.fn(),
- };
-
- const el = mount( );
-
- // We don't expect our effect to be invoked when the component
- // mounts, so let's make that assertion here.
- expect(effects.onChangeGiven).not.toHaveBeenCalled();
-
- // Next, we can simulate a input-box value change.
- el.find("input#given").simulate("change", {
- target: { value: "Eric" },
- });
-
- // And finally, we can assert that the effect - or, rather, the Sinon
- // spy that is standing in for the effect - was invoked with the expected
- // value.
- expect(effects.onChangeGiven).toHaveBeenCalledWith(
- expect.objectContaining({
- target: {
- value: "Eric",
- },
- })
- );
- });
-});
-
-describe("my app state", () => {
- // From the decorated component you can obtained the decorator
- // providing the state directly.
- const { wrapComponentWithState } = AppWithState;
-
- it("supports fullName", async () => {
- // Normally, you'd pass a component as the first argument to your
- // state template. However, if you pass no argument to the state
- // template, you'll get back a test instance that you can extract
- // `state` and `effects` from. Just don't try to render the thing!
- const { effects, getState } = wrapComponentWithState();
-
- expect(getState().fullName).toBe("Walter Harriman");
-
- await effects.onChangeGiven({ target: { value: "Alfred" } });
- expect(getState().fullName).toBe("Alfred Harriman");
-
- await effects.onChangeFamily({ target: { value: "Hitchcock" } });
- expect(getState().fullName).toBe("Alfred Hitchcock");
- });
-
- // You could write similar assertions here
- it("supports a greeting");
-});
-```
-
## Development
```
diff --git a/package-lock.json b/package-lock.json
index ffbc570..01ab8a1 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,21 +1,21 @@
{
"name": "reaclette",
- "version": "0.8.0",
+ "version": "0.9.0-0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@babel/cli": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.2.3.tgz",
- "integrity": "sha512-bfna97nmJV6nDJhXNPeEfxyMjWnt6+IjUAaDPiYRTBlm8L41n8nvw6UAqUCbvpFfU246gHPxW7sfWwqtF4FcYA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.4.3.tgz",
+ "integrity": "sha512-cbC5H9iTDV9H7sMxK5rUm18UbdVPNTPqgdzmQAkOUP3YLysgDWLZaysVAfylK49rgTlzL01a6tXyq9rCb3yLhQ==",
"dev": true,
"requires": {
- "chokidar": "^2.0.3",
+ "chokidar": "^2.0.4",
"commander": "^2.8.1",
"convert-source-map": "^1.1.0",
"fs-readdir-recursive": "^1.1.0",
"glob": "^7.0.0",
- "lodash": "^4.17.10",
+ "lodash": "^4.17.11",
"mkdirp": "^0.5.1",
"output-file-sync": "^2.0.0",
"slash": "^2.0.0",
@@ -32,18 +32,18 @@
}
},
"@babel/core": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.3.4.tgz",
- "integrity": "sha512-jRsuseXBo9pN197KnDwhhaaBzyZr2oIcLHHTt2oDdQrej5Qp57dCCJafWx5ivU8/alEYDpssYqv1MUqcxwQlrA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.3.tgz",
+ "integrity": "sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.3.4",
- "@babel/helpers": "^7.2.0",
- "@babel/parser": "^7.3.4",
- "@babel/template": "^7.2.2",
- "@babel/traverse": "^7.3.4",
- "@babel/types": "^7.3.4",
+ "@babel/generator": "^7.4.0",
+ "@babel/helpers": "^7.4.3",
+ "@babel/parser": "^7.4.3",
+ "@babel/template": "^7.4.0",
+ "@babel/traverse": "^7.4.3",
+ "@babel/types": "^7.4.0",
"convert-source-map": "^1.1.0",
"debug": "^4.1.0",
"json5": "^2.1.0",
@@ -71,12 +71,12 @@
}
},
"@babel/generator": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.3.4.tgz",
- "integrity": "sha512-8EXhHRFqlVVWXPezBW5keTiQi/rJMQTg/Y9uVCEZ0CAF3PKtCCaVRnp64Ii1ujhkoDhhF1fVsImoN4yJ2uz4Wg==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz",
+ "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==",
"dev": true,
"requires": {
- "@babel/types": "^7.3.4",
+ "@babel/types": "^7.4.0",
"jsesc": "^2.5.1",
"lodash": "^4.17.11",
"source-map": "^0.5.0",
@@ -103,39 +103,25 @@
}
},
"@babel/helper-call-delegate": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.1.0.tgz",
- "integrity": "sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ==",
- "dev": true,
- "requires": {
- "@babel/helper-hoist-variables": "^7.0.0",
- "@babel/traverse": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "@babel/helper-create-class-features-plugin": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.3.4.tgz",
- "integrity": "sha512-uFpzw6L2omjibjxa8VGZsJUPL5wJH0zzGKpoz0ccBkzIa6C8kWNUbiBmQ0rgOKWlHJ6qzmfa6lTiGchiV8SC+g==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.0.tgz",
+ "integrity": "sha512-SdqDfbVdNQCBp3WhK2mNdDvHd3BD6qbmIc43CAyjnsfCmgHMeqgDcM3BzY2lchi7HBJGJ2CVdynLWbezaE4mmQ==",
"dev": true,
"requires": {
- "@babel/helper-function-name": "^7.1.0",
- "@babel/helper-member-expression-to-functions": "^7.0.0",
- "@babel/helper-optimise-call-expression": "^7.0.0",
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-replace-supers": "^7.3.4",
- "@babel/helper-split-export-declaration": "^7.0.0"
+ "@babel/helper-hoist-variables": "^7.4.0",
+ "@babel/traverse": "^7.4.0",
+ "@babel/types": "^7.4.0"
}
},
"@babel/helper-define-map": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.1.0.tgz",
- "integrity": "sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.4.0.tgz",
+ "integrity": "sha512-wAhQ9HdnLIywERVcSvX40CEJwKdAa1ID4neI9NXQPDOHwwA+57DqwLiPEVy2AIyWzAk0CQ8qx4awO0VUURwLtA==",
"dev": true,
"requires": {
"@babel/helper-function-name": "^7.1.0",
- "@babel/types": "^7.0.0",
- "lodash": "^4.17.10"
+ "@babel/types": "^7.4.0",
+ "lodash": "^4.17.11"
}
},
"@babel/helper-explode-assignable-expression": {
@@ -169,12 +155,12 @@
}
},
"@babel/helper-hoist-variables": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0.tgz",
- "integrity": "sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.0.tgz",
+ "integrity": "sha512-/NErCuoe/et17IlAQFKWM24qtyYYie7sFIrW/tIQXpck6vAu2hhtYYsKLBWQV+BQZMbcIYPU/QMYuTufrY4aQw==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0"
+ "@babel/types": "^7.4.0"
}
},
"@babel/helper-member-expression-to-functions": {
@@ -196,9 +182,9 @@
}
},
"@babel/helper-module-transforms": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz",
- "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.4.3.tgz",
+ "integrity": "sha512-H88T9IySZW25anu5uqyaC1DaQre7ofM+joZtAaO2F8NBdFfupH0SZ4gKjgSFVcvtx/aAirqA9L9Clio2heYbZA==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "^7.0.0",
@@ -206,7 +192,7 @@
"@babel/helper-split-export-declaration": "^7.0.0",
"@babel/template": "^7.2.2",
"@babel/types": "^7.2.2",
- "lodash": "^4.17.10"
+ "lodash": "^4.17.11"
}
},
"@babel/helper-optimise-call-expression": {
@@ -225,12 +211,12 @@
"dev": true
},
"@babel/helper-regex": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz",
- "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.4.3.tgz",
+ "integrity": "sha512-hnoq5u96pLCfgjXuj8ZLX3QQ+6nAulS+zSgi6HulUwFbEruRAKwbGLU5OvXkE14L8XW6XsQEKsIDfgthKLRAyA==",
"dev": true,
"requires": {
- "lodash": "^4.17.10"
+ "lodash": "^4.17.11"
}
},
"@babel/helper-remap-async-to-generator": {
@@ -247,15 +233,15 @@
}
},
"@babel/helper-replace-supers": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.3.4.tgz",
- "integrity": "sha512-pvObL9WVf2ADs+ePg0jrqlhHoxRXlOa+SHRHzAXIz2xkYuOHfGl+fKxPMaS4Fq+uje8JQPobnertBBvyrWnQ1A==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.4.0.tgz",
+ "integrity": "sha512-PVwCVnWWAgnal+kJ+ZSAphzyl58XrFeSKSAJRiqg5QToTsjL+Xu1f9+RJ+d+Q0aPhPfBGaYfkox66k86thxNSg==",
"dev": true,
"requires": {
"@babel/helper-member-expression-to-functions": "^7.0.0",
"@babel/helper-optimise-call-expression": "^7.0.0",
- "@babel/traverse": "^7.3.4",
- "@babel/types": "^7.3.4"
+ "@babel/traverse": "^7.4.0",
+ "@babel/types": "^7.4.0"
}
},
"@babel/helper-simple-access": {
@@ -269,12 +255,12 @@
}
},
"@babel/helper-split-export-declaration": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz",
- "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz",
+ "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0"
+ "@babel/types": "^7.4.0"
}
},
"@babel/helper-wrap-function": {
@@ -290,14 +276,14 @@
}
},
"@babel/helpers": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.3.1.tgz",
- "integrity": "sha512-Q82R3jKsVpUV99mgX50gOPCWwco9Ec5Iln/8Vyu4osNIOQgSrd9RFrQeUvmvddFNoLwMyOUWU+5ckioEKpDoGA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.3.tgz",
+ "integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==",
"dev": true,
"requires": {
- "@babel/template": "^7.1.2",
- "@babel/traverse": "^7.1.5",
- "@babel/types": "^7.3.0"
+ "@babel/template": "^7.4.0",
+ "@babel/traverse": "^7.4.3",
+ "@babel/types": "^7.4.0"
}
},
"@babel/highlight": {
@@ -312,9 +298,9 @@
}
},
"@babel/parser": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.3.4.tgz",
- "integrity": "sha512-tXZCqWtlOOP4wgCp6RjRvLmfuhnqTLy9VHwRochJBCP2nDm27JnnuFEnXFASVyQNHk36jD1tAammsCEEqgscIQ==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz",
+ "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==",
"dev": true
},
"@babel/plugin-proposal-async-generator-functions": {
@@ -328,16 +314,6 @@
"@babel/plugin-syntax-async-generators": "^7.2.0"
}
},
- "@babel/plugin-proposal-class-properties": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.3.4.tgz",
- "integrity": "sha512-lUf8D3HLs4yYlAo8zjuneLvfxN7qfKv1Yzbj5vjqaqMJxgJA3Ipwp4VUJ+OrOdz53Wbww6ahwB8UhB2HQyLotA==",
- "dev": true,
- "requires": {
- "@babel/helper-create-class-features-plugin": "^7.3.4",
- "@babel/helper-plugin-utils": "^7.0.0"
- }
- },
"@babel/plugin-proposal-json-strings": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz",
@@ -349,9 +325,9 @@
}
},
"@babel/plugin-proposal-object-rest-spread": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.3.4.tgz",
- "integrity": "sha512-j7VQmbbkA+qrzNqbKHrBsW3ddFnOeva6wzSe/zB7T+xaxGc+RCpwo44wCmRixAIGRoIpmVgvzFzNJqQcO3/9RA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.3.tgz",
+ "integrity": "sha512-xC//6DNSSHVjq8O2ge0dyYlhshsH4T7XdCVoxbi5HzLYWfsC5ooFlJjrXk8RcAT+hjHAK9UjBXdylzSoDK3t4g==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
@@ -369,14 +345,14 @@
}
},
"@babel/plugin-proposal-unicode-property-regex": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.2.0.tgz",
- "integrity": "sha512-LvRVYb7kikuOtIoUeWTkOxQEV1kYvL5B6U3iWEGCzPNRus1MzJweFqORTj+0jkxozkTSYNJozPOddxmqdqsRpw==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.0.tgz",
+ "integrity": "sha512-h/KjEZ3nK9wv1P1FSNb9G079jXrNYR0Ko+7XkOx85+gM24iZbPn0rh4vCftk+5QKY7y1uByFataBTmX7irEF1w==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/helper-regex": "^7.0.0",
- "regexpu-core": "^4.2.0"
+ "regexpu-core": "^4.5.4"
}
},
"@babel/plugin-syntax-async-generators": {
@@ -425,9 +401,9 @@
}
},
"@babel/plugin-transform-async-to-generator": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.3.4.tgz",
- "integrity": "sha512-Y7nCzv2fw/jEZ9f678MuKdMo99MFDJMT/PvD9LisrR5JDFcJH6vYeH6RnjVt3p5tceyGRvTtEN0VOlU+rgHZjA==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.0.tgz",
+ "integrity": "sha512-EeaFdCeUULM+GPFEsf7pFcNSxM7hYjoj5fiYbyuiXobW4JhFnjAv9OWzNwHyHcKoPNpAfeRDuW6VyaXEDUBa7g==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "^7.0.0",
@@ -445,9 +421,9 @@
}
},
"@babel/plugin-transform-block-scoping": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.3.4.tgz",
- "integrity": "sha512-blRr2O8IOZLAOJklXLV4WhcEzpYafYQKSGT3+R26lWG41u/FODJuBggehtOwilVAcFu393v3OFj+HmaE6tVjhA==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.0.tgz",
+ "integrity": "sha512-AWyt3k+fBXQqt2qb9r97tn3iBwFpiv9xdAiG+Gr2HpAZpuayvbL55yWrsV3MyHvXk/4vmSiedhDRl1YI2Iy5nQ==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
@@ -455,18 +431,18 @@
}
},
"@babel/plugin-transform-classes": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.3.4.tgz",
- "integrity": "sha512-J9fAvCFBkXEvBimgYxCjvaVDzL6thk0j0dBvCeZmIUDBwyt+nv6HfbImsSrWsYXfDNDivyANgJlFXDUWRTZBuA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.4.3.tgz",
+ "integrity": "sha512-PUaIKyFUDtG6jF5DUJOfkBdwAS/kFFV3XFk7Nn0a6vR7ZT8jYw5cGtIlat77wcnd0C6ViGqo/wyNf4ZHytF/nQ==",
"dev": true,
"requires": {
"@babel/helper-annotate-as-pure": "^7.0.0",
- "@babel/helper-define-map": "^7.1.0",
+ "@babel/helper-define-map": "^7.4.0",
"@babel/helper-function-name": "^7.1.0",
"@babel/helper-optimise-call-expression": "^7.0.0",
"@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-replace-supers": "^7.3.4",
- "@babel/helper-split-export-declaration": "^7.0.0",
+ "@babel/helper-replace-supers": "^7.4.0",
+ "@babel/helper-split-export-declaration": "^7.4.0",
"globals": "^11.1.0"
}
},
@@ -480,23 +456,23 @@
}
},
"@babel/plugin-transform-destructuring": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.3.2.tgz",
- "integrity": "sha512-Lrj/u53Ufqxl/sGxyjsJ2XNtNuEjDyjpqdhMNh5aZ+XFOdThL46KBj27Uem4ggoezSYBxKWAil6Hu8HtwqesYw==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.4.3.tgz",
+ "integrity": "sha512-rVTLLZpydDFDyN4qnXdzwoVpk1oaXHIvPEOkOLyr88o7oHxVc/LyrnDx+amuBWGOwUb7D1s/uLsKBNTx08htZg==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0"
}
},
"@babel/plugin-transform-dotall-regex": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz",
- "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.3.tgz",
+ "integrity": "sha512-9Arc2I0AGynzXRR/oPdSALv3k0rM38IMFyto7kOCwb5F9sLUt2Ykdo3V9yUPR+Bgr4kb6bVEyLkPEiBhzcTeoA==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-regex": "^7.0.0",
- "regexpu-core": "^4.1.3"
+ "@babel/helper-regex": "^7.4.3",
+ "regexpu-core": "^4.5.4"
}
},
"@babel/plugin-transform-duplicate-keys": {
@@ -519,18 +495,18 @@
}
},
"@babel/plugin-transform-for-of": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.2.0.tgz",
- "integrity": "sha512-Kz7Mt0SsV2tQk6jG5bBv5phVbkd0gd27SgYD4hH1aLMJRchM0dzHaXvrWhVZ+WxAlDoAKZ7Uy3jVTW2mKXQ1WQ==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.3.tgz",
+ "integrity": "sha512-UselcZPwVWNSURnqcfpnxtMehrb8wjXYOimlYQPBnup/Zld426YzIhNEvuRsEWVHfESIECGrxoI6L5QqzuLH5Q==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0"
}
},
"@babel/plugin-transform-function-name": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.2.0.tgz",
- "integrity": "sha512-kWgksow9lHdvBC2Z4mxTsvc7YdY7w/V6B2vy9cTIPtLEE9NhwoWivaxdNM/S37elu5bqlLP/qOY906LukO9lkQ==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.3.tgz",
+ "integrity": "sha512-uT5J/3qI/8vACBR9I1GlAuU/JqBtWdfCrynuOkrWG6nCDieZd5przB1vfP59FRHBZQ9DC2IUfqr/xKqzOD5x0A==",
"dev": true,
"requires": {
"@babel/helper-function-name": "^7.1.0",
@@ -546,6 +522,15 @@
"@babel/helper-plugin-utils": "^7.0.0"
}
},
+ "@babel/plugin-transform-member-expression-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz",
+ "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
"@babel/plugin-transform-modules-amd": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.2.0.tgz",
@@ -557,23 +542,23 @@
}
},
"@babel/plugin-transform-modules-commonjs": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.2.0.tgz",
- "integrity": "sha512-V6y0uaUQrQPXUrmj+hgnks8va2L0zcZymeU7TtWEgdRLNkceafKXEduv7QzgQAE4lT+suwooG9dC7LFhdRAbVQ==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.3.tgz",
+ "integrity": "sha512-sMP4JqOTbMJMimqsSZwYWsMjppD+KRyDIUVW91pd7td0dZKAvPmhCaxhOzkzLParKwgQc7bdL9UNv+rpJB0HfA==",
"dev": true,
"requires": {
- "@babel/helper-module-transforms": "^7.1.0",
+ "@babel/helper-module-transforms": "^7.4.3",
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/helper-simple-access": "^7.1.0"
}
},
"@babel/plugin-transform-modules-systemjs": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.3.4.tgz",
- "integrity": "sha512-VZ4+jlGOF36S7TjKs8g4ojp4MEI+ebCQZdswWb/T9I4X84j8OtFAyjXjt/M16iIm5RIZn0UMQgg/VgIwo/87vw==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.4.0.tgz",
+ "integrity": "sha512-gjPdHmqiNhVoBqus5qK60mWPp1CmYWp/tkh11mvb0rrys01HycEGD7NvvSoKXlWEfSM9TcL36CpsK8ElsADptQ==",
"dev": true,
"requires": {
- "@babel/helper-hoist-variables": "^7.0.0",
+ "@babel/helper-hoist-variables": "^7.4.0",
"@babel/helper-plugin-utils": "^7.0.0"
}
},
@@ -588,18 +573,18 @@
}
},
"@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.3.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.3.0.tgz",
- "integrity": "sha512-NxIoNVhk9ZxS+9lSoAQ/LM0V2UEvARLttEHUrRDGKFaAxOYQcrkN/nLRE+BbbicCAvZPl7wMP0X60HsHE5DtQw==",
+ "version": "7.4.2",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.2.tgz",
+ "integrity": "sha512-NsAuliSwkL3WO2dzWTOL1oZJHm0TM8ZY8ZSxk2ANyKkt5SQlToGA4pzctmq1BEjoacurdwZ3xp2dCQWJkME0gQ==",
"dev": true,
"requires": {
"regexp-tree": "^0.1.0"
}
},
"@babel/plugin-transform-new-target": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0.tgz",
- "integrity": "sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.0.tgz",
+ "integrity": "sha512-6ZKNgMQmQmrEX/ncuCwnnw1yVGoaOW5KpxNhoWI7pCQdA0uZ0HqHGqenCUIENAnxRjy2WwNQ30gfGdIgqJXXqw==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0"
@@ -616,25 +601,43 @@
}
},
"@babel/plugin-transform-parameters": {
- "version": "7.3.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.3.3.tgz",
- "integrity": "sha512-IrIP25VvXWu/VlBWTpsjGptpomtIkYrN/3aDp4UKm7xK6UxZY88kcJ1UwETbzHAlwN21MnNfwlar0u8y3KpiXw==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.3.tgz",
+ "integrity": "sha512-ULJYC2Vnw96/zdotCZkMGr2QVfKpIT/4/K+xWWY0MbOJyMZuk660BGkr3bEKWQrrciwz6xpmft39nA4BF7hJuA==",
"dev": true,
"requires": {
- "@babel/helper-call-delegate": "^7.1.0",
+ "@babel/helper-call-delegate": "^7.4.0",
"@babel/helper-get-function-arity": "^7.0.0",
"@babel/helper-plugin-utils": "^7.0.0"
}
},
+ "@babel/plugin-transform-property-literals": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz",
+ "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
"@babel/plugin-transform-regenerator": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.3.4.tgz",
- "integrity": "sha512-hvJg8EReQvXT6G9H2MvNPXkv9zK36Vxa1+csAVTpE1J3j0zlHplw76uudEbJxgvqZzAq9Yh45FLD4pk5mKRFQA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.3.tgz",
+ "integrity": "sha512-kEzotPuOpv6/iSlHroCDydPkKYw7tiJGKlmYp6iJn4a6C/+b2FdttlJsLKYxolYHgotTJ5G5UY5h0qey5ka3+A==",
"dev": true,
"requires": {
"regenerator-transform": "^0.13.4"
}
},
+ "@babel/plugin-transform-reserved-words": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz",
+ "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0"
+ }
+ },
"@babel/plugin-transform-shorthand-properties": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz",
@@ -683,99 +686,104 @@
}
},
"@babel/plugin-transform-unicode-regex": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.2.0.tgz",
- "integrity": "sha512-m48Y0lMhrbXEJnVUaYly29jRXbQ3ksxPrS1Tg8t+MHqzXhtBYAvI51euOBaoAlZLPHsieY9XPVMf80a5x0cPcA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.3.tgz",
+ "integrity": "sha512-lnSNgkVjL8EMtnE8eSS7t2ku8qvKH3eqNf/IwIfnSPUqzgqYmRwzdsQWv4mNQAN9Nuo6Gz1Y0a4CSmdpu1Pp6g==",
"dev": true,
"requires": {
"@babel/helper-plugin-utils": "^7.0.0",
- "@babel/helper-regex": "^7.0.0",
- "regexpu-core": "^4.1.3"
+ "@babel/helper-regex": "^7.4.3",
+ "regexpu-core": "^4.5.4"
}
},
"@babel/preset-env": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.3.4.tgz",
- "integrity": "sha512-2mwqfYMK8weA0g0uBKOt4FE3iEodiHy9/CW0b+nWXcbL+pGzLx8ESYc+j9IIxr6LTDHWKgPm71i9smo02bw+gA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.4.3.tgz",
+ "integrity": "sha512-FYbZdV12yHdJU5Z70cEg0f6lvtpZ8jFSDakTm7WXeJbLXh4R0ztGEu/SW7G1nJ2ZvKwDhz8YrbA84eYyprmGqw==",
"dev": true,
"requires": {
"@babel/helper-module-imports": "^7.0.0",
"@babel/helper-plugin-utils": "^7.0.0",
"@babel/plugin-proposal-async-generator-functions": "^7.2.0",
"@babel/plugin-proposal-json-strings": "^7.2.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.3.4",
+ "@babel/plugin-proposal-object-rest-spread": "^7.4.3",
"@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
- "@babel/plugin-proposal-unicode-property-regex": "^7.2.0",
+ "@babel/plugin-proposal-unicode-property-regex": "^7.4.0",
"@babel/plugin-syntax-async-generators": "^7.2.0",
"@babel/plugin-syntax-json-strings": "^7.2.0",
"@babel/plugin-syntax-object-rest-spread": "^7.2.0",
"@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
"@babel/plugin-transform-arrow-functions": "^7.2.0",
- "@babel/plugin-transform-async-to-generator": "^7.3.4",
+ "@babel/plugin-transform-async-to-generator": "^7.4.0",
"@babel/plugin-transform-block-scoped-functions": "^7.2.0",
- "@babel/plugin-transform-block-scoping": "^7.3.4",
- "@babel/plugin-transform-classes": "^7.3.4",
+ "@babel/plugin-transform-block-scoping": "^7.4.0",
+ "@babel/plugin-transform-classes": "^7.4.3",
"@babel/plugin-transform-computed-properties": "^7.2.0",
- "@babel/plugin-transform-destructuring": "^7.2.0",
- "@babel/plugin-transform-dotall-regex": "^7.2.0",
+ "@babel/plugin-transform-destructuring": "^7.4.3",
+ "@babel/plugin-transform-dotall-regex": "^7.4.3",
"@babel/plugin-transform-duplicate-keys": "^7.2.0",
"@babel/plugin-transform-exponentiation-operator": "^7.2.0",
- "@babel/plugin-transform-for-of": "^7.2.0",
- "@babel/plugin-transform-function-name": "^7.2.0",
+ "@babel/plugin-transform-for-of": "^7.4.3",
+ "@babel/plugin-transform-function-name": "^7.4.3",
"@babel/plugin-transform-literals": "^7.2.0",
+ "@babel/plugin-transform-member-expression-literals": "^7.2.0",
"@babel/plugin-transform-modules-amd": "^7.2.0",
- "@babel/plugin-transform-modules-commonjs": "^7.2.0",
- "@babel/plugin-transform-modules-systemjs": "^7.3.4",
+ "@babel/plugin-transform-modules-commonjs": "^7.4.3",
+ "@babel/plugin-transform-modules-systemjs": "^7.4.0",
"@babel/plugin-transform-modules-umd": "^7.2.0",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.3.0",
- "@babel/plugin-transform-new-target": "^7.0.0",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.2",
+ "@babel/plugin-transform-new-target": "^7.4.0",
"@babel/plugin-transform-object-super": "^7.2.0",
- "@babel/plugin-transform-parameters": "^7.2.0",
- "@babel/plugin-transform-regenerator": "^7.3.4",
+ "@babel/plugin-transform-parameters": "^7.4.3",
+ "@babel/plugin-transform-property-literals": "^7.2.0",
+ "@babel/plugin-transform-regenerator": "^7.4.3",
+ "@babel/plugin-transform-reserved-words": "^7.2.0",
"@babel/plugin-transform-shorthand-properties": "^7.2.0",
"@babel/plugin-transform-spread": "^7.2.0",
"@babel/plugin-transform-sticky-regex": "^7.2.0",
"@babel/plugin-transform-template-literals": "^7.2.0",
"@babel/plugin-transform-typeof-symbol": "^7.2.0",
- "@babel/plugin-transform-unicode-regex": "^7.2.0",
- "browserslist": "^4.3.4",
+ "@babel/plugin-transform-unicode-regex": "^7.4.3",
+ "@babel/types": "^7.4.0",
+ "browserslist": "^4.5.2",
+ "core-js-compat": "^3.0.0",
"invariant": "^2.2.2",
"js-levenshtein": "^1.1.3",
- "semver": "^5.3.0"
+ "semver": "^5.5.0"
}
},
"@babel/runtime": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0.tgz",
- "integrity": "sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.3.tgz",
+ "integrity": "sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA==",
"dev": true,
"requires": {
- "regenerator-runtime": "^0.12.0"
+ "regenerator-runtime": "^0.13.2"
}
},
"@babel/template": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.2.2.tgz",
- "integrity": "sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz",
+ "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.2.2",
- "@babel/types": "^7.2.2"
+ "@babel/parser": "^7.4.0",
+ "@babel/types": "^7.4.0"
}
},
"@babel/traverse": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.3.4.tgz",
- "integrity": "sha512-TvTHKp6471OYEcE/91uWmhR6PrrYywQntCHSaZ8CM8Vmp+pjAusal4nGB2WCCQd0rvI7nOMKn9GnbcvTUz3/ZQ==",
+ "version": "7.4.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz",
+ "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@babel/generator": "^7.3.4",
+ "@babel/generator": "^7.4.0",
"@babel/helper-function-name": "^7.1.0",
- "@babel/helper-split-export-declaration": "^7.0.0",
- "@babel/parser": "^7.3.4",
- "@babel/types": "^7.3.4",
+ "@babel/helper-split-export-declaration": "^7.4.0",
+ "@babel/parser": "^7.4.3",
+ "@babel/types": "^7.4.0",
"debug": "^4.1.0",
"globals": "^11.1.0",
"lodash": "^4.17.11"
@@ -799,9 +807,9 @@
}
},
"@babel/types": {
- "version": "7.3.4",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.3.4.tgz",
- "integrity": "sha512-WEkp8MsLftM7O/ty580wAmZzN1nDmCACc5+jFzUt+GUFNNIi3LdRlueYz0YIlmJhlZx1QYDMZL5vdWCL0fNjFQ==",
+ "version": "7.4.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz",
+ "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==",
"dev": true,
"requires": {
"esutils": "^2.0.2",
@@ -828,44 +836,43 @@
}
},
"@jest/console": {
- "version": "24.3.0",
- "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.3.0.tgz",
- "integrity": "sha512-NaCty/OOei6rSDcbPdMiCbYCI0KGFGPgGO6B09lwWt5QTxnkuhKYET9El5u5z1GAcSxkQmSMtM63e24YabCWqA==",
+ "version": "24.6.0",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.6.0.tgz",
+ "integrity": "sha512-nNZbwtZwW6dr7bvZpRBCdBNvZYi+jr6lfnubSOCELk/Km/5csDmGdqeS4qKwGKIVlHTyZ95MYExYevpdh26tDA==",
"dev": true,
"requires": {
"@jest/source-map": "^24.3.0",
- "@types/node": "*",
"chalk": "^2.0.1",
"slash": "^2.0.0"
}
},
"@jest/core": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.3.1.tgz",
- "integrity": "sha512-orucOIBKfXgm1IJirtPT0ToprqDVGYKUNJKNc9a6v1Lww6qLPq+xj5OfxyhpJb2rWOgzEkATW1bfZzg3oqV70w==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.7.0.tgz",
+ "integrity": "sha512-Ub8+TYkhYSTeQTUrrlDgfidpkVPjN8oZawagHlyJRrtITtR+FivmpqlfqmWziBgeJ3EuaWxF9Ctb55WvA95loA==",
"dev": true,
"requires": {
- "@jest/console": "^24.3.0",
- "@jest/reporters": "^24.3.1",
- "@jest/test-result": "^24.3.0",
- "@jest/transform": "^24.3.1",
- "@jest/types": "^24.3.0",
+ "@jest/console": "^24.6.0",
+ "@jest/reporters": "^24.7.0",
+ "@jest/test-result": "^24.7.0",
+ "@jest/transform": "^24.7.0",
+ "@jest/types": "^24.7.0",
"ansi-escapes": "^3.0.0",
"chalk": "^2.0.1",
"exit": "^0.1.2",
"graceful-fs": "^4.1.15",
- "jest-changed-files": "^24.3.0",
- "jest-config": "^24.3.1",
- "jest-haste-map": "^24.3.1",
- "jest-message-util": "^24.3.0",
+ "jest-changed-files": "^24.7.0",
+ "jest-config": "^24.7.0",
+ "jest-haste-map": "^24.7.0",
+ "jest-message-util": "^24.7.0",
"jest-regex-util": "^24.3.0",
- "jest-resolve-dependencies": "^24.3.1",
- "jest-runner": "^24.3.1",
- "jest-runtime": "^24.3.1",
- "jest-snapshot": "^24.3.1",
- "jest-util": "^24.3.0",
- "jest-validate": "^24.3.1",
- "jest-watcher": "^24.3.0",
+ "jest-resolve-dependencies": "^24.7.0",
+ "jest-runner": "^24.7.0",
+ "jest-runtime": "^24.7.0",
+ "jest-snapshot": "^24.7.0",
+ "jest-util": "^24.7.0",
+ "jest-validate": "^24.7.0",
+ "jest-watcher": "^24.7.0",
"micromatch": "^3.1.10",
"p-each-series": "^1.0.0",
"pirates": "^4.0.1",
@@ -881,9 +888,9 @@
"dev": true
},
"strip-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.1.0.tgz",
- "integrity": "sha512-TjxrkPONqO2Z8QDCpeE2j6n0M6EwxzyDgzEeGp+FbdvaJAt//ClYi6W5my+3ROlC/hZX2KACUwDfK49Ka5eDvg==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
"ansi-regex": "^4.1.0"
@@ -892,40 +899,38 @@
}
},
"@jest/environment": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.3.1.tgz",
- "integrity": "sha512-M8bqEkQqPwZVhMMFMqqCnzqIZtuM5vDMfFQ9ZvnEfRT+2T1zTA4UAOH/V4HagEi6S3BCd/mdxFdYmPgXf7GKCA==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.7.0.tgz",
+ "integrity": "sha512-Vfv5vTPcE5Rp5TYK/hpUI07LV+OH6HOIpDNZ5lWLQ88HkPsDi9ILcSDLJs4tBZLcYltotlGapb5XUTjAfaRWow==",
"dev": true,
"requires": {
- "@jest/fake-timers": "^24.3.0",
- "@jest/transform": "^24.3.1",
- "@jest/types": "^24.3.0",
- "@types/node": "*",
- "jest-mock": "^24.3.0"
+ "@jest/fake-timers": "^24.7.0",
+ "@jest/transform": "^24.7.0",
+ "@jest/types": "^24.7.0",
+ "jest-mock": "^24.7.0"
}
},
"@jest/fake-timers": {
- "version": "24.3.0",
- "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.3.0.tgz",
- "integrity": "sha512-rHwVI17dGMHxHzfAhnZ04+wFznjFfZ246QugeBnbiYr7/bDosPD2P1qeNjWnJUUcfl0HpS6kkr+OB/mqSJxQFg==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.7.0.tgz",
+ "integrity": "sha512-wwq54UIqxC0JsKNQcwJyD4JjSkUYV9rZ1qz2lGGG1iMrFgn6ls37GBo/Cay2qCcnmdyVy+kQ5RE1+7Un7Kw4ew==",
"dev": true,
"requires": {
- "@jest/types": "^24.3.0",
- "@types/node": "*",
- "jest-message-util": "^24.3.0",
- "jest-mock": "^24.3.0"
+ "@jest/types": "^24.7.0",
+ "jest-message-util": "^24.7.0",
+ "jest-mock": "^24.7.0"
}
},
"@jest/reporters": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.3.1.tgz",
- "integrity": "sha512-jEIDJcvk20ReUW1Iqb+prlAcFV+kfFhQ/01poCq8X9As7/l/2y1GqVwJ3+6SaPTZuCXh0d0LVDy86zDAa8zlVA==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.7.0.tgz",
+ "integrity": "sha512-iOLYOXtRJEkY//aI6b95U5T1JzcRrvfKAlk7zj5ab+4w/Drko9x0PaP0eRBMRvSolzwiXaF8f1zWId397N6Vyg==",
"dev": true,
"requires": {
- "@jest/environment": "^24.3.1",
- "@jest/test-result": "^24.3.0",
- "@jest/transform": "^24.3.1",
- "@jest/types": "^24.3.0",
+ "@jest/environment": "^24.7.0",
+ "@jest/test-result": "^24.7.0",
+ "@jest/transform": "^24.7.0",
+ "@jest/types": "^24.7.0",
"chalk": "^2.0.1",
"exit": "^0.1.2",
"glob": "^7.1.2",
@@ -933,11 +938,11 @@
"istanbul-lib-coverage": "^2.0.2",
"istanbul-lib-instrument": "^3.0.1",
"istanbul-lib-source-maps": "^3.0.1",
- "jest-haste-map": "^24.3.1",
- "jest-resolve": "^24.3.1",
- "jest-runtime": "^24.3.1",
- "jest-util": "^24.3.0",
- "jest-worker": "^24.3.1",
+ "jest-haste-map": "^24.7.0",
+ "jest-resolve": "^24.7.0",
+ "jest-runtime": "^24.7.0",
+ "jest-util": "^24.7.0",
+ "jest-worker": "^24.6.0",
"node-notifier": "^5.2.1",
"slash": "^2.0.0",
"source-map": "^0.6.0",
@@ -972,32 +977,44 @@
}
},
"@jest/test-result": {
- "version": "24.3.0",
- "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.3.0.tgz",
- "integrity": "sha512-j7UZ49T8C4CVipEY99nLttnczVTtLyVzFfN20OiBVn7awOs0U3endXSTq7ouPrLR5y4YjI5GDcbcvDUjgeamzg==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.7.0.tgz",
+ "integrity": "sha512-bl7HcDnMYEemy/myEmc9AaO9YXxANADNYtXJRC9haolx8btNHY6q78YdL+jb/KC4vBmEEoK+OSgMae90C1tZMQ==",
+ "dev": true,
+ "requires": {
+ "@jest/console": "^24.6.0",
+ "@jest/types": "^24.7.0",
+ "@types/istanbul-lib-coverage": "^2.0.0"
+ }
+ },
+ "@jest/test-sequencer": {
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.7.0.tgz",
+ "integrity": "sha512-+i7aeDimhwDVzk6pt5r7ZPNMMJ6/p9jaIu6nVumXQjDR2UmuH+/QOnQcKml7+9/U/TEX9Fl61n+OoH+Ds0PTxw==",
"dev": true,
"requires": {
- "@jest/console": "^24.3.0",
- "@jest/types": "^24.3.0",
- "@types/istanbul-lib-coverage": "^1.1.0"
+ "@jest/test-result": "^24.7.0",
+ "jest-haste-map": "^24.7.0",
+ "jest-runner": "^24.7.0",
+ "jest-runtime": "^24.7.0"
}
},
"@jest/transform": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.3.1.tgz",
- "integrity": "sha512-PpjylI5goT4Si69+qUjEeHuKjex0LjjrqJzrMYzlOZn/+SCumGKuGC0UQFeEPThyGsFvWH1Q4gj0R66eOHnIpw==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.7.0.tgz",
+ "integrity": "sha512-jwgjrNaZjUuYAf9OZFgyChqEN9p/LS8YkK6D0vuORLXoxiBSZy76tX0/RkCkSkOjgI8IsFwccOJ6RcYBw45R6Q==",
"dev": true,
"requires": {
"@babel/core": "^7.1.0",
- "@jest/types": "^24.3.0",
+ "@jest/types": "^24.7.0",
"babel-plugin-istanbul": "^5.1.0",
"chalk": "^2.0.1",
"convert-source-map": "^1.4.0",
"fast-json-stable-stringify": "^2.0.0",
"graceful-fs": "^4.1.15",
- "jest-haste-map": "^24.3.1",
+ "jest-haste-map": "^24.7.0",
"jest-regex-util": "^24.3.0",
- "jest-util": "^24.3.0",
+ "jest-util": "^24.7.0",
"micromatch": "^3.1.10",
"realpath-native": "^1.1.0",
"slash": "^2.0.0",
@@ -1014,12 +1031,12 @@
}
},
"@jest/types": {
- "version": "24.3.0",
- "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.3.0.tgz",
- "integrity": "sha512-VoO1F5tU2n/93QN/zaZ7Q8SeV/Rj+9JJOgbvKbBwy4lenvmdj1iDaQEPXGTKrO6OSvDeb2drTFipZJYxgo6kIQ==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.7.0.tgz",
+ "integrity": "sha512-ipJUa2rFWiKoBqMKP63Myb6h9+iT3FHRTF2M8OR6irxWzItisa8i4dcSg14IbvmXUnBlHBlUQPYUHWyX3UPpYA==",
"dev": true,
"requires": {
- "@types/istanbul-lib-coverage": "^1.1.0",
+ "@types/istanbul-lib-coverage": "^2.0.0",
"@types/yargs": "^12.0.9"
}
},
@@ -1074,15 +1091,15 @@
}
},
"@types/istanbul-lib-coverage": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.0.tgz",
- "integrity": "sha512-ohkhb9LehJy+PA40rDtGAji61NCgdtKLAlFoYp4cnuuQEswwdK3vz9SOIkkyc3wrk8dzjphQApNs56yyXLStaQ==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.0.tgz",
+ "integrity": "sha512-eAtOAFZefEnfJiRFQBGw1eYqa5GTLCZ1y86N0XSI/D6EB+E8z6VPV/UL7Gi5UEclFqoQk+6NRqEDsfmDLXn8sg==",
"dev": true
},
"@types/node": {
- "version": "11.10.5",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-11.10.5.tgz",
- "integrity": "sha512-DuIRlQbX4K+d5I+GMnv+UfnGh+ist0RdlvOp+JZ7ePJ6KQONCFQv/gKYSU1ZzbVdFSUCKZOltjmpFAGGv5MdYA==",
+ "version": "11.13.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.0.tgz",
+ "integrity": "sha512-rx29MMkRdVmzunmiA4lzBYJNnXsW/PhG4kMBy2ATsYaDjGGR75dCFEVVROKpNwlVdcUX3xxlghKQOeDPBJobng==",
"dev": true
},
"@types/stack-utils": {
@@ -1092,9 +1109,9 @@
"dev": true
},
"@types/yargs": {
- "version": "12.0.9",
- "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.9.tgz",
- "integrity": "sha512-sCZy4SxP9rN2w30Hlmg5dtdRwgYQfYRiLo9usw8X9cxlf+H4FqM1xX7+sNH7NNKVdbXMJWqva7iyy+fxh/V7fA==",
+ "version": "12.0.11",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.11.tgz",
+ "integrity": "sha512-IsU1TD+8cQCyG76ZqxP0cVFnofvfzT8p/wO8ENT4jbN/KKN3grsHFgHNl/U+08s33ayX4LwI85cEhYXCOlOkMw==",
"dev": true
},
"abab": {
@@ -1298,6 +1315,12 @@
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
"dev": true
},
+ "ast-metadata-inferer": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/ast-metadata-inferer/-/ast-metadata-inferer-0.1.1.tgz",
+ "integrity": "sha512-hc9w8Qrgg9Lf9iFcZVhNjUnhrd2BBpTlyCnegPVvCe6O0yMrF57a6Cmh7k+xUsfUOMh9wajOL5AsGOBNEyTCcw==",
+ "dev": true
+ },
"astral-regex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
@@ -1314,9 +1337,9 @@
}
},
"async-each": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
- "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.2.tgz",
+ "integrity": "sha512-6xrbvN0MOBKSJDdonmSSz2OwFSgxRaVtBDes26mj9KIGtDo+g9xosFRSC+i1gQh2oAN/tQ62AI/pGZGQjVOiRg==",
"dev": true,
"optional": true
},
@@ -1350,34 +1373,17 @@
"integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
"dev": true
},
- "babel-core": {
- "version": "7.0.0-bridge.0",
- "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz",
- "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==",
- "dev": true
- },
- "babel-eslint": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.0.1.tgz",
- "integrity": "sha512-z7OT1iNV+TjOwHNLLyJk+HN+YVWX+CLE6fPD2SymJZOZQBs+QIexFjhm4keGTm8MW9xr4EC9Q0PbaLB24V5GoQ==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.0.0",
- "@babel/traverse": "^7.0.0",
- "@babel/types": "^7.0.0",
- "eslint-scope": "3.7.1",
- "eslint-visitor-keys": "^1.0.0"
- }
- },
"babel-jest": {
- "version": "24.1.0",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.1.0.tgz",
- "integrity": "sha512-MLcagnVrO9ybQGLEfZUqnOzv36iQzU7Bj4elm39vCukumLVSfoX+tRy3/jW7lUKc7XdpRmB/jech6L/UCsSZjw==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.7.0.tgz",
+ "integrity": "sha512-7WRraf28jlluyVLPyDY4+DXzCptiWor44caqRzefo+3btgHUb7FXEFXeqxwH2UuNCMnNY3plh/7hQ9bsLVwmUQ==",
"dev": true,
"requires": {
+ "@jest/transform": "^24.7.0",
+ "@jest/types": "^24.7.0",
+ "@types/babel__core": "^7.1.0",
"babel-plugin-istanbul": "^5.1.0",
- "babel-preset-jest": "^24.1.0",
+ "babel-preset-jest": "^24.6.0",
"chalk": "^2.4.2",
"slash": "^2.0.0"
}
@@ -1391,35 +1397,70 @@
"find-up": "^3.0.0",
"istanbul-lib-instrument": "^3.0.0",
"test-exclude": "^5.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ }
}
},
"babel-plugin-jest-hoist": {
- "version": "24.1.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.1.0.tgz",
- "integrity": "sha512-gljYrZz8w1b6fJzKcsfKsipSru2DU2DmQ39aB6nV3xQ0DDv3zpIzKGortA5gknrhNnPN8DweaEgrnZdmbGmhnw==",
- "dev": true
- },
- "babel-plugin-lodash": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/babel-plugin-lodash/-/babel-plugin-lodash-3.3.4.tgz",
- "integrity": "sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg==",
+ "version": "24.6.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz",
+ "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==",
"dev": true,
"requires": {
- "@babel/helper-module-imports": "^7.0.0-beta.49",
- "@babel/types": "^7.0.0-beta.49",
- "glob": "^7.1.1",
- "lodash": "^4.17.10",
- "require-package-name": "^2.0.1"
+ "@types/babel__traverse": "^7.0.6"
}
},
"babel-preset-jest": {
- "version": "24.1.0",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.1.0.tgz",
- "integrity": "sha512-FfNLDxFWsNX9lUmtwY7NheGlANnagvxq8LZdl5PKnVG3umP+S/g0XbVBfwtA4Ai3Ri/IMkWabBz3Tyk9wdspcw==",
+ "version": "24.6.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz",
+ "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==",
"dev": true,
"requires": {
"@babel/plugin-syntax-object-rest-spread": "^7.0.0",
- "babel-plugin-jest-hoist": "^24.1.0"
+ "babel-plugin-jest-hoist": "^24.6.0"
}
},
"balanced-match": {
@@ -1493,9 +1534,9 @@
}
},
"binary-extensions": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.0.tgz",
- "integrity": "sha512-EgmjVLMn22z7eGGv3kcnHwSnJXmFHjISTY9E/S5lIcTD3Oxw05QTcBLNkJFzcb3cNueUdF/IN4U+d78V0zO8Hw==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
"dev": true,
"optional": true
},
@@ -1568,14 +1609,14 @@
}
},
"browserslist": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.4.2.tgz",
- "integrity": "sha512-ISS/AIAiHERJ3d45Fz0AVYKkgcy+F/eJHzKEvv1j0wwKGKD9T3BrwKr/5g45L+Y4XIK5PlTqefHciRFcfE1Jxg==",
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.5.4.tgz",
+ "integrity": "sha512-rAjx494LMjqKnMPhFkuLmLp8JWEX0o8ADTGeAbOqaF+XCvYLreZrG5uVjnPBlAQ8REZK4pzXGvp0bWgrFtKaag==",
"dev": true,
"requires": {
- "caniuse-lite": "^1.0.30000939",
- "electron-to-chromium": "^1.3.113",
- "node-releases": "^1.1.8"
+ "caniuse-lite": "^1.0.30000955",
+ "electron-to-chromium": "^1.3.122",
+ "node-releases": "^1.1.13"
}
},
"bser": {
@@ -1643,24 +1684,30 @@
"dev": true
},
"camelcase": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.2.0.tgz",
- "integrity": "sha512-IXFsBS2pC+X0j0N/GE7Dm7j3bsEBp+oTpb7F50dwEVX7rf3IgwO9XatnegTsDtniKCUtEJH4fSU6Asw7uoVLfQ==",
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.0.tgz",
+ "integrity": "sha512-Y05ICatFYPAfykDIB7VdwSJ0LUl1yq/BwO2OpyGGLjiRe1fgzTwVypPiWnzkGFOVFHXrCXUNBl86bpjBhZWSJg==",
+ "dev": true
+ },
+ "caniuse-db": {
+ "version": "1.0.30000957",
+ "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000957.tgz",
+ "integrity": "sha512-13rVZZO/75kPKJhJsi86lPUme7zlvfGDnnvSYx3TA+kYQxLtGywth5+81pyVZDjUfYyzatwA/yjv6DNsh66gmQ==",
"dev": true
},
"caniuse-lite": {
- "version": "1.0.30000942",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000942.tgz",
- "integrity": "sha512-wLf+IhZUy2rfz48tc40OH7jHjXjnvDFEYqBHluINs/6MgzoNLPf25zhE4NOVzqxLKndf+hau81sAW0RcGHIaBQ==",
+ "version": "1.0.30000957",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000957.tgz",
+ "integrity": "sha512-8wxNrjAzyiHcLXN/iunskqQnJquQQ6VX8JHfW5kLgAPRSiSuKZiNfmIkP5j7jgyXqAQBSoXyJxfnbCFS0ThSiQ==",
"dev": true
},
"capture-exit": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz",
- "integrity": "sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz",
+ "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==",
"dev": true,
"requires": {
- "rsvp": "^3.3.3"
+ "rsvp": "^4.8.4"
}
},
"caseless": {
@@ -1701,15 +1748,16 @@
}
},
"chokidar": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.2.tgz",
- "integrity": "sha512-IwXUx0FXc5ibYmPC2XeEj5mpXoV66sR+t3jqu2NS2GYwCktt3KF1/Qqjws/NkegajBA4RbZ5+DDwlOiJsxDHEg==",
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz",
+ "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==",
"dev": true,
"optional": true,
"requires": {
"anymatch": "^2.0.0",
"async-each": "^1.0.1",
"braces": "^2.3.2",
+ "fsevents": "^1.2.7",
"glob-parent": "^3.1.0",
"inherits": "^2.0.3",
"is-binary-path": "^1.0.0",
@@ -1717,7 +1765,7 @@
"normalize-path": "^3.0.0",
"path-is-absolute": "^1.0.0",
"readdirp": "^2.2.1",
- "upath": "^1.1.0"
+ "upath": "^1.1.1"
}
},
"ci-info": {
@@ -1875,9 +1923,9 @@
}
},
"commander": {
- "version": "2.19.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
- "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
+ "version": "2.20.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
+ "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
"dev": true
},
"compare-versions": {
@@ -1919,6 +1967,30 @@
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
"dev": true
},
+ "core-js": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.0.0.tgz",
+ "integrity": "sha512-WBmxlgH2122EzEJ6GH8o9L/FeoUKxxxZ6q6VUxoTlsE4EvbTWKJb447eyVxTEuq0LpXjlq/kCB2qgBvsYRkLvQ==",
+ "dev": true
+ },
+ "core-js-compat": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.0.0.tgz",
+ "integrity": "sha512-W/Ppz34uUme3LmXWjMgFlYyGnbo1hd9JvA0LNQ4EmieqVjg2GPYbj3H6tcdP2QGPGWdRKUqZVbVKLNIFVs/HiA==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.5.1",
+ "core-js": "3.0.0",
+ "core-js-pure": "3.0.0",
+ "semver": "^5.6.0"
+ }
+ },
+ "core-js-pure": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.0.0.tgz",
+ "integrity": "sha512-yPiS3fQd842RZDgo/TAKGgS0f3p2nxssF1H65DIZvZv0Od5CygP8puHXn3IQiM/39VAvgCbdaMQpresrbGgt9g==",
+ "dev": true
+ },
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
@@ -1926,15 +1998,14 @@
"dev": true
},
"cosmiconfig": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.1.0.tgz",
- "integrity": "sha512-kCNPvthka8gvLtzAxQXvWo4FxqRB+ftRZyPZNuab5ngvM9Y7yw7hbEysglptLgpkGX9nAOKTBVkHUAe8xtYR6Q==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.0.tgz",
+ "integrity": "sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g==",
"dev": true,
"requires": {
"import-fresh": "^2.0.0",
"is-directory": "^0.3.1",
- "js-yaml": "^3.9.0",
- "lodash.get": "^4.4.2",
+ "js-yaml": "^3.13.0",
"parse-json": "^4.0.0"
},
"dependencies": {
@@ -1948,6 +2019,16 @@
"resolve-from": "^3.0.0"
}
},
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
"resolve-from": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
@@ -2004,9 +2085,9 @@
"dev": true
},
"cssstyle": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.1.tgz",
- "integrity": "sha512-7DYm8qe+gPx/h77QlCyFmX80+fGaE/6A/Ekl0zaszYOubvySO2saYFdQ78P29D0UsULxFKCetDGNaNRUdSF+2A==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz",
+ "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==",
"dev": true,
"requires": {
"cssom": "0.3.x"
@@ -2155,6 +2236,14 @@
"p-map": "^1.1.1",
"pify": "^3.0.0",
"rimraf": "^2.2.8"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
}
},
"delayed-stream": {
@@ -2245,9 +2334,9 @@
}
},
"electron-to-chromium": {
- "version": "1.3.113",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.113.tgz",
- "integrity": "sha512-De+lPAxEcpxvqPTyZAXELNpRZXABRxf+uL/rSykstQhzj/B0l1150G/ExIIxKc16lI89Hgz81J0BHAcbTqK49g==",
+ "version": "1.3.122",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.122.tgz",
+ "integrity": "sha512-3RKoIyCN4DhP2dsmleuFvpJAIDOseWH88wFYBzb22CSwoFDSWRc4UAMfrtc9h8nBdJjTNIN3rogChgOy6eFInw==",
"dev": true
},
"elegant-spinner": {
@@ -2307,29 +2396,30 @@
}
},
"enzyme-adapter-react-16": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.10.0.tgz",
- "integrity": "sha512-0QqwEZcBv1xEEla+a3H7FMci+y4ybLia9cZzsdIrId7qcig4MK0kqqf6iiCILH1lsKS6c6AVqL3wGPhCevv5aQ==",
+ "version": "1.11.2",
+ "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.11.2.tgz",
+ "integrity": "sha512-2ruTTCPRb0lPuw/vKTXGVZVBZqh83MNDnakMhzxhpJcIbneEwNy2Cv0KvL97pl57/GOazJHflWNLjwWhex5AAA==",
"dev": true,
"requires": {
- "enzyme-adapter-utils": "^1.10.0",
+ "enzyme-adapter-utils": "^1.10.1",
"object.assign": "^4.1.0",
"object.values": "^1.1.0",
- "prop-types": "^15.6.2",
- "react-is": "^16.7.0",
- "react-test-renderer": "^16.0.0-0"
+ "prop-types": "^15.7.2",
+ "react-is": "^16.8.4",
+ "react-test-renderer": "^16.0.0-0",
+ "semver": "^5.6.0"
}
},
"enzyme-adapter-utils": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.10.0.tgz",
- "integrity": "sha512-VnIXJDYVTzKGbdW+lgK8MQmYHJquTQZiGzu/AseCZ7eHtOMAj4Rtvk8ZRopodkfPves0EXaHkXBDkVhPa3t0jA==",
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.10.1.tgz",
+ "integrity": "sha512-oasinhhLoBuZsIkTe8mx0HiudtfErUtG0Ooe1FOplu/t4c9rOmyG5gtrBASK6u4whHIRWvv0cbZMElzNTR21SA==",
"dev": true,
"requires": {
"function.prototype.name": "^1.1.0",
"object.assign": "^4.1.0",
"object.fromentries": "^2.0.0",
- "prop-types": "^15.6.2",
+ "prop-types": "^15.7.2",
"semver": "^5.6.0"
}
},
@@ -2402,9 +2492,9 @@
}
},
"eslint": {
- "version": "5.15.1",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.15.1.tgz",
- "integrity": "sha512-NTcm6vQ+PTgN3UBsALw5BMhgO6i5EpIjQF/Xb5tIh3sk9QhrFafujUOczGz4J24JBlzWclSB9Vmx8d+9Z6bFCg==",
+ "version": "5.16.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz",
+ "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
@@ -2413,7 +2503,7 @@
"cross-spawn": "^6.0.5",
"debug": "^4.0.1",
"doctrine": "^3.0.0",
- "eslint-scope": "^4.0.2",
+ "eslint-scope": "^4.0.3",
"eslint-utils": "^1.3.1",
"eslint-visitor-keys": "^1.0.0",
"espree": "^5.0.1",
@@ -2427,7 +2517,7 @@
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
"inquirer": "^6.2.2",
- "js-yaml": "^3.12.0",
+ "js-yaml": "^3.13.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.3.0",
"lodash": "^4.17.11",
@@ -2454,16 +2544,6 @@
"ms": "^2.1.1"
}
},
- "eslint-scope": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.2.tgz",
- "integrity": "sha512-5q1+B/ogmHl8+paxtOKx38Z8LtWkVGuNt3+GQNErqwLl6ViNp/gdJGMCjZNxZ8j/VYjDNZ2Fo+eQc1TAVPIzbg==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
- }
- },
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
@@ -2507,6 +2587,20 @@
"pkg-dir": "^2.0.0"
}
},
+ "eslint-plugin-compat": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-3.1.0.tgz",
+ "integrity": "sha512-N+FiugxY5Y8CKp6/sk76KtIFlA2fMx8Ogb3FqbwOePND6mnnkxZL/iPMC/3QhPtuq10RVNduYOmKU9laqna5+A==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.4.2",
+ "ast-metadata-inferer": "^0.1.1",
+ "browserslist": "^4.5.2",
+ "caniuse-db": "^1.0.30000951",
+ "mdn-browser-compat-data": "^0.0.72",
+ "semver": "^5.6.0"
+ }
+ },
"eslint-plugin-es": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz",
@@ -2544,106 +2638,6 @@
"esutils": "^2.0.2",
"isarray": "^1.0.0"
}
- },
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "load-json-file": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
- "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "strip-bom": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true
- },
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "path-type": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
- "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
- "dev": true,
- "requires": {
- "pify": "^2.0.0"
- }
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- },
- "read-pkg": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
- "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
- "dev": true,
- "requires": {
- "load-json-file": "^2.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^2.0.0"
- }
- },
- "read-pkg-up": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
- "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
- "dev": true,
- "requires": {
- "find-up": "^2.0.0",
- "read-pkg": "^2.0.0"
- }
}
}
},
@@ -2662,17 +2656,17 @@
},
"dependencies": {
"ignore": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.0.5.tgz",
- "integrity": "sha512-kOC8IUb8HSDMVcYrDVezCxpJkzSQWTAzf3olpKM6o9rM5zpojx23O0Fl8Wr4+qJ6ZbPEHqf1fdwev/DS7v7pmA==",
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.0.6.tgz",
+ "integrity": "sha512-/+hp3kUf/Csa32ktIaj0OlRqQxrgs30n62M90UBpNd9k+ENEch5S+hmbW3DtcJGz3sYFTh4F3A6fQ0q7KWsp4w==",
"dev": true
}
}
},
"eslint-plugin-promise": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz",
- "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.1.1.tgz",
+ "integrity": "sha512-faAHw7uzlNPy7b45J1guyjazw28M+7gJokKUjC5JSFoYfUEyy6Gw/i7YQvmv2Yk00sUjWcmzXQLpU1Ki/C2IZQ==",
"dev": true
},
"eslint-plugin-standard": {
@@ -2682,9 +2676,9 @@
"dev": true
},
"eslint-scope": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
- "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+ "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
"dev": true,
"requires": {
"esrecurse": "^4.1.0",
@@ -2813,16 +2807,16 @@
}
},
"expect": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/expect/-/expect-24.3.1.tgz",
- "integrity": "sha512-xnmobSlaqhg4FKqjb5REk4AobQzFMJoctDdREKfSGqrtzRfCWYbfqt3WmikAvQz/J8mCNQhORgYdEjPMJbMQPQ==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-24.7.0.tgz",
+ "integrity": "sha512-sVRlM83O5tH2G7VUZuClY01k1UGqw7jJcI9rCNn0zaPkbcn+nOOj8MLzhHxF7rI4Ak2vblW/KzCDwSXPhXHlOg==",
"dev": true,
"requires": {
- "@jest/types": "^24.3.0",
+ "@jest/types": "^24.7.0",
"ansi-styles": "^3.2.0",
"jest-get-type": "^24.3.0",
- "jest-matcher-utils": "^24.3.1",
- "jest-message-util": "^24.3.0",
+ "jest-matcher-utils": "^24.7.0",
+ "jest-message-util": "^24.7.0",
"jest-regex-util": "^24.3.0"
}
},
@@ -3020,12 +3014,12 @@
"dev": true
},
"find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"dev": true,
"requires": {
- "locate-path": "^3.0.0"
+ "locate-path": "^2.0.0"
}
},
"flat-cache": {
@@ -3095,15 +3089,563 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "function.prototype.name": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.0.tgz",
+ "fsevents": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz",
+ "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "nan": "^2.9.2",
+ "node-pre-gyp": "^0.10.0"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "2.6.9",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minipass": {
+ "version": "2.3.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.2.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.2.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "^2.1.2",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.10.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.1",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.2.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.3.4",
+ "minizlib": "^1.1.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
+ "function.prototype.name": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.0.tgz",
"integrity": "sha512-Bs0VRrTz4ghD8pTmbJQD1mZ8A/mN0ur/jGz+A6FBxPDUPkm1tNfF6bhTYPA7i7aF4lZJVr+OXTNNrnnIl58Wfg==",
"dev": true,
"requires": {
@@ -3225,14 +3767,6 @@
"object-assign": "^4.0.1",
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
- "dev": true
- }
}
},
"graceful-fs": {
@@ -3248,12 +3782,12 @@
"dev": true
},
"handlebars": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.0.tgz",
- "integrity": "sha512-l2jRuU1NAWK6AW5qqcTATWQJvNPEwkM7NEKSiv/gqOsoSQbVoWyqVEY5GS+XPQ88zLNmqASRpzfdm8d79hJS+w==",
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.1.tgz",
+ "integrity": "sha512-3Zhi6C0euYZL5sM0Zcy7lInLXKQ+YLcF/olbN010mzGQ4XVm50JeyBnMqofHh696GrciGruC7kCcApPDJvVgwA==",
"dev": true,
"requires": {
- "async": "^2.5.0",
+ "neo-async": "^2.6.0",
"optimist": "^0.6.1",
"source-map": "^0.6.1",
"uglify-js": "^3.1.4"
@@ -3360,9 +3894,9 @@
"dev": true
},
"html-element-map": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.0.0.tgz",
- "integrity": "sha512-/SP6aOiM5Ai9zALvCxDubIeez0LvG3qP7R9GcRDnJEP/HBmv0A8A9K0o8+HFudcFt46+i921ANjzKsjPjb7Enw==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/html-element-map/-/html-element-map-1.0.1.tgz",
+ "integrity": "sha512-BZSfdEm6n706/lBfXKWa4frZRZcT5k1cOusw95ijZsHlI+GdgY0v95h6IzO3iIDf2ROwq570YTwqNPqHcNMozw==",
"dev": true,
"requires": {
"array-filter": "^1.0.0"
@@ -3392,9 +3926,9 @@
},
"dependencies": {
"readable-stream": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.2.0.tgz",
- "integrity": "sha512-RV20kLjdmpZuTF1INEb9IA3L68Nmi+Ri7ppZqo78wj//Pn62fCoJyV9zalccNzDD/OuJpMG4f+pfMl8+L6QdGw==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz",
+ "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==",
"dev": true,
"requires": {
"inherits": "^2.0.3",
@@ -3433,6 +3967,65 @@
"slash": "^2.0.0"
},
"dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
"pkg-dir": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
@@ -3490,6 +4083,49 @@
"resolve-cwd": "^2.0.0"
},
"dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
"pkg-dir": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
@@ -3551,18 +4187,18 @@
},
"dependencies": {
"ansi-regex": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz",
- "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
"strip-ansi": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz",
- "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
- "ansi-regex": "^4.0.0"
+ "ansi-regex": "^4.1.0"
}
}
}
@@ -3721,9 +4357,9 @@
"dev": true
},
"is-glob": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz",
- "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+ "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
"dev": true,
"requires": {
"is-extglob": "^2.1.1"
@@ -4018,31 +4654,31 @@
}
},
"jest": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest/-/jest-24.3.1.tgz",
- "integrity": "sha512-SqZguEbYNcZ3r0KUUBN+IkKfyPS1VBbIUiK4Wrc0AiGUR52gJa0fmlWSOCL3x25908QrfoQwkVDu5jCsfXb2ig==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-24.7.0.tgz",
+ "integrity": "sha512-1bb9H06UeqTgiyZ9Lm81No06YdWq7f4ahLdQZJnQ0n2wuyA+ODrRfbqM8emmSS85IDw54LodW0tlud/b2F+4dQ==",
"dev": true,
"requires": {
"import-local": "^2.0.0",
- "jest-cli": "^24.3.1"
+ "jest-cli": "^24.7.0"
},
"dependencies": {
"jest-cli": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.3.1.tgz",
- "integrity": "sha512-HdwMgigvDQdlWX7gwM2QMkJJRqSk7tTYKq7kVplblK28RarqquJMWV/lOCN8CukuG9u3DZTeXpCDXR7kpGfB3w==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.7.0.tgz",
+ "integrity": "sha512-/JNCbQGRTc2+HE+Qq1vCExOyyHvAFIdhBvdsEjQvH+UmghJBvA4UdOl6ok4fsPQnysa/p3gez3KosCWJdt0l6w==",
"dev": true,
"requires": {
- "@jest/core": "^24.3.1",
- "@jest/test-result": "^24.3.0",
- "@jest/types": "^24.3.0",
+ "@jest/core": "^24.7.0",
+ "@jest/test-result": "^24.7.0",
+ "@jest/types": "^24.7.0",
"chalk": "^2.0.1",
"exit": "^0.1.2",
"import-local": "^2.0.0",
"is-ci": "^2.0.0",
- "jest-config": "^24.3.1",
- "jest-util": "^24.3.0",
- "jest-validate": "^24.3.1",
+ "jest-config": "^24.7.0",
+ "jest-util": "^24.7.0",
+ "jest-validate": "^24.7.0",
"prompts": "^2.0.1",
"realpath-native": "^1.1.0",
"yargs": "^12.0.2"
@@ -4051,86 +4687,51 @@
}
},
"jest-changed-files": {
- "version": "24.3.0",
- "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.3.0.tgz",
- "integrity": "sha512-fTq0YAUR6644fgsqLC7Zi2gXA/bAplMRvfXQdutmkwgrCKK6upkj+sgXqsUfUZRm15CVr3YSojr/GRNn71IMvg==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.7.0.tgz",
+ "integrity": "sha512-33BgewurnwSfJrW7T5/ZAXGE44o7swLslwh8aUckzq2e17/2Os1V0QU506ZNik3hjs8MgnEMKNkcud442NCDTw==",
"dev": true,
"requires": {
- "@jest/types": "^24.3.0",
+ "@jest/types": "^24.7.0",
"execa": "^1.0.0",
"throat": "^4.0.0"
}
},
"jest-config": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.3.1.tgz",
- "integrity": "sha512-ujHQywsM//vKFvJwEC02KNZgKAGOzGz1bFPezmTQtuj8XdfsAVq8p6N/dw4yodXV11gSf6TJ075i4ehM+mKatA==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.7.0.tgz",
+ "integrity": "sha512-OsE0l9+QrXCLPQ8yJOWX/hQiH8OBf10/5pmBN6OTttU80KE0nF17gs3sUJ4ZikNsQLkbjQs1hW7g9Wg7u0eTpw==",
"dev": true,
"requires": {
"@babel/core": "^7.1.0",
- "@jest/types": "^24.3.0",
- "babel-jest": "^24.3.1",
+ "@jest/test-sequencer": "^24.7.0",
+ "@jest/types": "^24.7.0",
+ "babel-jest": "^24.7.0",
"chalk": "^2.0.1",
"glob": "^7.1.1",
- "jest-environment-jsdom": "^24.3.1",
- "jest-environment-node": "^24.3.1",
+ "jest-environment-jsdom": "^24.7.0",
+ "jest-environment-node": "^24.7.0",
"jest-get-type": "^24.3.0",
- "jest-jasmine2": "^24.3.1",
+ "jest-jasmine2": "^24.7.0",
"jest-regex-util": "^24.3.0",
- "jest-resolve": "^24.3.1",
- "jest-util": "^24.3.0",
- "jest-validate": "^24.3.1",
+ "jest-resolve": "^24.7.0",
+ "jest-util": "^24.7.0",
+ "jest-validate": "^24.7.0",
"micromatch": "^3.1.10",
- "pretty-format": "^24.3.1",
+ "pretty-format": "^24.7.0",
"realpath-native": "^1.1.0"
- },
- "dependencies": {
- "babel-jest": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.3.1.tgz",
- "integrity": "sha512-6KaXyUevY0KAxD5Ba+EBhyfwvc+R2f7JV7BpBZ5T8yJGgj0M1hYDfRhDq35oD5MzprMf/ggT81nEuLtMyxfDIg==",
- "dev": true,
- "requires": {
- "@jest/transform": "^24.3.1",
- "@jest/types": "^24.3.0",
- "@types/babel__core": "^7.1.0",
- "babel-plugin-istanbul": "^5.1.0",
- "babel-preset-jest": "^24.3.0",
- "chalk": "^2.4.2",
- "slash": "^2.0.0"
- }
- },
- "babel-plugin-jest-hoist": {
- "version": "24.3.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.3.0.tgz",
- "integrity": "sha512-nWh4N1mVH55Tzhx2isvUN5ebM5CDUvIpXPZYMRazQughie/EqGnbR+czzoQlhUmJG9pPJmYDRhvocotb2THl1w==",
- "dev": true,
- "requires": {
- "@types/babel__traverse": "^7.0.6"
- }
- },
- "babel-preset-jest": {
- "version": "24.3.0",
- "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.3.0.tgz",
- "integrity": "sha512-VGTV2QYBa/Kn3WCOKdfS31j9qomaXSgJqi65B6o05/1GsJyj9LVhSljM9ro4S+IBGj/ENhNBuH9bpqzztKAQSw==",
- "dev": true,
- "requires": {
- "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
- "babel-plugin-jest-hoist": "^24.3.0"
- }
- }
}
},
"jest-diff": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.3.1.tgz",
- "integrity": "sha512-YRVzDguyzShP3Pb9wP/ykBkV7Z+O4wltrMZ2P4LBtNxrHNpxwI2DECrpD9XevxWubRy5jcE8sSkxyX3bS7W+rA==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.7.0.tgz",
+ "integrity": "sha512-ULQZ5B1lWpH70O4xsANC4tf4Ko6RrpwhE3PtG6ERjMg1TiYTC2Wp4IntJVGro6a8HG9luYHhhmF4grF0Pltckg==",
"dev": true,
"requires": {
"chalk": "^2.0.1",
"diff-sequences": "^24.3.0",
"jest-get-type": "^24.3.0",
- "pretty-format": "^24.3.1"
+ "pretty-format": "^24.7.0"
}
},
"jest-docblock": {
@@ -4143,43 +4744,43 @@
}
},
"jest-each": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.3.1.tgz",
- "integrity": "sha512-GTi+nxDaWwSgOPLiiqb/p4LURy0mv3usoqsA2eoTYSmRsLgjgZ6VUyRpUBH5JY9EMBx33suNFXk0iyUm29WRpw==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.7.0.tgz",
+ "integrity": "sha512-QIva7rgK9R+23uQUnqgSRlZJ5MwJIVanoQNzRZl0zbhv9M05TDqoneVOhpQyDM5ZUJjqCLzwu0PoG6L8U7i8qA==",
"dev": true,
"requires": {
- "@jest/types": "^24.3.0",
+ "@jest/types": "^24.7.0",
"chalk": "^2.0.1",
"jest-get-type": "^24.3.0",
- "jest-util": "^24.3.0",
- "pretty-format": "^24.3.1"
+ "jest-util": "^24.7.0",
+ "pretty-format": "^24.7.0"
}
},
"jest-environment-jsdom": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.3.1.tgz",
- "integrity": "sha512-rz2OSYJiQerDqWDwjisqRwhVNpwkqFXdtyMzEuJ47Ip9NRpRQ+qy7/+zFujPUy/Z+zjWRO5seHLB/dOD4VpEVg==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.7.0.tgz",
+ "integrity": "sha512-U3IscwOkfZLUfv0sgeHX2DP7gxZNREXBwulNyP2+SYtLKdGYYjD7pLY4DcUq0y7cc0+VXfrok2QXeGF8qDbixw==",
"dev": true,
"requires": {
- "@jest/environment": "^24.3.1",
- "@jest/fake-timers": "^24.3.0",
- "@jest/types": "^24.3.0",
- "jest-mock": "^24.3.0",
- "jest-util": "^24.3.0",
+ "@jest/environment": "^24.7.0",
+ "@jest/fake-timers": "^24.7.0",
+ "@jest/types": "^24.7.0",
+ "jest-mock": "^24.7.0",
+ "jest-util": "^24.7.0",
"jsdom": "^11.5.1"
}
},
"jest-environment-node": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.3.1.tgz",
- "integrity": "sha512-Xy+/yFem/yUs9OkzbcawQT237vwDjBhAVLjac1KYAMYVjGb0Vb/Ovw4g61PunVdrEIpfcXNtRUltM4+9c7lARQ==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.7.0.tgz",
+ "integrity": "sha512-XECuhDfrdHuw/+5JrjS+D9tuBsv2M0MpSzJmSTGqBeCmgekaCbLB4wcU5XYWsyFUAlhDTU2Vn6UqReQceiHtKQ==",
"dev": true,
"requires": {
- "@jest/environment": "^24.3.1",
- "@jest/fake-timers": "^24.3.0",
- "@jest/types": "^24.3.0",
- "jest-mock": "^24.3.0",
- "jest-util": "^24.3.0"
+ "@jest/environment": "^24.7.0",
+ "@jest/fake-timers": "^24.7.0",
+ "@jest/types": "^24.7.0",
+ "jest-mock": "^24.7.0",
+ "jest-util": "^24.7.0"
}
},
"jest-get-type": {
@@ -4189,76 +4790,79 @@
"dev": true
},
"jest-haste-map": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.3.1.tgz",
- "integrity": "sha512-OTMQle+astr1lWKi62Ccmk2YWn6OtUoU/8JpJdg8zdsnpFIry/k0S4sQ4nWocdM07PFdvqcthWc78CkCE6sXvA==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.7.0.tgz",
+ "integrity": "sha512-f84QcZoA/PbAjGbPnisNJfj73x3noM/wgPhRO5kT1l18pi46Lcs+QsN3WW+bGNdzIUUDzjaJqZtRTJxT71sHCA==",
"dev": true,
"requires": {
- "@jest/types": "^24.3.0",
+ "@jest/types": "^24.7.0",
+ "anymatch": "^2.0.0",
"fb-watchman": "^2.0.0",
+ "fsevents": "^1.2.7",
"graceful-fs": "^4.1.15",
"invariant": "^2.2.4",
- "jest-serializer": "^24.3.0",
- "jest-util": "^24.3.0",
- "jest-worker": "^24.3.1",
+ "jest-serializer": "^24.4.0",
+ "jest-util": "^24.7.0",
+ "jest-worker": "^24.6.0",
"micromatch": "^3.1.10",
- "sane": "^4.0.3"
+ "sane": "^4.0.3",
+ "walker": "^1.0.7"
}
},
"jest-jasmine2": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.3.1.tgz",
- "integrity": "sha512-STo6ar1IyPlIPq9jPxDQhM7lC0dAX7KKN0LmCLMlgJeXwX+1XiVdtZDv1a4zyg6qhNdpo1arOBGY0BcovUK7ug==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.7.0.tgz",
+ "integrity": "sha512-bPlCXEl3YXeCLAXa0tegW8WWa94RQkXf4K4FaoMXS8F5iNic6qdj0CaPNQjMkz8s3qdnSN8GMgwF5RK8Vu5krQ==",
"dev": true,
"requires": {
"@babel/traverse": "^7.1.0",
- "@jest/environment": "^24.3.1",
- "@jest/test-result": "^24.3.0",
- "@jest/types": "^24.3.0",
+ "@jest/environment": "^24.7.0",
+ "@jest/test-result": "^24.7.0",
+ "@jest/types": "^24.7.0",
"chalk": "^2.0.1",
"co": "^4.6.0",
- "expect": "^24.3.1",
+ "expect": "^24.7.0",
"is-generator-fn": "^2.0.0",
- "jest-each": "^24.3.1",
- "jest-matcher-utils": "^24.3.1",
- "jest-message-util": "^24.3.0",
- "jest-runtime": "^24.3.1",
- "jest-snapshot": "^24.3.1",
- "jest-util": "^24.3.0",
- "pretty-format": "^24.3.1",
+ "jest-each": "^24.7.0",
+ "jest-matcher-utils": "^24.7.0",
+ "jest-message-util": "^24.7.0",
+ "jest-runtime": "^24.7.0",
+ "jest-snapshot": "^24.7.0",
+ "jest-util": "^24.7.0",
+ "pretty-format": "^24.7.0",
"throat": "^4.0.0"
}
},
"jest-leak-detector": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.3.1.tgz",
- "integrity": "sha512-GncRwEtAw/SohdSyY4bk2RE06Ac1dZrtQGZQ2j35hSuN4gAAAKSYMszJS2WDixsAEaFN+GHBHG+d8pjVGklKyw==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.7.0.tgz",
+ "integrity": "sha512-zV0qHKZGXtmPVVzT99CVEcHE9XDf+8LwiE0Ob7jjezERiGVljmqKFWpV2IkG+rkFIEUHFEkMiICu7wnoPM/RoQ==",
"dev": true,
"requires": {
- "pretty-format": "^24.3.1"
+ "pretty-format": "^24.7.0"
}
},
"jest-matcher-utils": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.3.1.tgz",
- "integrity": "sha512-P5VIsUTJeI0FYvWVMwEHjxK1L83vEkDiKMV0XFPIrT2jzWaWPB2+dPCHkP2ID9z4eUKElaHqynZnJiOdNVHfXQ==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.7.0.tgz",
+ "integrity": "sha512-158ieSgk3LNXeUhbVJYRXyTPSCqNgVXOp/GT7O94mYd3pk/8+odKTyR1JLtNOQSPzNi8NFYVONtvSWA/e1RDXg==",
"dev": true,
"requires": {
"chalk": "^2.0.1",
- "jest-diff": "^24.3.1",
+ "jest-diff": "^24.7.0",
"jest-get-type": "^24.3.0",
- "pretty-format": "^24.3.1"
+ "pretty-format": "^24.7.0"
}
},
"jest-message-util": {
- "version": "24.3.0",
- "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.3.0.tgz",
- "integrity": "sha512-lXM0YgKYGqN5/eH1NGw4Ix+Pk2I9Y77beyRas7xM24n+XTTK3TbT0VkT3L/qiyS7WkW0YwyxoXnnAaGw4hsEDA==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.7.0.tgz",
+ "integrity": "sha512-hzuxx/g7t3uWxC2A12cZbVQI0XDyaXbvcvjNqX/XYijRDJa73/7PDl8ZdCRicbE5L7/jLK9kfzwDd/AimuUWbQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
- "@jest/test-result": "^24.3.0",
- "@jest/types": "^24.3.0",
+ "@jest/test-result": "^24.7.0",
+ "@jest/types": "^24.7.0",
"@types/stack-utils": "^1.0.1",
"chalk": "^2.0.1",
"micromatch": "^3.1.10",
@@ -4267,14 +4871,20 @@
}
},
"jest-mock": {
- "version": "24.3.0",
- "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.3.0.tgz",
- "integrity": "sha512-AhAo0qjbVWWGvcbW5nChFjR0ObQImvGtU6DodprNziDOt+pP0CBdht/sYcNIOXeim8083QUi9bC8QdKB8PTK4Q==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.7.0.tgz",
+ "integrity": "sha512-6taW4B4WUcEiT2V9BbOmwyGuwuAFT2G8yghF7nyNW1/2gq5+6aTqSPcS9lS6ArvEkX55vbPAS/Jarx5LSm4Fng==",
"dev": true,
"requires": {
- "@jest/types": "^24.3.0"
+ "@jest/types": "^24.7.0"
}
},
+ "jest-pnp-resolver": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz",
+ "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==",
+ "dev": true
+ },
"jest-regex-util": {
"version": "24.3.0",
"resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz",
@@ -4282,80 +4892,81 @@
"dev": true
},
"jest-resolve": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.3.1.tgz",
- "integrity": "sha512-N+Q3AcVuKxpn/kjQMxUVLwBk32ZE1diP4MPcHyjVwcKpCUuKrktfRR3Mqe/T2HoD25wyccstaqcPUKIudl41bg==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.7.0.tgz",
+ "integrity": "sha512-1coBnLJHuz3VEe1x/I1tFaAgPsp42KVIZKNaVSUxVUyDEwkp4OvsZ59Mwl+bF3L+2OFEdCWj3DFU398NUrANsg==",
"dev": true,
"requires": {
- "@jest/types": "^24.3.0",
+ "@jest/types": "^24.7.0",
"browser-resolve": "^1.11.3",
"chalk": "^2.0.1",
+ "jest-pnp-resolver": "^1.2.1",
"realpath-native": "^1.1.0"
}
},
"jest-resolve-dependencies": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.3.1.tgz",
- "integrity": "sha512-9JUejNImGnJjbNR/ttnod+zQIWANpsrYMPt18s2tYGK6rP191qFsyEQ2BhAQMdYDRkTmi8At+Co9tL+jTPqdpw==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.7.0.tgz",
+ "integrity": "sha512-R0nllgRNorl/Z1SPp669f3ELTLPTIQ1ZbLyHZW9KYCLgUhbUVESwbOsXjcWmtrhKKxtTaaLtQbDkynOIj53gJQ==",
"dev": true,
"requires": {
- "@jest/types": "^24.3.0",
+ "@jest/types": "^24.7.0",
"jest-regex-util": "^24.3.0",
- "jest-snapshot": "^24.3.1"
+ "jest-snapshot": "^24.7.0"
}
},
"jest-runner": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.3.1.tgz",
- "integrity": "sha512-Etc9hQ5ruwg+q7DChm+E8qzHHdNTLeUdlo+whPQRSpNSgl0AEgc2r2mT4lxODREqmnHg9A8JHA44pIG4GE0Gzg==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.7.0.tgz",
+ "integrity": "sha512-1ClbQ5CoRjyjmIOR5k5O0EhrVi0N0p7Q7eD9AKlWLMhrYwQOJrVclI/II0g5W4kPsKHZIdoL7KhwcUEiXNmckg==",
"dev": true,
"requires": {
- "@jest/console": "^24.3.0",
- "@jest/environment": "^24.3.1",
- "@jest/test-result": "^24.3.0",
- "@jest/types": "^24.3.0",
+ "@jest/console": "^24.6.0",
+ "@jest/environment": "^24.7.0",
+ "@jest/test-result": "^24.7.0",
+ "@jest/types": "^24.7.0",
"chalk": "^2.4.2",
"exit": "^0.1.2",
"graceful-fs": "^4.1.15",
- "jest-config": "^24.3.1",
+ "jest-config": "^24.7.0",
"jest-docblock": "^24.3.0",
- "jest-haste-map": "^24.3.1",
- "jest-jasmine2": "^24.3.1",
- "jest-leak-detector": "^24.3.1",
- "jest-message-util": "^24.3.0",
- "jest-resolve": "^24.3.1",
- "jest-runtime": "^24.3.1",
- "jest-util": "^24.3.0",
- "jest-worker": "^24.3.1",
+ "jest-haste-map": "^24.7.0",
+ "jest-jasmine2": "^24.7.0",
+ "jest-leak-detector": "^24.7.0",
+ "jest-message-util": "^24.7.0",
+ "jest-resolve": "^24.7.0",
+ "jest-runtime": "^24.7.0",
+ "jest-util": "^24.7.0",
+ "jest-worker": "^24.6.0",
"source-map-support": "^0.5.6",
"throat": "^4.0.0"
}
},
"jest-runtime": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.3.1.tgz",
- "integrity": "sha512-Qz/tJWbZ2naFJ2Kvy1p+RhhRgsPYh4e6wddVRy6aHBr32FTt3Ja33bfV7pkMFWXFbVuAsJMJVdengbvdhWzq4A==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.7.0.tgz",
+ "integrity": "sha512-UHrBjGhXM8zjhxgaYqHD9GqN/nr14dHNJSltQY2GKFIYFup2PpGYPs/UgaioAdmWpgmAHxrrZD2T2o8JaBiKMg==",
"dev": true,
"requires": {
- "@jest/console": "^24.3.0",
- "@jest/environment": "^24.3.1",
+ "@jest/console": "^24.6.0",
+ "@jest/environment": "^24.7.0",
"@jest/source-map": "^24.3.0",
- "@jest/transform": "^24.3.1",
- "@jest/types": "^24.3.0",
+ "@jest/transform": "^24.7.0",
+ "@jest/types": "^24.7.0",
"@types/yargs": "^12.0.2",
"chalk": "^2.0.1",
"exit": "^0.1.2",
"glob": "^7.1.3",
"graceful-fs": "^4.1.15",
- "jest-config": "^24.3.1",
- "jest-haste-map": "^24.3.1",
- "jest-message-util": "^24.3.0",
- "jest-mock": "^24.3.0",
+ "jest-config": "^24.7.0",
+ "jest-haste-map": "^24.7.0",
+ "jest-message-util": "^24.7.0",
+ "jest-mock": "^24.7.0",
"jest-regex-util": "^24.3.0",
- "jest-resolve": "^24.3.1",
- "jest-snapshot": "^24.3.1",
- "jest-util": "^24.3.0",
- "jest-validate": "^24.3.1",
+ "jest-resolve": "^24.7.0",
+ "jest-snapshot": "^24.7.0",
+ "jest-util": "^24.7.0",
+ "jest-validate": "^24.7.0",
"realpath-native": "^1.1.0",
"slash": "^2.0.0",
"strip-bom": "^3.0.0",
@@ -4363,43 +4974,42 @@
}
},
"jest-serializer": {
- "version": "24.3.0",
- "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.3.0.tgz",
- "integrity": "sha512-RiSpqo2OFbVLJN/PgAOwQIUeHDfss6NBUDTLhjiJM8Bb5rMrwRqHfkaqahIsOf9cXXB5UjcqDCzbQ7AIoMqWkg==",
+ "version": "24.4.0",
+ "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.4.0.tgz",
+ "integrity": "sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q==",
"dev": true
},
"jest-snapshot": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.3.1.tgz",
- "integrity": "sha512-7wbNJWh0sBjmoaexTOWqS7nleTQME7o2W9XKU6CHCxG49Thjct4aVPC/QPNF5NHnvf4M/VDmudIDbwz6noJTRA==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.7.0.tgz",
+ "integrity": "sha512-2TsxHzf4LZ8Wp1a4ORNnM+aL3lN30nOn4V5rNInGQ5an56u3k4lzOQ45AbzFArvcxPpujY6GzNCmstNJ5p/LYA==",
"dev": true,
"requires": {
"@babel/types": "^7.0.0",
- "@jest/types": "^24.3.0",
+ "@jest/types": "^24.7.0",
"chalk": "^2.0.1",
- "expect": "^24.3.1",
- "jest-diff": "^24.3.1",
- "jest-matcher-utils": "^24.3.1",
- "jest-message-util": "^24.3.0",
- "jest-resolve": "^24.3.1",
+ "expect": "^24.7.0",
+ "jest-diff": "^24.7.0",
+ "jest-matcher-utils": "^24.7.0",
+ "jest-message-util": "^24.7.0",
+ "jest-resolve": "^24.7.0",
"mkdirp": "^0.5.1",
"natural-compare": "^1.4.0",
- "pretty-format": "^24.3.1",
+ "pretty-format": "^24.7.0",
"semver": "^5.5.0"
}
},
"jest-util": {
- "version": "24.3.0",
- "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.3.0.tgz",
- "integrity": "sha512-eKIAC+MTKWZthUUVOwZ3Tc5a0cKMnxalQHr6qZ4kPzKn6k09sKvsmjCygqZ1SxVVfUKoa8Sfn6XDv9uTJ1iXTg==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.7.0.tgz",
+ "integrity": "sha512-rgkYsdFksdXiLT74l282VJC0AEqcJ/xNwfnX7kNdIwCD5CA7j6D3kk3MlnVYdE0EVYTqSN7Q8tOFp5n2HQU2PQ==",
"dev": true,
"requires": {
- "@jest/console": "^24.3.0",
- "@jest/fake-timers": "^24.3.0",
+ "@jest/console": "^24.6.0",
+ "@jest/fake-timers": "^24.7.0",
"@jest/source-map": "^24.3.0",
- "@jest/test-result": "^24.3.0",
- "@jest/types": "^24.3.0",
- "@types/node": "*",
+ "@jest/test-result": "^24.7.0",
+ "@jest/types": "^24.7.0",
"callsites": "^3.0.0",
"chalk": "^2.0.1",
"graceful-fs": "^4.1.15",
@@ -4418,42 +5028,40 @@
}
},
"jest-validate": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.3.1.tgz",
- "integrity": "sha512-ww3+IPNCOEMi1oKlrHdSnBXetXtdrrdSh0bqLNTVkWglduhORf94RJWd1ko9oEPU2TcEQS5QIPacYziQIUzc4A==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.7.0.tgz",
+ "integrity": "sha512-cgai/gts9B2chz1rqVdmLhzYxQbgQurh1PEQSvSgPZ8KGa1AqXsqC45W5wKEwzxKrWqypuQrQxnF4+G9VejJJA==",
"dev": true,
"requires": {
- "@jest/types": "^24.3.0",
+ "@jest/types": "^24.7.0",
"camelcase": "^5.0.0",
"chalk": "^2.0.1",
"jest-get-type": "^24.3.0",
"leven": "^2.1.0",
- "pretty-format": "^24.3.1"
+ "pretty-format": "^24.7.0"
}
},
"jest-watcher": {
- "version": "24.3.0",
- "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.3.0.tgz",
- "integrity": "sha512-EpJS/aUG8D3DMuy9XNA4fnkKWy3DQdoWhY92ZUdlETIeEn1xya4Np/96MBSh4II5YvxwKe6JKwbu3Bnzfwa7vA==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.7.0.tgz",
+ "integrity": "sha512-BBDn/6iG1dSM7fR7FBu5o6R+ZwBJBhKmM2tAqpp3yOzZD/1Aerhdx7laLFs2gajWpBzC7OEHr6yMddDX+6n0Mw==",
"dev": true,
"requires": {
- "@jest/test-result": "^24.3.0",
- "@jest/types": "^24.3.0",
- "@types/node": "*",
+ "@jest/test-result": "^24.7.0",
+ "@jest/types": "^24.7.0",
"@types/yargs": "^12.0.9",
"ansi-escapes": "^3.0.0",
"chalk": "^2.0.1",
- "jest-util": "^24.3.0",
+ "jest-util": "^24.7.0",
"string-length": "^2.0.0"
}
},
"jest-worker": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.3.1.tgz",
- "integrity": "sha512-ZCoAe/iGLzTJvWHrO8fyx3bmEQhpL16SILJmWHKe8joHhyF3z00psF1sCRT54DoHw5GJG0ZpUtGy+ylvwA4haA==",
+ "version": "24.6.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz",
+ "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==",
"dev": true,
"requires": {
- "@types/node": "*",
"merge-stream": "^1.0.1",
"supports-color": "^6.1.0"
},
@@ -4482,9 +5090,9 @@
"dev": true
},
"js-yaml": {
- "version": "3.12.2",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.2.tgz",
- "integrity": "sha512-QHn/Lh/7HhZ/Twc7vJYQTkjuCa0kaCcDcjK5Zlk2rvnUpy7DxMJ23+Jc2dcyvltwQVg1nygAVlB2oRDFHoRS5Q==",
+ "version": "3.13.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.0.tgz",
+ "integrity": "sha512-pZZoSxcCYco+DIKBTimr67J6Hy+EYGZDY/HCWC+iAEA9h1ByhMXAIVUXMcMFpOCxQ/xjXmPI2MkDL5HRm5eFrQ==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
@@ -4700,6 +5308,12 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
"dev": true
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
}
}
},
@@ -4824,24 +5438,24 @@
}
},
"load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
"strip-bom": "^3.0.0"
}
},
"locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
"dev": true,
"requires": {
- "p-locate": "^3.0.0",
+ "p-locate": "^2.0.0",
"path-exists": "^3.0.0"
}
},
@@ -4863,12 +5477,6 @@
"integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=",
"dev": true
},
- "lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=",
- "dev": true
- },
"lodash.isequal": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
@@ -4929,6 +5537,14 @@
"dev": true,
"requires": {
"pify": "^3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
}
},
"make-error": {
@@ -4978,15 +5594,32 @@
"escape-string-regexp": "^1.0.4"
}
},
+ "mdn-browser-compat-data": {
+ "version": "0.0.72",
+ "resolved": "https://registry.npmjs.org/mdn-browser-compat-data/-/mdn-browser-compat-data-0.0.72.tgz",
+ "integrity": "sha512-vt3BxJRpV638ncYLigX91k0qP1VcpKxgExqPtX+QKFvV4/ZruZ31Sl35LsDDq5q+D7Lt7mfGWnCEuZ0d6bJW1g==",
+ "dev": true,
+ "requires": {
+ "extend": "3.0.2"
+ }
+ },
"mem": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz",
- "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+ "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
"dev": true,
"requires": {
"map-age-cleaner": "^0.1.1",
- "mimic-fn": "^1.0.0",
+ "mimic-fn": "^2.0.0",
"p-is-promise": "^2.0.0"
+ },
+ "dependencies": {
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ }
}
},
"merge-stream": {
@@ -5103,6 +5736,13 @@
"integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
"dev": true
},
+ "nan": {
+ "version": "2.13.2",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz",
+ "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==",
+ "dev": true,
+ "optional": true
+ },
"nanomatch": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
@@ -5141,6 +5781,12 @@
"semver": "^5.4.1"
}
},
+ "neo-async": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz",
+ "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==",
+ "dev": true
+ },
"nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
@@ -5173,9 +5819,9 @@
}
},
"node-releases": {
- "version": "1.1.9",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.9.tgz",
- "integrity": "sha512-oic3GT4OtbWWKfRolz5Syw0Xus0KRFxeorLNj0s93ofX6PWyuzKjsiGxsCtWktBwwmTF6DdRRf2KreGqeOk5KA==",
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.13.tgz",
+ "integrity": "sha512-fKZGviSXR6YvVPyc011NHuJDSD8gFQvLPmc2d2V3BS4gr52ycyQ1Xzs7a8B+Ax3Ni/W+5h1h4SqmzeoA8WZRmA==",
"dev": true,
"requires": {
"semver": "^5.3.0"
@@ -5245,9 +5891,9 @@
"dev": true
},
"nwsapi": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.1.tgz",
- "integrity": "sha512-T5GaA1J/d34AC8mkrFD2O0DR17kwJ702ZOtJOsS8RpbsQZVOC2/xYFb1i/cw+xdM54JIlMuojjDOYct8GIWtwg==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.3.tgz",
+ "integrity": "sha512-RowAaJGEgYXEZfQ7tvvdtAQUKPyTR6T6wNu0fwlNsGQYr/h3yQc6oI8WnVZh3Y/Sylwc+dtAlvPqfFZjhTyk3A==",
"dev": true
},
"oauth-sign": {
@@ -5493,21 +6139,21 @@
"dev": true
},
"p-limit": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
- "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
"dev": true,
"requires": {
- "p-try": "^2.0.0"
+ "p-try": "^1.0.0"
}
},
"p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
"dev": true,
"requires": {
- "p-limit": "^2.0.0"
+ "p-limit": "^1.1.0"
}
},
"p-map": {
@@ -5523,28 +6169,27 @@
"dev": true
},
"p-try": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz",
- "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
"dev": true
},
"parent-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.0.tgz",
- "integrity": "sha512-8Mf5juOMmiE4FcmzYc4IaiS9L3+9paz2KOiXzkRviCP6aDmN49Hz6EMWz0lGNp9pX80GvvAuLADtyGfW/Em3TA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
"dev": true,
"requires": {
"callsites": "^3.0.0"
}
},
"parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
+ "error-ex": "^1.2.0"
}
},
"parse5": {
@@ -5600,12 +6245,12 @@
"dev": true
},
"path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
"dev": true,
"requires": {
- "pify": "^3.0.0"
+ "pify": "^2.0.0"
}
},
"performance-now": {
@@ -5615,9 +6260,9 @@
"dev": true
},
"pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
"pinkie": {
@@ -5651,51 +6296,6 @@
"dev": true,
"requires": {
"find-up": "^2.1.0"
- },
- "dependencies": {
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
- "dev": true
- }
}
},
"please-upgrade-node": {
@@ -5732,12 +6332,12 @@
"dev": true
},
"pretty-format": {
- "version": "24.3.1",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.3.1.tgz",
- "integrity": "sha512-NZGH1NWS6o4i9pvRWLsxIK00JB9pqOUzVrO7yWT6vjI2thdxwvxefBJO6O5T24UAhI8P5dMceZ7x5wphgVI7Mg==",
+ "version": "24.7.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.7.0.tgz",
+ "integrity": "sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA==",
"dev": true,
"requires": {
- "@jest/types": "^24.3.0",
+ "@jest/types": "^24.7.0",
"ansi-regex": "^4.0.0",
"ansi-styles": "^3.2.0",
"react-is": "^16.8.4"
@@ -5770,9 +6370,9 @@
"dev": true
},
"prompts": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.0.3.tgz",
- "integrity": "sha512-H8oWEoRZpybm6NV4to9/1limhttEo13xK62pNvn2JzY0MA03p7s0OjtmhXyon3uJmxiJJVSuUwEJFFssI3eBiQ==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.0.4.tgz",
+ "integrity": "sha512-HTzM3UWp/99A0gk51gAegwo1QRYA7xjcZufMNe33rCclFszUYAuHe1fIN/3ZmiHeGPkUsNaRyQm1hHOfM0PKxA==",
"dev": true,
"requires": {
"kleur": "^3.0.2",
@@ -5850,66 +6450,66 @@
}
},
"react": {
- "version": "16.8.4",
- "resolved": "https://registry.npmjs.org/react/-/react-16.8.4.tgz",
- "integrity": "sha512-0GQ6gFXfUH7aZcjGVymlPOASTuSjlQL4ZtVC5YKH+3JL6bBLCVO21DknzmaPlI90LN253ojj02nsapy+j7wIjg==",
+ "version": "16.8.6",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.8.6.tgz",
+ "integrity": "sha512-pC0uMkhLaHm11ZSJULfOBqV4tIZkx87ZLvbbQYunNixAAvjnC+snJCg0XQXn9VIsttVsbZP/H/ewzgsd5fxKXw==",
"dev": true,
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
"prop-types": "^15.6.2",
- "scheduler": "^0.13.4"
+ "scheduler": "^0.13.6"
}
},
"react-dom": {
- "version": "16.8.4",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.4.tgz",
- "integrity": "sha512-Ob2wK7XG2tUDt7ps7LtLzGYYB6DXMCLj0G5fO6WeEICtT4/HdpOi7W/xLzZnR6RCG1tYza60nMdqtxzA8FaPJQ==",
+ "version": "16.8.6",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.6.tgz",
+ "integrity": "sha512-1nL7PIq9LTL3fthPqwkvr2zY7phIPjYrT0jp4HjyEQrEROnw4dG41VVwi/wfoCneoleqrNX7iAD+pXebJZwrwA==",
"dev": true,
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
"prop-types": "^15.6.2",
- "scheduler": "^0.13.4"
+ "scheduler": "^0.13.6"
}
},
"react-is": {
- "version": "16.8.4",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.4.tgz",
- "integrity": "sha512-PVadd+WaUDOAciICm/J1waJaSvgq+4rHE/K70j0PFqKhkTBsPv/82UGQJNXAngz1fOQLLxI6z1sEDmJDQhCTAA==",
+ "version": "16.8.6",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz",
+ "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==",
"dev": true
},
"react-test-renderer": {
- "version": "16.8.4",
- "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.8.4.tgz",
- "integrity": "sha512-jQ9Tf/ilIGSr55Cz23AZ/7H3ABEdo9oy2zF9nDHZyhLHDSLKuoILxw2ifpBfuuwQvj4LCoqdru9iZf7gwFH28A==",
+ "version": "16.8.6",
+ "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.8.6.tgz",
+ "integrity": "sha512-H2srzU5IWYT6cZXof6AhUcx/wEyJddQ8l7cLM/F7gDXYyPr4oq+vCIxJYXVGhId1J706sqziAjuOEjyNkfgoEw==",
"dev": true,
"requires": {
"object-assign": "^4.1.1",
"prop-types": "^15.6.2",
- "react-is": "^16.8.4",
- "scheduler": "^0.13.4"
+ "react-is": "^16.8.6",
+ "scheduler": "^0.13.6"
}
},
"read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
"dev": true,
"requires": {
- "load-json-file": "^4.0.0",
+ "load-json-file": "^2.0.0",
"normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
+ "path-type": "^2.0.0"
}
},
"read-pkg-up": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
- "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
"dev": true,
"requires": {
- "find-up": "^3.0.0",
- "read-pkg": "^3.0.0"
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
}
},
"readable-stream": {
@@ -5955,18 +6555,18 @@
"dev": true
},
"regenerate-unicode-properties": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.1.tgz",
- "integrity": "sha512-HTjMafphaH5d5QDHuwW8Me6Hbc/GhXg8luNqTkPVwZ/oCZhnoifjWhGYsu2BzepMELTlbnoVcXvV0f+2uDDvoQ==",
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz",
+ "integrity": "sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ==",
"dev": true,
"requires": {
"regenerate": "^1.4.0"
}
},
"regenerator-runtime": {
- "version": "0.12.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
- "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==",
+ "version": "0.13.2",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz",
+ "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==",
"dev": true
},
"regenerator-transform": {
@@ -6001,13 +6601,13 @@
"dev": true
},
"regexpu-core": {
- "version": "4.5.3",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.3.tgz",
- "integrity": "sha512-LON8666bTAlViVEPXMv65ZqiaR3rMNLz36PIaQ7D+er5snu93k0peR7FSvO0QteYbZ3GOkvfHKbGr/B1xDu9FA==",
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz",
+ "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==",
"dev": true,
"requires": {
"regenerate": "^1.4.0",
- "regenerate-unicode-properties": "^8.0.1",
+ "regenerate-unicode-properties": "^8.0.2",
"regjsgen": "^0.5.0",
"regjsparser": "^0.6.0",
"unicode-match-property-ecmascript": "^1.0.4",
@@ -6133,12 +6733,6 @@
"integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
"dev": true
},
- "require-package-name": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/require-package-name/-/require-package-name-2.0.1.tgz",
- "integrity": "sha1-wR6XJ2tluOKSP3Xav1+y7ww4Qbk=",
- "dev": true
- },
"resolve": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz",
@@ -6213,9 +6807,9 @@
}
},
"rsvp": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz",
- "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==",
+ "version": "4.8.4",
+ "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.4.tgz",
+ "integrity": "sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA==",
"dev": true
},
"run-async": {
@@ -6264,14 +6858,14 @@
"dev": true
},
"sane": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/sane/-/sane-4.0.3.tgz",
- "integrity": "sha512-hSLkC+cPHiBQs7LSyXkotC3UUtyn8C4FMn50TNaacRyvBlI+3ebcxMpqckmTdtXVtel87YS7GXN3UIOj7NiGVQ==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
+ "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
"dev": true,
"requires": {
"@cnakazawa/watch": "^1.0.3",
"anymatch": "^2.0.0",
- "capture-exit": "^1.2.0",
+ "capture-exit": "^2.0.0",
"exec-sh": "^0.3.2",
"execa": "^1.0.0",
"fb-watchman": "^2.0.0",
@@ -6295,9 +6889,9 @@
"dev": true
},
"scheduler": {
- "version": "0.13.4",
- "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.4.tgz",
- "integrity": "sha512-cvSOlRPxOHs5dAhP9yiS/6IDmVAVxmk33f0CtTJRkmUWcb1Us+t7b1wqdzoC0REw2muC9V5f1L/w5R5uKGaepA==",
+ "version": "0.13.6",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.6.tgz",
+ "integrity": "sha512-IWnObHt413ucAYKsD9J1QShUKkbKLQQHdxRyw73sw4FN26iWr3DY/H34xGPe4nmL1DwXyWmSWmMrA9TfQbE/XQ==",
"dev": true,
"requires": {
"loose-envify": "^1.1.0",
@@ -6305,9 +6899,9 @@
}
},
"semver": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz",
- "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
+ "version": "5.7.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
+ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
"dev": true
},
"semver-compare": {
@@ -6373,9 +6967,9 @@
"dev": true
},
"simple-git": {
- "version": "1.107.0",
- "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.107.0.tgz",
- "integrity": "sha512-t4OK1JRlp4ayKRfcW6owrWcRVLyHRUlhGd0uN6ZZTqfDq8a5XpcUdOKiGRNobHEuMtNqzp0vcJNvhYWwh5PsQA==",
+ "version": "1.110.0",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-1.110.0.tgz",
+ "integrity": "sha512-UYY0rQkknk0P5eb+KW+03F4TevZ9ou0H+LoGaj7iiVgpnZH4wdj/HTViy/1tNNkmIPcmtxuBqXWiYt2YwlRKOQ==",
"dev": true,
"requires": {
"debug": "^4.0.1"
@@ -6548,9 +7142,9 @@
}
},
"source-map-support": {
- "version": "0.5.10",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz",
- "integrity": "sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==",
+ "version": "0.5.11",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz",
+ "integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
@@ -6780,9 +7374,9 @@
"dev": true
},
"synchronous-promise": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.6.tgz",
- "integrity": "sha512-TyOuWLwkmtPL49LHCX1caIwHjRzcVd62+GF6h8W/jHOeZUFHpnd2XJDVuUlaTaLPH1nuu2M69mfHr5XbQJnf/g==",
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.7.tgz",
+ "integrity": "sha512-16GbgwTmFMYFyQMLvtQjvNWh30dsFe1cAW5Fg1wm5+dg84L9Pe36mftsIRU95/W2YsISxsz/xq4VB23sqpgb/A==",
"dev": true
},
"table": {
@@ -6798,29 +7392,29 @@
},
"dependencies": {
"ansi-regex": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.0.0.tgz",
- "integrity": "sha512-iB5Dda8t/UqpPI/IjsejXu5jOGDrzn41wJyljwPH65VCIbk6+1BzFIMJGFwTNrYXT1CrD+B4l19U7awiQ8rk7w==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
"string-width": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.0.0.tgz",
- "integrity": "sha512-rr8CUxBbvOZDUvc5lNIJ+OC1nPVpz+Siw9VBtUjB9b6jZehZLFt0JMCZzShFHIsI8cbhm0EsNIfWJMFV3cu3Ew==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
"requires": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.0.0"
+ "strip-ansi": "^5.1.0"
}
},
"strip-ansi": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.0.0.tgz",
- "integrity": "sha512-Uu7gQyZI7J7gn5qLn1Np3G9vcYGTVqB+lFTytnDJv83dd8T22aGH451P3jueT2/QemInJDfxHB5Tde5OzgG1Ow==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
- "ansi-regex": "^4.0.0"
+ "ansi-regex": "^4.1.0"
}
}
}
@@ -6835,6 +7429,109 @@
"minimatch": "^3.0.4",
"read-pkg-up": "^4.0.0",
"require-main-filename": "^1.0.1"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ },
+ "read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "dev": true,
+ "requires": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ }
+ },
+ "read-pkg-up": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
+ "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0",
+ "read-pkg": "^3.0.0"
+ }
+ }
}
},
"text-table": {
@@ -6980,20 +7677,20 @@
}
},
"uglify-js": {
- "version": "3.4.9",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz",
- "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==",
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.3.tgz",
+ "integrity": "sha512-rIQPT2UMDnk4jRX+w4WO84/pebU2jiLsjgIyrCktYgSvx28enOE3iYQMr+BD1rHiitWnDmpu0cY/LfIEpKcjcw==",
"dev": true,
"optional": true,
"requires": {
- "commander": "~2.17.1",
+ "commander": "~2.19.0",
"source-map": "~0.6.1"
},
"dependencies": {
"commander": {
- "version": "2.17.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
- "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
+ "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
"dev": true,
"optional": true
},
@@ -7110,9 +7807,9 @@
}
},
"upath": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz",
- "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==",
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz",
+ "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==",
"dev": true,
"optional": true
},
@@ -7363,6 +8060,51 @@
"which-module": "^2.0.0",
"y18n": "^3.2.1 || ^4.0.0",
"yargs-parser": "^11.1.1"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+ "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ }
}
},
"yargs-parser": {
@@ -7387,6 +8129,23 @@
"property-expr": "^1.5.0",
"synchronous-promise": "^2.0.5",
"toposort": "^2.0.2"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.0.0.tgz",
+ "integrity": "sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA==",
+ "dev": true,
+ "requires": {
+ "regenerator-runtime": "^0.12.0"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
+ "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==",
+ "dev": true
+ }
}
}
}
diff --git a/package.json b/package.json
index 88f5da6..0a3f167 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "reaclette",
- "version": "0.8.0",
+ "version": "0.9.0-0",
"license": "ISC",
"description": "",
"keywords": [],
@@ -14,9 +14,7 @@
"name": "Julien Fontanet",
"email": "julien.fontanet@isonoe.net"
},
- "preferGlobal": false,
"main": "dist/",
- "bin": {},
"files": [
"dist/",
"factory.js"
@@ -33,18 +31,14 @@
"devDependencies": {
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.0",
- "@babel/plugin-proposal-class-properties": "^7.0.0",
"@babel/preset-env": "^7.0.0",
- "babel-core": "^7.0.0-bridge.0",
- "babel-eslint": "^10.0.1",
- "babel-jest": "^24.1.0",
- "babel-plugin-lodash": "^3.3.2",
"cross-env": "^5.1.3",
"enzyme": "^3.3.0",
"enzyme-adapter-react-16": "^1.0.5",
"eslint": "^5.0.1",
"eslint-config-prettier": "^4.1.0",
"eslint-config-standard": "^12.0.0",
+ "eslint-plugin-compat": "^3.1.0",
"eslint-plugin-import": "^2.8.0",
"eslint-plugin-node": "^8.0.1",
"eslint-plugin-promise": "^4.0.1",
@@ -53,7 +47,6 @@
"jest": "^24.3.1",
"lint-staged": "^8.1.5",
"prettier": "^1.16.4",
- "raf": "^3.4.0",
"react": "^16.2.0",
"react-dom": "^16.2.0",
"rimraf": "^2.6.2"
@@ -78,11 +71,11 @@
}
},
"jest": {
- "collectCoverage": true,
"roots": [
"/src"
],
- "testRegex": "\\.spec\\.js$"
+ "testRegex": "\\.spec\\.js$",
+ "transform": {}
},
"lint-staged": {
"*.js": [
diff --git a/src/_CircularComputedError.js b/src/_CircularComputedError.js
index fcac197..baafadb 100644
--- a/src/_CircularComputedError.js
+++ b/src/_CircularComputedError.js
@@ -1,7 +1,7 @@
-import { BaseError } from "make-error";
+const { BaseError } = require("make-error");
-export default class CircularComputedError extends BaseError {
+module.exports = class CircularComputedError extends BaseError {
constructor(name) {
super(`computed "${name}" cannot depend on itself`);
}
-}
+};
diff --git a/src/_InvalidEntryError.js b/src/_InvalidEntryError.js
deleted file mode 100644
index 67f3d76..0000000
--- a/src/_InvalidEntryError.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { BaseError } from "make-error";
-
-export default class InvalidEntryError extends BaseError {
- constructor(name) {
- super(
- `"${name}" is not a valid state entry. If you want to use it, initialize it in "intialState"`
- );
- }
-}
diff --git a/src/factory.js b/src/factory.js
index 0ba6381..bba47da 100644
--- a/src/factory.js
+++ b/src/factory.js
@@ -1,358 +1,218 @@
-import CircularComputedError from "./_CircularComputedError";
-import InvalidEntryError from "./_InvalidEntryError";
+"use strict";
-// React does not support symbols :/
-const TAG = "reaclette";
+const CircularComputedError = require("./_CircularComputedError");
-const call = f => f();
-const isPromise = v => v != null && typeof v.then === "function";
-const noop = Function.prototype;
-const { create, keys, seal } = Object;
-
-const makeSpy = (keys, accessor) => {
- const descriptors = create(null);
- const spy = new Map();
- keys.forEach(k => {
- descriptors[k] = {
- enumerable: true,
- get: () => {
- let v = spy.get(k);
- if (v === undefined && !spy.has(k)) {
- v = accessor(k);
- spy.set(k, v);
- }
- return v;
- },
- };
- });
- spy.upToDate = () => {
- for (const [key, value] of spy) {
- if (accessor(key) !== value) {
- return false;
- }
- }
- return true;
- };
- return [create(null, descriptors), spy];
-};
+const {
+ create,
+ defineProperty,
+ freeze,
+ keys,
+ prototype: { hasOwnProperty },
+ seal,
+} = Object;
-module.exports = ({ Component, createElement, PropTypes }) => {
- const contextTypes_ = {
- [TAG]:
- PropTypes !== undefined
- ? PropTypes.shape({
- effects: PropTypes.object.isRequired,
- state: PropTypes.object.isRequired,
- subscribe: PropTypes.func.isRequired,
- })
- : noop,
- };
-
- const injectState = ChildComponent =>
- class StateInjector extends Component {
- static WrappedComponent = ChildComponent;
-
- static contextTypes = contextTypes_;
-
- constructor(_, context) {
- super();
-
- const parent = context[TAG];
- if (parent === undefined) {
- throw new TypeError("missing state");
- }
-
- const { state } = parent;
- [this._stateProxy, this._stateSpy] = makeSpy(
- parent.stateKeys,
- k => state[k]
- );
- seal(this._stateProxy);
- }
+const EMPTY_A = freeze([]);
+const EMPTY_O = freeze({ __proto__: null });
+const noop = Function.prototype;
- componentDidMount() {
- const spy = this._stateSpy;
- this.componentWillUnmount = this.context[TAG].subscribe(() => {
- if (!spy.upToDate()) {
- this.forceUpdate();
+class Spy {
+ constructor(keys, accessor) {
+ this._accessor = accessor;
+ this._keys = keys;
+ this.reset();
+
+ const descriptors = {};
+ keys.forEach(key => {
+ descriptors[key] = {
+ get: () => {
+ const accessed = this._accessed;
+ let value = accessed[key];
+ if (value === undefined && !hasOwnProperty.call(accessed, key)) {
+ value = accessed[key] = accessor(key);
}
- });
- }
-
- render() {
- this._stateSpy.clear();
-
- return createElement(ChildComponent, {
- ...this.props,
- effects: this.context[TAG].effects,
- resetState: this.context[TAG].resetState,
- state: this._stateProxy,
- });
- }
- };
-
- const provideState = ({ computed, effects, initialState }) => {
- const wrapComponentWithState = ChildComponent => {
- class StateProvider extends Component {
- static WrappedComponent =
- (ChildComponent != null && ChildComponent.WrappedComponent) ||
- ChildComponent;
- static wrapComponentWithState = wrapComponentWithState;
-
- static childContextTypes = contextTypes_;
- static contextTypes = contextTypes_;
-
- constructor(props, context) {
- super();
-
- const listeners = new Set();
- const dispatch = (this._dispatch = () => {
- // computedCache.clear()
- listeners.forEach(call);
- });
- this._subscribe = listener => {
- listeners.add(listener);
- return () => {
- listeners.delete(listener);
- };
+ return value;
+ },
+ };
+ });
+ this.proxy = create(null, descriptors);
+ }
+
+ isUpToDate() {
+ const accessed = this._accessed;
+ const accessor = this._accessor;
+ return keys(accessed).every(key => accessed[key] === accessor(key));
+ }
+
+ reset() {
+ this._accessed = { __proto__: null };
+ }
+}
+
+module.exports = ({ Component, PureComponent = Component }) => {
+ function withStore({ computed, effects, initialState }, fn) {
+ const computedKeys = computed === undefined ? EMPTY_A : keys(computed);
+ const effectsKeys = effects === undefined ? EMPTY_A : keys(effects);
+
+ return class Decorated extends PureComponent {
+ constructor(props) {
+ super(props);
+
+ const stateProxyDescriptors = {};
+
+ let state = initialState === undefined ? EMPTY_O : initialState(props);
+ const stateKeys = keys(state);
+ // entries are non enumerable to discourage spreading
+ stateKeys.forEach(key => {
+ stateProxyDescriptors[key] = {
+ get: () => state[key],
};
+ });
- const stateDescriptors = create(null);
- const writableStateDescriptors = create(null);
-
- if (computed !== undefined) {
- const propsKeys = keys(props);
- const propsAccessor = k => this.props[k];
- const stateAccessor = k => completeState[k];
+ if (computedKeys.length !== 0) {
+ const fullStateKeys = stateKeys.concat(computedKeys);
+ const propsAccessor = k => this.props[k];
+ const propsKeys = keys(props);
+ const stateAccessor = k => stateProxy[k];
+
+ computedKeys.forEach(key => {
+ if (hasOwnProperty.call(state, key)) {
+ throw new TypeError(
+ `conflict: "${key}" is defined both in state and computed`
+ );
+ }
- keys(computed).forEach(k => {
- const c = computed[k];
- let previousValue, propsProxy, propsSpy, stateProxy, stateSpy;
- writableStateDescriptors[k] = stateDescriptors[k] = {
- get: () => {
- if (propsProxy === undefined) {
- [propsProxy, propsSpy] = makeSpy(propsKeys, propsAccessor);
- seal(propsProxy);
- [stateProxy, stateSpy] = makeSpy(
- completeStateKeys.filter(key => key !== k),
+ const c = computed[key];
+ let promise, propsSpy, stateSpy, value;
+ stateProxyDescriptors[key] = {
+ get: () => {
+ do {
+ if (propsSpy === undefined) {
+ propsSpy = new Spy(propsKeys, propsAccessor);
+ seal(propsSpy.proxy);
+ stateSpy = new Spy(
+ fullStateKeys.filter(_ => _ !== key),
stateAccessor
);
- Object.defineProperty(stateProxy, k, {
- get() {
- throw new CircularComputedError(k);
- },
- });
- seal(stateProxy);
- } else if (propsSpy.upToDate() && stateSpy.upToDate()) {
- return isPromise(previousValue) ? undefined : previousValue;
+ seal(
+ defineProperty(stateSpy.proxy, key, {
+ get() {
+ throw new CircularComputedError(key);
+ },
+ })
+ );
+ } else if (propsSpy.isUpToDate() && stateSpy.isUpToDate()) {
+ break;
}
- propsSpy.clear();
- stateSpy.clear();
+ propsSpy.reset();
+ stateSpy.reset();
try {
- previousValue = c(stateProxy, propsProxy);
+ value = c(stateSpy.proxy, propsSpy.proxy);
} catch (error) {
if (error instanceof CircularComputedError) {
throw error;
}
- console.warn(`computed "${k}" thrown`, error);
- // as per #21, keep the previous value in case of error
- }
- if (!isPromise(previousValue)) {
- return previousValue;
+ console.warn(`computed "${key}" thrown`, error);
+ break;
}
- // rejections are explicitly not handled
- const promise = previousValue;
- previousValue.then(value => {
- if (previousValue === promise) {
- previousValue = value;
- dispatch();
- }
- });
- },
- };
- });
- }
-
- let state;
- if (initialState !== undefined) {
- state = initialState(props);
-
- keys(state).forEach(k => {
- if (k in stateDescriptors) {
- throw new TypeError(
- `conflict: "${k}" is defined both in state and computed`
- );
- }
- // only local, non-computed state entries are enumerable
- const roDescriptor = {
- enumerable: true,
- get: () => state[k],
- };
- stateDescriptors[k] = roDescriptor;
- writableStateDescriptors[k] = {
- ...roDescriptor,
- set: value => {
- state = { ...state, [k]: value };
- dispatch();
- },
- };
- });
- }
-
- let parentEffects = null;
- let parentState = null;
- let parentStateKeys = [];
- {
- const parent = context[TAG];
- if (parent !== undefined) {
- parentEffects = parent.effects;
- parentState = parent.state;
- parentStateKeys = parent.stateKeys;
- }
- }
-
- const completeState = (this._state = seal(
- create(parentState, stateDescriptors)
- ));
- const completeStateKeys = (this._stateKeys = keys(stateDescriptors));
+ if (value == null) {
+ break;
+ }
- this._resetState = () => {
- state = initialState(this.props);
- dispatch();
- return Promise.resolve();
- };
+ if (typeof value.then === "function") {
+ promise = value;
+ value = undefined;
+
+ // rejections are explicitly not handled
+ const p = promise;
+ promise.then(v => {
+ if (promise === p) {
+ promise = undefined;
+ value = v;
+ this.forceUpdate();
+ }
+ });
+ }
+ } while (false);
- parentStateKeys.forEach(k => {
- if (!(k in stateDescriptors)) {
- completeStateKeys.push(k);
- }
+ return value;
+ },
+ };
});
+ }
- let effectsDescriptors;
- if (effects !== undefined) {
- const writableState = seal(create(null, writableStateDescriptors));
+ const stateProxy = seal(create(null, stateProxyDescriptors));
- const setState = newState => {
- if (newState == null) {
- return;
- }
+ const resetState = () => {
+ // TODO: check new state has the same keys
+ state = initialState(this.props);
+ this.forceUpdate();
- if (typeof newState === "function") {
- return setState(newState(completeState, this.props));
- }
-
- const { then } = newState;
- if (typeof then === "function") {
- return then.call(newState, setState);
- }
+ return Promise.resolve();
+ };
- Object.keys(newState).forEach(key => {
- if (!Object.prototype.hasOwnProperty.call(state, key)) {
- throw new InvalidEntryError(key);
- }
- });
- state = { ...state, ...newState };
- dispatch();
- };
+ let wrappedEffects;
+ if (effectsKeys.length === 0) {
+ wrappedEffects = EMPTY_O;
+ } else {
+ const descriptors = {};
+ effectsKeys.forEach(key => {
+ const effect = effects[key];
- effectsDescriptors = create(null);
- keys(effects).forEach(k => {
- const e = effects[k];
- const wrappedEffect = (...args) => {
+ descriptors[key] = {
+ value: function() {
try {
- return Promise.resolve(
- setState(
- e.call(
- seal({
- effects: this._effects,
- props: this.props,
- resetState: this._resetState,
- state: writableState,
- }),
- this._effects,
- ...args
- )
- )
+ return Promise.resolve(effect.apply(store, arguments)).then(
+ noop
);
} catch (error) {
return Promise.reject(error);
}
- };
+ },
+ };
+ });
+ wrappedEffects = seal(create(null, descriptors));
+
+ const stateProxyDescriptors = {};
+ stateKeys.forEach(key => {
+ stateProxyDescriptors[key] = {
+ get: () => state[key],
+ set: value => {
+ state[key] = value;
+ this.forceUpdate();
+ },
+ };
+ });
- // this special effects are not callable manually and not inheritable
- if (k === "initialize" || k === "finalize") {
- this[k] = wrappedEffect;
- } else {
- effectsDescriptors[k] = {
- enumerable: true,
- value: wrappedEffect,
- };
+ const store = seal(
+ defineProperty(
+ {
+ effects: wrappedEffects,
+ resetState,
+ state: seal(create(stateProxy, stateProxyDescriptors)),
+ },
+ "props",
+ {
+ get: () => this.props,
}
- });
- }
- this._effects = seal(create(parentEffects, effectsDescriptors));
+ )
+ );
}
- _unsubscribe = noop;
-
- componentDidMount() {
- const parent = this.context[TAG];
- if (parent !== undefined) {
- this._unsubscribe = parent.subscribe(this._dispatch);
- }
-
- const { initialize } = this;
- if (initialize !== undefined) {
- initialize();
- }
- }
-
- componentDidUpdate() {
- this._dispatch();
- }
-
- componentWillUnmount() {
- const { finalize } = this;
- if (finalize !== undefined) {
- finalize();
- }
-
- this._unsubscribe();
- this._unsubscribe = noop;
- }
-
- getChildContext() {
- return {
- [TAG]: {
- effects: this._effects,
- resetState: this._resetState,
- state: this._state,
- stateKeys: this._stateKeys,
- subscribe: this._subscribe,
- },
- };
- }
-
- render() {
- return createElement(ChildComponent, this.props);
- }
+ this._store = seal({
+ effects: wrappedEffects,
+ resetState,
+ state: stateProxy,
+ });
}
- if (ChildComponent === undefined) {
- const stateProvider = new StateProvider({}, {});
- return {
- getState: () => stateProvider._state,
- effects: stateProvider._effects,
- };
+ render() {
+ return fn(this._store, this.props);
}
- return StateProvider;
};
- return wrapComponentWithState;
- };
-
- return { injectState, provideState };
+ }
+ return { withStore };
};
diff --git a/src/index.js b/src/index.js
index 58952c3..9812290 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1 +1,3 @@
+"use strict";
+
module.exports = require("./factory")(require("react"));
diff --git a/src/index.spec.js b/src/index.spec.js
index dbc73d9..ef80912 100644
--- a/src/index.spec.js
+++ b/src/index.spec.js
@@ -1,120 +1,255 @@
+"use strict";
+
/* eslint-env jest */
-import CircularComputedError from "./_CircularComputedError";
-import InvalidEntryError from "./_InvalidEntryError";
-require("raf/polyfill");
+const assert = require("assert");
const { createElement } = require("react");
-const { configure, mount } = require("enzyme");
+const { configure, mount, shallow } = require("enzyme");
-const { injectState, provideState } = require("./");
+const CircularComputedError = require("./_CircularComputedError");
+const { withStore } = require("./");
configure({ adapter: new (require("enzyme-adapter-react-16"))() });
const makeTestInstance = (opts, props) => {
let renderCount = 0;
- const Child = () => {
- ++renderCount;
- return null;
- };
+ let renderArgs;
const parent = mount(
createElement(
- provideState({
- ...opts,
- effects: {
- ...opts.effects,
- _setState: (_, props) => _ => props,
+ withStore(
+ {
+ ...opts,
+ effects: {
+ ...opts.effects,
+ _setState(props) {
+ Object.assign(this.state, props);
+ },
+ },
},
- })(injectState(Child)),
+ (...args) => {
+ ++renderCount;
+ renderArgs = args;
+ return null;
+ }
+ ),
props
)
);
- const child = parent.find(Child);
return {
- effects: child.prop("effects"),
- getInjectedState: () => child.prop("state"),
- getParentState: () => parent.instance()._state,
+ effects: renderArgs[0].effects,
getParentProps: () => parent.instance().props,
+ getRenderArgs: () => renderArgs,
getRenderCount: () => renderCount,
- resetState: child.prop("resetState"),
+ getState: () => renderArgs[0].state,
setParentProps: parent.setProps.bind(parent),
};
};
-const noop = () => {};
+const ownProps = Object.getOwnPropertyNames;
-describe("provideState", () => {
- describe("initialState", () => {
- it("is called with the props to create the initial state", () => {
- const props = { bar: "baz" };
- expect(
- makeTestInstance(
- {
- initialState: (...args) => {
- expect(args).toEqual([props]);
- return { foo: "bar" };
+const isReadOnly = object =>
+ !Object.isExtensible(object) &&
+ ownProps(object).every(name => {
+ const descriptor = Object.getOwnPropertyDescriptor(object, name);
+ return (
+ !descriptor.configurable &&
+ (descriptor.set === undefined || !descriptor.writable)
+ );
+ });
+
+describe("withStore", () => {
+ describe("render function", () => {
+ it("receives readOnly store and props", async () => {
+ const _props = { bar: "baz" };
+ const { getRenderArgs } = makeTestInstance(
+ {
+ initialState: () => ({ myEntry: "bar" }),
+ effects: {
+ myEffect() {
+ this.state.myEntry = "baz";
},
},
- props
- ).getInjectedState()
- ).toEqual({ foo: "bar" });
+ },
+ _props
+ );
+
+ const renderArgs = getRenderArgs();
+
+ const store = renderArgs[0];
+ assert(isReadOnly(store));
+
+ const { effects, resetState, state } = store;
+
+ assert(isReadOnly(effects));
+ expect(ownProps(effects)).toEqual(["myEffect", "_setState"]);
+
+ expect(typeof resetState).toBe("function");
+
+ assert(isReadOnly(state));
+ expect(ownProps(state)).toEqual(["myEntry"]);
+
+ const props = renderArgs[1];
+ assert(isReadOnly(props));
+ expect(ownProps(props)).toEqual(["bar"]);
+ });
+
+ it("returns the React tree to render", () => {
+ const wrapper = shallow(
+ createElement(withStore({}, () => createElement("h1")))
+ );
+ expect(wrapper.getElement()).toEqual(createElement("h1"));
});
});
- describe("resetState", () => {
- it("is called to reset the state to its initial values in effects", async () => {
- const props = { bar: "baz" };
- const { effects, getInjectedState } = makeTestInstance(
+ describe("computed", () => {
+ it("receive read-only state and props", () => {
+ const props = { qux: "qux" };
+ const { getState } = makeTestInstance(
{
initialState: () => ({
- foo: "bar",
+ foo: "foo",
}),
- effects: {
- changeState(_, value) {
- return { foo: value };
- },
- async reset() {
- await this.resetState();
+ computed: {
+ bar: () => "bar",
+ baz(state, props) {
+ assert(isReadOnly(state));
+ assert(isReadOnly(props));
+
+ expect(state.foo).toBe("foo");
+ expect(state.bar).toBe("bar");
+ expect(props.qux).toBe("qux");
+
+ return "baz";
},
},
},
props
);
- await effects.changeState("foo");
- expect(getInjectedState()).toEqual({ foo: "foo" });
- await effects.reset();
- expect(getInjectedState()).toEqual({ foo: "bar" });
+
+ expect(getState().baz).toBe("baz");
+ });
+
+ it("cannot access itself", () => {
+ const { getState } = makeTestInstance({
+ computed: {
+ circular: ({ circular }) => {},
+ },
+ });
+
+ expect(() => getState().circular).toThrow(CircularComputedError);
+ });
+
+ it("are not called when its state/props dependencies do not change", async () => {
+ const sum = jest.fn(({ a }, { b }) => a + b);
+ const props = { b: 2, c: 9 };
+ const { effects, getState, setParentProps } = makeTestInstance(
+ {
+ initialState: () => ({ a: 1, d: 4 }),
+ computed: {
+ sum,
+ },
+ },
+ props
+ );
+
+ expect(getState().sum).toBe(3);
+ expect(sum.mock.calls.length).toBe(1);
+
+ setParentProps({ c: 8 });
+ await effects._setState({ d: 8 });
+
+ expect(getState().sum).toBe(3);
+ expect(sum.mock.calls.length).toBe(1);
});
- it("is called to reset the state to its initial values in child", async () => {
- const props = { bar: "baz" };
- const { effects, getInjectedState, resetState } = makeTestInstance(
+ it("is called when its state/props dependencies change", async () => {
+ const sum = jest.fn(({ a }, { b }) => a + b);
+ const props = { b: 2, c: 9 };
+ const { effects, getState, setParentProps } = makeTestInstance(
{
- initialState: () => ({
- foo: "bar",
- }),
- effects: {
- changeState(_, value) {
- return { foo: value };
- },
+ initialState: () => ({ a: 1, d: 4 }),
+ computed: {
+ sum,
},
},
props
);
- await effects.changeState("foo");
- expect(getInjectedState()).toEqual({ foo: "foo" });
- await resetState();
- expect(getInjectedState()).toEqual({ foo: "bar" });
+ expect(getState().sum).toBe(3);
+ expect(sum.mock.calls.length).toBe(1);
+
+ await effects._setState({ a: 2 });
+
+ expect(getState().sum).toBe(4);
+ expect(sum.mock.calls.length).toBe(2);
+
+ setParentProps({ b: 3 });
+
+ expect(getState().sum).toBe(5);
+ expect(sum.mock.calls.length).toBe(3);
+ });
+
+ describe("async", () => {
+ let promise, resolve;
+ const reset = () => {
+ // eslint-disable-next-line promise/param-names
+ promise = new Promise(resolve_ => {
+ resolve = resolve_;
+ });
+ };
+
+ let getState, setParentProps;
+ beforeEach(() => {
+ ({ getState, setParentProps } = makeTestInstance(
+ {
+ computed: { value: (_, { foo }) => promise },
+ },
+ { foo: 1 }
+ ));
+ });
+
+ it("returns undefined before fulfilment then fulfilment value", async () => {
+ reset();
+
+ expect(getState().value).toBe(undefined);
+
+ resolve("foo");
+ await promise;
+
+ expect(getState().value).toBe("foo");
+ });
+
+ it("follows the latest computation when dependencies change", async () => {
+ // trigger computed
+ reset();
+ expect(getState().value).toBe(undefined);
+
+ const prevPromise = promise;
+ const prevResolve = resolve;
+
+ reset();
+ setParentProps({ foo: 2 });
+ expect(getState().value).toBe(undefined);
+
+ prevResolve("foo");
+ await prevPromise;
+
+ expect(getState().value).toBe(undefined);
+
+ resolve("baz");
+ await promise;
+
+ expect(getState().value).toBe("baz");
+ });
});
});
describe("effects", () => {
- it("are called with other effects followed by arguments", () => {
+ it("receives the passed arguments", () => {
const args = ["bar", "baz"];
const { effects } = makeTestInstance({
effects: {
- foo: (first, ...rest) => {
- expect(first).toBe(effects);
+ foo(...rest) {
expect(rest).toEqual(args);
},
},
@@ -122,188 +257,116 @@ describe("provideState", () => {
return effects.foo(...args);
});
- it("are called with effects, props and state in context", () => {
+ it("are called with read-only effects and props and resetState and writable state in context", () => {
const { effects, getParentProps } = makeTestInstance({
- initialState: () => ({ foo: "bar" }),
+ initialState: () => ({ myEntry: "bar" }),
effects: {
- foo() {
- expect(this.effects).toBe(effects);
+ async myEffect() {
+ assert(isReadOnly(this));
+
+ assert(isReadOnly(this.effects));
+ expect(ownProps(this.effects)).toEqual(["myEffect", "_setState"]);
+
+ expect(ownProps(this.state)).toEqual(["myEntry"]);
+ expect(this.state.myEntry).toBe("bar");
+ this.state.myEntry = "baz";
+ expect(this.state.myEntry).toBe("baz");
+
+ await this.resetState();
+ expect(this.state.myEntry).toBe("bar");
+
+ assert(isReadOnly(this.props));
expect(this.props).toBe(getParentProps());
- expect(this.state).toEqual({ foo: "bar" });
},
},
});
- return effects.foo();
+ return effects.myEffect();
});
- it("always returns a Promise to undefined", () => {
+ it("can use other effects", () => {
const { effects } = makeTestInstance({
+ initialState: () => ({ qux: "qux" }),
effects: {
- foo: () => {},
+ async foo() {
+ await this.effects.bar();
+ expect(this.state.qux).toBe("fred");
+ },
+ bar() {
+ this.state.qux = "fred";
+ },
},
});
- return effects.foo().then(value => {
- expect(value).toBe(undefined);
- });
+ return effects.foo();
});
- it("throws if an invalid state entry is assigned", () => {
+ it("cannot set new state entries", () => {
const { effects } = makeTestInstance({
initialState: () => ({}),
effects: {
- foo() {
- return { qux: 3 };
+ myEffect() {
+ assert(!Object.isExtensible(this.state));
},
},
});
-
- return expect(effects.foo()).rejects.toThrowError(
- new InvalidEntryError("qux")
- );
+ return effects.myEffect();
});
- it("sync state changes are batched", async () => {
- const { effects, getInjectedState, getRenderCount } = makeTestInstance({
- initialState: () => ({ foo: 0 }),
+ it("cannot set computed entries", () => {
+ const { effects } = makeTestInstance({
effects: {
- foo() {
- this.state.foo = 1;
- this.state.foo = 2;
+ myEffect() {
+ expect(() => {
+ this.state.foo = "bar";
+ }).toThrow(TypeError);
+ expect(this.state.foo).toBe("foo");
},
},
- });
-
- expect(getRenderCount()).toBe(1);
-
- // access this state to make sure children is rerendered when it changes
- expect(getInjectedState().foo).toBe(0);
-
- await effects.foo();
-
- expect(getRenderCount()).toBe(2);
- });
- });
-
- describe("computed", () => {
- const sum = jest.fn(({ foo }, { bar }) => foo + bar);
- const circularComputed = jest.fn(({ circularComputed }) => {});
- const throwComputed = jest.fn((_, { baz }) => {
- if (baz > 20) {
- throw new Error("Not supported value");
- }
- return baz * 2;
- });
- const { effects, getInjectedState, setParentProps } = makeTestInstance(
- {
- initialState: () => ({ foo: 1, qux: 2 }),
computed: {
- sum,
- circularComputed,
- throwComputed,
+ foo: () => "foo",
},
- },
- { bar: 3, baz: 4 }
- );
-
- it("is not computed before access", () => {
- getInjectedState();
- expect(sum).not.toHaveBeenCalled();
- });
-
- it("returns the result of the computation", () => {
- expect(getInjectedState().sum).toBe(4);
- expect(sum).toHaveBeenCalledTimes(1);
- });
-
- it("is not recomputed when its inputs do not change ", () => {
- setParentProps({ baz: 5 });
- return effects._setState({ qux: 3 }).then(() => {
- noop(getInjectedState().sum);
- expect(sum).toHaveBeenCalledTimes(1);
});
+ return effects.myEffect();
});
- it("is recomputed when its state inputs change", () => {
- return effects._setState({ foo: 2 }).then(() => {
- expect(getInjectedState().sum).toBe(5);
- expect(sum).toHaveBeenCalledTimes(2);
+ it("can be async", async () => {
+ let resolve;
+ // eslint-disable-next-line promise/param-names
+ const promise = new Promise(resolve_ => {
+ resolve = resolve_;
});
- });
+ const { effects, getState } = makeTestInstance({
+ initialState: () => ({ qux: 0 }),
+ effects: {
+ async foo() {
+ ++this.state.qux;
- it("is recomputed when its props inputs change", () => {
- setParentProps({ bar: 4 });
- expect(getInjectedState().sum).toBe(6);
- expect(sum).toHaveBeenCalledTimes(3);
- });
+ // signal the caller that we have made the first change
+ resolve();
- it("throws when a computed calls its self", () => {
- expect(() => {
- return getInjectedState().circularComputed;
- }).toThrowError(new CircularComputedError("circularComputed"));
- });
+ // wait for the caller to make us continue
+ //
+ // eslint-disable-next-line promise/param-names
+ await new Promise(resolve_ => {
+ resolve = resolve_;
+ });
- it("throws when a computed is defined both in state and computed", () => {
- expect(() => {
- makeTestInstance({
- initialState: () => ({ foo: 0 }),
- computed: {
- foo: () => {},
+ ++this.state.qux;
},
- });
- }).toThrowError(
- new TypeError(`conflict: "foo" is defined both in state and computed`)
- );
- });
-
- it("returns undefined when a computed throws on the first call", () => {
- setParentProps({ baz: 21 });
- const res = getInjectedState().throwComputed;
- expect(res).toBe(undefined);
- });
-
- it("returns previous value when a computed throws", () => {
- setParentProps({ baz: 5 });
- expect(getInjectedState().throwComputed).toBe(10);
- setParentProps({ baz: 21 });
- expect(getInjectedState().throwComputed).toBe(10);
- });
-
- it("can returns a promise", async () => {
- let promise, resolve;
- const reset = () => {
- // eslint-disable-next-line promise/param-names
- promise = new Promise(resolve_ => {
- resolve = resolve_;
- });
- };
- reset();
-
- const { getInjectedState, setParentProps } = makeTestInstance(
- {
- computed: { value: (_, { foo }) => promise },
},
- { foo: 1 }
- );
-
- // trigger a first computation
- expect(getInjectedState().value).toBe(undefined);
-
- const prevPromise = promise;
- const prevResolve = resolve;
+ });
- // trigger a second computation
- reset();
- setParentProps({ foo: 2 });
- expect(getInjectedState().value).toBe(undefined);
+ const pFoo = effects.foo();
- // resolve them in reverse order
- resolve("bar");
+ // wait for foo to have done the first change
await promise;
- prevResolve("foo");
- await prevPromise;
+ expect(getState().qux).toBe(1);
+
+ // unlock foo
+ resolve();
- // the last computation should win
- expect(getInjectedState().value).toBe("bar");
+ // wait for foo to be finished
+ await pFoo;
+ expect(getState().qux).toBe(2);
});
});
});