diff --git a/.applist b/.applist index 0637a088a01e8ddab3bf3fa98dbe804cbde1a0dc..7b3606d08fa41c484816fc3c379ca9f8a2582483 100644 --- a/.applist +++ b/.applist @@ -1 +1 @@ -[] \ No newline at end of file +[kvs,kernel,stdlib,spa] \ No newline at end of file diff --git a/.gitignore b/.gitignore index 2360dc18fcad40d9eb29a59df074eee0a90e107d..3fef9c087532c459f216115e0bbeeaba12a7b407 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,15 @@ ebin/ - +.idea/ */tmp */npm-debug.log */webpack-assets.json -*/build/ -*/public/bundle */.editorconfig */.gitignore -*/stats.json -!*/webpack.config.sample.js +<<<<<<< HEAD +======= +webpack.dev.config.babel.js +webpack.prod.config.babel.js +>>>>>>> wip # Logs logs @@ -22,6 +23,8 @@ logs .DS_Store .editorconfig -Будет удалено public/ /node_modules/ -/webpackConfigs/ + +/build/ +/bundle/ +/config/ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ed3e4547ade835edd76d00cd822d737841900ff7..1c9c707341f484b588d8dc06625a21ca1fbf83ff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -239,14 +239,11 @@ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, - "array-back": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", - "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", - "dev": true, - "requires": { - "typical": "2.6.1" - } + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true }, "array-equal": { "version": "1.0.0", @@ -339,9 +336,9 @@ "dev": true }, "asn1.js": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", - "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "dev": true, "requires": { "bn.js": "4.11.8", @@ -364,6 +361,12 @@ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", @@ -399,6 +402,12 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "dev": true + }, "autoprefixer": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.2.tgz", @@ -1393,38 +1402,6 @@ "semver": "5.4.1" } }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.26.0", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.26.0" - } - }, "babel-preset-flow": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", @@ -1655,6 +1632,35 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.1", + "pascalcase": "0.1.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "base16": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", @@ -1668,9 +1674,9 @@ "dev": true }, "base64-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", - "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", + "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==", "dev": true }, "base64id": { @@ -1795,6 +1801,28 @@ } } }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "2.1.1", + "deep-equal": "1.0.1", + "dns-equal": "1.0.0", + "dns-txt": "2.0.2", + "multicast-dns": "6.2.3", + "multicast-dns-service-types": "1.1.0" + }, + "dependencies": { + "array-flatten": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + } + } + }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -1959,7 +1987,7 @@ "dev": true, "requires": { "bn.js": "4.11.8", - "randombytes": "2.0.5" + "randombytes": "2.0.6" } }, "browserify-sign": { @@ -1978,12 +2006,12 @@ } }, "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "dev": true, "requires": { - "pako": "0.2.9" + "pako": "1.0.6" } }, "browserslist": { @@ -2017,7 +2045,7 @@ "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, "requires": { - "base64-js": "1.2.1", + "base64-js": "1.2.3", "ieee754": "1.1.8", "isarray": "1.0.0" }, @@ -2030,6 +2058,12 @@ } } }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", @@ -2054,6 +2088,37 @@ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "dev": true }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "callback-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/callback-stream/-/callback-stream-1.1.0.tgz", @@ -2229,7 +2294,6 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.1.3", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -2296,6 +2360,92 @@ } } }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "classnames": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", @@ -2394,6 +2544,16 @@ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, "color": { "version": "0.11.4", "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", @@ -2455,18 +2615,6 @@ "delayed-stream": "1.0.0" } }, - "command-line-args": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-3.0.5.tgz", - "integrity": "sha1-W9StReeYPlwTRJGOQCgO4mk8WsA=", - "dev": true, - "requires": { - "array-back": "1.0.4", - "feature-detect-es6": "1.3.1", - "find-replace": "1.0.3", - "typical": "2.6.1" - } - }, "commander": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", @@ -2650,6 +2798,12 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, "core-js": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", @@ -2743,7 +2897,7 @@ "cipher-base": "1.0.4", "inherits": "2.0.3", "ripemd160": "2.0.1", - "sha.js": "2.4.9" + "sha.js": "2.4.10" } }, "create-hmac": { @@ -2757,7 +2911,7 @@ "inherits": "2.0.3", "ripemd160": "2.0.1", "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "sha.js": "2.4.10" } }, "create-react-class": { @@ -2817,8 +2971,8 @@ "inherits": "2.0.3", "pbkdf2": "3.0.14", "public-encrypt": "4.0.0", - "randombytes": "2.0.5", - "randomfill": "1.0.3" + "randombytes": "2.0.6", + "randomfill": "1.0.4" } }, "css-color-names": { @@ -3141,15 +3295,6 @@ "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", "dev": true }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "0.10.38" - } - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -3188,6 +3333,12 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, "deep-diff": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/deep-diff/-/deep-diff-0.3.8.tgz", @@ -3229,6 +3380,15 @@ "object-keys": "1.0.11" } }, + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "1.0.2" + } + }, "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", @@ -3319,7 +3479,32 @@ "requires": { "bn.js": "4.11.8", "miller-rabin": "4.0.1", - "randombytes": "2.0.5" + "randombytes": "2.0.6" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "1.1.5", + "safe-buffer": "5.1.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "1.1.1" } }, "doctrine": { @@ -3402,9 +3587,9 @@ "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" }, "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", "dev": true }, "domelementtype": { @@ -3748,81 +3933,11 @@ "is-symbol": "1.0.1" } }, - "es5-ext": { - "version": "0.10.38", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.38.tgz", - "integrity": "sha512-jCMyePo7AXbUESwbl8Qi01VSH2piY9s/a3rSU/5w/MlTIx8HPL1xn2InGN8ejt/xulcJgnTO7vqNtOAxzYd2Kg==", - "dev": true, - "requires": { - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" - } - }, "es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==" }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38", - "es6-symbol": "3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38", - "es6-iterator": "2.0.3", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38", - "es6-iterator": "2.0.3", - "es6-symbol": "3.1.1" - } - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -3835,18 +3950,6 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.2.0", - "estraverse": "4.2.0" - } - }, "eslint": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.2.0.tgz", @@ -4215,28 +4318,12 @@ } } }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true - }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.38" - } - }, "event-stream": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", @@ -4292,43 +4379,15 @@ "merge": "1.2.0" } }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dev": true, - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" - } - } - } - }, - "exenv": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", - "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=" - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha1-KueOhdmJQVhnCwPUe+wfA72Ru50=" + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { "is-posix-bracket": "0.1.1" @@ -4385,6 +4444,15 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, "external-editor": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.5.tgz", @@ -4490,15 +4558,6 @@ "ua-parser-js": "0.7.14" } }, - "feature-detect-es6": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/feature-detect-es6/-/feature-detect-es6-1.3.1.tgz", - "integrity": "sha1-+IhzavnLDJH1VmO/pHYuuW7nBH8=", - "dev": true, - "requires": { - "array-back": "1.0.4" - } - }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -4609,16 +4668,6 @@ "pkg-dir": "2.0.0" } }, - "find-replace": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz", - "integrity": "sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A=", - "dev": true, - "requires": { - "array-back": "1.0.4", - "test-value": "2.1.0" - } - }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -4696,6 +4745,15 @@ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", "dev": true }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, "fresh": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", @@ -4730,1083 +4788,179 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "fsevents": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", - "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, - "optional": true, "requires": { - "nan": "2.7.0", - "node-pre-gyp": "0.6.39" + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "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.0.3", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.0.3.tgz", + "integrity": "sha512-5EblxZUdioXi2JiMZ9FUbwYj40eQ9MFHyzFLBSPdlRl3SO8l7SLWuAnQ/at/1Wi4hjJwME/C5WpF2ZfAc8nGNw==", + "dev": true, + "requires": { + "define-properties": "1.1.2", + "function-bind": "1.1.1", + "is-callable": "1.1.3" + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "1.2.0", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.0", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "gaze": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "requires": { + "globule": "1.2.0" + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "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=", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" }, "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, "assert-plus": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true, + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "requires": { + "extend": "3.0.1", + "glob": "7.1.2", + "glob-parent": "3.1.0", + "is-negated-glob": "1.0.0", + "ordered-read-streams": "1.0.1", + "pumpify": "1.4.0", + "readable-stream": "2.3.3", + "remove-trailing-separator": "1.1.0", + "to-absolute-glob": "2.0.2", + "unique-stream": "2.2.1" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "requires": { - "tweetnacl": "0.14.5" + "is-glob": "3.1.0", + "path-dirname": "1.0.2" } }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "dev": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "dev": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "1.1.1", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "dev": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "bundled": true, - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "dev": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.39", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "1.0.2", - "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "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, - "requires": { - "wrappy": "1.0.2" - } - }, - "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.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "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.2.9", - "bundled": true, - "dev": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "semver": { - "version": "5.3.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 - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - } - } - }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "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.0.3", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.0.3.tgz", - "integrity": "sha512-5EblxZUdioXi2JiMZ9FUbwYj40eQ9MFHyzFLBSPdlRl3SO8l7SLWuAnQ/at/1Wi4hjJwME/C5WpF2ZfAc8nGNw==", - "dev": true, - "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.1", - "is-callable": "1.1.3" - } - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.0", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.2" - } - }, - "gaze": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", - "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", - "dev": true, - "requires": { - "globule": "1.2.0" - } - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "1.0.2" - } - }, - "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=", - "dev": true - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "dev": true - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - } - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } - }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "requires": { - "extend": "3.0.1", - "glob": "7.1.2", - "glob-parent": "3.1.0", - "is-negated-glob": "1.0.0", - "ordered-read-streams": "1.0.1", - "pumpify": "1.4.0", - "readable-stream": "2.3.3", - "remove-trailing-separator": "1.1.0", - "to-absolute-glob": "2.0.2", - "unique-stream": "2.2.1" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "2.1.1" + "is-extglob": "2.1.1" } } } @@ -6057,6 +5211,66 @@ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, "hash-base": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", @@ -6105,6 +5319,17 @@ "xtend": "4.0.1" } }, + "history": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/history/-/history-3.3.0.tgz", + "integrity": "sha1-/O3M6PEpdTcVRdc1RhAzV5ptrpw=", + "requires": { + "invariant": "2.2.2", + "loose-envify": "1.3.1", + "query-string": "4.3.4", + "warning": "3.0.0" + } + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -6261,9 +5486,9 @@ } }, "http-parser-js": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.9.tgz", - "integrity": "sha1-6hoE+2St/wJC6ZdPKX3Uw8rSceE=", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", + "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", "dev": true }, "http-proxy": { @@ -6327,9 +5552,9 @@ } }, "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, "i": { @@ -6390,6 +5615,16 @@ "integrity": "sha1-IAgH8Rqw9ycQ6khVQt4IgHX2jNI=", "dev": true }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -6492,10 +5727,19 @@ } } }, + "internal-ip": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", + "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "dev": true, + "requires": { + "meow": "3.7.0" + } + }, "interpret": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", - "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, "invariant": { @@ -6512,6 +5756,12 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, "ipaddr.js": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", @@ -6533,6 +5783,23 @@ "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", "dev": true }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "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 + } + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -6578,12 +5845,48 @@ "ci-info": "1.1.1" } }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "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 + } + } + }, "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "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 + } + } + }, "is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", @@ -6689,6 +5992,26 @@ "lodash.isfinite": "3.3.2" } }, + "is-odd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz", + "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=", + "dev": true, + "requires": { + "is-number": "3.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + } + } + }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -6834,6 +6157,12 @@ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz", "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk=" }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -8129,6 +7458,12 @@ "integrity": "sha1-HoBFQlABjbrUw/6USX1uZ7YmnHc=", "dev": true }, + "killable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.0.tgz", + "integrity": "sha1-2ouEvUfeU5WHj5XWTQLyRJ/gXms=", + "dev": true + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -8353,6 +7688,12 @@ "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", "dev": true }, + "lodash.endswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.endswith/-/lodash.endswith-4.2.1.tgz", + "integrity": "sha1-/tWawXOO0+I27dcGTsRWRIs3vAk=", + "dev": true + }, "lodash.filter": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz", @@ -8383,6 +7724,18 @@ "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", "dev": true }, + "lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, "lodash.map": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz", @@ -8431,6 +7784,12 @@ "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", "dev": true }, + "lodash.startswith": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.startswith/-/lodash.startswith-4.2.1.tgz", + "integrity": "sha1-xZjErc4YiiflMUVzHNxsDnF3YAw=", + "dev": true + }, "lodash.tail": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", @@ -8449,6 +7808,12 @@ "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=", "dev": true }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -8513,6 +7878,12 @@ "tmpl": "1.0.4" } }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -8525,6 +7896,15 @@ "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=", "dev": true }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, "material-ui": { "version": "1.0.0-beta.29", "resolved": "https://registry.npmjs.org/material-ui/-/material-ui-1.0.0-beta.29.tgz", @@ -8629,15 +8009,6 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, - "mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dev": true, - "requires": { - "mimic-fn": "1.1.0" - } - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -8775,6 +8146,27 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "mixin-object": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", @@ -8861,6 +8253,22 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "1.3.1", + "thunky": "1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", @@ -8873,6 +8281,45 @@ "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=", "dev": true }, + "nanomatch": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.7.tgz", + "integrity": "sha512-/5ldsnyurvEw7wNpxLFgjVvBLMta43niEYOy0CJ4ntcYSbx6bugRUTQeFb4BR/WanEL1o3aQgHuVLHQaB6tOqg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "is-odd": "1.0.0", + "kind-of": "5.1.0", + "object.pick": "1.3.0", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -8909,6 +8356,11 @@ "lower-case": "1.1.4" } }, + "no-scroll": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/no-scroll/-/no-scroll-2.1.0.tgz", + "integrity": "sha1-+GQ7PdtqO/lEMOX/MdJvIdCCppU=" + }, "node-fetch": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", @@ -8918,6 +8370,12 @@ "is-stream": "1.1.0" } }, + "node-forge": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.1.tgz", + "integrity": "sha1-naYR6giYL0uUIGs760zJZl8gwwA=", + "dev": true + }, "node-gyp": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", @@ -8954,30 +8412,30 @@ "dev": true }, "node-libs-browser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", - "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", "dev": true, "requires": { "assert": "1.4.1", - "browserify-zlib": "0.1.4", + "browserify-zlib": "0.2.0", "buffer": "4.9.1", "console-browserify": "1.1.0", "constants-browserify": "1.0.0", "crypto-browserify": "3.12.0", - "domain-browser": "1.1.7", + "domain-browser": "1.2.0", "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", + "https-browserify": "1.0.0", + "os-browserify": "0.3.0", "path-browserify": "0.0.0", "process": "0.11.10", "punycode": "1.4.1", "querystring-es3": "0.2.1", "readable-stream": "2.3.3", "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "0.10.31", - "timers-browserify": "2.0.4", + "stream-http": "2.8.0", + "string_decoder": "1.0.3", + "timers-browserify": "2.0.6", "tty-browserify": "0.0.0", "url": "0.11.0", "util": "0.10.3", @@ -8989,12 +8447,6 @@ "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true } } }, @@ -9382,15 +8834,6 @@ } } }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "2.0.1" - } - }, "npmlog": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", @@ -9447,6 +8890,65 @@ "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", "dev": true }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + } + } + }, "object-is": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", @@ -9465,6 +8967,23 @@ "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", "dev": true }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "object.assign": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", @@ -9498,6 +9017,23 @@ "is-extendable": "0.1.1" } }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "object.values": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.0.4.tgz", @@ -9665,9 +9201,9 @@ } }, "os-browserify": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, "os-homedir": { @@ -9712,12 +9248,6 @@ "object-assign": "4.1.0" } }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, "p-limit": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", @@ -9740,9 +9270,9 @@ "dev": true }, "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", "dev": true }, "param-case": { @@ -9760,7 +9290,7 @@ "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", "dev": true, "requires": { - "asn1.js": "4.9.2", + "asn1.js": "4.10.1", "browserify-aes": "1.1.1", "create-hash": "1.1.3", "evp_bytestokey": "1.0.3", @@ -9833,6 +9363,12 @@ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", "dev": true }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, "path": { "version": "0.12.7", "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", @@ -9877,12 +9413,6 @@ "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", "dev": true }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, "path-parse": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", @@ -9925,7 +9455,7 @@ "create-hmac": "1.1.6", "ripemd160": "2.0.1", "safe-buffer": "5.1.1", - "sha.js": "2.4.9" + "sha.js": "2.4.10" } }, "performance-now": { @@ -10001,6 +9531,12 @@ "is-number-like": "1.0.8" } }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, "postcss": { "version": "6.0.13", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz", @@ -12175,7 +11711,7 @@ "browserify-rsa": "4.0.1", "create-hash": "1.1.3", "parse-asn1": "5.1.0", - "randombytes": "2.0.5" + "randombytes": "2.0.6" } }, "pump": { @@ -12306,21 +11842,21 @@ } }, "randombytes": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", - "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", "dev": true, "requires": { "safe-buffer": "5.1.1" } }, "randomfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", - "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "dev": true, "requires": { - "randombytes": "2.0.5", + "randombytes": "2.0.6", "safe-buffer": "5.1.1" } }, @@ -12485,10 +12021,40 @@ "react-side-effect": "1.1.3" }, "dependencies": { - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + } + } + }, + "react-hot-loader": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-3.1.3.tgz", + "integrity": "sha512-d7nZf78irxoGN5PY4zd6CSgZiroOhvIWzRast3qwTn4sSnBwlt08kV8WMQ9mitmxEdlCTwZt+5ClrRSjxWguMQ==", + "dev": true, + "requires": { + "global": "4.3.2", + "react-deep-force-update": "2.1.1", + "react-proxy": "3.0.0-alpha.1", + "redbox-react": "1.5.0", + "source-map": "0.6.1" + }, + "dependencies": { + "react-deep-force-update": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-deep-force-update/-/react-deep-force-update-2.1.1.tgz", + "integrity": "sha1-jqQmPNZFWgULN0RbPwj9g52G6Qk=", + "dev": true + }, + "react-proxy": { + "version": "3.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-3.0.0-alpha.1.tgz", + "integrity": "sha1-RABCa8+oDKpnJMd1VpUxUgn6Swc=", + "dev": true, + "requires": { + "lodash": "4.17.4" + } } } }, @@ -12551,6 +12117,31 @@ "react-dom": "15.5.4" } }, + "react-minimalist-portal": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-minimalist-portal/-/react-minimalist-portal-2.1.1.tgz", + "integrity": "sha512-GWt21V++QydysDYPQC38dzbaME6QKlBd7QkFV7d7tYD/U7C8YKEYcPXLwN07mezKk9EzTB+UrckO4VYsxmcL9A==", + "requires": { + "prop-types": "15.6.0" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "prop-types": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", + "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + } + } + } + }, "react-popper": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-0.7.5.tgz", @@ -12597,6 +12188,36 @@ "prop-types": "15.5.10" } }, + "react-responsive-modal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-responsive-modal/-/react-responsive-modal-2.0.0.tgz", + "integrity": "sha512-eeFDyR+UFo1YrAQwJjqvTo1djBNb5cHIlICPODesWQOHdgji5kTelXbtQ8ZaQFG0J8uA7pXDq9jjbYvwJP9LcQ==", + "requires": { + "classnames": "2.2.5", + "no-scroll": "2.1.0", + "prop-types": "15.6.0", + "react-jss": "8.2.1", + "react-minimalist-portal": "2.1.1", + "react-transition-group": "2.2.1" + }, + "dependencies": { + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "prop-types": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", + "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", + "requires": { + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" + } + } + } + }, "react-router": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/react-router/-/react-router-3.2.0.tgz", @@ -13020,6 +12641,15 @@ "is-equal-shallow": "0.1.3" } }, + "regex-not": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.0.tgz", + "integrity": "sha1-Qvg+OXcWIt+CawKvF2Ul1qXxV/k=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1" + } + }, "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", @@ -13277,12 +12907,35 @@ "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, "resolve-from": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", "dev": true }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, "resp-modifier": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", @@ -13537,6 +13190,15 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", "dev": true }, + "selfsigned": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.2.tgz", + "integrity": "sha1-tESVgNmZKbZbEKSDiTAaZZIIh1g=", + "dev": true, + "requires": { + "node-forge": "0.7.1" + } + }, "semver": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", @@ -13675,12 +13337,33 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "set-getter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "dev": true, + "requires": { + "to-object-path": "0.3.0" + } + }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", "dev": true }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + } + }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -13693,9 +13376,9 @@ "dev": true }, "sha.js": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", - "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", + "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", "dev": true, "requires": { "inherits": "2.0.3", @@ -13804,6 +13487,124 @@ } } }, + "snapdragon": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", + "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.7", + "source-map-resolve": "0.5.1", + "use": "2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, "sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", @@ -13944,20 +13745,37 @@ } }, "sockjs": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", - "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", "dev": true, "requires": { "faye-websocket": "0.10.0", - "uuid": "2.0.3" + "uuid": "3.1.0" + } + }, + "sockjs-client": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.4.tgz", + "integrity": "sha1-W6vjhrd15M8U51IJEUUmVAFsixI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "eventsource": "0.1.6", + "faye-websocket": "0.11.1", + "inherits": "2.0.3", + "json3": "3.3.2", + "url-parse": "1.2.0" }, "dependencies": { - "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", - "dev": true + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": "0.7.0" + } } } }, @@ -13977,11 +13795,24 @@ "dev": true }, "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "dev": true, + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, "source-map-support": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", @@ -13999,6 +13830,12 @@ } } }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, "sourcemapped-stacktrace": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/sourcemapped-stacktrace/-/sourcemapped-stacktrace-1.1.7.tgz", @@ -14075,6 +13912,36 @@ "through": "2.3.8" } }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "split2": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", @@ -14113,18 +13980,96 @@ } } }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "dev": true - }, - "stackframe": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz", - "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=", - "dev": true - }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, + "stackframe": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-0.3.1.tgz", + "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, "statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", @@ -14160,9 +14105,9 @@ } }, "stream-http": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", - "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", + "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", "dev": true, "requires": { "builtin-status-codes": "3.0.0", @@ -14255,12 +14200,6 @@ "is-utf8": "0.2.1" } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, "strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", @@ -14449,16 +14388,6 @@ "require-main-filename": "1.0.1" } }, - "test-value": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", - "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=", - "dev": true, - "requires": { - "array-back": "1.0.4", - "typical": "2.6.1" - } - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -14543,10 +14472,22 @@ "xtend": "4.0.1" } }, + "thunky": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", + "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", + "dev": true + }, + "time-stamp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", + "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=", + "dev": true + }, "timers-browserify": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.4.tgz", - "integrity": "sha512-uZYhyU3EX8O7HQP+J9fTVYwsq90Vr68xPEFo7yrVImIxYvHgukBEgOB/SgGoorWVTzGM/3Z+wUNnboA4M8jWrg==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.6.tgz", + "integrity": "sha512-HQ3nbYRAowdVd0ckGFvmJPPCOH/CHleFN/Y0YQCX1DVaB7t+KFvisuyN09fuP8Jtp1CpfSh8O8bMkHbdbPe6Pw==", "dev": true, "requires": { "setimmediate": "1.0.5" @@ -14607,6 +14548,115 @@ "resolved": "https://registry.npmjs.org/to-no-case/-/to-no-case-1.0.2.tgz", "integrity": "sha1-xyKQcWTvaxeBMsjmmTAhLRtKoWo=" }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz", + "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "regex-not": "1.0.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + } + } + }, "to-space-case": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-space-case/-/to-space-case-1.0.0.tgz", @@ -14697,12 +14747,6 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, - "typical": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", - "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=", - "dev": true - }, "ua-parser-js": { "version": "0.7.14", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.14.tgz", @@ -14733,65 +14777,6 @@ "dev": true, "optional": true }, - "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", - "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", - "dev": true, - "requires": { - "source-map": "0.5.7", - "uglify-js": "2.8.29", - "webpack-sources": "1.0.1" - }, - "dependencies": { - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - } - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "dev": true - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "dev": true - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dev": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - } - } - }, "ultron": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", @@ -14815,6 +14800,32 @@ "integrity": "sha1-bmp6Gm6uuwHKPYsSrZaHJ56rpSQ=", "dev": true }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", @@ -14836,33 +14847,103 @@ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", "dev": true }, - "unique-stream": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", - "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "unique-stream": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", + "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", + "requires": { + "json-stable-stringify": "1.0.1", + "through2-filter": "2.0.0" + } + }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "upath": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.2.tgz", + "integrity": "sha512-fCmij7T5LnwUme3dbnVSejvOHHlARjB3ikJFwgZfz386pHmf/gueuTLRFU94FZEaeCLlbQrweiUU700gG41tUw==", + "dev": true, "requires": { - "json-stable-stringify": "1.0.1", - "through2-filter": "2.0.0" + "lodash.endswith": "4.2.1", + "lodash.isfunction": "3.0.9", + "lodash.isstring": "4.0.1", + "lodash.startswith": "4.2.1" } }, - "universalify": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", - "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, "upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", "dev": true }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -14917,6 +14998,100 @@ } } }, + "use": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", + "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "isobject": "3.0.1", + "lazy-cache": "2.0.2" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "dev": true, + "requires": { + "set-getter": "0.1.0" + } + } + } + }, "user-home": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", @@ -15076,15 +15251,15 @@ "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", "dev": true, "requires": { - "async": "2.5.0", + "async": "2.6.0", "chokidar": "1.7.0", "graceful-fs": "4.1.11" }, "dependencies": { "async": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", - "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "dev": true, "requires": { "lodash": "4.17.4" @@ -15108,39 +15283,48 @@ "dev": true }, "webpack": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", - "integrity": "sha512-fxxKXoicjdXNUMY7LIdY89tkJJJ0m1Oo8PQutZ5rLgWbV5QVKI15Cn7+/IHnRTd3vfKfiwBx6SBqlorAuNA8LA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.7.0.tgz", + "integrity": "sha512-MjAA0ZqO1ba7ZQJRnoCdbM56mmFpipOPUv/vQpwwfSI42p5PVDdoiuK2AL2FwFUVgT859Jr43bFZXRg/LNsqvg==", "dev": true, "requires": { "acorn": "5.1.2", "acorn-dynamic-import": "2.0.2", - "ajv": "5.2.3", - "ajv-keywords": "2.1.0", + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", "async": "2.6.0", "enhanced-resolve": "3.4.1", - "escope": "3.6.0", - "interpret": "1.0.4", + "interpret": "1.1.0", "json-loader": "0.5.4", "json5": "0.5.1", "loader-runner": "2.3.0", - "loader-utils": "1.1.0", + "loader-utils": "0.2.17", "memory-fs": "0.4.1", "mkdirp": "0.5.1", - "node-libs-browser": "2.0.0", + "node-libs-browser": "2.1.0", "source-map": "0.5.7", - "supports-color": "4.4.0", + "supports-color": "3.2.3", "tapable": "0.2.8", - "uglifyjs-webpack-plugin": "0.4.6", + "uglify-js": "2.8.29", "watchpack": "1.4.0", "webpack-sources": "1.0.1", - "yargs": "8.0.2" + "yargs": "6.4.0" }, "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", "dev": true }, "async": { @@ -15152,131 +15336,86 @@ "lodash": "4.17.4" } }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "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.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "strip-bom": "3.0.0" - } - }, - "os-locale": { + "cliui": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", "dev": true, "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" } }, - "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.3.0" - } + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", "dev": true, "requires": { - "load-json-file": "2.0.0", - "normalize-package-data": "2.4.0", - "path-type": "2.0.0" + "big.js": "3.2.0", + "emojis-list": "2.1.0", + "json5": "0.5.1", + "object-assign": "4.1.0" } }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "2.1.0", - "read-pkg": "2.0.0" - } + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "has-flag": "1.0.0" } }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", "dev": true }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", "dev": true - }, - "yargs": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", - "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", - "dev": true, - "requires": { - "camelcase": "4.1.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "7.0.0" - } - }, - "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", - "dev": true, - "requires": { - "camelcase": "4.1.0" - } } } }, @@ -15553,16 +15692,7 @@ "decamelize": "1.2.0", "window-size": "0.1.0" } - } - } - }, - "webpack-cyclic-dependency-checker": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/webpack-cyclic-dependency-checker/-/webpack-cyclic-dependency-checker-0.0.1.tgz", - "integrity": "sha1-MmIDHVPSolvbJrSzvFimwoKw5wk=", - "dev": true, - "requires": { - "command-line-args": "3.0.5" + } } }, "webpack-dev-middleware": { @@ -15586,30 +15716,164 @@ } }, "webpack-dev-server": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.4.5.tgz", - "integrity": "sha1-MThM6BE2vhCAtLTN4OubkOVO5s8=", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.1.tgz", + "integrity": "sha512-ombhu5KsO/85sVshIDTyQ5HF3xjZR3N0sf5Ao6h3vFwpNyzInEzA1GV3QPVjTMLTNckp8PjfG1PFGznzBwS5lg==", "dev": true, "requires": { "ansi-html": "0.0.7", - "chokidar": "1.7.0", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "2.0.2", "compression": "1.7.1", "connect-history-api-fallback": "1.3.0", + "debug": "3.1.0", + "del": "3.0.0", "express": "4.16.2", "html-entities": "1.2.1", "http-proxy-middleware": "0.17.4", - "opn": "4.0.2", + "import-local": "1.0.0", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.6.1", + "opn": "5.2.0", "portfinder": "1.0.13", + "selfsigned": "1.10.2", "serve-index": "1.8.0", - "sockjs": "0.3.18", - "sockjs-client": "1.1.2", + "sockjs": "0.3.19", + "sockjs-client": "1.1.4", "spdy": "3.4.7", "strip-ansi": "3.0.1", - "supports-color": "3.2.3", - "webpack-dev-middleware": "1.11.0", - "yargs": "6.4.0" + "supports-color": "5.2.0", + "webpack-dev-middleware": "1.12.2", + "yargs": "6.6.0" }, "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.5", + "normalize-path": "2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.0.tgz", + "integrity": "sha512-P4O8UQRdGiMLWSizsApmXVQDBS6KCt7dSexgLKBmH5Hr1CZq7vsnscFh8oR1sP1ab1Zj0uCHCEzZeV6SfUf3rA==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fill-range": "4.0.0", + "isobject": "3.0.1", + "repeat-element": "1.1.2", + "snapdragon": "0.8.1", + "snapdragon-node": "2.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.1" + } + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "chokidar": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.2.tgz", + "integrity": "sha512-l32Hw3wqB0L2kGVmSbK/a+xXLDrUEsc84pSgMkmwygHvD7ubRsP/vxxHa5BtB6oix1XLLVCHyYMsckRXxThmZw==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.0", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0", + "upath": "1.0.2" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "6.1.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "p-map": "1.2.0", + "pify": "3.0.0", + "rimraf": "2.6.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, "express": { "version": "4.16.2", "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", @@ -15646,15 +15910,45 @@ "type-is": "1.6.15", "utils-merge": "1.0.1", "vary": "1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "websocket-driver": "0.7.0" + "array-unique": "0.3.2", + "define-property": "1.0.0", + "expand-brackets": "2.1.4", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-number": "3.0.0", + "repeat-string": "1.6.1", + "to-regex-range": "2.1.1" } }, "finalhandler": { @@ -15670,6 +15964,17 @@ "parseurl": "1.3.2", "statuses": "1.3.1", "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, "fresh": { @@ -15678,10 +15983,52 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + } + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "glob": "7.1.2", + "object-assign": "4.1.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "http-errors": { @@ -15704,12 +16051,154 @@ } } }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "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=", + "dev": true, + "requires": { + "is-extglob": "2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "micromatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.5.tgz", + "integrity": "sha512-ykttrLPQrz1PUJcXjwsTUjGoPJ64StIGNE2lGVD1c9CuguJ+L7/navsE8IcDNndOoCMvYV0qc/exfVbMHkUhvA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.0", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.7", + "object.pick": "1.3.0", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + } + }, "mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", "dev": true }, + "opn": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.2.0.tgz", + "integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==", + "dev": true, + "requires": { + "is-wsl": "1.1.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", @@ -15735,6 +16224,17 @@ "on-finished": "2.3.0", "range-parser": "1.2.0", "statuses": "1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } } }, "serve-static": { @@ -15755,27 +16255,13 @@ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true }, - "sockjs-client": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.2.tgz", - "integrity": "sha1-8CEqhVDkyUaMjM6u79LjSTwDOtU=", - "dev": true, - "requires": { - "debug": "2.6.9", - "eventsource": "0.1.6", - "faye-websocket": "0.11.1", - "inherits": "2.0.3", - "json3": "3.3.2", - "url-parse": "1.2.0" - } - }, "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.2.0.tgz", + "integrity": "sha512-F39vS48la4YvTZUPVeTqsjsFNrvcMwrV3RLZINsmHo+7djCvuUzSIeXOnZ5hmjef4bajL1dNccN+tg5XAliO5Q==", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "3.0.0" } }, "utils-merge": { @@ -15783,6 +16269,48 @@ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "dev": true + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + } + } + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + } } } }, @@ -15837,7 +16365,7 @@ "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", "dev": true, "requires": { - "http-parser-js": "0.4.9", + "http-parser-js": "0.4.10", "websocket-extensions": "0.1.3" } }, diff --git a/package.json b/package.json index 2b811dbad0d2bfb3d31a99cdeefbe2917fdd74ee..ed54d41a1e3b210a9bc529ce4e7cf25bfe9d0611 100644 --- a/package.json +++ b/package.json @@ -6,15 +6,19 @@ "npm": ">=5" }, "scripts": { - "build": "npm run clean && webpack --config webpackConfigs/webpack.production.config.js", - "clean": "rimraf src/build/*", - "client": "NODE_ENV=development babel-node webpackConfigs/webPackServerApp.js", - "dev": "npm run client && concurrently --kill-others" + "build:prod": "NODE_ENV=production webpack --config ./webpack.prod.config.babel.js -p --progress", + "clean:prod": "npm run remove:prod && mkdir build", + "clean:dev": "npm run remove && mkdir bundle", + "prebuild:prod": "npm run clean:prod", + "prebuild:dev": "npm run clean:dev", + "remove:prod": "rimraf ./build", + "remove:dev": "rimraf ./bundle", + "start": "NODE_ENV=development webpack-dev-server --config ./webpack.dev.config.babel.js --inline" }, "author": "", "license": "MIT", "dependencies": { - "history": "^3.2.1", + "history": "^3.3.0", "localforage": "^1.5.6", "lodash": "^4.17.4", "material-ui": "^1.0.0-beta.29", @@ -36,7 +40,7 @@ "react-router-navigation-prompt": "^1.5.5", "react-sanfona": "^0.4.0", "react-select": "^1.0.0-rc.10", - "redux": "^3.6.0", + "redux": "^3.7.2", "redux-act": "^1.5.1", "redux-form": "^7.2.1", "redux-form-material-ui": "^4.3.3", @@ -102,7 +106,6 @@ "webpack": "^2.6.1", "webpack-bundle-analyzer": "2.8.2", "webpack-concat-plugin": "^1.4.1", - "webpack-cyclic-dependency-checker": "0.0.1", "webpack-dev-middleware": "1.11.0", "webpack-dev-server": "^2.9.4", "webpack-hot-middleware": "2.18.2", diff --git a/src/componets/AuthForm/AuthForm.component.js b/src/componets/AuthForm/AuthForm.component.js new file mode 100644 index 0000000000000000000000000000000000000000..78f1762bf7c7bc797af304fdba25e477d28abaa1 --- /dev/null +++ b/src/componets/AuthForm/AuthForm.component.js @@ -0,0 +1,3 @@ +import React from 'react'; + +const \ No newline at end of file diff --git a/src/componets/ChatListItem/ChatListItem.js b/src/componets/ChatListItem/ChatListItem.js index dabbea0f7863e18fccb636b2c3dd5614a3886239..b0425b62cb09edee3b45cfe13a6e493197bd93b7 100644 --- a/src/componets/ChatListItem/ChatListItem.js +++ b/src/componets/ChatListItem/ChatListItem.js @@ -58,7 +58,8 @@ class ChatListItem extends Component { - + /* remove variant caused error*/ + diff --git a/src/componets/PaperWithDrop/PaperWithDrop.js b/src/componets/PaperWithDrop/PaperWithDrop.js index dc409f2ff43eb98c01080ddd5e6d0c0c99d7b1c5..bbaae3179ee2e27c445f0780fed3d2744dd60250 100644 --- a/src/componets/PaperWithDrop/PaperWithDrop.js +++ b/src/componets/PaperWithDrop/PaperWithDrop.js @@ -36,7 +36,8 @@ class PaperWithDrop extends React.Component { { data } - diff --git a/src/containers/Auth/AuthForm/AuthForn.container.js b/src/containers/Auth/AuthForm/AuthForn.container.js new file mode 100644 index 0000000000000000000000000000000000000000..759844477c095f3afbc609ecbc407758f76c1773 --- /dev/null +++ b/src/containers/Auth/AuthForm/AuthForn.container.js @@ -0,0 +1,122 @@ +import React, { Component } from 'react'; +import { bindActionCreators } from 'redux'; +import { connect } from 'react-redux'; + + +class AuthForm extends Component { + render() { + return ( +
+
+
+
+
+
+ +
+
+
+
+
+
+
+

