diff --git a/CHANGELOG.md b/CHANGELOG.md
index 391ee2d..302a29c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,10 +11,12 @@ and **contains migration instructions**.
Release | What | *When*
---------|-------------------------------------------------|------------------
+[v1.0.0] | feature-u V1 Integration | *August 14, 2018*
[v0.1.3] | Establish Polyfill Strategy | *July 2, 2018*
[v0.1.0] | Initial Release | *March 6, 2018*
+[v1.0.0]: #v100---feature-u-v1-integration-august-14-2018
[v0.1.3]: #v013---establish-polyfill-strategy-july-2-2018
[v0.1.0]: #v010---initial-release-march-6-2018
@@ -48,6 +50,45 @@ RUNNING CONTENT (pop out as needed) ...
UNRELEASED ******************************************************************************** -->
+
+
+## v1.0.0 - feature-u V1 Integration *(August 14, 2018)*
+
+[GitHub Content](https://github.com/KevinAst/feature-redux-logic/tree/v1.0.0)
+•
+[GitHub Release](https://github.com/KevinAst/feature-redux-logic/releases/tag/v1.0.0)
+•
+[Diff](https://github.com/KevinAst/feature-redux-logic/compare/v0.1.3...v1.0.0)
+
+**NOTE**: This release contains **breaking changes** from prior
+releases _(i.e. a retrofit of client code is necessary)_.
+
+- **Added/Removed**: Eliminate singletons in favor of creators
+
+ The singleton: `logicAspect`, has been replaced with a new creator:
+ `createLogicAspect()`.
+
+ This is useful in both testing and server side rendering.
+
+- **Review**: Integrate to [**feature-u V1**](https://feature-u.js.org/cur/history.html#v1_0_0)
+
+ **feature-u V1** has replaced the `app` object with a `fassets`
+ object.
+
+ In general, this is not a change that would normally break a plugin,
+ because app/fassets is a positional parameter that is merely passed
+ through the plugin.
+
+ However, because **feature-redux-logic** auto injects the [`Fassets
+ object`] as a dependency in your logic modules (promoting full
+ [Cross Feature Communication]), the logic modules in your
+ application code must reflect this change by renaming this named
+ parameter from `app` to `fassets`, and utilize the new fassets API
+ accordingly. Please refer to the [Usage] section for examples.
+
+ As a result, this plugin has now updated it's **feature-u**
+ peerDependency to ">=1.0.0".
+
@@ -83,3 +124,12 @@ UNRELEASED *********************************************************************
[GitHub Release](https://github.com/KevinAst/feature-redux-logic/releases/tag/v0.1.0)
**This is where it all began ...**
+
+
+
+
+
+
+[`Fassets object`]: https://feature-u.js.org/cur/api.html#Fassets
+[Cross Feature Communication]: https://feature-u.js.org/cur/crossCommunication.html
+[Usage]: README.md#usage
diff --git a/README.md b/README.md
index 2f37fc3..0a10349 100644
--- a/README.md
+++ b/README.md
@@ -70,7 +70,7 @@ Let's see how this all works together ...
npm install --save redux-logic
```
@@ -98,16 +98,16 @@ Polyfills](#potential-need-for-polyfills))_.
**src/app.js**
```js
- import {launchApp} from 'feature-u';
- import {reducerAspect} from 'feature-redux'; // **2**
- import {logicAspect} from 'feature-redux-logic'; // **1**
- import features from './feature';
+ import {launchApp} from 'feature-u';
+ import {createReducerAspect} from 'feature-redux'; // **2**
+ import {createLogicAspect} from 'feature-redux-logic'; // **1**
+ import features from './feature';
export default launchApp({
aspects: [
- reducerAspect, // **2**
- logicAspect, // **1**
+ createReducerAspect(), // **2**
+ createLogicAspect(), // **1**
... other Aspects here
],
@@ -140,6 +140,31 @@ Polyfills](#potential-need-for-polyfills))_.
});
```
+3. As a convenience, **feature-redux-logic** auto injects the
+ **feature-u** [`Fassets object`] as a dependency in your logic
+ modules. This promotes full [Cross Feature Communication].
+
+ The following example, demonstrates the availability of the
+ `fassets` named parameter:
+
+ ```js
+ import {createLogic} from 'redux-logic';
+
+ export const someLogic = createLogic({
+
+ ... snip snip
+
+ transform({getState, action, fassets}, next, reject) {
+ ... fassets may be used for cross-feature-communication
+ },
+
+ process({getState, action, fassets}, dispatch, done) {
+ ... fassets may be used for cross-feature-communication
+ }
+
+ });
+ ```
+
**Well that was easy!!** At this point **redux-logic** is **completely
setup for your application!**
@@ -157,9 +182,9 @@ truly opaque assets _(internal to the feature)_, they are of interest
to **feature-redux-logic** to the extent that they are needed to configure
[redux-logic].
-Because logic modules may require access to **feature-u**'s [`App`]
-object during code expansion, this property can also be a
-**feature-u** [`managedExpansion()`] callback _(a function that
+Because logic modules may require access to **feature-u**'s [`Fassets
+object`] during code expansion, this property can also be a
+**feature-u** [`expandWithFassets()`] callback _(a function that
returns the logic modules)_ ... please refer to **feature-u**'s
discussion of [Managed Code Expansion].
@@ -204,7 +229,7 @@ export const doSomething = createLogic({
... snip snip
},
- process({getState, action, app}, dispatch, done) {
+ process({getState, action, fassets}, dispatch, done) {
... snip snip
}
@@ -275,6 +300,11 @@ process (_i.e. the inputs and outputs_) are documented here.
component must be consumed by yet another aspect (_such as
[feature-redux]_) that in turn manages [redux].
+- As a convenience, **feature-redux-logic** auto injects the
+ **feature-u** [`Fassets object`] as a dependency in your logic
+ modules. This promotes full [Cross Feature Communication].
+ Please refer to the [Usage] section for examples.
+
### Error Conditions
@@ -315,6 +345,8 @@ modules were specified by your features.
+`API: createLogicAspect([name='logic']): logicAspect`
+
The `logicAspect` is the [feature-u] plugin that facilitates
[redux-logic] integration to your features.
@@ -383,14 +415,15 @@ implemented)_ is intended to address this issue.
-[feature-u]: https://feature-u.js.org/
-[`launchApp()`]: https://feature-u.js.org/cur/api.html#launchApp
-[`createFeature()`]: https://feature-u.js.org/cur/api.html#createFeature
-[`managedExpansion()`]: https://feature-u.js.org/cur/api.html#managedExpansion
-[publicFace]: https://feature-u.js.org/cur/crossCommunication.html#publicface-and-the-app-object
-[`Feature`]: https://feature-u.js.org/cur/api.html#Feature
-[`App`]: https://feature-u.js.org/cur/api.html#App
-[Managed Code Expansion]: https://feature-u.js.org/cur/crossCommunication.html#managed-code-expansion
+[feature-u]: https://feature-u.js.org/
+[`launchApp()`]: https://feature-u.js.org/cur/api.html#launchApp
+[`createFeature()`]: https://feature-u.js.org/cur/api.html#createFeature
+[`expandWithFassets()`]: https://feature-u.js.org/cur/api.html#expandWithFassets
+[`Feature`]: https://feature-u.js.org/cur/api.html#Feature
+[`Fassets object`]: https://feature-u.js.org/cur/api.html#Fassets
+[Managed Code Expansion]: https://feature-u.js.org/cur/crossCommunication.html#managed-code-expansion
+[Cross Feature Communication]: https://feature-u.js.org/cur/crossCommunication.html
+
[react]: https://reactjs.org/
diff --git a/package-lock.json b/package-lock.json
index 6562044..bbee8cd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,22 +1,22 @@
{
"name": "feature-redux-logic",
- "version": "0.1.3",
+ "version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@babel/code-frame": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.51.tgz",
- "integrity": "sha1-vXHZsZKvl435FYKdOdQJRFZDmgw=",
+ "version": "7.0.0-rc.1",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-rc.1.tgz",
+ "integrity": "sha512-qhQo3GqwqMUv03SxxjcEkWtlkEDvFYrBKbJUn4Dtd9amC2cLkJ3me4iYUVSBbVXWbfbVRalEeVBHzX4aQYKnBg==",
"dev": true,
"requires": {
- "@babel/highlight": "7.0.0-beta.51"
+ "@babel/highlight": "7.0.0-rc.1"
}
},
"@babel/highlight": {
- "version": "7.0.0-beta.51",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.51.tgz",
- "integrity": "sha1-6IRK4loVlcz9QriWI7Q3bKBtIl0=",
+ "version": "7.0.0-rc.1",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-rc.1.tgz",
+ "integrity": "sha512-5PgPDV6F5s69XNznTcP0za3qH7qgBkr9DVQTXfZtpF+3iEyuIZB1Mjxu52F5CFxgzQUQJoBYHVxtH4Itdb5MgA==",
"dev": true,
"requires": {
"chalk": "2.4.1",
@@ -56,9 +56,9 @@
}
},
"abab": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
- "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz",
+ "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==",
"dev": true
},
"acorn": {
@@ -274,12 +274,21 @@
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"dev": true
},
- "asn1": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
- "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
+ "asap": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+ "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
"dev": true
},
+ "asn1": {
+ "version": "0.2.4",
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": "2.1.2"
+ }
+ },
"asn1.js": {
"version": "4.10.1",
"resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
@@ -375,9 +384,9 @@
"dev": true
},
"aws4": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz",
- "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==",
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
"dev": true
},
"babel-cli": {
@@ -391,7 +400,7 @@
"babel-register": "6.26.0",
"babel-runtime": "6.26.0",
"chokidar": "1.7.0",
- "commander": "2.16.0",
+ "commander": "2.17.1",
"convert-source-map": "1.5.1",
"fs-readdir-recursive": "1.1.0",
"glob": "7.1.2",
@@ -616,9 +625,9 @@
}
},
"babel-loader": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.4.tgz",
- "integrity": "sha512-/hbyEvPzBJuGpk9o80R0ZyTej6heEOr59GoEUtn8qFKbnx4cJm9FWES6J/iv644sYgrtVw9JJQkjaLW/bqb5gw==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz",
+ "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==",
"dev": true,
"requires": {
"find-cache-dir": "1.0.0",
@@ -1380,19 +1389,20 @@
"dev": true,
"requires": {
"browserify-aes": "1.2.0",
- "browserify-des": "1.0.1",
+ "browserify-des": "1.0.2",
"evp_bytestokey": "1.0.3"
}
},
"browserify-des": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz",
- "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
"dev": true,
"requires": {
"cipher-base": "1.0.4",
"des.js": "1.0.0",
- "inherits": "2.0.3"
+ "inherits": "2.0.3",
+ "safe-buffer": "5.1.2"
}
},
"browserify-rsa": {
@@ -1415,7 +1425,7 @@
"browserify-rsa": "4.0.1",
"create-hash": "1.2.0",
"create-hmac": "1.1.7",
- "elliptic": "6.4.0",
+ "elliptic": "6.4.1",
"inherits": "2.0.3",
"parse-asn1": "5.1.1"
}
@@ -1435,8 +1445,8 @@
"integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==",
"dev": true,
"requires": {
- "caniuse-lite": "1.0.30000861",
- "electron-to-chromium": "1.3.50"
+ "caniuse-lite": "1.0.30000877",
+ "electron-to-chromium": "1.3.58"
}
},
"bser": {
@@ -1460,9 +1470,9 @@
}
},
"buffer-from": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz",
- "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
"dev": true
},
"buffer-xor": {
@@ -1530,9 +1540,9 @@
"dev": true
},
"caniuse-lite": {
- "version": "1.0.30000861",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000861.tgz",
- "integrity": "sha512-aeEQ4kyd41qCl8XFbCjWgVBI3EOd66M9sC43MFn0kuD/vcrNqvoIAlKon4xdp8yMCYvVjdCltI3lgArj8I6cNA==",
+ "version": "1.0.30000877",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000877.tgz",
+ "integrity": "sha512-h04kV/lcuhItU1CZTJOxUEk/9R+1XeJqgc67E+XC8J9TjPM8kzVgOn27ZtRdDUo8O5F8U4QRCzDWJrVym3w3Cg==",
"dev": true
},
"capture-exit": {
@@ -1592,9 +1602,9 @@
}
},
"ci-info": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.3.tgz",
- "integrity": "sha512-SK/846h/Rcy8q9Z9CAwGBLfCJ6EkjJWdpelWDufQpqVDYq2Wnnv8zlSO6AMQap02jvhVruKKpEtQOufo3pFhLg==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.3.0.tgz",
+ "integrity": "sha512-mPdvoljUhH3Feai3dakD3bwYl/8I0tSo16Ge2W+tY88yfYDKGVnXV2vFxZC8VGME01CYp+DaAZnE93VHYVapnA==",
"dev": true
},
"cipher-base": {
@@ -1689,12 +1699,12 @@
"dev": true,
"requires": {
"bluebird": "3.5.1",
- "commander": "2.16.0",
+ "commander": "2.17.1",
"joi": "12.0.0",
"lcov-parse": "1.0.0",
"lodash": "4.17.10",
"log-driver": "1.2.7",
- "request": "2.87.0",
+ "request": "2.88.0",
"request-promise": "4.2.2"
}
},
@@ -1739,9 +1749,9 @@
}
},
"commander": {
- "version": "2.16.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz",
- "integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==",
+ "version": "2.17.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
"dev": true
},
"commondir": {
@@ -1774,7 +1784,7 @@
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"dev": true,
"requires": {
- "buffer-from": "1.1.0",
+ "buffer-from": "1.1.1",
"inherits": "2.0.3",
"readable-stream": "2.3.6",
"typedarray": "0.0.6"
@@ -1826,7 +1836,7 @@
"dev": true,
"requires": {
"bn.js": "4.11.8",
- "elliptic": "6.4.0"
+ "elliptic": "6.4.1"
}
},
"create-hash": {
@@ -1856,6 +1866,16 @@
"sha.js": "2.4.11"
}
},
+ "create-react-context": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/create-react-context/-/create-react-context-0.2.2.tgz",
+ "integrity": "sha512-KkpaLARMhsTsgp0d2NA/R94F/eDLbhXERdIq3LvX2biCAXcDvHYoOqHfWCHf1+OLj+HKBotLG3KqaOOf+C1C+A==",
+ "dev": true,
+ "requires": {
+ "fbjs": "0.8.17",
+ "gud": "1.0.0"
+ }
+ },
"cross-env": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-4.0.0.tgz",
@@ -1897,18 +1917,18 @@
}
},
"cssom": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.3.tgz",
- "integrity": "sha512-pjE/I/NSp3iyeoxXN5QaoJpgzYUMj2dJHx9OSufoTliJLDx+kuOQaMCJW8OwvrKJswhXUHnHN6eUmUSETN0msg==",
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.4.tgz",
+ "integrity": "sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==",
"dev": true
},
"cssstyle": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.3.1.tgz",
- "integrity": "sha512-tNvaxM5blOnxanyxI6panOsnfiyLRj3HV4qjqqS45WPNS1usdYWRUQjqTEEELK73lpeP/1KoIGYUwrBn/VcECA==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.0.0.tgz",
+ "integrity": "sha512-Bpuh47j2mRMY60X90mXaJAEtJwxvA2roZzbgwAXYhMbmwmakdRr4Cq9L5SkleKJNLOKqHIa2YWyOXDX3VgggSQ==",
"dev": true,
"requires": {
- "cssom": "0.3.3"
+ "cssom": "0.3.4"
}
},
"d": {
@@ -1917,7 +1937,7 @@
"integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=",
"dev": true,
"requires": {
- "es5-ext": "0.10.45"
+ "es5-ext": "0.10.46"
}
},
"dashdash": {
@@ -1938,6 +1958,14 @@
"abab": "1.0.4",
"whatwg-mimetype": "2.1.0",
"whatwg-url": "6.5.0"
+ },
+ "dependencies": {
+ "abab": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
+ "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=",
+ "dev": true
+ }
}
},
"date-now": {
@@ -2147,30 +2175,31 @@
"dev": true
},
"ecc-jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
- "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"dev": true,
"optional": true,
"requires": {
- "jsbn": "0.1.1"
+ "jsbn": "0.1.1",
+ "safer-buffer": "2.1.2"
}
},
"electron-to-chromium": {
- "version": "1.3.50",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.50.tgz",
- "integrity": "sha1-dDi3b5K0G5GfP73TUPvQdX2s3fc=",
+ "version": "1.3.58",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.58.tgz",
+ "integrity": "sha512-AGJxlBEn2wOohxqWZkISVsOjZueKTQljfEODTDSEiMqSpH0S+xzV+/5oEM9AGaqhu7DzrpKOgU7ocQRjj0nJmg==",
"dev": true
},
"elliptic": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz",
- "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=",
+ "version": "6.4.1",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz",
+ "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==",
"dev": true,
"requires": {
"bn.js": "4.11.8",
"brorand": "1.1.0",
- "hash.js": "1.1.4",
+ "hash.js": "1.1.5",
"hmac-drbg": "1.0.1",
"inherits": "2.0.3",
"minimalistic-assert": "1.0.1",
@@ -2183,6 +2212,15 @@
"integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
"dev": true
},
+ "encoding": {
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
+ "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
+ "dev": true,
+ "requires": {
+ "iconv-lite": "0.4.23"
+ }
+ },
"enhanced-resolve": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz",
@@ -2222,7 +2260,7 @@
"es-to-primitive": "1.1.1",
"function-bind": "1.1.1",
"has": "1.0.3",
- "is-callable": "1.1.3",
+ "is-callable": "1.1.4",
"is-regex": "1.0.4"
}
},
@@ -2232,15 +2270,15 @@
"integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
"dev": true,
"requires": {
- "is-callable": "1.1.3",
+ "is-callable": "1.1.4",
"is-date-object": "1.0.1",
"is-symbol": "1.0.1"
}
},
"es5-ext": {
- "version": "0.10.45",
- "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz",
- "integrity": "sha512-FkfM6Vxxfmztilbxxz5UKSD4ICMf5tSpRFtDNtkAhOxZ0EKtX6qwmXNyH/sFyIbX2P/nU5AMiA9jilWsUGJzCQ==",
+ "version": "0.10.46",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.46.tgz",
+ "integrity": "sha512-24XxRvJXNFwEMpJb3nOkiRJKRoupmjYmOPVlI65Qy2SrtxwOTB+g6ODjBKOtwEHbYrhWRty9xxOWLNdClT2djw==",
"dev": true,
"requires": {
"es6-iterator": "2.0.3",
@@ -2255,7 +2293,7 @@
"dev": true,
"requires": {
"d": "1.0.0",
- "es5-ext": "0.10.45",
+ "es5-ext": "0.10.46",
"es6-symbol": "3.1.1"
}
},
@@ -2266,7 +2304,7 @@
"dev": true,
"requires": {
"d": "1.0.0",
- "es5-ext": "0.10.45",
+ "es5-ext": "0.10.46",
"es6-iterator": "2.0.3",
"es6-set": "0.1.5",
"es6-symbol": "3.1.1",
@@ -2280,7 +2318,7 @@
"dev": true,
"requires": {
"d": "1.0.0",
- "es5-ext": "0.10.45",
+ "es5-ext": "0.10.46",
"es6-iterator": "2.0.3",
"es6-symbol": "3.1.1",
"event-emitter": "0.3.5"
@@ -2293,7 +2331,7 @@
"dev": true,
"requires": {
"d": "1.0.0",
- "es5-ext": "0.10.45"
+ "es5-ext": "0.10.46"
}
},
"es6-weak-map": {
@@ -2303,7 +2341,7 @@
"dev": true,
"requires": {
"d": "1.0.0",
- "es5-ext": "0.10.45",
+ "es5-ext": "0.10.46",
"es6-iterator": "2.0.3",
"es6-symbol": "3.1.1"
}
@@ -2315,9 +2353,9 @@
"dev": true
},
"escodegen": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.10.0.tgz",
- "integrity": "sha512-fjUOf8johsv23WuIKdNQU4P9t9jhQ4Qzx6pC2uW890OloK3Zs1ZAoCNpg/2larNF501jLl3UNy0kIRcF6VI22g==",
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.0.tgz",
+ "integrity": "sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==",
"dev": true,
"requires": {
"esprima": "3.1.3",
@@ -2376,7 +2414,7 @@
"ignore": "3.3.10",
"imurmurhash": "0.1.4",
"inquirer": "0.12.0",
- "is-my-json-valid": "2.17.2",
+ "is-my-json-valid": "2.19.0",
"is-resolvable": "1.1.0",
"js-yaml": "3.12.0",
"json-stable-stringify": "1.0.1",
@@ -2422,11 +2460,12 @@
}
},
"eslint-plugin-react": {
- "version": "7.10.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.10.0.tgz",
- "integrity": "sha512-18rzWn4AtbSUxFKKM7aCVcj5LXOhOKdwBino3KKWy4psxfPW0YtIbE8WNRDUdyHFL50BeLb6qFd4vpvNYyp7hw==",
+ "version": "7.11.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz",
+ "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==",
"dev": true,
"requires": {
+ "array-includes": "3.0.3",
"doctrine": "2.1.0",
"has": "1.0.3",
"jsx-ast-utils": "2.0.1",
@@ -2444,9 +2483,9 @@
}
},
"esprima": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
- "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true
},
"esquery": {
@@ -2486,7 +2525,7 @@
"dev": true,
"requires": {
"d": "1.0.0",
- "es5-ext": "0.10.45"
+ "es5-ext": "0.10.46"
}
},
"event-stream": {
@@ -2600,9 +2639,9 @@
}
},
"extend": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
- "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"extend-shallow": {
@@ -2668,12 +2707,36 @@
"bser": "2.0.0"
}
},
+ "fbjs": {
+ "version": "0.8.17",
+ "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
+ "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
+ "dev": true,
+ "requires": {
+ "core-js": "1.2.7",
+ "isomorphic-fetch": "2.2.1",
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1",
+ "promise": "7.3.1",
+ "setimmediate": "1.0.5",
+ "ua-parser-js": "0.7.18"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
+ "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=",
+ "dev": true
+ }
+ }
+ },
"feature-u": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/feature-u/-/feature-u-0.1.0.tgz",
- "integrity": "sha1-jBp/BzbYP3e8qCykHaaFL+qOuug=",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/feature-u/-/feature-u-1.0.0.tgz",
+ "integrity": "sha512-du6sDgOTyyYFjNZjq6FVdsDD9v9swt4LmRq+0ZEI5VjfZePGC7iKmm/TnmKPqAREQ6YwKLAjHmfKKLZFlzObkQ==",
"dev": true,
"requires": {
+ "create-react-context": "0.2.2",
"lodash.isfunction": "3.0.9",
"lodash.isplainobject": "4.0.6",
"lodash.isstring": "4.0.1"
@@ -2723,7 +2786,7 @@
"requires": {
"is-number": "2.1.0",
"isobject": "2.1.0",
- "randomatic": "3.0.0",
+ "randomatic": "3.1.0",
"repeat-element": "1.1.2",
"repeat-string": "1.6.1"
}
@@ -2795,7 +2858,7 @@
"requires": {
"asynckit": "0.4.0",
"combined-stream": "1.0.6",
- "mime-types": "2.1.18"
+ "mime-types": "2.1.19"
}
},
"fragment-cache": {
@@ -3376,9 +3439,9 @@
}
},
"get-caller-file": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
- "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
+ "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
"dev": true
},
"get-stream": {
@@ -3475,6 +3538,12 @@
"integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=",
"dev": true
},
+ "gud": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/gud/-/gud-1.0.0.tgz",
+ "integrity": "sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw==",
+ "dev": true
+ },
"handlebars": {
"version": "4.0.11",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz",
@@ -3511,9 +3580,9 @@
"dev": true
},
"har-validator": {
- "version": "5.0.3",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
- "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
+ "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
"dev": true,
"requires": {
"ajv": "5.5.2",
@@ -3615,9 +3684,9 @@
}
},
"hash.js": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.4.tgz",
- "integrity": "sha512-A6RlQvvZEtFS5fLU43IDu0QUmBy+fDO9VMdTXvufKwIkt/rFfvICAViCax5fbDO4zdNzaC3/27ZhKUok5bAJyw==",
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz",
+ "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==",
"dev": true,
"requires": {
"inherits": "2.0.3",
@@ -3630,7 +3699,7 @@
"integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
"dev": true,
"requires": {
- "hash.js": "1.1.4",
+ "hash.js": "1.1.5",
"minimalistic-assert": "1.0.1",
"minimalistic-crypto-utils": "1.0.1"
}
@@ -3652,9 +3721,9 @@
}
},
"hosted-git-info": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.1.tgz",
- "integrity": "sha512-Ba4+0M4YvIDUUsprMjhVTU1yN9F2/LJSAl69ZpzaLT4l4j5mwTS6jqqW9Ojvj6lKz/veqPzpJBqGbXspOb533A==",
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
+ "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
"dev": true
},
"html-encoding-sniffer": {
@@ -3663,7 +3732,7 @@
"integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==",
"dev": true,
"requires": {
- "whatwg-encoding": "1.0.3"
+ "whatwg-encoding": "1.0.4"
}
},
"http-signature": {
@@ -3684,10 +3753,13 @@
"dev": true
},
"iconv-lite": {
- "version": "0.4.19",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
- "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
- "dev": true
+ "version": "0.4.23",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
+ "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+ "dev": true,
+ "requires": {
+ "safer-buffer": "2.1.2"
+ }
},
"ieee754": {
"version": "1.1.12",
@@ -3772,7 +3844,7 @@
"integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
"dev": true,
"requires": {
- "loose-envify": "1.3.1"
+ "loose-envify": "1.4.0"
}
},
"invert-kv": {
@@ -3821,9 +3893,9 @@
}
},
"is-callable": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz",
- "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
"dev": true
},
"is-ci": {
@@ -3832,7 +3904,7 @@
"integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==",
"dev": true,
"requires": {
- "ci-info": "1.1.3"
+ "ci-info": "1.3.0"
}
},
"is-data-descriptor": {
@@ -3936,9 +4008,9 @@
"dev": true
},
"is-my-json-valid": {
- "version": "2.17.2",
- "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz",
- "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==",
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.19.0.tgz",
+ "integrity": "sha512-mG0f/unGX1HZ5ep4uhRaPOS8EkAY8/j6mDRMJrutq4CqhoJWYp7qAlonIPy3TV7p3ju4TK9fo/PbnoksWmsp5Q==",
"dev": true,
"requires": {
"generate-function": "2.0.0",
@@ -4083,9 +4155,9 @@
"dev": true
},
"isemail": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.1.2.tgz",
- "integrity": "sha512-zfRhJn9rFSGhzU5tGZqepRSAj3+g6oTOHxMGGriWNJZzyLPUK8H7VHpqKntegnW8KLyGA9zwuNaCoopl40LTpg==",
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.1.3.tgz",
+ "integrity": "sha512-5xbsG5wYADIcB+mfLsd+nst1V/D+I7EU7LEZPo2GOIMu4JzfcRs5yQoypP4avA7QtUqgxYLKBYNv4IdzBmbhdw==",
"dev": true,
"requires": {
"punycode": "2.1.1"
@@ -4106,6 +4178,16 @@
"isarray": "1.0.0"
}
},
+ "isomorphic-fetch": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
+ "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
+ "dev": true,
+ "requires": {
+ "node-fetch": "1.7.3",
+ "whatwg-fetch": "2.0.4"
+ }
+ },
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
@@ -4194,7 +4276,7 @@
"requires": {
"istanbul-lib-coverage": "1.2.0",
"mkdirp": "0.5.1",
- "path-parse": "1.0.5",
+ "path-parse": "1.0.6",
"supports-color": "3.2.3"
},
"dependencies": {
@@ -4323,7 +4405,7 @@
"jest-worker": "22.4.3",
"micromatch": "2.3.11",
"node-notifier": "5.2.1",
- "realpath-native": "1.0.0",
+ "realpath-native": "1.0.1",
"rimraf": "2.6.2",
"slash": "1.0.0",
"string-length": "2.0.0",
@@ -4471,7 +4553,7 @@
"requires": {
"jest-mock": "22.4.3",
"jest-util": "22.4.3",
- "jsdom": "11.11.0"
+ "jsdom": "11.12.0"
}
},
"jest-environment-node": {
@@ -4521,7 +4603,7 @@
"jest-message-util": "22.4.3",
"jest-snapshot": "22.4.3",
"jest-util": "22.4.3",
- "source-map-support": "0.5.6"
+ "source-map-support": "0.5.8"
},
"dependencies": {
"ansi-styles": {
@@ -4551,12 +4633,12 @@
"dev": true
},
"source-map-support": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz",
- "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==",
+ "version": "0.5.8",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.8.tgz",
+ "integrity": "sha512-WqAEWPdb78u25RfKzOF0swBpY0dKrNdjc4GvLwm7ScX/o9bj8Eh/YL8mcMhBHYDGl87UkkSXDOFnW4G7GhWhGg==",
"dev": true,
"requires": {
- "buffer-from": "1.1.0",
+ "buffer-from": "1.1.1",
"source-map": "0.6.1"
}
},
@@ -4628,7 +4710,7 @@
"integrity": "sha512-iAMeKxhB3Se5xkSjU0NndLLCHtP4n+GtCqV0bISKA5dmOXQfEbdEmYiu2qpnWBDCQdEafNDDU6Q+l6oBMd/+BA==",
"dev": true,
"requires": {
- "@babel/code-frame": "7.0.0-beta.51",
+ "@babel/code-frame": "7.0.0-rc.1",
"chalk": "2.4.1",
"micromatch": "2.3.11",
"slash": "1.0.0",
@@ -4768,7 +4850,7 @@
"jest-validate": "22.4.4",
"json-stable-stringify": "1.0.1",
"micromatch": "2.3.11",
- "realpath-native": "1.0.0",
+ "realpath-native": "1.0.1",
"slash": "1.0.0",
"strip-bom": "3.0.0",
"write-file-atomic": "2.3.0",
@@ -4975,7 +5057,7 @@
"dev": true,
"requires": {
"hoek": "4.2.1",
- "isemail": "3.1.2",
+ "isemail": "3.1.3",
"topo": "2.0.2"
}
},
@@ -4992,7 +5074,7 @@
"dev": true,
"requires": {
"argparse": "1.0.10",
- "esprima": "4.0.0"
+ "esprima": "4.0.1"
}
},
"jsbn": {
@@ -5003,36 +5085,36 @@
"optional": true
},
"jsdom": {
- "version": "11.11.0",
- "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.11.0.tgz",
- "integrity": "sha512-ou1VyfjwsSuWkudGxb03FotDajxAto6USAlmMZjE2lc0jCznt7sBWkhfRBRaWwbnmDqdMSTKTLT5d9sBFkkM7A==",
+ "version": "11.12.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz",
+ "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==",
"dev": true,
"requires": {
- "abab": "1.0.4",
+ "abab": "2.0.0",
"acorn": "5.7.1",
"acorn-globals": "4.1.0",
"array-equal": "1.0.0",
- "cssom": "0.3.3",
- "cssstyle": "0.3.1",
+ "cssom": "0.3.4",
+ "cssstyle": "1.0.0",
"data-urls": "1.0.0",
"domexception": "1.0.1",
- "escodegen": "1.10.0",
+ "escodegen": "1.11.0",
"html-encoding-sniffer": "1.0.2",
"left-pad": "1.3.0",
- "nwsapi": "2.0.4",
+ "nwsapi": "2.0.8",
"parse5": "4.0.0",
"pn": "1.1.0",
- "request": "2.87.0",
+ "request": "2.88.0",
"request-promise-native": "1.0.5",
"sax": "1.2.4",
"symbol-tree": "3.2.2",
- "tough-cookie": "2.3.4",
+ "tough-cookie": "2.4.3",
"w3c-hr-time": "1.0.1",
"webidl-conversions": "4.0.2",
- "whatwg-encoding": "1.0.3",
+ "whatwg-encoding": "1.0.4",
"whatwg-mimetype": "2.1.0",
"whatwg-url": "6.5.0",
- "ws": "4.1.0",
+ "ws": "5.2.2",
"xml-name-validator": "3.0.0"
}
},
@@ -5329,9 +5411,9 @@
"dev": true
},
"loose-envify": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz",
- "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"dev": true,
"requires": {
"js-tokens": "3.0.2"
@@ -5474,18 +5556,18 @@
}
},
"mime-db": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
- "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "version": "1.35.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.35.0.tgz",
+ "integrity": "sha512-JWT/IcCTsB0Io3AhWUMjRqucrHSPsSf2xKLaRldJVULioggvkJvggZ3VXNNSRkCddE6D+BUI4HEIZIA2OjwIvg==",
"dev": true
},
"mime-types": {
- "version": "2.1.18",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
- "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "version": "2.1.19",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz",
+ "integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==",
"dev": true,
"requires": {
- "mime-db": "1.33.0"
+ "mime-db": "1.35.0"
}
},
"mimic-fn": {
@@ -5616,9 +5698,9 @@
"dev": true
},
"neo-async": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz",
- "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==",
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz",
+ "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==",
"dev": true
},
"next-tick": {
@@ -5633,6 +5715,16 @@
"integrity": "sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA==",
"dev": true
},
+ "node-fetch": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
+ "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
+ "dev": true,
+ "requires": {
+ "encoding": "0.1.12",
+ "is-stream": "1.1.0"
+ }
+ },
"node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -5696,10 +5788,10 @@
"integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
"dev": true,
"requires": {
- "hosted-git-info": "2.6.1",
+ "hosted-git-info": "2.7.1",
"is-builtin-module": "1.0.0",
"semver": "5.5.0",
- "validate-npm-package-license": "3.0.3"
+ "validate-npm-package-license": "3.0.4"
}
},
"normalize-path": {
@@ -5830,15 +5922,15 @@
"dev": true
},
"nwsapi": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.4.tgz",
- "integrity": "sha512-Zt6HRR6RcJkuj5/N9zeE7FN6YitRW//hK2wTOwX274IBphbY3Zf5+yn5mZ9v/SzAOTMjQNxZf9KkmPLWn0cV4g==",
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.8.tgz",
+ "integrity": "sha512-7RZ+qbFGiVc6v14Y8DSZjPN1wZPOaMbiiP4tzf5eNuyOITAeOIA3cMhjuKUypVIqBgCSg1KaSyAv8Ocq/0ZJ1A==",
"dev": true
},
"oauth-sign": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
- "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+ "version": "0.9.0",
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
"dev": true
},
"object-assign": {
@@ -6141,9 +6233,9 @@
"dev": true
},
"path-parse": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz",
- "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
"dev": true
},
"path-type": {
@@ -6304,13 +6396,22 @@
"integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
"dev": true
},
+ "promise": {
+ "version": "7.3.1",
+ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+ "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+ "dev": true,
+ "requires": {
+ "asap": "2.0.6"
+ }
+ },
"prop-types": {
"version": "15.6.2",
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
"integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
"dev": true,
"requires": {
- "loose-envify": "1.3.1",
+ "loose-envify": "1.4.0",
"object-assign": "4.1.1"
}
},
@@ -6335,6 +6436,12 @@
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
"dev": true
},
+ "psl": {
+ "version": "1.1.29",
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
+ "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
+ "dev": true
+ },
"public-encrypt": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz",
@@ -6373,9 +6480,9 @@
"dev": true
},
"randomatic": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz",
- "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz",
+ "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==",
"dev": true,
"requires": {
"is-number": "4.0.0",
@@ -6416,6 +6523,18 @@
"safe-buffer": "5.1.2"
}
},
+ "react": {
+ "version": "16.4.2",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.4.2.tgz",
+ "integrity": "sha512-dMv7YrbxO4y2aqnvA7f/ik9ibeLSHQJTI6TrYAenPSaQ6OXfb+Oti+oJiy8WBxgRzlKatYqtCjphTgDSCEiWFg==",
+ "dev": true,
+ "requires": {
+ "fbjs": "0.8.17",
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1",
+ "prop-types": "15.6.2"
+ }
+ },
"read-pkg": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
@@ -6497,9 +6616,9 @@
}
},
"realpath-native": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.0.tgz",
- "integrity": "sha512-XJtlRJ9jf0E1H1SLeJyQ9PGzQD7S65h1pRXEcAeK48doKOnKxcgPeNohJvD5u/2sI9J1oke6E8bZHS/fmW1UiQ==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.0.1.tgz",
+ "integrity": "sha512-W14EcXuqUvKP8dkWkD7B95iMy77lpMnlFXbbk409bQtNCbeu0kvRE5reo+yIZ3JXxg6frbGsz2DLQ39lrCB40g==",
"dev": true,
"requires": {
"util.promisify": "1.0.0"
@@ -6515,14 +6634,14 @@
}
},
"redux-logic": {
- "version": "0.15.0",
- "resolved": "https://registry.npmjs.org/redux-logic/-/redux-logic-0.15.0.tgz",
- "integrity": "sha512-w6gK2zDSSvcNV3WlBVPEMR7NxHCQa8yFO2zoHSNvRNGECEIb98Q+QVvVkwEl6cnIMKgripwPZb1v+vqHDZ7BpQ==",
+ "version": "0.15.4",
+ "resolved": "https://registry.npmjs.org/redux-logic/-/redux-logic-0.15.4.tgz",
+ "integrity": "sha512-Lr+55pXDpnH4pyM5LPafxjvn6vlT+VXWqlW4nzHOpYfhmF5QmmhiZxy3tntBUaGgZUxMxhq8hqdJUaC3oaQK+g==",
"dev": true,
"requires": {
"is-observable": "0.2.0",
"is-promise": "2.1.0",
- "loose-envify": "1.3.1",
+ "loose-envify": "1.4.0",
"rxjs": "5.5.11"
}
},
@@ -6630,29 +6749,29 @@
}
},
"request": {
- "version": "2.87.0",
- "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
- "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
+ "version": "2.88.0",
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+ "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
"dev": true,
"requires": {
"aws-sign2": "0.7.0",
- "aws4": "1.7.0",
+ "aws4": "1.8.0",
"caseless": "0.12.0",
"combined-stream": "1.0.6",
- "extend": "3.0.1",
+ "extend": "3.0.2",
"forever-agent": "0.6.1",
"form-data": "2.3.2",
- "har-validator": "5.0.3",
+ "har-validator": "5.1.0",
"http-signature": "1.2.0",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
- "mime-types": "2.1.18",
- "oauth-sign": "0.8.2",
+ "mime-types": "2.1.19",
+ "oauth-sign": "0.9.0",
"performance-now": "2.1.0",
"qs": "6.5.2",
"safe-buffer": "5.1.2",
- "tough-cookie": "2.3.4",
+ "tough-cookie": "2.4.3",
"tunnel-agent": "0.6.0",
"uuid": "3.3.2"
}
@@ -6666,7 +6785,7 @@
"bluebird": "3.5.1",
"request-promise-core": "1.1.1",
"stealthy-require": "1.1.1",
- "tough-cookie": "2.3.4"
+ "tough-cookie": "2.4.3"
}
},
"request-promise-core": {
@@ -6686,7 +6805,7 @@
"requires": {
"request-promise-core": "1.1.1",
"stealthy-require": "1.1.1",
- "tough-cookie": "2.3.4"
+ "tough-cookie": "2.4.3"
}
},
"require-directory": {
@@ -6717,7 +6836,7 @@
"integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==",
"dev": true,
"requires": {
- "path-parse": "1.0.5"
+ "path-parse": "1.0.6"
}
},
"resolve-cwd": {
@@ -7299,7 +7418,7 @@
"map-cache": "0.2.2",
"source-map": "0.5.7",
"source-map-resolve": "0.5.2",
- "use": "3.1.0"
+ "use": "3.1.1"
},
"dependencies": {
"define-property": {
@@ -7496,11 +7615,11 @@
"integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
"dev": true,
"requires": {
- "asn1": "0.2.3",
+ "asn1": "0.2.4",
"assert-plus": "1.0.0",
"bcrypt-pbkdf": "1.0.2",
"dashdash": "1.14.1",
- "ecc-jsbn": "0.1.1",
+ "ecc-jsbn": "0.1.2",
"getpass": "0.1.7",
"jsbn": "0.1.1",
"safer-buffer": "2.1.2",
@@ -8124,11 +8243,12 @@
}
},
"tough-cookie": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
- "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+ "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
"dev": true,
"requires": {
+ "psl": "1.1.29",
"punycode": "1.4.1"
},
"dependencies": {
@@ -8192,6 +8312,12 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "ua-parser-js": {
+ "version": "0.7.18",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.18.tgz",
+ "integrity": "sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA==",
+ "dev": true
+ },
"uglify-js": {
"version": "2.8.29",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz",
@@ -8336,21 +8462,10 @@
}
},
"use": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz",
- "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==",
- "dev": true,
- "requires": {
- "kind-of": "6.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
- "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
- "dev": true
- }
- }
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
},
"user-home": {
"version": "1.1.1",
@@ -8399,9 +8514,9 @@
}
},
"validate-npm-package-license": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz",
- "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
"requires": {
"spdx-correct": "3.0.0",
@@ -8472,7 +8587,7 @@
"requires": {
"chokidar": "2.0.4",
"graceful-fs": "4.1.11",
- "neo-async": "2.5.1"
+ "neo-async": "2.5.2"
},
"dependencies": {
"anymatch": {
@@ -8931,7 +9046,7 @@
"camelcase": "3.0.0",
"cliui": "3.2.0",
"decamelize": "1.2.0",
- "get-caller-file": "1.0.2",
+ "get-caller-file": "1.0.3",
"os-locale": "1.4.0",
"read-pkg-up": "1.0.1",
"require-directory": "2.1.1",
@@ -8973,14 +9088,20 @@
}
},
"whatwg-encoding": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz",
- "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.4.tgz",
+ "integrity": "sha512-vM9KWN6MP2mIHZ86ytcyIv7e8Cj3KTfO2nd2c8PFDqcI4bxFmQp83ibq4wadq7rL9l9sZV6o9B0LTt8ygGAAXg==",
"dev": true,
"requires": {
- "iconv-lite": "0.4.19"
+ "iconv-lite": "0.4.23"
}
},
+ "whatwg-fetch": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
+ "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==",
+ "dev": true
+ },
"whatwg-mimetype": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.1.0.tgz",
@@ -9062,13 +9183,12 @@
}
},
"ws": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz",
- "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==",
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz",
+ "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==",
"dev": true,
"requires": {
- "async-limiter": "1.0.0",
- "safe-buffer": "5.1.2"
+ "async-limiter": "1.0.0"
}
},
"xml-name-validator": {
@@ -9104,7 +9224,7 @@
"cliui": "4.1.0",
"decamelize": "1.2.0",
"find-up": "2.1.0",
- "get-caller-file": "1.0.2",
+ "get-caller-file": "1.0.3",
"os-locale": "2.1.0",
"require-directory": "2.1.1",
"require-main-filename": "1.0.1",
diff --git a/package.json b/package.json
index 4936f1a..37f2f33 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "feature-redux-logic",
- "version": "0.1.3",
+ "version": "1.0.0",
"description": "feature-u redux-logic integration",
"main": "lib/index.js",
"browser": {
@@ -72,6 +72,7 @@
},
"homepage": "https://github.com/KevinAst/feature-redux-logic",
"jest": {
+ "testURL": "http://localhost",
"collectCoverageFrom": [
"src/**/*.js",
"!**/spec/**"
@@ -89,16 +90,17 @@
"eslint": "^3.19.0",
"eslint-loader": "^1.7.1",
"eslint-plugin-react": "^7.6.1",
- "feature-u": ">=0.1.0",
+ "feature-u": ">=1.0.0",
"jest": "^22.1.4",
"npm-run-all": "^4.0.2",
+ "react": ">=0.14.0",
"redux-logic": ">=0.7.0",
"rimraf": "^2.6.1",
"webpack": "^2.4.1"
},
"dependencies": {},
"peerDependencies": {
- "feature-u": ">=0.1.0",
+ "feature-u": ">=1.0.0",
"redux-logic": ">=0.7.0"
}
}
diff --git a/src/index.js b/src/index.js
index 6a256e9..0e75d60 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,4 +1,4 @@
-import logicAspect from './logicAspect';
+import createLogicAspect from './logicAspect';
//***
//*** Promote all feature-redux-logic utilities through a centralized module.
@@ -10,7 +10,7 @@ import logicAspect from './logicAspect';
// -or-
// import * as FeatureU from 'feature-redux-logic';
export {
- logicAspect,
+ createLogicAspect,
};
// NOTE: This default export supports CommonJS modules (otherwise Babel does NOT promote them).
@@ -19,5 +19,5 @@ export {
// -or-
// const FeatureU = require('feature-redux-logic');
export default {
- logicAspect,
+ createLogicAspect,
};
diff --git a/src/logicAspect.js b/src/logicAspect.js
index 0a62e4e..6eb1764 100644
--- a/src/logicAspect.js
+++ b/src/logicAspect.js
@@ -1,21 +1,33 @@
import {createLogicMiddleware} from 'redux-logic'; // peerDependency
import {createAspect,
launchApp} from 'feature-u'; // peerDependency:
+import verify from './util/verify';
// our logger (integrated/activated via feature-u)
const logf = launchApp.diag.logf.newLogger('- ***feature-redux-logic*** logicAspect: ');
// NOTE: See README for complete description
-export default createAspect({
- name: 'logic',
- validateFeatureContent,
- assembleFeatureContent,
- getReduxMiddleware,
- config: {
- allowNoLogic$: false, // PUBLIC: client override to: true || [{logicModules}]
- createLogicMiddleware$, // HIDDEN: createLogicMiddleware$(app, appLogic): reduxMiddleware
- },
-});
+export default function createLogicAspect(name='logic') {
+
+ // validate parameters
+ const check = verify.prefix('createLogicAspect() parameter violation: ');
+
+ check(name, 'name is required');
+ check(typeof name === 'string', 'name must be a string'); // NOTE: didn't want to introduce lodash.isstring dependancy (in the mix of everything else going on in the 1.0.0 upgrade)
+
+ // create/promote our new aspect
+ const logicAspect = createAspect({
+ name,
+ validateFeatureContent,
+ assembleFeatureContent,
+ getReduxMiddleware,
+ config: {
+ allowNoLogic$: false, // PUBLIC: client override to: true || [{logicModules}]
+ createLogicMiddleware$, // HIDDEN: createLogicMiddleware$(fassets, appLogic): reduxMiddleware
+ },
+ });
+ return logicAspect;
+}
/**
@@ -45,14 +57,14 @@ function validateFeatureContent(feature) {
* Interpret the supplied features, defining our redux middleware
* in support of reduc-logic.
*
- * @param {App} app the App object used in feature cross-communication.
+ * @param {Fassets} fassets the Fassets object used in cross-feature-communication.
*
* @param {Feature[]} activeFeatures - The set of active (enabled)
* features that comprise this application.
*
* @private
*/
-function assembleFeatureContent(app, activeFeatures) {
+function assembleFeatureContent(fassets, activeFeatures) {
// accumulate logic modules across all features
const hookSummary = [];
@@ -103,7 +115,7 @@ function assembleFeatureContent(app, activeFeatures) {
// ... retained in self for promotion to feature-redux plugin
if (appLogic.length > 0) {
// ... accomplished in internal config micro function (a defensive measure to allow easier overriding by client)
- this.logicMiddleware = this.config.createLogicMiddleware$(app, appLogic);
+ this.logicMiddleware = this.config.createLogicMiddleware$(fassets, appLogic);
}
// if we have no logic ... we have no middleware
else {
@@ -120,11 +132,10 @@ function assembleFeatureContent(app, activeFeatures) {
* measure to make it easier for a client to override (if needed for
* some unknown reason).
*
- * @param {App} app the App object used in feature
- * cross-communication. This must be dependancy injected into
- * redux-logic.
+ * @param {Fassets} fassets the Fassets object used in cross-feature-communication.
+ * This must be dependancy injected into redux-logic.
*
- * @param {logicModuls[]} appLogicArr - an array of redux-logic
+ * @param {logicModuls[]} appLogic - an array of redux-logic
* modules (gaurenteed to have at least one entry).
*
* @return {reduxMiddleware} the newly created redux middleware for
@@ -132,11 +143,11 @@ function assembleFeatureContent(app, activeFeatures) {
*
* @private
*/
-function createLogicMiddleware$(app, appLogic) {
+function createLogicMiddleware$(fassets, appLogic) {
// define our redux middleware for redux-logic
return createLogicMiddleware(appLogic,
- { // inject our app as a redux-logic dependancy
- app,
+ { // inject our fassets as a redux-logic dependancy
+ fassets,
});
}
diff --git a/src/spec/logicAspect.spec.js b/src/spec/logicAspect.spec.js
index 12e1dbd..a5bc247 100644
--- a/src/spec/logicAspect.spec.js
+++ b/src/spec/logicAspect.spec.js
@@ -1,5 +1,7 @@
-import {createFeature} from 'feature-u';
-import {logicAspect} from '..'; // modules under test
+import {createFeature} from 'feature-u';
+import {createLogicAspect} from '..'; // modules under test
+
+const logicAspect = createLogicAspect();
// temporarly turn on logging (just for fun)
// ... must include launchApp on this
@@ -17,6 +19,19 @@ describe('logicAspect() tests', () => {
});
+ describe('validate createLogicAspect() parameter violation', () => {
+
+ expect( () => createLogicAspect(null) )
+ .toThrow(/name is required/);
+ // THROW: createLogicAspect() parameter violation: name is required
+
+ expect( () => createLogicAspect(123) )
+ .toThrow(/name must be a string/);
+ // THROW: createLogicAspect() parameter violation: name must be a string
+
+ });
+
+
describe('validateFeatureContent()', () => {
test('must be an array', () => {
@@ -47,7 +62,7 @@ describe('logicAspect() tests', () => {
describe('assembleFeatureContent()', () => {
test('no logic modules (DEFAULT)', () => {
- expect(()=>logicAspect.assembleFeatureContent('simulated app', []))
+ expect(()=>logicAspect.assembleFeatureContent('simulated fassets', []))
.toThrow(/found NO logic modules within your features/);
});
@@ -59,7 +74,7 @@ describe('logicAspect() tests', () => {
logicAspect.config.allowNoLogic$ = false;
});
test('expecting getReduxMiddleware() to be null', () => {
- logicAspect.assembleFeatureContent('simulated app', []);
+ logicAspect.assembleFeatureContent('simulated fassets', []);
expect(logicAspect.getReduxMiddleware())
.toBe(null);
});
@@ -73,7 +88,7 @@ describe('logicAspect() tests', () => {
logicAspect.config.allowNoLogic$ = false;
});
test('expecting getReduxMiddleware() to be non-null', () => {
- logicAspect.assembleFeatureContent('simulated app', []);
+ logicAspect.assembleFeatureContent('simulated fassets', []);
expect(logicAspect.getReduxMiddleware())
.not.toBe(null);
});
@@ -81,7 +96,7 @@ describe('logicAspect() tests', () => {
describe('features have logic modules', () => {
test('expecting getReduxMiddleware() to be non-null', () => {
- logicAspect.assembleFeatureContent('simulated app', [
+ logicAspect.assembleFeatureContent('simulated fassets', [
createFeature({
name: 'feature1',
logic: ['simulated', 'logic']
diff --git a/src/util/verify.js b/src/util/verify.js
new file mode 100644
index 0000000..8424f14
--- /dev/null
+++ b/src/util/verify.js
@@ -0,0 +1,29 @@
+/**
+ * A convenience assertion utility, typically used to validate
+ * pre-conditions of a routine.
+ *
+ * **Advanced**: verify.prefix(msgPrefix) returns a higher-order
+ * verify() function where all messages are prefixed.
+ *
+ * @param {truthy} condition - a "truthy" condition which
+ * must be satisfied.
+ *
+ * @param {string} msg - a message clarifying the condition being
+ * checked.
+ *
+ * @throws {Error} an Error is thrown when the supplied condition is
+ * NOT met.
+ *
+ * @private
+ */
+export default function verify(condition, msg) {
+ if (!condition) {
+ // TODO: don't think there is any benefit in logging this console.error
+ // console.error(`verify() constraint issue: ${msg}`); // supplement exception with error log (for react-native exposure)
+ throw new Error(msg);
+ }
+}
+
+verify.prefix = function(msgPrefix) {
+ return (condition, msg) => verify(condition, msgPrefix+msg);
+};