Phone Number

+
+

Please choose your country and enter your phone number.

+
+
+
+ + + +
+
+
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
+
+
+
+

Security Code

+
+

We've sent a security code to your phone.

+

You should receive it within 60 seconds.

+

+ Haven't received the code? + Haven't received the code? +

+
+
+
+ + +
+
+ +
+
+ + +
+ +
+
+
+
+
+
+
+
+
+

Your Name

+
+

How would you like to be called?

+
+
+
+ + +
+
+ + +
+
+ +
+
+
+
+
+
+
+
+
+
+ By signing in, you acknowledge that you have read and accept our Terms of + Service. +
+
+
+
+
+
+
+ + ) + } +} \ No newline at end of file diff --git a/src/containers/Auth/CompletionForm/CompletionAuthForm.container.js b/src/containers/Auth/CompletionForm/CompletionAuthForm.container.js new file mode 100644 index 0000000000000000000000000000000000000000..518bd44956c8ffc75c48502bb037379113100195 --- /dev/null +++ b/src/containers/Auth/CompletionForm/CompletionAuthForm.container.js @@ -0,0 +1,7 @@ +import React, { Component } from 'react'; +import { bindActionCreators } from 'redux'; +import { connect } from 'react-redux'; + +class CompletionAuthForm extends Component { + +} \ No newline at end of file diff --git a/src/containers/Auth/VerifyForm/VerifyAuthForm.container.js b/src/containers/Auth/VerifyForm/VerifyAuthForm.container.js new file mode 100644 index 0000000000000000000000000000000000000000..e1879d80245e442a1ee2352d62d8ee1f67692611 --- /dev/null +++ b/src/containers/Auth/VerifyForm/VerifyAuthForm.container.js @@ -0,0 +1,4 @@ +import React, { Component } from 'react'; +import { bindActionCreators } from 'redux'; +import { connect } from 'react-redux'; + diff --git a/src/core/bert/Converter.bert.js b/src/core/bert/Converter.bert.js index 88045fc920af6663aaa4e8f7da2b781a4440b150..a1026ab1cccebeb169c6ac336fed5e31bb8a57b6 100644 --- a/src/core/bert/Converter.bert.js +++ b/src/core/bert/Converter.bert.js @@ -1,4 +1,4 @@ -import { utf8_dec, utf8_toByteArray } from '../utils/utf8.util'; +import { utf8_dec, utf8_toByteArray } from '../utils/Utf8.util'; let sx; let ix; @@ -92,4 +92,21 @@ const convertToBert = (payload) => ( ); -export { enc as encode, dec as decode, convertToBert }; \ No newline at end of file +export { + enc as encode, + dec as decode, + convertToBert, + + + uc, + ar, + fl, + bin, + nop, + number, + tuple, + atom, + din, + run, + big +}; \ No newline at end of file diff --git a/src/core/bert/SignatureGenerator.bert.js b/src/core/bert/SignatureGenerator.bert.js index ca257e7bd01c828c7fa253997a076920591bcaec..434a3ec292fb797fa85534e69e12e48410d07a25 100644 --- a/src/core/bert/SignatureGenerator.bert.js +++ b/src/core/bert/SignatureGenerator.bert.js @@ -1,4 +1,17 @@ -import { utf8_dec, utf8_toByteArray } from '../utils/utf8.util'; +import { utf8_dec, utf8_toByteArray } from '../utils/Utf8.util'; +import { + uc, + ar, + fl, + bin, + nop, + number, + tuple, + atom, + din, + run, + big +} from './Converter.bert'; function clean(r) { for(var k in r) if(!r[k]) delete r[k]; return r; } function check_len(x) { try { return (eval('len'+utf8_dec(x.v[0].v))() == x.v.length) ? true : false } diff --git a/src/core/configs/MqttInit.config.js b/src/core/configs/MqttInit.config.js index 9c8421eea5791041914ac41e67ff7dc9efa2c1d3..abc5e89d1744fcf076f90bbc262adbdf7867ecac 100644 --- a/src/core/configs/MqttInit.config.js +++ b/src/core/configs/MqttInit.config.js @@ -7,13 +7,13 @@ export default ({ queueQoSZero: true, resubscribe: true, cleanSession: true, - provider: 'mqtt', + supplier: 'mqtt', protocol: 'ws', timeout: 2, reconnectPeriod: 3000, will : { - topic: 'version/1', - payload:'version/1', + topic: 'version/2', + payload:'version/2', qos: '2' } }); diff --git a/src/core/loggers/SentryError.logger b/src/core/loggers/SentryError.logger.js similarity index 100% rename from src/core/loggers/SentryError.logger rename to src/core/loggers/SentryError.logger.js diff --git a/src/core/messages/Converter.message.js b/src/core/messages/Converter.message.js deleted file mode 100644 index 25bbee3149c62747843312017077e73e4f0ccdfc..0000000000000000000000000000000000000000 --- a/src/core/messages/Converter.message.js +++ /dev/null @@ -1,12 +0,0 @@ -import { decode, convertToBert } from '../bert/Converter.bert'; - -const formatter = (packet = {}) => { - const bert = convertToBert(packet.payload); - try { - return decode(bert); - } catch(e) { - //notify store, user, server - } -}; - -export { formatter }; \ No newline at end of file diff --git a/src/core/middlewares/ErrorHandler.middleware.js b/src/core/middlewares/ErrorHandler.middleware.js index 6afbff2494160ac9511ad6602b6497087d31a1ae..7bad6787d5dac433954c6d17ac0e4edc1236c404 100644 --- a/src/core/middlewares/ErrorHandler.middleware.js +++ b/src/core/middlewares/ErrorHandler.middleware.js @@ -15,6 +15,4 @@ const crashReporter = store => next => action => { } }; -/* -then call func(Raven); - */ \ No newline at end of file +export { crashReporter }; \ No newline at end of file diff --git a/src/core/middlewares/index.js b/src/core/middlewares/index.js new file mode 100644 index 0000000000000000000000000000000000000000..a7ec6b2a385bbc1ec55903acd6f5c7c19ffeb7f6 --- /dev/null +++ b/src/core/middlewares/index.js @@ -0,0 +1,3 @@ +import { crashReporter } from './ErrorHandler.middleware'; + +export { crashReporter }; \ No newline at end of file diff --git a/src/core/protocols/Index.protocol.js b/src/core/protocols/Index.protocol.js index 75334d45babdf9c7e1fe6db9fbbfca4d922a96f2..6227ef44442b30c9d5373ae6a115db960a2995e0 100644 --- a/src/core/protocols/Index.protocol.js +++ b/src/core/protocols/Index.protocol.js @@ -1,5 +1,7 @@ import * as protocolsName from '../configs/ProtocolHandlers.config'; + import { + authUtils, profileUtils, personUtils, rosterUtils, @@ -21,35 +23,32 @@ const check = node => { const factory = (name = '', utils = {}, eventFormer = null, ...args) => { - let response; const delimiter = '/'; const eventFormerCopy = eventFormer; const prepareEvent = (pipe = []) => { if(!Array.isArray(pipe)) { return; } - return pipe.join(delimiter) + return pipe.join(delimiter).toUpperCase(); }; if(!eventFormer) { eventFormer = (res = []) => { - response = utils.decode(res); return prepareEvent([ name, - response.status + res.status ]); } } else { eventFormer = (res = []) => { - response = utils.decode(res); - prepareEvent(eventFormerCopy(response)); + return prepareEvent(eventFormerCopy(res)); } } + console.log(name,) return { name, ...utils, eventFormer, - response, ...args } }; diff --git a/src/core/protocols/Topic.protocol.js b/src/core/protocols/Topic.protocol.js index 3d70b2f1a86037f4cefbef34f6990dff05a58ff6..ad93347c2a7da9512c91e7534ed4debce8e04409 100644 --- a/src/core/protocols/Topic.protocol.js +++ b/src/core/protocols/Topic.protocol.js @@ -6,7 +6,7 @@ const generateNumber = () => ( Math.floor((Math.random() * config.NODES) + 1) ); -const topic = (prefix, ...args) => { +const buildTopic = (prefix = 'events', ...args) => { //TODO: ?? let pipe = [ prefix, ...args, @@ -18,4 +18,4 @@ const topic = (prefix, ...args) => { return pipe.join('/') + '/'; }; -export { topic }; \ No newline at end of file +export { buildTopic }; \ No newline at end of file diff --git a/src/core/protocols/Validator.protocol.js b/src/core/protocols/Validator.protocol.js index b5a56e5834acb7f95e84057a3ee1dff2413a8711..2e50d4649b162f344bb0bc3d9f8ce95fd8154d82 100644 --- a/src/core/protocols/Validator.protocol.js +++ b/src/core/protocols/Validator.protocol.js @@ -3,18 +3,20 @@ import * as protocols from './Index.protocol'; const isCorrespond = (x, num, name) => ( x == undefined ? false - : (x.t == 106 ? false : (x.v.length === num && x.v[0].v === name)) + : (x.t == 106 ? false : (x.v.length === num && x.v[0].v.toLowerCase() === name)) ); const validate = (res) => { - for(let protocol in protocols) { + for(let protocol in protocols) { let node = protocols[protocol](); - if(isCorrespond(res, node.len(), node.name)) { - return { - event: node.eventFormer(res), - response: node.response - }; + if(isCorrespond(res, node.len(), node.name)) { + const response = node.decode(res); + const event = node.eventFormer(response); + return { + response, + event + } } } return; diff --git a/src/core/protocols/index.js b/src/core/protocols/index.js index e168f8dda37b6affe8cb1dcbcdb13d09b14f7551..6d6e3eafc9e25eb305a21a1cac5715c31b5a68b2 100644 --- a/src/core/protocols/index.js +++ b/src/core/protocols/index.js @@ -1,3 +1,3 @@ -import { topic } from './Topic.protocol'; +import { buildTopic } from './Topic.protocol'; -export { topic }; \ No newline at end of file +export { buildTopic }; \ No newline at end of file diff --git a/src/core/resource/Auth.resource.js b/src/core/resource/Auth.resource.js deleted file mode 100644 index 2192b2c46195c0e08375972b28a5cded131bc2b8..0000000000000000000000000000000000000000 --- a/src/core/resource/Auth.resource.js +++ /dev/null @@ -1,10 +0,0 @@ -const LOGIN = 'LOGIN'; -const LOGGED = 'LOGGED'; -const REGISTER = 'REGISTER'; -const REGISTERED = 'REGISTER'; - -const login = (time, token) => ({ - type: LOGIN, - token -}); - diff --git a/src/core/resource/Combined.action.js b/src/core/resource/Combined.action.js new file mode 100644 index 0000000000000000000000000000000000000000..fc2c9de8f49b4f7e50f86484ef337a9652f42ab7 --- /dev/null +++ b/src/core/resource/Combined.action.js @@ -0,0 +1,10 @@ +import { authInitActions } from './auth/init'; +import { authVerifyActions } from './auth/verification'; +import { supplierActions } from './supplier'; + +export const combinedActions = { + ...authInitActions, + ...authVerifyActions, + ...supplierActions +}; + diff --git a/src/core/resource/Init.resource.js b/src/core/resource/Init.resource.js deleted file mode 100644 index 4176d3b49cf4b85ef92d7c09a91c5aee7c902de1..0000000000000000000000000000000000000000 --- a/src/core/resource/Init.resource.js +++ /dev/null @@ -1,30 +0,0 @@ -export const CONNECTING = 'CONNECTING'; -export const CONNECTED = 'CONNECTED'; -export const CLOSE = 'CLOSE'; -export const ERROR = 'ERROR'; - -export const connecting = (time) =>({ - type: CONNECTING, - time -}); - -export const connected = () => ({ - type: CONNECTED -}); - -export const close = (time) =>({ - type: CLOSE -}); - -export const provider = (state = {}, action) => { - switch (action.type) { - case CONNECTING: - return { - updated: action.time, - ...state - }; - break; - default: - return state; - } -}; \ No newline at end of file diff --git a/src/core/resource/Messages.resource.js b/src/core/resource/Messages.resource.js deleted file mode 100644 index 6d0ed23656bee9c454ee2c52242bfa4097f02326..0000000000000000000000000000000000000000 --- a/src/core/resource/Messages.resource.js +++ /dev/null @@ -1,64 +0,0 @@ -export const MESSAGE_SEND = 'MESSAGE_SEND'; -export const MESSAGE_DELIVERED = 'MESSAGE_DELIVERED'; -export const MESSAGE_RECEIVE = 'MESSAGE_RECEIVE'; -export const ERROR = "ERROR"; - - -const send = (topic, message, status, packet) =>({ - type: MESSAGE_SEND, - topic, - message, - status -}); - -const dilivered = (topic, message, time) => ({ - type: MESSAGE_DELIVERED, - topic, - message, - time -}); - -const receive = (topic, message, status, time) => ({ - type: MESSAGE_RECEIVE, - topic, - message -}); - -const messageSendSelector = ({message, status, sentTime, id}) => ({ - [id]: { - content, - status, - sentTime - } -}); - -const messageDelivered = ({ id, status }) => ({ - [id]: { - status - } -}); - -const messages = (state = {}, action) => { - switch(action.type) { - case MESSAGE_SEND: - return [ - ...state, - ...messageSendSelector(action.payload) - ]; - break; - case MESSAGE_DELIVERED: - return [ - ...state, - ...messageDelivered(action.payload) - ]; - default: - return state; - } -}; - -export { - send, - receive, - dilivered, - messages -} \ No newline at end of file diff --git a/src/core/resource/Registry.resource.js b/src/core/resource/Registry.resource.js deleted file mode 100644 index fabfa3c804073978a9ff26bcab5de0f012e6baa5..0000000000000000000000000000000000000000 --- a/src/core/resource/Registry.resource.js +++ /dev/null @@ -1,27 +0,0 @@ -import { createAction, createReducer } from 'redux-act'; - -class ReducerRegistry { - constructor() { - this._emitChange = null; - this._reducers = {}; - } - - getReducers() { - return { ...this._reducers }; - } - - register(name, reducer) { - this._reducers = { ...this._reducers, [name]: reducer }; - if (this._emitChange) { - this._emitChange(this.getReducers()); - } - } - - setChangeListener(listener) { - this._emitChange = listener; - } -} - -const reducerRegistry = new ReducerRegistry(); - -export { reducerRegistry }; \ No newline at end of file diff --git a/src/core/resource/Root.reducer.js b/src/core/resource/Root.reducer.js new file mode 100644 index 0000000000000000000000000000000000000000..c566f795b7ec96564726088b54bcaceb02ab87f8 --- /dev/null +++ b/src/core/resource/Root.reducer.js @@ -0,0 +1,14 @@ +import { combineReducers } from 'redux'; +import { supplier } from './supplier/data/Supplier.reducer'; +import { authInitReducers } from './auth/init'; +import { profile } from './profile' + +const rootReducer = combineReducers({ + supplier, + user: combineReducers({ + profile, + auth: authInitReducers.credentials + }) +}); + +export { rootReducer }; \ No newline at end of file diff --git a/src/core/resource/Root.saga.js b/src/core/resource/Root.saga.js new file mode 100644 index 0000000000000000000000000000000000000000..98804f1fe431f29ca466a219f6aa18198a687859 --- /dev/null +++ b/src/core/resource/Root.saga.js @@ -0,0 +1,14 @@ +import { fork } from 'redux-saga/effects'; +import { authInitSagas } from './auth/init'; +import { authVerifySagas } from './auth/verification'; +import { supplierSagas } from './supplier'; + +let GeneratorFunction = (function*(){}).constructor; + +function * rootSaga() { + yield fork(supplierSagas.connectInitiator); + yield fork(authInitSagas.sentCode); + yield fork(authVerifySagas.verifyCode); +} + +export { rootSaga }; diff --git a/src/core/resource/Users.resource.js b/src/core/resource/Users.resource.js deleted file mode 100644 index 7f85f659cc31df393d6a07f8368c4a2c46842ba3..0000000000000000000000000000000000000000 --- a/src/core/resource/Users.resource.js +++ /dev/null @@ -1,44 +0,0 @@ -const SMS_SENT = 'io/ok/sms_sent'; -const LOGIN = 'io/ok2/login'; -const LOGOUT = 'io/ok/logout'; - -const sentSMS = (data) => { - return { - type: SMS_SENT, - ...data - } -}; - -const login = (data) => { - return { - type: LOGIN, - ...data - } -}; - -const initialState = { - auth: { - token: '', - readyState: false, - status: 'uncomplete' - }, -}; -const user = (state = initialState, action) => { - switch(action.type) { - case SMS_SENT: - return { - ...state, - status: action.status, - ...action.payload - }; - case LOGIN: - return { - ...state, - readyState: !action.readyState - }; - default: - return state; - } -}; - - diff --git a/src/core/resource/auth/completion/index.js b/src/core/resource/auth/completion/index.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/core/resource/auth/init/api/InquiryCredentials.api.js b/src/core/resource/auth/init/api/InquiryCredentials.api.js new file mode 100644 index 0000000000000000000000000000000000000000..35e44d2220d30b0770ce8e1afb9252397ee5c3bf --- /dev/null +++ b/src/core/resource/auth/init/api/InquiryCredentials.api.js @@ -0,0 +1,30 @@ +import { authUtils } from 'Core/bert/SignatureGenerator.bert.js'; +import { setupClientEntry, setupDevEntry } from 'Core/store'; + +const signature = (...args) => { + +}; + +const codeProcessConverter = ({ + type = '', + token = '', + phone = '', + devKey = setupDevEntry(), + clientId = setupClientEntry(), + code = '' + }) => { + let request = { + type, + token, + phone, + "client_id": clientId, + "dev_key": devKey + }; + if(code) request.code = code; + + return authUtils.encode(request); +}; + +export { + codeProcessConverter, +} diff --git a/src/core/resource/auth/init/data/Credentials.reducer.js b/src/core/resource/auth/init/data/Credentials.reducer.js new file mode 100644 index 0000000000000000000000000000000000000000..b61b2b7362a2b0d1104037f4a1b1d124e8d4590f --- /dev/null +++ b/src/core/resource/auth/init/data/Credentials.reducer.js @@ -0,0 +1,16 @@ +import * as actionsType from './InquiryCredentials.constant'; + +//const initialState = { +// isLoading: false, +// isError: false, +// isSuccess: false +//}; + +const credentials = (state = {}, action) => { + switch (action.type) { + default: + return state; + } +}; + +export { credentials }; \ No newline at end of file diff --git a/src/core/resource/auth/init/data/Credentials.selector.js b/src/core/resource/auth/init/data/Credentials.selector.js new file mode 100644 index 0000000000000000000000000000000000000000..f969b804b1c6f2e80e3babed8cb989a991367972 --- /dev/null +++ b/src/core/resource/auth/init/data/Credentials.selector.js @@ -0,0 +1,5 @@ +const getCredentials = (state) => { + return state.profile.credentials; +}; + +export { getCredentials }; \ No newline at end of file diff --git a/src/core/resource/auth/init/data/InquiryCredentials.action.js b/src/core/resource/auth/init/data/InquiryCredentials.action.js new file mode 100644 index 0000000000000000000000000000000000000000..94c3ac3c4b6c4c4ee5787f7efba36513d9b805e7 --- /dev/null +++ b/src/core/resource/auth/init/data/InquiryCredentials.action.js @@ -0,0 +1,41 @@ +import * as actionsType from './InquiryCredentials.constant'; + +const codeRequest = (phone) => ({ + type: actionsType.CODE_REQUEST, + phone +}); + +const codeRequestSuccess = (data) => { + return { + type: actionsType.CODE_REQUEST_SUCCESS, + data + }; +}; + +const codeResponseSuccess = () => ({ + type: actionsType.CODE_RESPONSE_SUCCESS +}); + +const codeRequestError = (error) => { + return { + type: actionsType.CODE_REQUEST_ERROR, + error + } +}; + +const codeResponseError = (error) => { + return { + type: actionsType.CODE_RESPONSE_ERROR, + error + } +}; + + +export { + codeRequest, + codeRequestError, + codeRequestSuccess, + + codeResponseSuccess, + codeResponseError +} \ No newline at end of file diff --git a/src/core/resource/auth/init/data/InquiryCredentials.constant.js b/src/core/resource/auth/init/data/InquiryCredentials.constant.js new file mode 100644 index 0000000000000000000000000000000000000000..0ed162218a06515c3a934f7439621993f6dca447 --- /dev/null +++ b/src/core/resource/auth/init/data/InquiryCredentials.constant.js @@ -0,0 +1,8 @@ +export const CODE_REQUEST = 'CODE_REQUEST'; +export const CODE_REQUEST_SUCCESS = 'CODE_REQUEST_SUCCESS'; +export const CODE_REQUEST_ERROR = 'CODE_REQUEST_ERROR'; + +export const CODE_RESPONSE_SUCCESS = 'CODE_RESPONSE_SUCCESS'; +export const CODE_RESPONSE_ERROR = 'CODE_RESPONSE_ERROR'; + +export const SERVER_CODE_SENT = 'IO/OK/SENT_SMS'; diff --git a/src/core/resource/auth/init/index.js b/src/core/resource/auth/init/index.js new file mode 100644 index 0000000000000000000000000000000000000000..fe8b5be86cec7960f9dd2bd59ad583c194532312 --- /dev/null +++ b/src/core/resource/auth/init/index.js @@ -0,0 +1,15 @@ +import { credentials } from './data/Credentials.reducer'; +import * as authInitSagas from './sagas/InquiryCredentials.saga'; +import * as authInitActions from './data/InquiryCredentials.action'; +import * as authInitApi from './api/InquiryCredentials.api'; + +const authInitReducers = { + credentials +}; + +export { + authInitApi, + authInitSagas, + authInitActions, + authInitReducers +} \ No newline at end of file diff --git a/src/core/resource/auth/init/sagas/InquiryCredentials.saga.js b/src/core/resource/auth/init/sagas/InquiryCredentials.saga.js new file mode 100644 index 0000000000000000000000000000000000000000..f579a84001a187283df165e77980f27ed26084bf --- /dev/null +++ b/src/core/resource/auth/init/sagas/InquiryCredentials.saga.js @@ -0,0 +1,43 @@ +import { fork, call, put, takeEvery, take, takeLatest } from 'redux-saga/effects'; +import { getProvider } from 'Core/services/MqttClient.service'; +import { codeProcessConverter } from '../api/InquiryCredentials.api'; +import { binPayload } from 'Tools/ErlangDebugger.tools'; +//import { logout } from './Logout.saga'; +import * as actions from '../data/InquiryCredentials.action'; +import * as actionsType from '../data/InquiryCredentials.constant'; +import * as selectors from '../data/Credentials.selector'; + +//worker +function* sentCodeHandler(action) { + const { phone } = action; + + const client = getProvider(); + if(!client.connected) { + return; + } + try { + const request = { + type: "reg", + phone + }; + const encoded = codeProcessConverter(request); + const data = yield call(client.onPublish, encoded); + yield put(actions.codeRequestSuccess()); + return data + } catch(e) { + console.log(e); + } +} + + +//watchers +function* sentCode(params) { + while(true) { + const action = yield take(actionsType.CODE_REQUEST); + const token = yield call(sentCodeHandler, action); + const data = yield take(actionsType.SERVER_CODE_SENT); + yield put(actions.codeResponseSuccess(data)) + } +} + +export { sentCode }; \ No newline at end of file diff --git a/src/core/resource/auth/login/index.js b/src/core/resource/auth/login/index.js new file mode 100644 index 0000000000000000000000000000000000000000..c71d9f18f516cdda97e6860377d1c06521ebbb5f --- /dev/null +++ b/src/core/resource/auth/login/index.js @@ -0,0 +1,3 @@ +import { login } from './sagas/Login.saga'; + +export { login }; \ No newline at end of file diff --git a/src/core/resource/auth/login/sagas/Login.saga.js b/src/core/resource/auth/login/sagas/Login.saga.js new file mode 100644 index 0000000000000000000000000000000000000000..be2e0f61d24aba2116e2475ea6941f219c286644 --- /dev/null +++ b/src/core/resource/auth/login/sagas/Login.saga.js @@ -0,0 +1,20 @@ +import { take, call } from 'redux-saga/effects'; +import { getSupplier } from 'Core/services'; +import { setupClientEntry } from 'Core/store'; +import { supplierActions } from 'Core/resource/supplier'; + +function * login() { + const supplier = getSupplier(); + yield call(supplier.close); + if(!supplier.connected) { + yield put( + supplierActions.connecting, + { + clientId: setupClientEntry('emqttd_'), + cleanSession: false + } + ) + } +} + +export { login }; \ No newline at end of file diff --git a/src/core/resource/auth/logout/index.js b/src/core/resource/auth/logout/index.js new file mode 100644 index 0000000000000000000000000000000000000000..7e015ab0a87109c7730c84610c774a20e72293f7 --- /dev/null +++ b/src/core/resource/auth/logout/index.js @@ -0,0 +1,9 @@ +import { logout } from './sagas/Logout.saga'; + +const sagas = { + logout +}; + +export { + sagas +} \ No newline at end of file diff --git a/src/core/resource/auth/logout/sagas/Logout.saga.js b/src/core/resource/auth/logout/sagas/Logout.saga.js new file mode 100644 index 0000000000000000000000000000000000000000..884431a9ae2c14a26aff282a8e05071ea4608066 --- /dev/null +++ b/src/core/resource/auth/logout/sagas/Logout.saga.js @@ -0,0 +1,7 @@ +import { take, put } from 'redux-saga/effects'; + +function * logout() { + +} + +export { logout }; \ No newline at end of file diff --git a/src/core/resource/auth/verification/data/Credentials.selector.js b/src/core/resource/auth/verification/data/Credentials.selector.js new file mode 100644 index 0000000000000000000000000000000000000000..f6ede1c6266a74ff61045f9d58e35a688102fa00 --- /dev/null +++ b/src/core/resource/auth/verification/data/Credentials.selector.js @@ -0,0 +1,7 @@ +const getCredentials = (state) => { + return state.profile.credentials; +}; + +export { + getCredentials +} \ No newline at end of file diff --git a/src/core/resource/auth/verification/data/Verification.constant.js b/src/core/resource/auth/verification/data/Verification.constant.js new file mode 100644 index 0000000000000000000000000000000000000000..a206d15fdea460ef4dfe3d843a729fd080e150f7 --- /dev/null +++ b/src/core/resource/auth/verification/data/Verification.constant.js @@ -0,0 +1,5 @@ +export const VERIFY_CODE = 'VERIFY_CODE'; +export const VERIFY_CODE_SUCCESS = 'VERIFY_CODE_SUCCESS'; +export const VERIFY_CODE_ERROR = 'VERIFY_CODE_ERROR'; + +export const SERVER_CODE_VERFIY = 'IO/OK2/LOGIN'; \ No newline at end of file diff --git a/src/core/resource/auth/verification/data/VerifyCredentials.action.js b/src/core/resource/auth/verification/data/VerifyCredentials.action.js new file mode 100644 index 0000000000000000000000000000000000000000..5a8bd02372d5691762affcd13e1ba5ac0bdf1124 --- /dev/null +++ b/src/core/resource/auth/verification/data/VerifyCredentials.action.js @@ -0,0 +1,21 @@ +import * as actionsType from './Verification.constant'; + +const verifyCode = (...data) => ({ + type: actionsType.VERIFY_CODE, + data +}); + +const verifyCodeSuccess = ({ client = '', token = ''}) => ({ + type: actionsType.VERIFY_CODE_SUCCESS +}); + +const verifyCodeError = (error) => ({ + type: actionsType.VERIFY_CODE_ERROR, + error +}); + +export { + verifyCode, + verifyCodeError, + verifyCodeSuccess +} \ No newline at end of file diff --git a/src/core/resource/auth/verification/index.js b/src/core/resource/auth/verification/index.js new file mode 100644 index 0000000000000000000000000000000000000000..92ab1ed6c8b72db53ae65fac81994a2915776f6e --- /dev/null +++ b/src/core/resource/auth/verification/index.js @@ -0,0 +1,7 @@ +import * as authVerifySagas from './sagas/VerifyCredentials.saga'; +import * as authVerifyActions from './data/VerifyCredentials.action' + +export { + authVerifySagas, + authVerifyActions +} \ No newline at end of file diff --git a/src/core/resource/auth/verification/sagas/VerifyCredentials.saga.js b/src/core/resource/auth/verification/sagas/VerifyCredentials.saga.js new file mode 100644 index 0000000000000000000000000000000000000000..3702356f4a7b3a7ec173272dae5e148600c95d44 --- /dev/null +++ b/src/core/resource/auth/verification/sagas/VerifyCredentials.saga.js @@ -0,0 +1,51 @@ +import { all, fork, call, put, takeEvery, take, takeLatest } from 'redux-saga/effects'; +import { getProvider } from 'Core/services'; +import { authInitApi as api } from '../../init'; +import { binPayload } from 'Tools/ErlangDebugger.tools'; +import { sagas as logoutSagas } from '../../logout'; +import * as actions from '../data/VerifyCredentials.action'; +import * as actionsType from '../data/Verification.constant'; +import * as selectors from '../data/Credentials.selector'; +import { login } from '../../login'; + + +function * verifyCodeHandler(data, client) { + const request = { + type: 'verify', + //token: + ...data + }; + + if(!client.connected) { + return; + } + + try { + const encoded = api.codeProcessConverter(request); + yield call(client.send, encoded); + + } catch (e) { + yield put(actions.verifyCodeError()) + } +} + + +function * verifyCode() { + while(true) { + const data = yield take(actionsType.VERIFY_CODE); + const { client, token } = yield select(selectors.getCredentials); + if(client && token) { + //call specific action and redirects to dashboard + return; + } + yield call(verifyCodeHandler, data, client); + const response = yield take(actionsType.SERVER_CODE_VERFIY); + yield put(actions.verifyCodeSuccess(response)); + yield all({ + reconnect: login, + + }); + } +} + +export { verifyCode }; \ No newline at end of file diff --git a/src/core/resource/index.js b/src/core/resource/index.js index 494f08b5abf6ff5cbe54ba86a665316c8d18a462..02b48fabc6772df923542c5b2a8f7d591244ee4a 100644 --- a/src/core/resource/index.js +++ b/src/core/resource/index.js @@ -1,12 +1,9 @@ -import { combineReducers } from 'redux'; -import { provider } from './Init.resource'; -import { messages } from './Messages.resource'; - - -const rootReducer = combineReducers({ - provider, - messages -}); - -export { rootReducer }; - +import { rootSaga } from './Root.saga'; +import { rootReducer } from './Root.reducer'; +import { combinedActions } from './Combined.action' + +export { + combinedActions, + rootReducer, + rootSaga +} \ No newline at end of file diff --git a/src/core/resource/messages/data/Messages.action.js b/src/core/resource/messages/data/Messages.action.js new file mode 100644 index 0000000000000000000000000000000000000000..f98164182b43e0a3d387ba62b3deaaf9f71763ca --- /dev/null +++ b/src/core/resource/messages/data/Messages.action.js @@ -0,0 +1,27 @@ +import * as actionTypes from './Messages.contant'; + +const send = (topic, message, status, packet) =>({ + type: actionTypes.MESSAGE_SEND, + topic, + message, + status +}); + +const delivered = (topic, message, time) => ({ + type: actionTypes.MESSAGE_DELIVERED, + topic, + message, + time +}); + +const receive = (topic, message, status, time) => ({ + type: actionTypes.MESSAGE_RECEIVE, + topic, + message +}); + +export { + receive, + delivered, + send +} diff --git a/src/core/resource/messages/data/Messages.contant.js b/src/core/resource/messages/data/Messages.contant.js new file mode 100644 index 0000000000000000000000000000000000000000..556b89f5f5862b24fbef386be9cdb86073eb4984 --- /dev/null +++ b/src/core/resource/messages/data/Messages.contant.js @@ -0,0 +1,4 @@ +export const MESSAGE_SEND = 'MESSAGE_SEND'; +export const MESSAGE_DELIVERED = 'MESSAGE_DELIVERED'; +export const MESSAGE_RECEIVE = 'MESSAGE_RECEIVE'; +export const ERROR = "ERROR"; \ No newline at end of file diff --git a/src/core/resource/messages/data/Messages.reducer.js b/src/core/resource/messages/data/Messages.reducer.js new file mode 100644 index 0000000000000000000000000000000000000000..c1bd533cb8ce9991fe1e0c6463db4834f4857d7e --- /dev/null +++ b/src/core/resource/messages/data/Messages.reducer.js @@ -0,0 +1,23 @@ +import * as actionTypes from './Messages.contant'; + +const messages = (state = {}, action) => { + switch(action.type) { + case actionTypes.MESSAGE_SEND: + return [ + ...state + //...messageSendSelector(action.payload) + ]; + break; + case actionTypes.MESSAGE_DELIVERED: + return [ + ...state + //...messageDelivered(action.payload) + ]; + default: + return state; + } +}; + +export { + messages +} \ No newline at end of file diff --git a/src/core/resource/messages/data/Messages.selector.js b/src/core/resource/messages/data/Messages.selector.js new file mode 100644 index 0000000000000000000000000000000000000000..b77f06a8ea9753e8a861ee87c4249c6eceed25e2 --- /dev/null +++ b/src/core/resource/messages/data/Messages.selector.js @@ -0,0 +1,9 @@ +const messageSendSelector = ({message, status, sentTime, id}) => ({ + [id]: { + content, + status, + sentTime + } +}); + +export { messageSendSelector }; \ No newline at end of file diff --git a/src/core/resource/messages/index.js b/src/core/resource/messages/index.js new file mode 100644 index 0000000000000000000000000000000000000000..2b4ad60517095c4f13160e41333e7d320a01b636 --- /dev/null +++ b/src/core/resource/messages/index.js @@ -0,0 +1,18 @@ +import { formatter } from './utils/FormatConverter.message'; +import { messages } from './data/Messages.reducer'; +import { delivered, receive, send } from './data/Messages.action'; + +const reducers = { + messages +}; + +const actions = { + delivered, + receive, + send +}; +export { + formatter, + actions, + reducers, +}; \ No newline at end of file diff --git a/src/core/resource/messages/utils/FormatConverter.message.js b/src/core/resource/messages/utils/FormatConverter.message.js new file mode 100644 index 0000000000000000000000000000000000000000..406ee8f0ed2277b7276e3ceb0639c1e0a210bf8a --- /dev/null +++ b/src/core/resource/messages/utils/FormatConverter.message.js @@ -0,0 +1,16 @@ +import { decode, convertToBert } from 'Core/bert/Converter.bert'; + +const formatter = (packet = {}) => { + const bert = convertToBert(packet.payload); + try { + return decode(bert); + } catch(e) { + //notify store, user, server + } + + + + +}; + +export { formatter }; \ No newline at end of file diff --git a/src/core/resource/profile/data/InitProfile.reducer.js b/src/core/resource/profile/data/InitProfile.reducer.js new file mode 100644 index 0000000000000000000000000000000000000000..5871347da1b6b1b18d91503a7799277d7e85051d --- /dev/null +++ b/src/core/resource/profile/data/InitProfile.reducer.js @@ -0,0 +1,26 @@ +import { createAction, createReducer } from 'redux-act'; + +const profileInit = createAction('PROFILE/INIT/SUCCES'); + +const handleLoad = (state, action) =>{ + console.log('ACTION INIT',state, action); + return { ...state, init: true, data: action } +} ; + +const initialState = { + init: false +}; + +const profile = createReducer(on => { + on(profileInit, handleLoad); +}, initialState); + +export const userActions = { + profileInit +}; + +export default profile; + +export function isLoaded(globalState) { + return globalState.profile && globalState.profile.init; +} \ No newline at end of file diff --git a/src/core/resource/profile/index.js b/src/core/resource/profile/index.js new file mode 100644 index 0000000000000000000000000000000000000000..a8e0ac64a99f12dd557f18072890c12b8fd9654e --- /dev/null +++ b/src/core/resource/profile/index.js @@ -0,0 +1,6 @@ +import profile, { userActions } from './data/InitProfile.reducer'; + +export { + profile, + userActions +} \ No newline at end of file diff --git a/src/core/resource/profile/sagas/ProfileInit.saga.js b/src/core/resource/profile/sagas/ProfileInit.saga.js new file mode 100644 index 0000000000000000000000000000000000000000..cd12a9b3d96b43165d8fc3fd66dad08b4730de01 --- /dev/null +++ b/src/core/resource/profile/sagas/ProfileInit.saga.js @@ -0,0 +1 @@ +import { } diff --git a/src/core/resource/supplier/data/Initial.state.js b/src/core/resource/supplier/data/Initial.state.js new file mode 100644 index 0000000000000000000000000000000000000000..74bf59b1d20d89135594db60bdc7133d035a973b --- /dev/null +++ b/src/core/resource/supplier/data/Initial.state.js @@ -0,0 +1,17 @@ +import { buildTopic } from 'Core/protocols/Topic.protocol'; + +const deliveryInfo = (data) => { + return Object.assign( + {}, + { + updated: new Date().toLocaleString(), + topic: buildTopic(), + isError: false, + isLoading: false, + isSuccess: false + }, + data + ) +}; + +export { deliveryInfo }; \ No newline at end of file diff --git a/src/core/resource/supplier/data/Supplier.action.js b/src/core/resource/supplier/data/Supplier.action.js new file mode 100644 index 0000000000000000000000000000000000000000..507fe8dbaac979a61b2a93411d56028fc24aae42 --- /dev/null +++ b/src/core/resource/supplier/data/Supplier.action.js @@ -0,0 +1,28 @@ +import * as actionTypes from './Supplier.constant'; + +const serverResponse = (action, response, packet = {}) => { + return { + type: action, + response + } +}; + +const connecting = (config) =>({ + type: actionTypes.CONNECTING, + config +}); + +const connected = () => ({ + type: actionTypes.CONNECTED +}); + +const close = (time) =>({ + type: actionTypes.CLOSE +}); + +export { + close, + connecting, + connected, + serverResponse +} diff --git a/src/core/resource/supplier/data/Supplier.constant.js b/src/core/resource/supplier/data/Supplier.constant.js new file mode 100644 index 0000000000000000000000000000000000000000..287143165360698e6b37afea2eccd0ddc13809dc --- /dev/null +++ b/src/core/resource/supplier/data/Supplier.constant.js @@ -0,0 +1,4 @@ +export const CONNECTING = 'CONNECTING'; +export const CONNECTED = 'CONNECTED'; +export const CLOSE = 'CLOSE'; +export const ERROR = 'ERROR'; \ No newline at end of file diff --git a/src/core/resource/supplier/data/Supplier.reducer.js b/src/core/resource/supplier/data/Supplier.reducer.js new file mode 100644 index 0000000000000000000000000000000000000000..850370f8787d37cab75f58a2fd7bfbe0f73cbd4b --- /dev/null +++ b/src/core/resource/supplier/data/Supplier.reducer.js @@ -0,0 +1,14 @@ +//import * as actionTypes from './Supplier.constant'; + +export let supplier = (state = {}, action) => { + switch (action.type) { + case 'CONNECTING': + return { + ...state, + updated: action.time + }; + break; + default: + return state; + } +}; \ No newline at end of file diff --git a/src/core/resource/supplier/index.js b/src/core/resource/supplier/index.js new file mode 100644 index 0000000000000000000000000000000000000000..1f3d73732a8b68c70520b28ebfc3f65175e3e3cc --- /dev/null +++ b/src/core/resource/supplier/index.js @@ -0,0 +1,21 @@ +import * as supplierReducers from './data/Supplier.reducer'; +import { connectInitiator } from './sagas/SupplierConnector.saga'; +import { + close, + connecting, + connected, + serverResponse +} from './data/Supplier.action'; + +let supplierSagas = { + connectInitiator +}; + +let supplierActions = { + close, + connecting, + connected, + serverResponse +}; + +export { supplierActions, supplierReducers, supplierSagas }; \ No newline at end of file diff --git a/src/core/sagas/Connector.saga.js b/src/core/resource/supplier/sagas/SupplierConnector.saga.js similarity index 50% rename from src/core/sagas/Connector.saga.js rename to src/core/resource/supplier/sagas/SupplierConnector.saga.js index f6ed40402538f0e472de1e6ec55d04fc9fd98c02..2dbee2be12b5f98f3223da83412e204e7c4f4f48 100644 --- a/src/core/sagas/Connector.saga.js +++ b/src/core/resource/supplier/sagas/SupplierConnector.saga.js @@ -1,21 +1,20 @@ import { takeEvery, takeLatest, fork } from 'redux-saga/effects'; import { effects } from 'redux-saga' -import { providerEventChannel } from '../services'; -import { CONNECTING } from '../resource/Init.resource'; +import { supplierEventChannel } from 'Core/services'; +import { CONNECTING } from '../data/Supplier.constant'; const { call, put, take } = effects; const mqttSaga = function* (action) { - const socketChannel = yield call(providerEventChannel, action); + const socketChannel = yield call(supplierEventChannel, action); while (true) { const eventAction = yield take(socketChannel); yield put(eventAction); } }; -const connector = function* (params) { - yield take(CONNECTING, mqttSaga); - yield fork(mqttSaga); -}; +const connectInitiator = function* (params) { + yield takeLatest(CONNECTING, mqttSaga); +} -export { connector }; \ No newline at end of file +export { connectInitiator }; \ No newline at end of file diff --git a/src/core/sagas/Messages.saga.js b/src/core/sagas/Messages.saga.js deleted file mode 100644 index 3310dc3b78ddb1db9d0b28a9bbf45744ba9251f0..0000000000000000000000000000000000000000 --- a/src/core/sagas/Messages.saga.js +++ /dev/null @@ -1,12 +0,0 @@ -import { takeEvery, take } from 'redux-saga/effects'; -import { MESSAGE_SEND } from '../resource/Messages.resource'; - -function* handleSend(action) { - console.log() -} - -function* watchSendRequest(params) { - const { request } = yield take("*"); -} - -export { watchSendRequest }; \ No newline at end of file diff --git a/src/core/sagas/Root.saga.js b/src/core/sagas/Root.saga.js deleted file mode 100644 index b56d60bed15703990aa5c09c9d41e8e73e8cf1d0..0000000000000000000000000000000000000000 --- a/src/core/sagas/Root.saga.js +++ /dev/null @@ -1,12 +0,0 @@ -import { all } from 'redux-saga/effects'; -import { connector } from './Connector.saga'; -import { watchSendRequest } from './Messages.saga'; - -function* rootSaga() { - yield all([ - connector, - watchSendRequest - ]) -} - -export { rootSaga }; \ No newline at end of file diff --git a/src/core/sagas/index.js b/src/core/sagas/index.js deleted file mode 100644 index bce69eba26a43608132f69d6caff7022d739c0e7..0000000000000000000000000000000000000000 --- a/src/core/sagas/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import { rootSaga } from './Root.saga'; - -export { rootSaga }; \ No newline at end of file diff --git a/src/core/services/MqttClient.service.js b/src/core/services/MqttClient.service.js index 15c6aba07352246ad1d28d5064cf3d8a329f4d68..16efde2789cb6a968eab4337e09bbd3d75ae6194 100644 --- a/src/core/services/MqttClient.service.js +++ b/src/core/services/MqttClient.service.js @@ -3,43 +3,64 @@ import localForage from 'localforage'; import { encode, decode } from '../bert/Converter.bert'; import { topic } from '../protocols'; import { MqttLocaforageStore } from '../store'; -import { incomeDB, browserStorage } from '../store'; +import { incomeDB, setupClientEntry, browserStorage } from '../store'; import mqttConfig from '../configs/MqttInit.config'; -let client; +let config, client; -const setPrefix = (id) => (mqttConfig.authPrefix + id); +const configure = () => { + return config = Object.assign({}, { + clientId: setupClientEntry(), + password: browserStorage.getItem('token') + }, mqttConfig); +}; + +const getConfig = () => { + return config || configure(); +}; -export const genClientId = () => ( - Math.random().toString(36).substring(2) - + (new Date()).getTime().toString(36) -); +const setConfig = (customConfig) => { + return config ? Object.assign(config, customConfig) : customConfig; +}; + +const getSupplier = () => client ? client : null; +const setSupplier = c => client = c; + +const formatPath = ({ protocol, host, port, supplier }) => { + return `${ protocol }://${ host }:${ port }/${ supplier }`; +}; + +const initSupplier = (customConfig, url) => { + let config = configure(); + + if(customConfig) { + config = setConfig(customConfig); + } + + if(!url) { + url = formatPath(config); + } + + let client = mqtt.connect(url, config); + + const send = (m, t = 'events', ...args) => { + m = encode(m); + t = topic(t); + binPayload(m); + return client.publish(t, m, ...args) + }; -const initProvider = () => { - let connectPath = `${ mqttConfig.protocol }://${ mqttConfig.host }:${ mqttConfig.port }/${ mqttConfig.provider }`; - let config = { - clientId: setPrefix(genClientId()), - password: browserStorage.getItem('token'), - ...mqttConfig + const close = () => { + return client.end(); }; - let client = mqtt.connect(connectPath, config); const xtendedClient = Object.assign(client, { - onClose: () => { - - }, - - send: (...args) => { - args[0] = topic(args[0]); - const message = args[1]; - if(message) { - args[1] = encode(message) - } - return client.publish(...args); - } + send, + close }); + setSupplier(xtendedClient); return xtendedClient; }; -export default initProvider; \ No newline at end of file +export { initSupplier, getSupplier, setConfig, getConfig}; diff --git a/src/core/services/MqttEventChannel.service.js b/src/core/services/MqttEventChannel.service.js index 720d69236df50a6ce7b8ed0132d9bc9415b0ada3..df9422fe8def558b3b21741da6cac1c029201cc1 100644 --- a/src/core/services/MqttEventChannel.service.js +++ b/src/core/services/MqttEventChannel.service.js @@ -2,22 +2,21 @@ import mqtt from 'mqtt'; import { buffers, eventChannel } from 'redux-saga' import { put } from 'redux-saga/effects'; import { bindActionCreators } from 'redux' -import { topic } from '../protocols'; //import { Store as MQTTLocalForageStore } from 'mqtt-localforage-store'; -import { formatter } from '../messages/Converter.message'; +import { formatter } from '../resource/messages'; import { validate } from '../protocols/Validator.protocol'; -import initProvider from './MqttClient.service'; +import { initSupplier } from './MqttClient.service'; import mqttConfig from '../configs/MqttInit.config'; import * as eventTypes from '../configs/MqttEvents.config'; -import * as eventHandlers from '../resource/Init.resource'; -import { mockReceivePacket } from '../../../tools/ErlangDebugger.tools'; - +import { supplierActions } from '../resource/supplier'; const bufferSize = 100; -const providerEventChannel = () => eventChannel( +const supplierEventChannel = (action) => eventChannel( emitter => { - const client = initProvider(); - const boundEventHandlers = bindActionCreators(eventHandlers, emitter); + const { config } = action; + const client = initSupplier(config); + const boundEventHandlers = bindActionCreators(supplierActions, emitter); + client.on(eventTypes.CONNECT, function() { boundEventHandlers.connected(); //redux log @@ -31,26 +30,30 @@ const providerEventChannel = () => eventChannel( boundEventHandlers.error(e) }); client.on(eventTypes.MESSAGE, function(topic, message, packet) { - boundEventHandlers.publish(topic, message, packet) + console.log(topic, message, packet); + //boundEventHandlers.publish(topic, message, packet) }); client.on(eventTypes.PACKETRECEIVE, function (packet = {}) { - if(!packet.payload) { + if(!packet.payload) { return; } - const processedResponse = formatter(mockReceivePacket); + const processedResponse = formatter(packet); let { event, response } = validate(processedResponse); - + boundEventHandlers.serverResponse(event, response, packet); console.log('PACKETRECEIVE', packet); + + boundEventHandlers.serverResponse(event, response, packet); + // put(event,response); + console.log("PACKETRECEIVE", event, response); }); client.on(eventTypes.PACKETSEND, function(packet) { console.log('PACKETSEND', packet); }); - //buffers.expanding(bufferSize); return client.end } ); -export default providerEventChannel; \ No newline at end of file +export default supplierEventChannel; \ No newline at end of file diff --git a/src/core/services/index.js b/src/core/services/index.js index 4c6198970ab85380bb19c843725af465eb8ccc3a..4803bb3d3c5a160a11b69e18ef98cc45118b0684 100644 --- a/src/core/services/index.js +++ b/src/core/services/index.js @@ -1,4 +1,4 @@ -import initProvider, { genClientId } from './MqttClient.service'; -import providerEventChannel from './MqttEventChannel.service'; +import { getSupplier, initSupplier } from './MqttClient.service'; +import supplierEventChannel from './MqttEventChannel.service'; -export { initProvider, providerEventChannel, genClientId }; \ No newline at end of file +export { initSupplier, supplierEventChannel, getSupplier }; diff --git a/src/core/store/Browser.store.js b/src/core/store/Browser.store.js index 4132cc1d6535d8e89c52c41f1cdb1e936e7df12e..633e85cec7f1c0508a481234417bbba1a877f9c5 100644 --- a/src/core/store/Browser.store.js +++ b/src/core/store/Browser.store.js @@ -1,9 +1,13 @@ import { browserStorage } from './index'; -import { genClientId } from '../services'; import { DEV_KEY, CLIENT} from '../configs/BrowserStorage.config'; +const generateClientId = () => { + return Math.random().toString(36).substring(2) + + (new Date()).getTime().toString(36); +}; + const setupDevEntry = () => { - let devKey = browserStorage.getItem(DEV_KEY) || genClientId(); + let devKey = browserStorage.getItem(DEV_KEY) || generateClientId(); browserStorage.setItem(DEV_KEY, devKey); diff --git a/src/core/store/Configure.dev.store.js b/src/core/store/Configure.dev.store.js index 8336f6704a1b675210d5a0edd75f5d855e354b40..f7e04abec890a0a5a042a7a8655426baa3d318d9 100644 --- a/src/core/store/Configure.dev.store.js +++ b/src/core/store/Configure.dev.store.js @@ -4,19 +4,22 @@ import { loadingBarMiddleware } from 'react-redux-loading-bar' import reduxImmutableStateInvariant from 'redux-immutable-state-invariant'; import logger from 'redux-logger'; import trottle from 'lodash/throttle'; -import { connector as rootSaga } from '../sagas/Connector.saga'; -import { browserStorage } from './index'; -import { rootReducer } from '../resource'; import { STORAGE_NAME, SAVE_TIME_DELAY } from '../configs/BrowserStorage.config'; +import { crashReporter } from '../middlewares' +import { rootReducer } from '../resource'; +import { rootSaga } from '../resource'; +import { browserStorage } from './index'; + const configureStore = () => { const sagaMiddleware = createSagaMiddleware(); const middlewares = [ + crashReporter, + logger, reduxImmutableStateInvariant(), - sagaMiddleware, - //loadingBarMiddleware({ scope: 'page' }), - logger + sagaMiddleware + //loadingBarMiddleware({ scope: 'page' }) ]; const composeExtenders = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; diff --git a/src/core/store/index.js b/src/core/store/index.js index 99700df55dda5ecb388dc1fc790ab0f2b9f07386..95697c5f71e46aa5bca60d710cc6b9b13b824b57 100644 --- a/src/core/store/index.js +++ b/src/core/store/index.js @@ -2,15 +2,14 @@ import { setupClientEntry, setupDevEntry } from './Browser.store'; import { incomeDB, outcomeDB } from './ConfigureBrowser.store'; import MqttLocaforageStore from './MqttLocaforage.store'; -console.log(process.env.NODE_ENV); - const configureStore = process.env.NODE_ENV === "development" ? require('./Configure.dev.store') - : ''; + : require('./Configure.prod.store'); const browserStorage = localStorage !== 'undefined' ? localStorage : outcomeDB; - export { +export { + setupDevEntry, setupClientEntry, browserStorage, configureStore, diff --git a/src/core/utils/MergeState.util.js b/src/core/utils/MergeState.util.js new file mode 100644 index 0000000000000000000000000000000000000000..f90c8648d2f229da90d3135c68574183eef86bab --- /dev/null +++ b/src/core/utils/MergeState.util.js @@ -0,0 +1,5 @@ +const mergeState = (state, newState) => ( + Object.assign({}, state, { ...newState }) +); + +export { mergeState }; \ No newline at end of file diff --git a/src/core/utils/utf8.util.js b/src/core/utils/Utf8.util.js similarity index 100% rename from src/core/utils/utf8.util.js rename to src/core/utils/Utf8.util.js diff --git a/src/index.js b/src/index.js index 0c537a1c023874c424bcaf82aefda4ad4ec0f7d4..8091cb13932f6f8ced8a22d777d47e18b4f6bdc2 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,5 @@ import "regenerator-runtime/runtime"; -import Raven from './core/loggers/SentryError.logger'; +import Raven from './core/loggers/SentryError.logger.js'; import React from 'react'; import { render } from 'react-dom'; @@ -10,11 +10,11 @@ import Reboot from 'material-ui/Reboot'; require('./favicon.ico'); + render(
- +
, - document.getElementById('app') ); diff --git a/src/modules/Auth/AuthInit.js b/src/modules/Auth/AuthInit.js new file mode 100644 index 0000000000000000000000000000000000000000..277e50c5d8a99d760b43f43db7405c00d928f37e --- /dev/null +++ b/src/modules/Auth/AuthInit.js @@ -0,0 +1,19 @@ +import React, { PureComponent } from 'react'; +import Paper from 'material-ui/Paper'; +import { withStyles } from 'material-ui/styles'; +import TextField from 'material-ui/TextField'; +import Button from 'material-ui/Button'; + +const styles = () => ({ + +}); + +class AuthInit extends PureComponent { + render() { + return ( +
Verification
+ ) + } +} + +export default withStyles(styles)(AuthInit); \ No newline at end of file diff --git a/src/modules/Auth/CompletionAuth.js b/src/modules/Auth/CompletionAuth.js new file mode 100644 index 0000000000000000000000000000000000000000..c75199f80b67c1a3963a6b755ac224a000970ad0 --- /dev/null +++ b/src/modules/Auth/CompletionAuth.js @@ -0,0 +1,19 @@ +import React, { PureComponent } from 'react'; +import Paper from 'material-ui/Paper'; +import { withStyles } from 'material-ui/styles'; +import TextField from 'material-ui/TextField'; +import Button from 'material-ui/Button'; + +const styles = () => ({ + +}); + +class CompletionAuth extends PureComponent { + render() { + return ( +
Verification
+ ) + } +} + +export default withStyles(styles)(CompletionAuth) \ No newline at end of file diff --git a/src/modules/Auth/VerificationAuth.js b/src/modules/Auth/VerificationAuth.js new file mode 100644 index 0000000000000000000000000000000000000000..e75d6957879895d96d6e42bdd6ab2d4556e4ffd7 --- /dev/null +++ b/src/modules/Auth/VerificationAuth.js @@ -0,0 +1,78 @@ +import React, { PureComponent } from 'react'; +import Paper from 'material-ui/Paper'; +import Grid from 'material-ui/Grid'; +import { withStyles } from 'material-ui/styles'; +import { blue } from 'material-ui/colors'; +import TextField from 'material-ui/TextField'; + import Button from 'material-ui/Button'; + +const styles = theme => ({ + root: { + flexGrow: 1, + marginTop: 30 + }, + paper: { + padding: 16, + textAlign: 'center', + color: blue[500] + // color: theme.palette.text.secondary, + }, + textField: { + marginLeft: theme.spacing.unit, + marginRight: theme.spacing.unit, + width: 200 + }, + button: { + margin: theme.spacing.unit + } +}); + +export class VerificationAuth extends PureComponent { + + constructor(props) { + super(props); + } + + render() { + const { classes } = this.props; + + return ( +
+ + + + Login Test Container + + + + + + + + + + + + +
+ ); + } +} + +export default withStyles(styles)(VerificationAuth); \ No newline at end of file diff --git a/src/modules/Auth/index.js b/src/modules/Auth/index.js new file mode 100644 index 0000000000000000000000000000000000000000..b6ca32896a78a041d99a797e784658887e1733b2 --- /dev/null +++ b/src/modules/Auth/index.js @@ -0,0 +1,9 @@ +import VerificationAuth from './VerificationAuth'; +import AuthInit from './AuthInit'; +import CompletionAuth from './CompletionAuth'; + +export { + VerificationAuth, + AuthInit, + CompletionAuth +} \ No newline at end of file diff --git a/src/modules/Login/Login.js b/src/modules/Login/Login.js deleted file mode 100644 index 526e5482e7f816ac89f9cb4dbbbeed7e512426a8..0000000000000000000000000000000000000000 --- a/src/modules/Login/Login.js +++ /dev/null @@ -1,78 +0,0 @@ -import React, { PureComponent } from 'react'; -import Paper from 'material-ui/Paper'; -import Grid from 'material-ui/Grid'; -import { withStyles } from 'material-ui/styles'; -import { blue } from 'material-ui/colors'; -import TextField from 'material-ui/TextField'; -import Button from 'material-ui/Button'; - -const styles = theme => ({ - root: { - flexGrow: 1, - marginTop: 30, - }, - paper: { - padding: 16, - textAlign: 'center', - color: blue[500] - // color: theme.palette.text.secondary, - }, - textField: { - marginLeft: theme.spacing.unit, - marginRight: theme.spacing.unit, - width: 200, - }, - button: { - margin: theme.spacing.unit, - }, -}); - -export class Login extends PureComponent { - - constructor(props) { - super(props); - } - - render() { - const { classes } = this.props; - - return ( -
- - - - Login Test Container - - - - - - - - - - - - -
- ); - } -} - -export default withStyles(styles)(Login); \ No newline at end of file diff --git a/src/modules/SignUp/SignUp.js b/src/modules/SignUp/SignUp.js deleted file mode 100644 index 7a3e1e8d379895fe89db4d44499019ac105e9f66..0000000000000000000000000000000000000000 --- a/src/modules/SignUp/SignUp.js +++ /dev/null @@ -1,127 +0,0 @@ -import React, { Component, PropTypes } from 'react'; - -export default class SignUp extends Component { - static propTypes = { - - }; - constructor(props) { - super(props); - this.state = { - - }; - } - render() { - return (
-
-
-
-
-
-
- -
-
-
-
-
-
-
-

Phone Number

-
-

Please choose your country and enter your phone number.

-
-
-
- - - -
-
-
-
- - -
-
- - -
-
- -
-
-
-
-
-
-
-
-
-

Security Code

-
-

We've sent a security code to your phone.

-

You should receive it within 60 seconds.

-

- Haven't received the code? - Haven't received the code? -

-
-
-
- - -
-
- -
-
- - -
- -
-
-
-
-
-
-
-
-
-

Your Name

-
-

How would you like to be called?

-
-
-
- - -
-
- - -
-
- -
-
-
-
-
-
-
-
-
-
- By signing in, you acknowledge that you have read and accept our Terms of - Service. -
-
-
-
-
-
-
-
) - } -} \ No newline at end of file diff --git a/src/modules/index.js b/src/modules/index.js index 8411bd6a52cbb1304c55c0e30e8f0efd9b0379fd..2e5a0197d92675f1fafbbee81f89c33693dfcee8 100644 --- a/src/modules/index.js +++ b/src/modules/index.js @@ -1,13 +1,19 @@ +import { fork } from 'redux-saga/effects'; +import { combineReducers } from 'redux'; import Home from './Home/Home'; -import Login from './Login/Login'; -import SignUp from './SignUp/SignUp'; import Dashboard from './Dashboard/Dashboard'; import Chats from './Chats/Chats'; +import { + AuthInit, + CompletionAuth, + VerificationAuth, +} from './Auth' export { Home, - Login, - SignUp, + AuthInit, + VerificationAuth, + CompletionAuth, Dashboard, - Chats + Chats, }; \ No newline at end of file diff --git a/src/pages/App/App.js b/src/pages/App/App.js index 7bd594e7c20dd9fae6b0144a534133f572fe6aae..ced4fa4f9264076af326f562f14dc9bab45f7865 100644 --- a/src/pages/App/App.js +++ b/src/pages/App/App.js @@ -1,6 +1,6 @@ import React, { Component, PropTypes } from 'react'; import { MuiThemeProvider } from 'material-ui'; -import {createMuiTheme} from "material-ui/styles/index"; +import { createMuiTheme } from "material-ui/styles/index"; export default class App extends Component { @@ -28,14 +28,11 @@ export default class App extends Component { } }, }); - console.log(theme); - return ( -
- - { this.renderChildren(this.props.children, {}) } - -
+ return ( + + { this.renderChildren(this.props.children, {}) } + ) } } diff --git a/src/pages/NinjaApp/NinjaApp.js b/src/pages/NinjaApp/NinjaApp.js index 7a3fafa259fca50896929936a51f1307ed2690ed..78fec5b1017f2f39f7016c32df20b6672e6451a7 100644 --- a/src/pages/NinjaApp/NinjaApp.js +++ b/src/pages/NinjaApp/NinjaApp.js @@ -14,6 +14,7 @@ const styles = theme => ({ }) + export class Dashboard extends Component { constructor(props) { diff --git a/src/root.js b/src/root.js index 85662069442e5dc710d5762f3546cd2219366545..ecc34e77fe25de0ad1cf7b6638980506357eab2c 100644 --- a/src/root.js +++ b/src/root.js @@ -2,23 +2,25 @@ import React, { Component } from 'react'; import Reboot from 'material-ui/Reboot'; import { Provider } from 'react-redux'; //import LoadingBar from 'react-redux-loading-bar' -import { Router, browserHistory } from 'react-router'; +import { createHistory } from 'history'; +import { supplierActions } from './core/resource/supplier'; +import { Router } from 'react-router'; import routes from './routes'; -import { connecting } from './core/resource/Init.resource' class Root extends Component { componentDidMount() { let t = new Date(); - // this.props.store.dispatch(connecting(t)) + this.props.store.dispatch(supplierActions.connecting(t)) } render() { const { store } = this.props; + const history = createHistory(); return ( - - - { routes(store) } - - + + + { routes() } + + ) } } diff --git a/src/routes.js b/src/routes.js index ed61dfc91dd515a7c94da9f1e0304868cda464bc..5112accaec8a5fea0833e8ff8d78c4421ae5755d 100644 --- a/src/routes.js +++ b/src/routes.js @@ -1,7 +1,15 @@ import React from 'react'; import { IndexRoute, Route } from 'react-router'; import { App, NotFoundPage, UnauthorizedPage, NinjaApp } from './pages'; -import { Home, Login, SignUp,Dashboard, Chats } from './modules'; +import { + Home, + AuthInit, + VerificationAuth as VerifyAuth, + CompletionAuth as CompleteAuth, + Dashboard, + Chats +} from './modules'; + export default () => { /** * Please keep routes in alphabetical order @@ -10,8 +18,9 @@ export default () => { - - + + + @@ -19,8 +28,6 @@ export default () => { - - ); }; \ No newline at end of file diff --git a/src/index.html b/src/template.ejs old mode 100644 new mode 100755 similarity index 92% rename from src/index.html rename to src/template.ejs index 0f152d13d6d4836e5957c7d66920b965b38073f5..38b18b1a4645e9867f79b5896507d457f3dc5f7e --- a/src/index.html +++ b/src/template.ejs @@ -1,8 +1,6 @@ - - - +
diff --git a/src/vendors.js b/src/vendors.js index 938e7f84a597231f2dfb15c4ae278250466a5553..1c3d02e13b188860b540cb81fb9252a0ac3f96d4 100644 --- a/src/vendors.js +++ b/src/vendors.js @@ -1,9 +1,9 @@ module.exports = [ - 'immutable', 'react', 'react-dom', 'react-redux', 'react-router', + 'redux-saga', 'react-select', - 'redux', + 'redux' ]; \ No newline at end of file diff --git a/webpack.dev.config.babel.js b/webpack.dev.config.babel.js new file mode 100644 index 0000000000000000000000000000000000000000..4abf6a0d3b8c3726dfcf6d2ac68a97ff077a721a --- /dev/null +++ b/webpack.dev.config.babel.js @@ -0,0 +1,90 @@ +import webpack from 'webpack'; +import HtmlWebpackPlugin from 'html-webpack-plugin'; +import ConcatPlugin from 'webpack-concat-plugin'; +import HtmlHardiskPlugin from 'html-webpack-harddisk-plugin'; +import autoprefixer from 'autoprefixer'; +import path from 'path'; + +const bypass = (req) => '/' + `${generatedEntry}`; +const outputFolderName = 'bundle'; +const generatedEntry = 'index.html'; +const localPort = 8080; + +export default { + resolve: { + extensions: ['*', '.js', '.jsx', '.json'], + modules: ['node_modules', 'src'], + alias: { + Core: path.resolve(__dirname, 'src/core/'), + Tools: path.resolve(__dirname, 'tools/'), + Pages: path.resolve(__dirname, 'src/pages/'), + Home: path.resolve(__dirname, 'src/pages/home/index'), + Dashboard: path.resolve(__dirname, 'src/pages/dashboard/index') + } + }, + devtool: 'inline-source-map', //eval-source-map + entry: [ + 'babel-polyfill', + 'react-hot-loader/patch', + "webpack/hot/only-dev-server", + 'webpack-dev-server/client?http://localhost:' + `${localPort}`, + path.resolve(__dirname, 'src/index.js') + ], + target: 'web', + output: { + path: path.resolve(__dirname, outputFolderName), + publicPath: '/', + filename: `[hash].[name].${outputFolderName}.js`, + chunkFilename: `[name].[id].${outputFolderName}.js` + }, + plugins: [ + new webpack.HotModuleReplacementPlugin(), + + new webpack.DefinePlugin({ + 'process.env': { + 'NODE_ENV': JSON.stringify(process.env.NODE_ENV) + } + }), + new webpack.NoEmitOnErrorsPlugin(), + new webpack.optimize.CommonsChunkPlugin({ + filename: '[name].js', + names: ['vendor'], + minChunks: Infinity + }), + new HtmlWebpackPlugin({ + template: 'src/template.ejs', + filename: generatedEntry, + inject: true, + alwaysWriteToDisk: true + }), + new HtmlHardiskPlugin(), + new webpack.LoaderOptionsPlugin({ + minimize: false, + debug: true, + noInfo: false, // set to false to see a list of every file being bundled. + options: { + sassLoader: { + includePaths: [path.resolve(__dirname, 'src', 'scss')] + }, + context: '/', + postcss: () => [autoprefixer] + } + }) + ], + devServer: { + contentBase: path.resolve(__dirname, outputFolderName), + historyApiFallback: true + }, + module: { + rules: [ + {test: /\.jsx?$/, exclude: /node_modules/, loaders: ['babel-loader']}, + {test: /\.eot(\?v=\d+.\d+.\d+)?$/, loader: 'file-loader'}, + {test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff'}, + {test: /\.[ot]tf(\?v=\d+.\d+.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/octet-stream'}, + {test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml'}, + {test: /\.(jpe?g|png|gif)$/i, loader: 'file-loader?name=[name].[ext]'}, + {test: /\.ico$/, loader: 'file-loader?name=[name].[ext]'}, + {test: /(\.css|\.scss|\.sass)$/, loaders: ['style-loader', 'css-loader?sourceMap', 'postcss-loader']} + ] + } +}; diff --git a/webpack.prod.config.babel.js b/webpack.prod.config.babel.js new file mode 100644 index 0000000000000000000000000000000000000000..ed0896419259a4a0b60a2e5fc66bebd8672d32f5 --- /dev/null +++ b/webpack.prod.config.babel.js @@ -0,0 +1,72 @@ +import webpack from 'webpack'; +import HtmlWebpackPlugin from 'html-webpack-plugin'; +import ConcatPlugin from 'webpack-concat-plugin'; +import HtmlHardiskPlugin from 'html-webpack-harddisk-plugin'; +import autoprefixer from 'autoprefixer'; +import path from 'path'; + +const generatedEntry = 'index.html'; + +export default { + resolve: { + extensions: ['*', '.js', '.jsx', '.json'], + alias: { + Core: path.resolve(__dirname, 'src/core/'), + Pages: path.resolve(__dirname, 'src/pages/'), + Root: path.resolve(__dirname, 'src/pages/root/'), + Home: path.resolve(__dirname, 'src/pages/home/'), + Dashboard: path.resolve(__dirname, 'src/pages/dashboard') + } + }, + entry: [ + path.resolve(__dirname, 'src/index.js') + ], + target: 'web', + output: { + path: path.resolve(__dirname, 'build'), + publicPath: '/', + filename: '[hash].build.js' + }, + plugins: [ + new webpack.HotModuleReplacementPlugin(), + + new webpack.DefinePlugin({ + 'process.env': { + 'NODE_ENV': JSON.stringify(process.env.NODE_ENV) + } + }), + + new webpack.NoEmitOnErrorsPlugin(), + new HtmlWebpackPlugin({ + template: 'src/template.ejs', + filename: generatedEntry, + inject: true, + alwaysWriteToDisk: true + }), + new HtmlHardiskPlugin(), + new webpack.LoaderOptionsPlugin({ + minimize: false, + debug: true, + noInfo: false, // set to false to see a list of every file being bundled. + options: { + sassLoader: { + includePaths: [path.resolve(__dirname, 'src', 'scss')] + }, + context: '/', + postcss: () => [autoprefixer] + } + }) + ], + module: { + rules: [ + {test: /\.jsx?$/, exclude: /node_modules/, loaders: ['babel-loader']}, + {test: /\.eot(\?v=\d+.\d+.\d+)?$/, loader: 'file-loader'}, + {test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: 'url-loader?limit=10000&mimetype=application/font-woff'}, + {test: /\.[ot]tf(\?v=\d+.\d+.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=application/octet-stream'}, + {test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url-loader?limit=10000&mimetype=image/svg+xml'}, + {test: /\.(jpe?g|png|gif)$/i, loader: 'file-loader?name=[name].[ext]'}, + {test: /\.ico$/, loader: 'file-loader?name=[name].[ext]'}, + {test: /(\.css|\.scss|\.sass)$/, loaders: ['style-loader', 'css-loader', 'postcss-loader']} + ] + } +}; diff --git a/webpackConfigs/webPackServerApp.js b/webpackConfigs/webPackServerApp.js deleted file mode 100644 index 3da2d9661379bc8f5b958caf09a00bb4f382bfa3..0000000000000000000000000000000000000000 --- a/webpackConfigs/webPackServerApp.js +++ /dev/null @@ -1,17 +0,0 @@ -// TODO: KL: Create webpack server on port 8083 and connect to GraphQL on port 8081 -import WebpackDevServer from "webpack-dev-server"; -import WebpackCompiler from "./webpack-compiler"; - -let client = new WebpackDevServer(WebpackCompiler, { - contentBase: "build/", - historyApiFallback: true, - hotOnly: true, - inline: true, - stats: { - colors: true - } -}) - -client.listen(3080, () => console.log( - "App listen on 3080" -)); \ No newline at end of file diff --git a/webpackConfigs/webpack-compiler.js b/webpackConfigs/webpack-compiler.js deleted file mode 100644 index 1011b688ad596af86506de14f54246ef549f82d8..0000000000000000000000000000000000000000 --- a/webpackConfigs/webpack-compiler.js +++ /dev/null @@ -1,100 +0,0 @@ -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const webpack = require('webpack'); -const path = require('path'); -const vendors = require('../src/vendors'); - -var ROOT_PATH = path.resolve(__dirname); -var APP_PATH = path.resolve(ROOT_PATH,'../src'); -var BUILD_PATH = path.resolve(ROOT_PATH, '../build'); - -export default webpack({ - entry: { - vendor: [...vendors], - app: `${APP_PATH}/index.js` - }, - output: { - path: BUILD_PATH, - publicPath: '/', - filename: 'bundle.[name].[chunkhash].js' - }, - module: { - rules: [ - { test: /\.js$/, - exclude: /(node_modules)/, - use: [{ - loader: 'babel-loader' - }, - ], - }, - { test: /\.scss$/, - use: [ 'style-loader', 'css-loader', 'sass-loader?outputStyle=expanded&sourceMap' ], - }, - { test: /\.css$/, - use: [{ - loader: 'style-loader' - }, { - loader: 'css-loader' - }, - ], - }, - { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, - use: [{ - loader: 'url-loader?limit=10000&mimetype=application/font-woff' - }, - ] - }, - { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, - use: [{ - loader: 'url-loader?limit=10000&mimetype=application/font-woff' - }, - ], - }, - { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, - use: [{ - loader: 'url-loader?limit=10000&mimetype=application/octet-stream' - }, - ], - }, - { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, - use: [{ - loader: 'file-loader' - }, - ], - }, - { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, - use: [{ - loader: 'url-loader?limit=10000&mimetype=image/svg+xml' - }, - ], - }, - { test: /\.(jpe?g|png|gif|svg|ico)$/, - use: [{ - loader: 'file-loader?name=static/image/[name].[ext]' - }, - ], - } - ] - }, - plugins: [ - new HtmlWebpackPlugin({ - template: `${APP_PATH}/index.html` - }), - new webpack.optimize.CommonsChunkPlugin({ - names: ['vendor', 'manifest'], - minChunks: Infinity, - }), - new webpack.NamedModulesPlugin(), - new webpack.DefinePlugin({ - 'process.env': { - 'NODE_ENV': JSON.stringify(process.env.NODE_ENV) - } - }), - ], - resolve: { - extensions: ['.js', '.json'], - modules: [ - path.resolve('node_modules'), - ] - }, - devtool: 'eval-source-map' -}); \ No newline at end of file diff --git a/webpackConfigs/webpack.production.config.js b/webpackConfigs/webpack.production.config.js deleted file mode 100644 index 653d277893aad7e76c32a8c9abb4c14d5be11747..0000000000000000000000000000000000000000 --- a/webpackConfigs/webpack.production.config.js +++ /dev/null @@ -1,101 +0,0 @@ -const HtmlWebpackPlugin = require('html-webpack-plugin'); -const webpack = require('webpack'); -const path = require('path'); -const vendors = require('../src/vendors'); - -var ROOT_PATH = path.resolve(__dirname); -var APP_PATH = path.resolve(ROOT_PATH,'../src'); -var BUILD_PATH = path.resolve(ROOT_PATH, '../src/build'); -console.log(APP_PATH); -module.exports = { - entry: { - vendor: [...vendors], - app: `${APP_PATH}/index.js` - }, - output: { - path: BUILD_PATH, - publicPath: './', - filename: 'bundle.[name].[chunkhash].js' - }, - module: { - rules: [ - { test: /\.js$/, - exclude: /(node_modules)/, - use: [{ - loader: 'babel-loader', - }, - ], - }, - { test: /\.scss$/, - use: [ 'style-loader', 'css-loader', 'sass-loader?outputStyle=expanded&sourceMap' ], - }, - { test: /\.css$/, - use: [{ - loader: 'style-loader' - }, { - loader: 'css-loader' - }, - ], - }, - { test: /\.woff(\?v=\d+\.\d+\.\d+)?$/, - use: [{ - loader: 'url-loader?limit=10000&mimetype=application/font-woff' - }, - ] - }, - { test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/, - use: [{ - loader: 'url-loader?limit=10000&mimetype=application/font-woff' - }, - ], - }, - { test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, - use: [{ - loader: 'url-loader?limit=10000&mimetype=application/octet-stream' - }, - ], - }, - { test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, - use: [{ - loader: 'file-loader' - }, - ], - }, - { test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, - use: [{ - loader: 'url-loader?limit=10000&mimetype=image/svg+xml' - }, - ], - }, - { test: /\.(jpe?g|png|gif|svg|ico)$/, - use: [{ - loader: 'file-loader?name=static/image/[name].[ext]' - }, - ], - } - ] - }, - plugins: [ - new HtmlWebpackPlugin({ - template: `${APP_PATH}/index.html` - }), - new webpack.optimize.CommonsChunkPlugin({ - names: ['vendor', 'manifest'], - minChunks: Infinity, - }), - new webpack.NamedModulesPlugin(), - new webpack.DefinePlugin({ - __CLIENT__: true, - __SERVER__: false, - __DEVELOPMENT__: false, - __DEVTOOLS__: false // <-------- DISABLE redux-devtools here (btw, it causes initial double render!) - }), - ], - resolve: { - extensions: ['.js', '.json'], - modules: [ - path.resolve('node_modules'), - ] - }, - devtool: 'nosources-source-map' -};