diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..dc67f89 --- /dev/null +++ b/.babelrc @@ -0,0 +1,8 @@ +{ + "presets": ["env", "minify"], + "env": { + "production": { + "plugins": ["transform-remove-console"] + } + } +} diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..923c92b --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,3 @@ +module.exports = { + "extends": "airbnb-base" +}; \ No newline at end of file diff --git a/.gitignore b/.gitignore index b2856cb..e770e20 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ node_modules .vscode dist deploy.sh +lib diff --git a/README.md b/README.md index 53ac830..fcb5491 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,61 @@ # Robinhood Ticker -![GitHub version](https://d25lcipzij17d.cloudfront.net/badge.svg?id=gh&type=6&v=2.2.0&x2=0) ![Open Source Love](https://badges.frapsoft.com/os/mit/mit.svg?v=102) -Easily track the performance of your Robinhood stock portfolio just by glancing at the your computer's menubar. Robinhood Ticker uses the [unofficial Robinhood API](https://github.com/sanko/Robinhood) to authenticate with and retrieve data from the Robinhood servers. Your credentials and portfolio information are **never** stored or sent to any third party. +![GitHub version](https://d25lcipzij17d.cloudfront.net/badge.svg?id=gh&type=6&v=2.3.0&x2=0) ![Open Source Love](https://badges.frapsoft.com/os/mit/mit.svg?v=102) -
- +Easily track the performance of your Robinhood stock portfolio just by glancing at the your computer's menubar. Robinhood Ticker uses the [unofficial Robinhood API](https://github.com/sanko/Robinhood) to authenticate with and retrieve data from the Robinhood servers. Your credentials and portfolio information are **never** stored or sent to any third party. + + + + ## Getting Started + The latest release for MacOS is version 2.2.0: https://github.com/peniqliotuv/robinhood-ticker/releases/tag/v2.2.0 + Support for windows is currently in progress. ## Features - - Automatic refresh intervals (1, 2, 5, 15 minutes) - - Tracking the total value of your stock portfolio - - Tracking your watchlist - - Tracking the performance of each individual asset in your portfolio - - Changing between percent change and gain/loss in USD - - Automatic updates - - Supports two-factor authentication + +* Automatic refresh intervals (1, 2, 5, 15 minutes) + +* Tracking the total value of your stock portfolio + +* Tracking your watchlist + +* Tracking your portfolio/watchlist with an interactive chart + +* Tracking the performance of each individual asset in your portfolio + +* Changing between percent change and gain/loss in USD + +* Automatic updates + +* Supports two-factor authentication + ## More Screenshots + Authenticating with Robinhood - + + + +Chart view + + ## Releases + MacOS only currently + Latest Release: https://github.com/peniqliotuv/robinhood-ticker/releases/tag/v2.2.0 + ## Built With - - [Electron](https://electronjs.org/) - - Vanilla Javascript ❤️ + +* [Electron](https://electronjs.org/) +* [Chartist](http://gionkunz.github.io/chartist-js/index.html) +* Vanilla Javascript ❤️ ## License + This project is licensed under the MIT License - see the LICENSE.md file for details diff --git a/StockAPI.js b/StockAPI.js deleted file mode 100644 index 73b5842..0000000 --- a/StockAPI.js +++ /dev/null @@ -1,46 +0,0 @@ -const queryString = require('query-string'); -const fetch = require('node-fetch'); - -class StockAPI { - constructor() { - throw new Error('Cannot instantiate StockAPI'); - } - - static get API_KEY() { - return 'EHW1WVBJZRY8CJJ1'; - } - - - static get HOST() { - return 'https://www.alphavantage.co'; - } - - /* Gets the simple moving average of a stock */ - static async getSMA (symbol) { - const query = { - apikey: this.API_KEY, - function: 'SMA', - symbol, - interval: '15min', - series_type: 'close', - time_period: 10, - }; - const qs = queryString.stringify(query); - try { - const res = await fetch(`${this.HOST}/query?${qs}`); - const json = await res.json(); - const data = json['Technical Analysis: SMA']; - console.log(`Data for ${symbol} received.`); - /* Transform into [{x: ... y: ...}, {}]*/ - console.log(json); - return data; - } catch (e) { - console.error(e); - console.error(e.stack) - throw e; - } - - } -} - -module.exports = StockAPI; diff --git a/package-lock.json b/package-lock.json index 829b4d7..e5aa25d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "RH-Ticker", - "version": "2.1.1", + "version": "2.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -10,9 +10,9 @@ "integrity": "sha512-QU3oR1dLLVrYGRkb7LU17jMCpIkWtXXW7q71ECXWXkR9vOv37VjykqpvFgs29HgSCNLZHnNKJzdG6RwAW0LwIA==", "dev": true, "requires": { - "7zip-bin-linux": "1.3.1", - "7zip-bin-mac": "1.0.1", - "7zip-bin-win": "2.1.1" + "7zip-bin-linux": "~1.3.1", + "7zip-bin-mac": "~1.0.1", + "7zip-bin-win": "~2.1.1" } }, "7zip-bin-linux": { @@ -39,7 +39,8 @@ "@types/node": { "version": "8.10.3", "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.3.tgz", - "integrity": "sha512-vjiRZkhKEyZndtFOz/FtIp0CqPbgOOki8o9IcPOLTqlzcnvFLToYdERshLaI6TCz7pDWoKlmvgftqB4xlltn9g==" + "integrity": "sha512-vjiRZkhKEyZndtFOz/FtIp0CqPbgOOki8o9IcPOLTqlzcnvFLToYdERshLaI6TCz7pDWoKlmvgftqB4xlltn9g==", + "dev": true }, "abbrev": { "version": "1.1.1", @@ -62,10 +63,10 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" } }, "ajv-keywords": { @@ -74,13 +75,30 @@ "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", "dev": true }, + "alphavantage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/alphavantage/-/alphavantage-1.1.1.tgz", + "integrity": "sha512-xBn7qr8CaJzOmwZpxe54aSIW+WEt0y6vU0vLcCc62H+NP5wQDWU59AePyFcpEikVmfH7VhpaqRmScLSQnHY2pw==", + "requires": { + "dotenv": "^5.0.0", + "request": "^2.83.0", + "request-promise-native": "^1.0.5" + }, + "dependencies": { + "dotenv": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==" + } + } + }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "dev": true, "requires": { - "string-width": "2.1.1" + "string-width": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -101,8 +119,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -111,7 +129,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -127,7 +145,7 @@ "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { - "color-convert": "1.9.1" + "color-convert": "^1.9.0" } }, "anymatch": { @@ -136,8 +154,8 @@ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "micromatch": "3.1.5", - "normalize-path": "2.1.1" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" } }, "app-builder-bin": { @@ -190,14 +208,66 @@ "integrity": "sha1-/2YrSnggFJSj7lRNOjP+dJZQnrw=", "dev": true, "requires": { - "archiver-utils": "1.3.0", - "async": "2.6.0", - "buffer-crc32": "0.2.13", - "glob": "7.1.2", - "lodash": "4.17.5", - "readable-stream": "2.3.4", - "tar-stream": "1.5.5", - "zip-stream": "1.2.0" + "archiver-utils": "^1.3.0", + "async": "^2.0.0", + "buffer-crc32": "^0.2.1", + "glob": "^7.0.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0", + "tar-stream": "^1.5.0", + "zip-stream": "^1.2.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "readable-stream": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", + "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "archiver-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", + "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "dev": true, + "requires": { + "glob": "^7.0.0", + "graceful-fs": "^4.1.0", + "lazystream": "^1.0.0", + "lodash": "^4.8.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" }, "dependencies": { "isarray": { @@ -218,13 +288,65 @@ "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "are-we-there-yet": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", + "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -232,222 +354,1351 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "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 + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "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 + }, + "asar-integrity": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asar-integrity/-/asar-integrity-0.2.4.tgz", + "integrity": "sha512-6UDOmyl4RUo8i/0Sem/UKFJ70XZrXLCDQcILTbjTjAKZrSA3JbXVnWRFi2ZFEbeZxQ2LVCc3CWHnDlqj2AyVXg==", + "dev": true, + "requires": { + "bluebird-lst": "^1.0.5", + "fs-extra-p": "^4.5.0" + } + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "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.14.0" + } + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "dev": true + }, + "auto-launch": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/auto-launch/-/auto-launch-5.0.5.tgz", + "integrity": "sha512-ppdF4mihhYzMYLuCcx9H/c5TUOCev8uM7en53zWVQhyYAJrurd2bFZx3qQVeJKF2jrc7rsPRNN5cD+i23l6PdA==", + "requires": { + "applescript": "^1.0.0", + "mkdirp": "^0.5.1", + "path-is-absolute": "^1.0.0", + "untildify": "^3.0.2", + "winreg": "1.2.4" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { - "safe-buffer": "5.1.1" + "minimist": "0.0.8" } } } }, - "archiver-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-1.3.0.tgz", - "integrity": "sha1-5QtMCccL89aA4y/xt5lOn52JUXQ=", + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + }, + "babel-cli": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz", + "integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-polyfill": "^6.26.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "chokidar": "^1.6.1", + "commander": "^2.11.0", + "convert-source-map": "^1.5.0", + "fs-readdir-recursive": "^1.0.0", + "glob": "^7.1.2", + "lodash": "^4.17.4", + "output-file-sync": "^1.1.2", + "path-is-absolute": "^1.0.1", + "slash": "^1.0.0", + "source-map": "^0.5.6", + "v8flags": "^2.1.1" + }, + "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "optional": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true, + "optional": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "optional": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "optional": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "optional": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" + } + } + }, + "babel-helper-bindify-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-evaluate-path": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-helper-evaluate-path/-/babel-helper-evaluate-path-0.4.1.tgz", + "integrity": "sha1-a3XB4OMPFmKfKoZFyjBeGo01iaY=", + "dev": true + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-explode-class": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", + "dev": true, + "requires": { + "babel-helper-bindify-decorators": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-flip-expressions": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-helper-flip-expressions/-/babel-helper-flip-expressions-0.4.1.tgz", + "integrity": "sha1-zAPYBFjBA7n1BcHGpn++D1nKwyA=", + "dev": true + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-is-nodes-equiv": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/babel-helper-is-nodes-equiv/-/babel-helper-is-nodes-equiv-0.0.1.tgz", + "integrity": "sha1-NOmzALFHnd2Y7HfqC76TQt/jloQ=", + "dev": true + }, + "babel-helper-is-void-0": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-helper-is-void-0/-/babel-helper-is-void-0-0.4.1.tgz", + "integrity": "sha1-ogu127ocMMSq/nPrMn0tGLKE7Ro=", + "dev": true + }, + "babel-helper-mark-eval-scopes": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-helper-mark-eval-scopes/-/babel-helper-mark-eval-scopes-0.4.1.tgz", + "integrity": "sha1-A/nMmN76R0fnQS5wD069D+1ktXE=", + "dev": true + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-remove-or-void": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-helper-remove-or-void/-/babel-helper-remove-or-void-0.4.1.tgz", + "integrity": "sha1-rdWwiBeFOVESpw8PHCWRebFSQmo=", + "dev": true + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-to-multiple-sequence-expressions": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-helper-to-multiple-sequence-expressions/-/babel-helper-to-multiple-sequence-expressions-0.4.1.tgz", + "integrity": "sha1-FU7MOBGPXBybDp/CNd21OSFJvI8=", + "dev": true + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-minify-builtins": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-builtins/-/babel-plugin-minify-builtins-0.4.1.tgz", + "integrity": "sha1-d6iMt2EO2SWxsCVKmQJAKR4LC+A=", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.4.1" + } + }, + "babel-plugin-minify-constant-folding": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-constant-folding/-/babel-plugin-minify-constant-folding-0.4.1.tgz", + "integrity": "sha1-LtT4Ow/yj01VU9CcXvyFtdti0RI=", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.4.1" + } + }, + "babel-plugin-minify-dead-code-elimination": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-dead-code-elimination/-/babel-plugin-minify-dead-code-elimination-0.4.1.tgz", + "integrity": "sha1-81/PNIk06wqslEUCrTA3KRgu6yE=", + "dev": true, + "requires": { + "babel-helper-evaluate-path": "^0.4.1", + "babel-helper-mark-eval-scopes": "^0.4.1", + "babel-helper-remove-or-void": "^0.4.1", + "lodash.some": "^4.6.0" + } + }, + "babel-plugin-minify-flip-comparisons": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-flip-comparisons/-/babel-plugin-minify-flip-comparisons-0.4.1.tgz", + "integrity": "sha1-5wfl2rxpXJnNKSP+lw7ZrHjE5ws=", + "dev": true, + "requires": { + "babel-helper-is-void-0": "^0.4.1" + } + }, + "babel-plugin-minify-guarded-expressions": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-guarded-expressions/-/babel-plugin-minify-guarded-expressions-0.4.1.tgz", + "integrity": "sha1-ylpZoGvBwi3Vz9mWpnUWOm9hm30=", + "dev": true, + "requires": { + "babel-helper-flip-expressions": "^0.4.1" + } + }, + "babel-plugin-minify-infinity": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-infinity/-/babel-plugin-minify-infinity-0.4.1.tgz", + "integrity": "sha1-zJw33MFmbcB/HrR4wrchoRz7lJE=", + "dev": true + }, + "babel-plugin-minify-mangle-names": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-mangle-names/-/babel-plugin-minify-mangle-names-0.4.1.tgz", + "integrity": "sha1-d76P7TUOkxo6qaCfl/KCYWgIMTM=", + "dev": true, + "requires": { + "babel-helper-mark-eval-scopes": "^0.4.1" + } + }, + "babel-plugin-minify-numeric-literals": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-numeric-literals/-/babel-plugin-minify-numeric-literals-0.4.1.tgz", + "integrity": "sha1-lktObMdIfG1KMalRl8P0IbYMmkc=", + "dev": true + }, + "babel-plugin-minify-replace": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-replace/-/babel-plugin-minify-replace-0.4.1.tgz", + "integrity": "sha1-xRnYhYxiKySWo2SmE1rSd1V42UM=", + "dev": true + }, + "babel-plugin-minify-simplify": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-simplify/-/babel-plugin-minify-simplify-0.4.1.tgz", + "integrity": "sha1-XlX0ibLV8CyQjCswm/CBTxXHV74=", + "dev": true, + "requires": { + "babel-helper-flip-expressions": "^0.4.1", + "babel-helper-is-nodes-equiv": "^0.0.1", + "babel-helper-to-multiple-sequence-expressions": "^0.4.1" + } + }, + "babel-plugin-minify-type-constructors": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-minify-type-constructors/-/babel-plugin-minify-type-constructors-0.4.1.tgz", + "integrity": "sha1-eSJNE0bDPk+kQnVqI0JkkVjvlEg=", + "dev": true, + "requires": { + "babel-helper-is-void-0": "^0.4.1" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true + }, + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", + "dev": true + }, + "babel-plugin-syntax-class-constructor-call": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", + "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", + "dev": true + }, + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "dev": true + }, + "babel-plugin-syntax-do-expressions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz", + "integrity": "sha1-V0d1YTmqJtOQ0JQQsDdEugfkeW0=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-export-extensions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", + "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", + "dev": true + }, + "babel-plugin-syntax-function-bind": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz", + "integrity": "sha1-SMSV8Xe98xqYHnMvVa3AvdJgH0Y=", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-generators": "^6.5.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-class-constructor-call": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", + "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", + "dev": true, + "requires": { + "babel-plugin-syntax-class-constructor-call": "^6.18.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-decorators": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "dev": true, + "requires": { + "babel-helper-explode-class": "^6.24.1", + "babel-plugin-syntax-decorators": "^6.13.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-do-expressions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz", + "integrity": "sha1-KMyvkoEtlJws0SgfaQyP3EaK6bs=", + "dev": true, + "requires": { + "babel-plugin-syntax-do-expressions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", "dev": true, "requires": { - "glob": "7.1.2", - "graceful-fs": "4.1.11", - "lazystream": "1.0.0", - "lodash": "4.17.5", - "normalize-path": "2.1.1", - "readable-stream": "2.3.4" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true - }, - "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - } + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" } }, - "are-we-there-yet": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", - "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "babel-plugin-transform-export-extensions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", + "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", "dev": true, - "optional": true, "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.4" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true, - "optional": true - }, - "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" - } - }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.1.1" - } - } + "babel-plugin-syntax-export-extensions": "^6.8.0", + "babel-runtime": "^6.22.0" } }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "babel-plugin-transform-function-bind": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz", + "integrity": "sha1-xvuOlqwpajELjPjqQBRiQH3fapc=", + "dev": true, "requires": { - "sprintf-js": "1.0.3" + "babel-plugin-syntax-function-bind": "^6.8.0", + "babel-runtime": "^6.22.0" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "babel-plugin-transform-inline-consecutive-adds": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-consecutive-adds/-/babel-plugin-transform-inline-consecutive-adds-0.4.1.tgz", + "integrity": "sha1-F13t/odsL/enjHUe1NncBZfRFx0=", "dev": true }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "babel-plugin-transform-member-expression-literals": { + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-member-expression-literals/-/babel-plugin-transform-member-expression-literals-6.9.2.tgz", + "integrity": "sha1-Hzl6uWGlw6QB8qdHrwbnIASvy3Y=", "dev": true }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "babel-plugin-transform-merge-sibling-variables": { + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-merge-sibling-variables/-/babel-plugin-transform-merge-sibling-variables-6.9.2.tgz", + "integrity": "sha1-mUqQBKecefDJHEluii28fptz97Q=", "dev": true }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "babel-plugin-transform-minify-booleans": { + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-minify-booleans/-/babel-plugin-transform-minify-booleans-6.9.2.tgz", + "integrity": "sha1-z5lb4GegMDy1JlSfA9zZaCQZQw0=", "dev": true }, - "asar-integrity": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asar-integrity/-/asar-integrity-0.2.4.tgz", - "integrity": "sha512-6UDOmyl4RUo8i/0Sem/UKFJ70XZrXLCDQcILTbjTjAKZrSA3JbXVnWRFi2ZFEbeZxQ2LVCc3CWHnDlqj2AyVXg==", + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", "dev": true, "requires": { - "bluebird-lst": "1.0.5", - "fs-extra-p": "4.5.0" + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" } }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "babel-plugin-transform-property-literals": { + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-property-literals/-/babel-plugin-transform-property-literals-6.9.2.tgz", + "integrity": "sha1-pY0Jls8q2vIk986EitHN5M2M8nU=", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + } }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "babel-plugin-transform-regexp-constructors": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regexp-constructors/-/babel-plugin-transform-regexp-constructors-0.4.1.tgz", + "integrity": "sha1-T/fx2g4MMZENDhRhq+0MZ5yzHu4=", "dev": true }, - "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "babel-plugin-transform-remove-console": { + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-console/-/babel-plugin-transform-remove-console-6.9.2.tgz", + "integrity": "sha1-6KDCfVbJUDyhbihPa2Tb1LldIek=" + }, + "babel-plugin-transform-remove-debugger": { + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-debugger/-/babel-plugin-transform-remove-debugger-6.9.2.tgz", + "integrity": "sha1-U2yHvbYgDRRgyZbdldF5zzjCTuE=", + "dev": true + }, + "babel-plugin-transform-remove-undefined": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-remove-undefined/-/babel-plugin-transform-remove-undefined-0.4.1.tgz", + "integrity": "sha1-Y2x/KM66/Fpm+jT5TGCAR+r3508=", "dev": true, "requires": { - "lodash": "4.17.5" + "babel-helper-evaluate-path": "^0.4.1" } }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "async-exit-hook": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", - "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "babel-plugin-transform-simplify-comparison-operators": { + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-simplify-comparison-operators/-/babel-plugin-transform-simplify-comparison-operators-6.9.2.tgz", + "integrity": "sha1-DA6a+nMpJPA6qYL9Y8ktBAi9VlY=", "dev": true }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } }, - "atob": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", - "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "babel-plugin-transform-undefined-to-void": { + "version": "6.9.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-undefined-to-void/-/babel-plugin-transform-undefined-to-void-6.9.2.tgz", + "integrity": "sha1-Fl/eczkydr6gKnOWWIeNzO0Lnrs=", "dev": true }, - "auto-launch": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/auto-launch/-/auto-launch-5.0.5.tgz", - "integrity": "sha512-ppdF4mihhYzMYLuCcx9H/c5TUOCev8uM7en53zWVQhyYAJrurd2bFZx3qQVeJKF2jrc7rsPRNN5cD+i23l6PdA==", + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", "requires": { - "applescript": "1.0.0", - "mkdirp": "0.5.1", - "path-is-absolute": "1.0.1", - "untildify": "3.0.2", - "winreg": "1.2.4" + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + } + } + }, + "babel-preset-env": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.6.1.tgz", + "integrity": "sha512-W6VIyA6Ch9ePMI7VptNn2wBM6dbG0eSz25HEiL40nQXCsXGTGZSTZu1Iap+cj3Q0S5a7T9+529l/5Bkvd+afNA==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^2.1.2", + "invariant": "^2.2.2", + "semver": "^5.3.0" + } + }, + "babel-preset-minify": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-preset-minify/-/babel-preset-minify-0.4.1.tgz", + "integrity": "sha1-QOPtrXQ7sQfdY8fPshxgTczYNnQ=", + "dev": true, + "requires": { + "babel-plugin-minify-builtins": "^0.4.1", + "babel-plugin-minify-constant-folding": "^0.4.1", + "babel-plugin-minify-dead-code-elimination": "^0.4.1", + "babel-plugin-minify-flip-comparisons": "^0.4.1", + "babel-plugin-minify-guarded-expressions": "^0.4.1", + "babel-plugin-minify-infinity": "^0.4.1", + "babel-plugin-minify-mangle-names": "^0.4.1", + "babel-plugin-minify-numeric-literals": "^0.4.1", + "babel-plugin-minify-replace": "^0.4.1", + "babel-plugin-minify-simplify": "^0.4.1", + "babel-plugin-minify-type-constructors": "^0.4.1", + "babel-plugin-transform-inline-consecutive-adds": "^0.4.1", + "babel-plugin-transform-member-expression-literals": "^6.9.2", + "babel-plugin-transform-merge-sibling-variables": "^6.9.2", + "babel-plugin-transform-minify-booleans": "^6.9.2", + "babel-plugin-transform-property-literals": "^6.9.2", + "babel-plugin-transform-regexp-constructors": "^0.4.1", + "babel-plugin-transform-remove-console": "^6.9.2", + "babel-plugin-transform-remove-debugger": "^6.9.2", + "babel-plugin-transform-remove-undefined": "^0.4.1", + "babel-plugin-transform-simplify-comparison-operators": "^6.9.2", + "babel-plugin-transform-undefined-to-void": "^6.9.2", + "lodash.isplainobject": "^4.0.6" + } + }, + "babel-preset-stage-0": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz", + "integrity": "sha1-VkLRUEL5E4TX5a+LyIsduVsDnmo=", + "dev": true, + "requires": { + "babel-plugin-transform-do-expressions": "^6.22.0", + "babel-plugin-transform-function-bind": "^6.22.0", + "babel-preset-stage-1": "^6.24.1" + } + }, + "babel-preset-stage-1": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", + "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", + "dev": true, + "requires": { + "babel-plugin-transform-class-constructor-call": "^6.24.1", + "babel-plugin-transform-export-extensions": "^6.22.0", + "babel-preset-stage-2": "^6.24.1" + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-decorators": "^6.24.1", + "babel-preset-stage-3": "^6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-generator-functions": "^6.24.1", + "babel-plugin-transform-async-to-generator": "^6.24.1", + "babel-plugin-transform-exponentiation-operator": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.22.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" }, "dependencies": { "minimist": { @@ -462,18 +1713,69 @@ "requires": { "minimist": "0.0.8" } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "requires": { + "source-map": "^0.5.6" + } } } }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==" }, "balanced-match": { "version": "1.0.0", @@ -486,13 +1788,13 @@ "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.0", - "pascalcase": "0.1.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" } }, "base64-js": { @@ -507,7 +1809,7 @@ "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "^0.14.3" } }, "binary-extensions": { @@ -522,7 +1824,7 @@ "integrity": "sha1-ysMo977kVzDUBLaSID/LWQ4XLV4=", "dev": true, "requires": { - "readable-stream": "2.3.4" + "readable-stream": "^2.0.5" }, "dependencies": { "isarray": { @@ -543,13 +1845,13 @@ "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -558,7 +1860,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -569,7 +1871,7 @@ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "requires": { - "inherits": "2.0.3" + "inherits": "~2.0.0" } }, "bluebird": { @@ -582,7 +1884,7 @@ "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.5.tgz", "integrity": "sha512-Ey0bDNys5qpYPhZ/oQ9vOEvD0TYQDTILMXWP2iGfvMg7rSDde+oV4aQQgqRH+CvBFNz2BSDQnPGMUl6LKBUUQA==", "requires": { - "bluebird": "3.5.1" + "bluebird": "^3.5.1" } }, "boom": { @@ -590,7 +1892,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } }, "boxen": { @@ -599,13 +1901,13 @@ "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { - "ansi-align": "2.0.0", - "camelcase": "4.1.0", - "chalk": "2.3.0", - "cli-boxes": "1.0.0", - "string-width": "2.1.1", - "term-size": "1.2.0", - "widest-line": "2.0.0" + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -632,8 +1934,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -642,7 +1944,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -652,7 +1954,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -662,17 +1964,27 @@ "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" + "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.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "browserslist": { + "version": "2.11.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", + "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000792", + "electron-to-chromium": "^1.3.30" } }, "buffer-crc32": { @@ -687,21 +1999,21 @@ "integrity": "sha512-yebI1DSH5YMGNtwGyrJclhun4HdKvYbDa/iYiZgTb8XwMp7Qx/i1j+JEEBFWTwG+wWOkNnP2EnVQfGPqtVMYSA==", "dev": true, "requires": { - "7zip-bin": "2.4.1", - "bluebird-lst": "1.0.5", - "builder-util-runtime": "4.0.3", - "chalk": "2.3.0", - "debug": "3.1.0", - "fs-extra-p": "4.5.0", - "ini": "1.3.5", - "is-ci": "1.1.0", - "js-yaml": "3.10.0", - "lazy-val": "1.0.3", - "semver": "5.5.0", - "source-map-support": "0.5.3", - "stat-mode": "0.2.2", - "temp-file": "3.1.1", - "tunnel-agent": "0.6.0" + "7zip-bin": "^2.4.1", + "bluebird-lst": "^1.0.5", + "builder-util-runtime": "^4.0.3", + "chalk": "^2.3.0", + "debug": "^3.1.0", + "fs-extra-p": "^4.5.0", + "ini": "^1.3.5", + "is-ci": "^1.1.0", + "js-yaml": "^3.10.0", + "lazy-val": "^1.0.3", + "semver": "^5.5.0", + "source-map-support": "^0.5.1", + "stat-mode": "^0.2.2", + "temp-file": "^3.1.1", + "tunnel-agent": "^0.6.0" }, "dependencies": { "debug": { @@ -720,10 +2032,10 @@ "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-4.0.3.tgz", "integrity": "sha512-OgrYhUr/neAXSAIR4zw9icC8dbqs8lT23L3KpXX+htl6y3rPLVt3U2Y2b+8zURx6qgG19454V3Kr++XQKB5DMQ==", "requires": { - "bluebird-lst": "1.0.5", - "debug": "3.1.0", - "fs-extra-p": "4.5.0", - "sax": "1.2.4" + "bluebird-lst": "^1.0.5", + "debug": "^3.1.0", + "fs-extra-p": "^4.5.0", + "sax": "^1.2.4" }, "dependencies": { "debug": { @@ -739,7 +2051,8 @@ "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true }, "cache-base": { "version": "1.0.1", @@ -747,31 +2060,39 @@ "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" + "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" } }, "camelcase": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true }, "camelcase-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" } }, + "caniuse-lite": { + "version": "1.0.30000836", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000836.tgz", + "integrity": "sha512-DlVR8sVTKDgd7t95U0shX3g7MeJ/DOjKOhUcaiXqnVmnO5sG4Tn2rLVOkVfPUJgnQNxnGe8/4GK0dGSI+AagQw==", + "dev": true + }, "capture-stack-trace": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", @@ -789,52 +2110,20 @@ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, - "chart.js": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.7.1.tgz", - "integrity": "sha512-pX1oQAY86MiuyZ2hY593Acbl4MLHKrBBhhmZ1YqSadzQbbsBE2rnd6WISoHjIsdf0WDeC0hbePYCz2ZxkV8L+g==", - "requires": { - "chartjs-color": "2.2.0", - "moment": "2.18.1" - } - }, - "chartjs-color": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.2.0.tgz", - "integrity": "sha1-hKL7dVeH7YXDndbdjHsdiEKbrq4=", - "requires": { - "chartjs-color-string": "0.5.0", - "color-convert": "0.5.3" - }, - "dependencies": { - "color-convert": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", - "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=" - } + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" } }, - "chartjs-color-string": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz", - "integrity": "sha512-amWNvCOXlOUYxZVDSa0YOab5K/lmEhbFNKI55PWc4mlv28BDzA7zaoQTGxSBgJMHIW+hGX8YUrvw/FH4LyhwSQ==", - "requires": { - "color-name": "1.1.3" - } + "chartist": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/chartist/-/chartist-0.11.0.tgz", + "integrity": "sha1-hLpeBUkNCW2T3PqTQ+vDHvajvSg=" }, - "chartjs-plugin-zoom": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/chartjs-plugin-zoom/-/chartjs-plugin-zoom-0.6.3.tgz", - "integrity": "sha512-BMVUv0xFuVtORJ32/X2Jqal+7AVNd/uudU88z0ttV+xaBt8IP09bkhDWvew8TslzYrZhrwcbKbBQUNvN7IEM+w==", - "requires": { - "chart.js": "2.7.1", - "hammerjs": "2.0.8" - } + "chartist-plugin-tooltip": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/chartist-plugin-tooltip/-/chartist-plugin-tooltip-0.0.11.tgz", + "integrity": "sha1-zsIZX6UF9NNObY5BqGv7y5v/9GE=" }, "chokidar": { "version": "2.0.0", @@ -842,17 +2131,17 @@ "integrity": "sha512-OgXCNv2U6TnG04D3tth0gsvdbV4zdbxFG3sYUqcoQMoEFVd1j1pZR6TZ8iknC45o9IJ6PeQI/J6wT/+cHcniAw==", "dev": true, "requires": { - "anymatch": "2.0.0", - "async-each": "1.0.1", - "braces": "2.3.0", - "fsevents": "1.1.3", - "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" + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.0.0", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" } }, "chromium-pickle-js": { @@ -873,10 +2162,10 @@ "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" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { @@ -885,7 +2174,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -894,7 +2183,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -903,7 +2192,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -914,7 +2203,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -923,7 +2212,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -934,9 +2223,9 @@ "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" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -959,9 +2248,9 @@ "integrity": "sha512-nY3W5Gu2racvdDk//ELReY+dHjb9PlIcVDFXP72nVIhq2Gy3LuVXYwJoPVudwQnv1shtohpgkdCKT2YaKY0CKw==", "dev": true, "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" }, "dependencies": { "ansi-regex": { @@ -982,8 +2271,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -992,7 +2281,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -1005,7 +2294,8 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true }, "collection-visit": { "version": "1.0.0", @@ -1013,8 +2303,8 @@ "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, "color-convert": { @@ -1023,22 +2313,29 @@ "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "^1.1.1" } }, "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", "requires": { - "delayed-stream": "1.0.0" + "delayed-stream": "~1.0.0" } }, + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, "compare-version": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", @@ -1057,10 +2354,10 @@ "integrity": "sha1-UkqfEJA/OoEzibAiXSfEi7dRiQ8=", "dev": true, "requires": { - "buffer-crc32": "0.2.13", - "crc32-stream": "2.0.0", - "normalize-path": "2.1.1", - "readable-stream": "2.3.4" + "buffer-crc32": "^0.2.1", + "crc32-stream": "^2.0.0", + "normalize-path": "^2.0.0", + "readable-stream": "^2.0.0" }, "dependencies": { "isarray": { @@ -1081,13 +2378,13 @@ "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -1096,7 +2393,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -1110,42 +2407,47 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.6", - "typedarray": "0.0.6" + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" }, "dependencies": { "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -1155,11 +2457,11 @@ "resolved": "https://registry.npmjs.org/conf/-/conf-1.4.0.tgz", "integrity": "sha512-bzlVWS2THbMetHqXKB8ypsXN4DQ/1qopGwNJi1eYbpwesJcd86FBjFciCQX/YwAhp9bM7NVnPFqZ5LpV7gP0Dg==", "requires": { - "dot-prop": "4.2.0", - "env-paths": "1.0.0", - "make-dir": "1.1.0", - "pkg-up": "2.0.0", - "write-file-atomic": "2.3.0" + "dot-prop": "^4.1.0", + "env-paths": "^1.0.0", + "make-dir": "^1.0.0", + "pkg-up": "^2.0.0", + "write-file-atomic": "^2.3.0" } }, "configstore": { @@ -1168,12 +2470,12 @@ "integrity": "sha512-5oNkD/L++l0O6xGXxb1EWS7SivtjfGQlRyxJsYgE0Z495/L81e2h4/d3r969hoPXuFItzNOKMtsXgYG4c7dYvw==", "dev": true, "requires": { - "dot-prop": "4.2.0", - "graceful-fs": "4.1.11", - "make-dir": "1.1.0", - "unique-string": "1.0.0", - "write-file-atomic": "2.3.0", - "xdg-basedir": "3.0.0" + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "console-control-strings": { @@ -1182,12 +2484,28 @@ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" + }, "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": "2.5.6", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", + "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==" + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -1205,8 +2523,8 @@ "integrity": "sha1-483TtN8xaN10494/u8t7KX/pCPQ=", "dev": true, "requires": { - "crc": "3.5.0", - "readable-stream": "2.3.4" + "crc": "^3.4.4", + "readable-stream": "^2.0.0" }, "dependencies": { "isarray": { @@ -1227,13 +2545,13 @@ "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -1242,7 +2560,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -1253,7 +2571,7 @@ "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", "dev": true, "requires": { - "capture-stack-trace": "1.0.0" + "capture-stack-trace": "^1.0.0" } }, "cross-spawn": { @@ -1262,9 +2580,9 @@ "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, "cryptiles": { @@ -1272,7 +2590,7 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", "requires": { - "boom": "5.2.0" + "boom": "5.x.x" }, "dependencies": { "boom": { @@ -1280,7 +2598,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } } } @@ -1295,8 +2613,9 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, "requires": { - "array-find-index": "1.0.2" + "array-find-index": "^1.0.1" } }, "dashdash": { @@ -1304,7 +2623,7 @@ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "debug": { @@ -1318,7 +2637,8 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true }, "decode-uri-component": { "version": "0.2.0", @@ -1336,7 +2656,7 @@ "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "delayed-stream": { @@ -1351,6 +2671,14 @@ "dev": true, "optional": true }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "requires": { + "repeating": "^2.0.0" + } + }, "detect-libc": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.2.tgz", @@ -1364,9 +2692,9 @@ "integrity": "sha1-tedIvW6Vu+cL/MaKrm/mlhGUQeE=", "dev": true, "requires": { - "accessibility-developer-tools": "2.12.0", - "highlight.js": "9.12.0", - "humanize-plus": "1.8.2" + "accessibility-developer-tools": "^2.11.0", + "highlight.js": "^9.3.0", + "humanize-plus": "^1.8.1" } }, "dmg-builder": { @@ -1375,12 +2703,30 @@ "integrity": "sha512-gysVZIdmAdfB3FFa7UBERESNobQVE+Z40up1LlRBHtVyCXPUc/1XOLU2wsC0ySvL76OZA6vxeqFJrnCjp6l37A==", "dev": true, "requires": { - "bluebird-lst": "1.0.5", - "builder-util": "4.2.1", - "fs-extra-p": "4.5.0", - "iconv-lite": "0.4.19", - "js-yaml": "3.10.0", - "parse-color": "1.0.0" + "bluebird-lst": "^1.0.5", + "builder-util": "^4.2.1", + "fs-extra-p": "^4.5.0", + "iconv-lite": "^0.4.19", + "js-yaml": "^3.10.0", + "parse-color": "^1.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } } }, "dot-prop": { @@ -1388,7 +2734,7 @@ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", "requires": { - "is-obj": "1.0.1" + "is-obj": "^1.0.0" } }, "dotenv": { @@ -1421,7 +2767,7 @@ "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "0.1.1" + "jsbn": "~0.1.0" } }, "ejs": { @@ -1434,10 +2780,11 @@ "version": "1.8.4", "resolved": "https://registry.npmjs.org/electron/-/electron-1.8.4.tgz", "integrity": "sha512-2f1cx0G3riMFODXFftF5AHXy+oHfhpntZHTDN66Hxtl09gmEr42B3piNEod9MEmw72f75LX2JfeYceqq1PF8cA==", + "dev": true, "requires": { - "@types/node": "8.10.3", - "electron-download": "3.3.0", - "extract-zip": "1.6.6" + "@types/node": "^8.0.24", + "electron-download": "^3.0.1", + "extract-zip": "^1.0.3" } }, "electron-builder": { @@ -1446,19 +2793,19 @@ "integrity": "sha512-6tUXErylz3egsZzg1DO81lRnAZDHPbIiR5I6pw+MkzcYKZbJ0VZaLWqM3EehGEFSyeT59Ih3z4v5smlw5Q+PSg==", "dev": true, "requires": { - "bluebird-lst": "1.0.5", + "bluebird-lst": "^1.0.5", "builder-util": "4.2.1", "builder-util-runtime": "4.0.3", - "chalk": "2.3.0", + "chalk": "^2.3.0", "electron-builder-lib": "19.55.2", "electron-download-tf": "4.3.4", - "fs-extra-p": "4.5.0", - "is-ci": "1.1.0", - "lazy-val": "1.0.3", + "fs-extra-p": "^4.5.0", + "is-ci": "^1.1.0", + "lazy-val": "^1.0.3", "read-config-file": "2.1.1", - "sanitize-filename": "1.6.1", - "update-notifier": "2.3.0", - "yargs": "10.1.2" + "sanitize-filename": "^1.6.1", + "update-notifier": "^2.3.0", + "yargs": "^10.1.1" }, "dependencies": { "debug": { @@ -1476,15 +2823,15 @@ "integrity": "sha512-SQYDGMLpTgty1bx3NycuDb7dNPzktVSdK2sqPZjyRocauq/uN/V4S2lcpFVLupaHhKlD8zozm9fTpm5UdohvTg==", "dev": true, "requires": { - "debug": "3.1.0", - "env-paths": "1.0.0", - "fs-extra": "4.0.3", - "minimist": "1.2.0", - "nugget": "2.0.1", - "path-exists": "3.0.0", - "rc": "1.2.4", - "semver": "5.5.0", - "sumchecker": "2.0.2" + "debug": "^3.0.0", + "env-paths": "^1.0.0", + "fs-extra": "^4.0.1", + "minimist": "^1.2.0", + "nugget": "^2.0.1", + "path-exists": "^3.0.0", + "rc": "^1.2.1", + "semver": "^5.4.1", + "sumchecker": "^2.0.2" } }, "fs-extra": { @@ -1493,9 +2840,9 @@ "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "jsonfile": { @@ -1504,7 +2851,7 @@ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.6" } }, "path-exists": { @@ -1519,7 +2866,7 @@ "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", "dev": true, "requires": { - "debug": "2.6.9" + "debug": "^2.2.0" }, "dependencies": { "debug": { @@ -1541,31 +2888,31 @@ "integrity": "sha512-XpwXqc7SlFU5hoggfVpgOJMoluu4Qb9hmV3oeermcmqGywe/bg2PGBNCF2b91ALkJRaQR2Bp1brr0RPu15KVGg==", "dev": true, "requires": { - "7zip-bin": "2.4.1", + "7zip-bin": "^2.4.1", "asar-integrity": "0.2.4", - "async-exit-hook": "2.0.1", - "bluebird-lst": "1.0.5", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.5", "builder-util": "4.2.1", "builder-util-runtime": "4.0.3", - "chromium-pickle-js": "0.2.0", - "debug": "3.1.0", + "chromium-pickle-js": "^0.2.0", + "debug": "^3.1.0", "dmg-builder": "3.1.3", - "ejs": "2.5.7", + "ejs": "^2.5.7", "electron-osx-sign": "0.4.8", "electron-publish": "19.55.2", - "fs-extra-p": "4.5.0", - "hosted-git-info": "2.5.0", - "is-ci": "1.1.0", - "isbinaryfile": "3.0.2", - "js-yaml": "3.10.0", - "lazy-val": "1.0.3", - "minimatch": "3.0.4", - "normalize-package-data": "2.4.0", - "plist": "2.1.0", + "fs-extra-p": "^4.5.0", + "hosted-git-info": "^2.5.0", + "is-ci": "^1.1.0", + "isbinaryfile": "^3.0.2", + "js-yaml": "^3.10.0", + "lazy-val": "^1.0.3", + "minimatch": "^3.0.4", + "normalize-package-data": "^2.4.0", + "plist": "^2.1.0", "read-config-file": "2.1.1", - "sanitize-filename": "1.6.1", - "semver": "5.5.0", - "temp-file": "3.1.1" + "sanitize-filename": "^1.6.1", + "semver": "^5.5.0", + "temp-file": "^3.1.1" }, "dependencies": { "debug": { @@ -1585,12 +2932,12 @@ "integrity": "sha512-DPadUNlRWufP2uT8EWAyh/MF55mAhC/mBuW1DnSZl3GexdGGESowyGf1M09oW4ED6FCyp/WqeeTiDsQSZ/mTCA==", "dev": true, "requires": { - "7zip-bin": "3.1.0", - "archiver": "2.1.1", - "bluebird-lst": "1.0.5", - "builder-util": "5.6.0", - "fs-extra-p": "4.5.2", - "sanitize-filename": "1.6.1" + "7zip-bin": "~3.1.0", + "archiver": "^2.1.1", + "bluebird-lst": "^1.0.5", + "builder-util": "^5.6.0", + "fs-extra-p": "^4.5.2", + "sanitize-filename": "^1.6.1" }, "dependencies": { "7zip-bin": { @@ -1599,9 +2946,9 @@ "integrity": "sha512-juYJNi8JEpTUWXwz8ssa8Oop4n/kwJ/pIQP22vJAVAe6RTRD+0m+e9LRNnfK2EDaX8uwmUzLNGviFQRD6SxeOw==", "dev": true, "requires": { - "7zip-bin-linux": "1.3.1", - "7zip-bin-mac": "1.0.1", - "7zip-bin-win": "2.2.0" + "7zip-bin-linux": "~1.3.1", + "7zip-bin-mac": "~1.0.1", + "7zip-bin-win": "~2.2.0" } }, "7zip-bin-win": { @@ -1617,20 +2964,20 @@ "integrity": "sha512-5Enhnnm9gCHjzOUnVqqGjuMlx6pPA36VImQ9wgpRIIyfqLPXLVyWHOYbd0CThm/+GFMWx9xwAUyU6uL93+vwMg==", "dev": true, "requires": { - "7zip-bin": "3.1.0", + "7zip-bin": "~3.1.0", "app-builder-bin": "1.5.0", - "bluebird-lst": "1.0.5", - "builder-util-runtime": "4.0.5", - "chalk": "2.3.0", - "debug": "3.1.0", - "fs-extra-p": "4.5.2", - "is-ci": "1.1.0", - "js-yaml": "3.10.0", - "lazy-val": "1.0.3", - "semver": "5.5.0", - "source-map-support": "0.5.3", - "stat-mode": "0.2.2", - "temp-file": "3.1.1" + "bluebird-lst": "^1.0.5", + "builder-util-runtime": "^4.0.5", + "chalk": "^2.3.0", + "debug": "^3.1.0", + "fs-extra-p": "^4.5.2", + "is-ci": "^1.1.0", + "js-yaml": "^3.10.0", + "lazy-val": "^1.0.3", + "semver": "^5.5.0", + "source-map-support": "^0.5.3", + "stat-mode": "^0.2.2", + "temp-file": "^3.1.1" } }, "builder-util-runtime": { @@ -1639,10 +2986,10 @@ "integrity": "sha512-NT8AxWH6miZQHnZzaTVjVp1uc6C/mWlxi6GQXKpd4CwyTQd3rT7+poOGrcOhtIiHYCL9VEbRsVfxUAPPsgqJdg==", "dev": true, "requires": { - "bluebird-lst": "1.0.5", - "debug": "3.1.0", - "fs-extra-p": "4.5.2", - "sax": "1.2.4" + "bluebird-lst": "^1.0.5", + "debug": "^3.1.0", + "fs-extra-p": "^4.5.0", + "sax": "^1.2.4" } }, "debug": { @@ -1660,9 +3007,9 @@ "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "fs-extra-p": { @@ -1671,8 +3018,8 @@ "integrity": "sha512-ZYqFpBdy9w7PsK+vB30j+TnHOyWHm/CJbUq1qqoE8tb71m6qgk5Wa7gp3MYQdlGFxb9vfznF+yD4jcl8l+y91A==", "dev": true, "requires": { - "bluebird-lst": "1.0.5", - "fs-extra": "5.0.0" + "bluebird-lst": "^1.0.5", + "fs-extra": "^5.0.0" } }, "jsonfile": { @@ -1681,7 +3028,7 @@ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.6" } } } @@ -1692,24 +3039,25 @@ "integrity": "sha512-23CLHQXW+gMgdlJbeW1EinPX7DpwuLtfdzSuFL0OnsqEhKGJVJufAZTyq2hc3sr+R53rr3P+mJiYoR5VzAHKJQ==", "dev": true, "requires": { - "electron-is-dev": "0.3.0", - "electron-localshortcut": "3.1.0" + "electron-is-dev": "^0.3.0", + "electron-localshortcut": "^3.0.0" } }, "electron-download": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-3.3.0.tgz", "integrity": "sha1-LP1U1pZsAZxNSa1l++Zcyc3vaMg=", + "dev": true, "requires": { - "debug": "2.6.9", - "fs-extra": "0.30.0", - "home-path": "1.0.5", - "minimist": "1.2.0", - "nugget": "2.0.1", - "path-exists": "2.1.0", - "rc": "1.2.4", - "semver": "5.5.0", - "sumchecker": "1.3.1" + "debug": "^2.2.0", + "fs-extra": "^0.30.0", + "home-path": "^1.0.1", + "minimist": "^1.2.0", + "nugget": "^2.0.0", + "path-exists": "^2.1.0", + "rc": "^1.1.2", + "semver": "^5.3.0", + "sumchecker": "^1.2.0" } }, "electron-is-accelerator": { @@ -1729,10 +3077,10 @@ "integrity": "sha512-MgL/j5jdjW7iA0R6cI7S045B0GlKXWM1FjjujVPjlrmyXRa6yH0bGSaIAfxXAF9tpJm3pLEiQzerYHkRh9JG/A==", "dev": true, "requires": { - "debug": "2.6.9", - "electron-is-accelerator": "0.1.2", - "keyboardevent-from-electron-accelerator": "1.1.0", - "keyboardevents-areequal": "0.2.2" + "debug": "^2.6.8", + "electron-is-accelerator": "^0.1.0", + "keyboardevent-from-electron-accelerator": "^1.1.0", + "keyboardevents-areequal": "^0.2.1" } }, "electron-log": { @@ -1746,12 +3094,12 @@ "integrity": "sha1-8Ln63e2eHlTsNfqJh3tcbDTHvEA=", "dev": true, "requires": { - "bluebird": "3.5.1", - "compare-version": "0.1.2", - "debug": "2.6.9", - "isbinaryfile": "3.0.2", - "minimist": "1.2.0", - "plist": "2.1.0" + "bluebird": "^3.5.0", + "compare-version": "^0.1.2", + "debug": "^2.6.8", + "isbinaryfile": "^3.0.2", + "minimist": "^1.2.0", + "plist": "^2.1.0" } }, "electron-positioner": { @@ -1765,12 +3113,12 @@ "integrity": "sha512-SVfyAxUiOTAt2XtR508Ud27N9xJ63os3AGUj7Cchk0tBTME2HlbPgal4e5UJuw15N8jPCAsttu96AaRhFbGq5Q==", "dev": true, "requires": { - "bluebird-lst": "1.0.5", - "builder-util": "4.2.1", - "builder-util-runtime": "4.0.3", - "chalk": "2.3.0", - "fs-extra-p": "4.5.0", - "mime": "2.2.0" + "bluebird-lst": "^1.0.5", + "builder-util": "^4.2.1", + "builder-util-runtime": "^4.0.3", + "chalk": "^2.3.0", + "fs-extra-p": "^4.5.0", + "mime": "^2.2.0" } }, "electron-reload": { @@ -1779,7 +3127,7 @@ "integrity": "sha512-dPZrcqjgFR3Gu5TOOVK3GQx63JcB2WJ0hki/4M5tlenDF7epFSnKkcAZyKYwUGEqk1TkUkUUOl7ZyzAK6QNuNQ==", "dev": true, "requires": { - "chokidar": "1.7.0" + "chokidar": "^1.5.1" }, "dependencies": { "anymatch": { @@ -1788,8 +3136,8 @@ "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", "dev": true, "requires": { - "micromatch": "2.3.11", - "normalize-path": "2.1.1" + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" } }, "arr-diff": { @@ -1798,7 +3146,7 @@ "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "arr-flatten": "1.1.0" + "arr-flatten": "^1.0.1" } }, "array-unique": { @@ -1813,9 +3161,9 @@ "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" } }, "chokidar": { @@ -1824,15 +3172,15 @@ "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", "dev": true, "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", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" } }, "expand-brackets": { @@ -1841,7 +3189,7 @@ "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "is-posix-bracket": "0.1.1" + "is-posix-bracket": "^0.1.0" } }, "extglob": { @@ -1850,7 +3198,7 @@ "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "glob-parent": { @@ -1859,7 +3207,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "is-extglob": { @@ -1874,7 +3222,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } }, "kind-of": { @@ -1883,7 +3231,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "micromatch": { @@ -1892,19 +3240,19 @@ "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.4" + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" } } } @@ -1914,23 +3262,29 @@ "resolved": "https://registry.npmjs.org/electron-store/-/electron-store-1.3.0.tgz", "integrity": "sha512-r1Pdl5MwpiCxgbsl0qnwv/GABO5+J/JTO16+KyqL+bOITIk9o3cq3Sw69uO9NgPkpfcKeEwxtJFbtbiBlGTiDA==", "requires": { - "conf": "1.4.0" + "conf": "^1.3.0" } }, + "electron-to-chromium": { + "version": "1.3.45", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.45.tgz", + "integrity": "sha1-RYrBscXHYM6IEaFtK/vZfsMLr7g=", + "dev": true + }, "electron-updater": { "version": "2.20.1", "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-2.20.1.tgz", "integrity": "sha512-7LJBcHY0T8So5Q/NZqYlU43DPXfyVssGq9ObamXbSL01mRt/gdpcJlXPU1w3vA/L6tC1IMVI9cAulAjI2oSYAw==", "requires": { - "bluebird-lst": "1.0.5", - "builder-util-runtime": "4.0.3", - "electron-is-dev": "0.3.0", - "fs-extra-p": "4.5.0", - "js-yaml": "3.10.0", - "lazy-val": "1.0.3", - "lodash.isequal": "4.5.0", - "semver": "5.5.0", - "source-map-support": "0.5.3" + "bluebird-lst": "^1.0.5", + "builder-util-runtime": "~4.0.3", + "electron-is-dev": "^0.3.0", + "fs-extra-p": "^4.5.0", + "js-yaml": "^3.10.0", + "lazy-val": "^1.0.3", + "lodash.isequal": "^4.5.0", + "semver": "^5.5.0", + "source-map-support": "^0.5.2" } }, "encoding": { @@ -1938,7 +3292,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "requires": { - "iconv-lite": "0.4.19" + "iconv-lite": "~0.4.13" } }, "end-of-stream": { @@ -1947,7 +3301,7 @@ "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { - "once": "1.4.0" + "once": "^1.4.0" } }, "env-paths": { @@ -1959,19 +3313,132 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "es6-promise": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.4.tgz", - "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==" + "integrity": "sha512-/NdNZVJg+uZgtm9eS3O6lrOLYmQag2DjdEXuPaHlZ6RuVqgqaVZfgYCepEIKsLqwdQArOPtC3XzRLqGGfT8KQQ==", + "dev": true }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "eslint-config-airbnb-base": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-12.1.0.tgz", + "integrity": "sha512-/vjm0Px5ZCpmJqnjIzcFb9TKZrKWz0gnuG/7Gfkt0Db1ELJR51xkZth+t14rYdqWgX836XbuxtArbIHlVhbLBA==", + "dev": true, + "requires": { + "eslint-restricted-globals": "^0.1.1" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.5.0" + } + }, + "eslint-module-utils": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", + "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", + "dev": true, + "requires": { + "debug": "^2.6.8", + "pkg-dir": "^1.0.0" + } + }, + "eslint-plugin-import": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.11.0.tgz", + "integrity": "sha1-Fa7qN6Z0mdhI6OmBgG1GJ7VQOBY=", + "dev": true, + "requires": { + "contains-path": "^0.1.0", + "debug": "^2.6.8", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.2.0", + "has": "^1.0.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.3", + "read-pkg-up": "^2.0.0", + "resolve": "^1.6.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "eslint-restricted-globals": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", + "integrity": "sha1-NfDVy8ZMLj7WLpO0saevBbp+1Nc=", "dev": true }, "esprima": { @@ -1979,19 +3446,24 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, "event-stream": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=", "dev": true, "requires": { - "duplexer": "0.1.1", - "from": "0.1.7", - "map-stream": "0.1.0", + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", "pause-stream": "0.0.11", - "split": "0.3.3", - "stream-combiner": "0.0.4", - "through": "2.3.8" + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" } }, "execa": { @@ -2000,13 +3472,13 @@ "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" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" } }, "expand-brackets": { @@ -2015,13 +3487,13 @@ "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" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -2030,7 +3502,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -2039,7 +3511,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2048,7 +3520,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2059,7 +3531,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2068,7 +3540,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2079,9 +3551,9 @@ "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" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -2098,7 +3570,7 @@ "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fill-range": "2.2.3" + "fill-range": "^2.1.0" }, "dependencies": { "fill-range": { @@ -2107,11 +3579,11 @@ "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", "dev": true, "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^1.1.3", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" } }, "is-number": { @@ -2120,7 +3592,7 @@ "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "isarray": { @@ -2144,7 +3616,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2160,7 +3632,7 @@ "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "extglob": { @@ -2169,20 +3641,21 @@ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.0", - "snapdragon": "0.8.1", - "to-regex": "3.0.1" + "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" } }, "extract-zip": { "version": "1.6.6", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.6.tgz", "integrity": "sha1-EpDt6NINCHK0Kf0/NRyhKOxe+Fw=", + "dev": true, "requires": { "concat-stream": "1.6.0", "debug": "2.6.9", @@ -2209,8 +3682,9 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, "requires": { - "pend": "1.2.0" + "pend": "~1.2.0" } }, "filename-regex": { @@ -2225,19 +3699,20 @@ "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" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" } }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "for-in": { @@ -2252,7 +3727,7 @@ "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "for-in": "1.0.2" + "for-in": "^1.0.1" } }, "forever-agent": { @@ -2265,9 +3740,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "fragment-cache": { @@ -2276,7 +3751,7 @@ "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { - "map-cache": "0.2.2" + "map-cache": "^0.2.2" } }, "from": { @@ -2289,12 +3764,13 @@ "version": "0.30.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "2.4.0", - "klaw": "1.3.1", - "path-is-absolute": "1.0.1", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" } }, "fs-extra-p": { @@ -2302,8 +3778,8 @@ "resolved": "https://registry.npmjs.org/fs-extra-p/-/fs-extra-p-4.5.0.tgz", "integrity": "sha512-V/sdZmV+Yx3+nfXmjRTdBP4mVWCt7hZ0+ZOv+IZo+6fdkBxafaGsI7mYeNv/J3rWyz+mIToCFQORFSwt1bZw8Q==", "requires": { - "bluebird-lst": "1.0.5", - "fs-extra": "5.0.0" + "bluebird-lst": "^1.0.5", + "fs-extra": "^5.0.0" }, "dependencies": { "fs-extra": { @@ -2311,9 +3787,9 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", "requires": { - "graceful-fs": "4.1.11", - "jsonfile": "4.0.0", - "universalify": "0.1.1" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, "jsonfile": { @@ -2321,15 +3797,22 @@ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.6" } } } }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "fsevents": { "version": "1.1.3", @@ -2338,8 +3821,8 @@ "dev": true, "optional": true, "requires": { - "nan": "2.8.0", - "node-pre-gyp": "0.6.39" + "nan": "^2.3.0", + "node-pre-gyp": "^0.6.39" }, "dependencies": { "ajv": { @@ -2347,8 +3830,8 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "assert-plus": { @@ -2371,7 +3854,7 @@ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "cryptiles": { @@ -2379,7 +3862,7 @@ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "extsprintf": { @@ -2392,9 +3875,9 @@ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "har-schema": { @@ -2407,8 +3890,8 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "hawk": { @@ -2416,10 +3899,10 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { @@ -2432,9 +3915,9 @@ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "isarray": { @@ -2465,8 +3948,8 @@ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.4" + "abbrev": "1", + "osenv": "^0.1.4" } }, "performance-now": { @@ -2484,10 +3967,10 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { @@ -2502,12 +3985,12 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.9.tgz", "integrity": "sha1-z3jsb0ptHrQ9JkiMrJfwQudLf8g=", "requires": { - "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" + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~1.0.0", + "util-deprecate": "~1.0.1" } }, "request": { @@ -2515,28 +3998,28 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", "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.17", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" } }, "semver": { @@ -2549,7 +4032,7 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "string_decoder": { @@ -2557,7 +4040,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.1.tgz", "integrity": "sha1-YuIA8DmVWmgQ2N8KM//A8BNmLZg=", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "verror": { @@ -2576,10 +4059,10 @@ "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.0", - "rimraf": "2.6.2" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" } }, "fstream-ignore": { @@ -2589,11 +4072,17 @@ "dev": true, "optional": true, "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" + "fstream": "^1.0.0", + "inherits": "2", + "minimatch": "^3.0.0" } }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -2601,14 +4090,14 @@ "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" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, "get-caller-file": { @@ -2620,7 +4109,8 @@ "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true }, "get-stream": { "version": "3.0.0", @@ -2639,20 +4129,21 @@ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "^1.0.0" } }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "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" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "glob-base": { @@ -2661,8 +4152,8 @@ "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", "dev": true, "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" }, "dependencies": { "glob-parent": { @@ -2671,7 +4162,7 @@ "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", "dev": true, "requires": { - "is-glob": "2.0.1" + "is-glob": "^2.0.0" } }, "is-extglob": { @@ -2686,7 +4177,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -2697,8 +4188,8 @@ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "dev": true, "requires": { - "is-glob": "3.1.0", - "path-dirname": "1.0.2" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" }, "dependencies": { "is-glob": { @@ -2707,7 +4198,7 @@ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.0" } } } @@ -2718,26 +4209,31 @@ "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, "requires": { - "ini": "1.3.5" + "ini": "^1.3.4" } }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==" + }, "got": { "version": "6.7.1", "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "dev": true, "requires": { - "create-error-class": "3.0.2", - "duplexer3": "0.1.4", - "get-stream": "3.0.0", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "safe-buffer": "5.1.1", - "timed-out": "4.0.1", - "unzip-response": "2.0.1", - "url-parse-lax": "1.0.0" + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" } }, "graceful-fs": { @@ -2745,11 +4241,6 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, - "hammerjs": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" - }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -2760,8 +4251,25 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "^1.0.2" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -2783,9 +4291,9 @@ "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" } }, "has-values": { @@ -2794,8 +4302,8 @@ "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "kind-of": { @@ -2804,7 +4312,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2814,10 +4322,10 @@ "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.0", - "sntp": "2.1.0" + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" } }, "highlight.js": { @@ -2831,24 +4339,35 @@ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, "home-path": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.5.tgz", - "integrity": "sha1-eIspgVsS1Tus9XVkhHbm+QQdEz8=" + "integrity": "sha1-eIspgVsS1Tus9XVkhHbm+QQdEz8=", + "dev": true }, "hosted-git-info": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", - "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==" + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "humanize-plus": { @@ -2883,17 +4402,19 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -2906,6 +4427,19 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, + "install": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/install/-/install-0.11.0.tgz", + "integrity": "sha512-30UqvWKr/59SStU2/bRye4wT1S3mzjwa0oV+BxusB0neGqhxUrwLlnXDbt6QtIfBxCNWFqg+ARnGNjFj8XuV5A==" + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "requires": { + "loose-envify": "^1.0.0" + } + }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -2918,13 +4452,14 @@ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true }, "is-binary-path": { "version": "1.0.1", @@ -2932,7 +4467,7 @@ "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "dev": true, "requires": { - "binary-extensions": "1.11.0" + "binary-extensions": "^1.0.0" } }, "is-buffer": { @@ -2945,8 +4480,9 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-ci": { @@ -2955,7 +4491,7 @@ "integrity": "sha512-c7TnwxLePuqIlxHgr7xtxzycJPegNHFuIrBkwbf8hc58//+Op1CqFkyS+xnIMkwn9UsJIwc174BIjkyBmSpjKg==", "dev": true, "requires": { - "ci-info": "1.1.2" + "ci-info": "^1.0.0" } }, "is-data-descriptor": { @@ -2964,7 +4500,7 @@ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -2973,9 +4509,9 @@ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-dotfile": { @@ -2990,7 +4526,7 @@ "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", "dev": true, "requires": { - "is-primitive": "2.0.0" + "is-primitive": "^2.0.0" } }, "is-extendable": { @@ -3010,15 +4546,16 @@ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-glob": { @@ -3027,7 +4564,7 @@ "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "is-extglob": "2.1.1" + "is-extglob": "^2.1.1" } }, "is-installed-globally": { @@ -3036,8 +4573,8 @@ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "dev": true, "requires": { - "global-dirs": "0.1.1", - "is-path-inside": "1.0.1" + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" } }, "is-npm": { @@ -3052,7 +4589,7 @@ "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -3061,7 +4598,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -3077,7 +4614,7 @@ "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=", "dev": true, "requires": { - "is-number": "3.0.0" + "is-number": "^3.0.0" } }, "is-path-inside": { @@ -3086,7 +4623,7 @@ "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { - "path-is-inside": "1.0.2" + "path-is-inside": "^1.0.1" } }, "is-plain-object": { @@ -3095,7 +4632,7 @@ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, "is-posix-bracket": { @@ -3135,12 +4672,14 @@ "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true }, "isbinaryfile": { "version": "3.0.2", @@ -3165,13 +4704,18 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" + }, "js-yaml": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" } }, "jsbn": { @@ -3180,6 +4724,12 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "optional": true }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -3195,7 +4745,7 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", "requires": { - "jsonify": "0.0.0" + "jsonify": "~0.0.0" } }, "json-stringify-safe": { @@ -3206,15 +4756,15 @@ "json5": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "dev": true + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" }, "jsonfile": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.6" } }, "jsonify": { @@ -3255,8 +4805,9 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, "requires": { - "graceful-fs": "4.1.11" + "graceful-fs": "^4.1.9" } }, "latest-version": { @@ -3265,7 +4816,7 @@ "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", "dev": true, "requires": { - "package-json": "4.0.1" + "package-json": "^4.0.0" } }, "lazy-cache": { @@ -3274,7 +4825,7 @@ "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", "dev": true, "requires": { - "set-getter": "0.1.0" + "set-getter": "^0.1.0" } }, "lazy-val": { @@ -3288,7 +4839,7 @@ "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", "dev": true, "requires": { - "readable-stream": "2.3.4" + "readable-stream": "^2.0.5" }, "dependencies": { "isarray": { @@ -3309,13 +4860,13 @@ "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -3324,7 +4875,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -3335,19 +4886,20 @@ "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "locate-path": { @@ -3355,8 +4907,8 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "dependencies": { "path-exists": { @@ -3369,21 +4921,41 @@ "lodash": { "version": "4.17.5", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==", - "dev": true + "integrity": "sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==" }, "lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "requires": { + "js-tokens": "^3.0.0" + } + }, "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" } }, "lowercase-keys": { @@ -3398,8 +4970,8 @@ "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "make-dir": { @@ -3407,7 +4979,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.1.0.tgz", "integrity": "sha512-0Pkui4wLJ7rxvmfUvs87skoEaxmu0hCUApF8nonzpl7q//FWp9zu8W61Scz4sd/kUiqDxvUhtoam2efDyiBzcA==", "requires": { - "pify": "3.0.0" + "pify": "^3.0.0" }, "dependencies": { "pify": { @@ -3426,7 +4998,8 @@ "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true }, "map-stream": { "version": "0.1.0", @@ -3440,7 +5013,7 @@ "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { - "object-visit": "1.0.1" + "object-visit": "^1.0.0" } }, "mem": { @@ -3449,7 +5022,7 @@ "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", "dev": true, "requires": { - "mimic-fn": "1.1.0" + "mimic-fn": "^1.0.0" } }, "menubar": { @@ -3457,8 +5030,8 @@ "resolved": "https://registry.npmjs.org/menubar/-/menubar-5.2.3.tgz", "integrity": "sha1-jydhWXtKDuh+3wSofYqrGqwsROk=", "requires": { - "electron-positioner": "3.0.0", - "extend": "2.0.1" + "electron-positioner": "^3.0.0", + "extend": "^2.0.0" }, "dependencies": { "extend": { @@ -3472,17 +5045,18 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.4.0", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" } }, "micromatch": { @@ -3491,19 +5065,19 @@ "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" + "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.2", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.0", + "nanomatch": "^1.2.5", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" } }, "mime": { @@ -3522,7 +5096,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", "requires": { - "mime-db": "1.30.0" + "mime-db": "~1.30.0" } }, "mimic-fn": { @@ -3536,13 +5110,14 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true }, "mixin-deep": { "version": "1.3.0", @@ -3550,8 +5125,8 @@ "integrity": "sha512-dgaCvoh6i1nosAUBKb0l0pfJ78K8+S9fluyIR2YvAeUD/QuMahnFnF3xYty5eYXMjhGSsB0DsW6A0uAZyetoAg==", "dev": true, "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -3560,7 +5135,7 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -3569,6 +5144,7 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz", "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", + "dev": true, "requires": { "minimist": "0.0.8" }, @@ -3576,7 +5152,8 @@ "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true } } }, @@ -3590,7 +5167,7 @@ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.14.tgz", "integrity": "sha1-TrOP+VOLgBCLpGekWPPtQmjM/LE=", "requires": { - "moment": "2.18.1" + "moment": ">= 2.9.0" } }, "ms": { @@ -3611,17 +5188,17 @@ "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" + "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.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "kind-of": { @@ -3637,8 +5214,8 @@ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" + "encoding": "^0.1.11", + "is-stream": "^1.0.1" } }, "node-pre-gyp": { @@ -3648,17 +5225,17 @@ "dev": true, "optional": true, "requires": { - "detect-libc": "1.0.2", + "detect-libc": "^1.0.2", "hawk": "3.1.3", - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.4", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.0.2", + "rc": "^1.1.7", "request": "2.81.0", - "rimraf": "2.6.2", - "semver": "5.5.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^2.2.1", + "tar-pack": "^3.4.0" }, "dependencies": { "ajv": { @@ -3668,8 +5245,8 @@ "dev": true, "optional": true, "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" } }, "assert-plus": { @@ -3692,7 +5269,7 @@ "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } }, "cryptiles": { @@ -3701,7 +5278,7 @@ "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", "dev": true, "requires": { - "boom": "2.10.1" + "boom": "2.x.x" } }, "form-data": { @@ -3711,9 +5288,9 @@ "dev": true, "optional": true, "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.5", + "mime-types": "^2.1.12" } }, "har-schema": { @@ -3730,8 +5307,8 @@ "dev": true, "optional": true, "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" + "ajv": "^4.9.1", + "har-schema": "^1.0.5" } }, "hawk": { @@ -3740,10 +5317,10 @@ "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", "dev": true, "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" + "boom": "2.x.x", + "cryptiles": "2.x.x", + "hoek": "2.x.x", + "sntp": "1.x.x" } }, "hoek": { @@ -3759,9 +5336,9 @@ "dev": true, "optional": true, "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "^0.2.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" } }, "minimist": { @@ -3788,8 +5365,8 @@ "dev": true, "optional": true, "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.4" + "abbrev": "1", + "osenv": "^0.1.4" } }, "performance-now": { @@ -3813,28 +5390,28 @@ "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.17", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" + "aws-sign2": "~0.6.0", + "aws4": "^1.2.1", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.0", + "forever-agent": "~0.6.1", + "form-data": "~2.1.1", + "har-validator": "~4.2.1", + "hawk": "~3.1.3", + "http-signature": "~1.1.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.7", + "oauth-sign": "~0.8.1", + "performance-now": "^0.2.0", + "qs": "~6.4.0", + "safe-buffer": "^5.0.1", + "stringstream": "~0.0.4", + "tough-cookie": "~2.3.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.0" } }, "sntp": { @@ -3843,7 +5420,7 @@ "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", "dev": true, "requires": { - "hoek": "2.16.3" + "hoek": "2.x.x" } } } @@ -3854,15 +5431,15 @@ "integrity": "sha512-323uPopdzYcyDR2Ze1UOLF9zocwoQEyGPiKaLm/Y8Mbfjylt/YueAJUVHqox+vgG8TqZqZApcHv5lmUvrn/KQw==", "dev": true, "requires": { - "chokidar": "2.0.0", - "debug": "3.1.0", - "ignore-by-default": "1.0.1", - "minimatch": "3.0.4", - "pstree.remy": "1.1.0", - "semver": "5.5.0", - "touch": "3.1.0", - "undefsafe": "2.0.1", - "update-notifier": "2.3.0" + "chokidar": "^2.0.0", + "debug": "^3.1.0", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.0", + "semver": "^5.4.1", + "touch": "^3.1.0", + "undefsafe": "^2.0.1", + "update-notifier": "^2.3.0" }, "dependencies": { "debug": { @@ -3882,18 +5459,19 @@ "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", "dev": true, "requires": { - "abbrev": "1.1.1" + "abbrev": "1" } }, "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, "requires": { - "hosted-git-info": "2.5.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.1" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { @@ -3902,7 +5480,7 @@ "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "remove-trailing-separator": "1.1.0" + "remove-trailing-separator": "^1.0.1" } }, "npm-run-path": { @@ -3911,7 +5489,7 @@ "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "npmlog": { @@ -3921,23 +5499,24 @@ "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" + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" } }, "nugget": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz", "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", + "dev": true, "requires": { - "debug": "2.6.9", - "minimist": "1.2.0", - "pretty-bytes": "1.0.4", - "progress-stream": "1.2.0", - "request": "2.83.0", - "single-line-log": "1.1.2", + "debug": "^2.1.3", + "minimist": "^1.1.0", + "pretty-bytes": "^1.0.2", + "progress-stream": "^1.1.0", + "request": "^2.45.0", + "single-line-log": "^1.1.2", "throttleit": "0.0.2" } }, @@ -3962,9 +5541,9 @@ "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { "define-property": { @@ -3973,7 +5552,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -3982,7 +5561,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-data-descriptor": { @@ -3991,7 +5570,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-descriptor": { @@ -4000,9 +5579,9 @@ "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" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { @@ -4019,7 +5598,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -4027,7 +5606,8 @@ "object-keys": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=" + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "dev": true }, "object-visit": { "version": "1.0.1", @@ -4035,7 +5615,7 @@ "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.0" } }, "object.omit": { @@ -4044,8 +5624,8 @@ "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" } }, "object.pick": { @@ -4054,15 +5634,16 @@ "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" } }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "os-homedir": { @@ -4076,9 +5657,9 @@ "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "dev": true, "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, "os-tmpdir": { @@ -4091,8 +5672,36 @@ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "output-file-sync": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", + "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.4", + "mkdirp": "^0.5.1", + "object-assign": "^4.1.0" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + } } }, "p-finally": { @@ -4106,7 +5715,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -4114,7 +5723,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", "requires": { - "p-limit": "1.2.0" + "p-limit": "^1.1.0" } }, "p-try": { @@ -4128,10 +5737,10 @@ "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", "dev": true, "requires": { - "got": "6.7.1", - "registry-auth-token": "3.3.1", - "registry-url": "3.1.0", - "semver": "5.5.0" + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" } }, "parse-color": { @@ -4140,7 +5749,7 @@ "integrity": "sha1-e3SLlag/A/FqlPU15S1/PZRlhhk=", "dev": true, "requires": { - "color-convert": "0.5.3" + "color-convert": "~0.5.0" }, "dependencies": { "color-convert": { @@ -4157,10 +5766,10 @@ "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" }, "dependencies": { "is-extglob": { @@ -4175,7 +5784,7 @@ "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "is-extglob": "1.0.0" + "is-extglob": "^1.0.0" } } } @@ -4184,8 +5793,9 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "pascalcase": { @@ -4204,8 +5814,9 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-is-absolute": { @@ -4225,14 +5836,21 @@ "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "pause-stream": { @@ -4241,13 +5859,14 @@ "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", "dev": true, "requires": { - "through": "2.3.8" + "through": "~2.3" } }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "dev": true }, "performance-now": { "version": "2.1.0", @@ -4257,19 +5876,31 @@ "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true }, "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, "requires": { - "pinkie": "2.0.4" + "find-up": "^1.0.0" } }, "pkg-up": { @@ -4277,7 +5908,7 @@ "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", "requires": { - "find-up": "2.1.0" + "find-up": "^2.1.0" }, "dependencies": { "find-up": { @@ -4285,7 +5916,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } } } @@ -4298,7 +5929,7 @@ "requires": { "base64-js": "1.2.0", "xmlbuilder": "8.2.2", - "xmldom": "0.1.27" + "xmldom": "0.1.x" } }, "posix-character-classes": { @@ -4323,11 +5954,17 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "dev": true, "requires": { - "get-stdin": "4.0.1", - "meow": "3.7.0" + "get-stdin": "^4.0.1", + "meow": "^3.1.0" } }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", @@ -4337,9 +5974,10 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", + "dev": true, "requires": { - "speedometer": "0.1.4", - "through2": "0.2.3" + "speedometer": "~0.1.2", + "through2": "~0.2.3" } }, "ps-tree": { @@ -4348,7 +5986,7 @@ "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", "dev": true, "requires": { - "event-stream": "3.3.4" + "event-stream": "~3.3.0" } }, "pseudomap": { @@ -4363,7 +6001,7 @@ "integrity": "sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q==", "dev": true, "requires": { - "ps-tree": "1.1.0" + "ps-tree": "^1.1.0" } }, "punycode": { @@ -4381,9 +6019,9 @@ "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.0.tgz", "integrity": "sha512-F3DkxxlY0AqD/rwe4YAwjRE2HjOkKW7TxsuteyrS/Jbwrxw887PqYBL4sWUJ9D/V1hmFns0SCD6FDyvlwo9RCQ==", "requires": { - "decode-uri-component": "0.2.0", - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" } }, "randomatic": { @@ -4392,8 +6030,8 @@ "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "kind-of": { @@ -4402,7 +6040,7 @@ "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -4411,11 +6049,12 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.4.tgz", "integrity": "sha1-oPYGyq4qO4YrvQ74VILAElsxX6M=", + "dev": true, "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" + "deep-extend": "~0.4.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" } }, "read-config-file": { @@ -4424,45 +6063,48 @@ "integrity": "sha512-tzV5MRYA1OIbjy0ZC3cKlQZMLyRYMJ7k37Inff0CH0fQGXFP9p0s0eJ3bQxnnvQDhPSspnW9fw9v2K0b+6TODg==", "dev": true, "requires": { - "ajv": "5.5.2", - "ajv-keywords": "2.1.1", - "bluebird-lst": "1.0.5", - "dotenv": "4.0.0", - "dotenv-expand": "4.0.1", - "fs-extra-p": "4.5.0", - "js-yaml": "3.10.0", - "json5": "0.5.1", - "lazy-val": "1.0.3" + "ajv": "^5.5.0", + "ajv-keywords": "^2.1.0", + "bluebird-lst": "^1.0.5", + "dotenv": "^4.0.0", + "dotenv-expand": "^4.0.1", + "fs-extra-p": "^4.5.0", + "js-yaml": "^3.10.0", + "json5": "^0.5.1", + "lazy-val": "^1.0.3" } }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" } }, "readable-stream": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", "isarray": "0.0.1", - "string_decoder": "0.10.31" + "string_decoder": "~0.10.x" } }, "readdirp": { @@ -4471,10 +6113,10 @@ "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", "dev": true, "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.3", - "set-immediate-shim": "1.0.1" + "graceful-fs": "^4.1.2", + "minimatch": "^3.0.2", + "readable-stream": "^2.0.2", + "set-immediate-shim": "^1.0.1" }, "dependencies": { "isarray": { @@ -4489,13 +6131,13 @@ "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -4504,7 +6146,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -4513,9 +6155,32 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "regenerate": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", + "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" } }, "regex-cache": { @@ -4524,7 +6189,7 @@ "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "is-equal-shallow": "0.1.3" + "is-equal-shallow": "^0.1.3" } }, "regex-not": { @@ -4533,7 +6198,18 @@ "integrity": "sha1-Qvg+OXcWIt+CawKvF2Ul1qXxV/k=", "dev": true, "requires": { - "extend-shallow": "2.0.1" + "extend-shallow": "^2.0.1" + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" } }, "registry-auth-token": { @@ -4542,8 +6218,8 @@ "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", "dev": true, "requires": { - "rc": "1.2.4", - "safe-buffer": "5.1.1" + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" } }, "registry-url": { @@ -4552,7 +6228,22 @@ "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", "dev": true, "requires": { - "rc": "1.2.4" + "rc": "^1.0.1" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" } }, "remove-trailing-separator": { @@ -4578,7 +6269,7 @@ "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "request": { @@ -4586,28 +6277,46 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", "requires": { - "aws-sign2": "0.7.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.3.1", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.2.1" + "aws-sign2": "~0.7.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.3.1", + "har-validator": "~5.0.3", + "hawk": "~6.0.2", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "stringstream": "~0.0.5", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + } + }, + "request-promise-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.1.tgz", + "integrity": "sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=", + "requires": { + "lodash": "^4.13.1" + } + }, + "request-promise-native": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.5.tgz", + "integrity": "sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=", + "requires": { + "request-promise-core": "1.1.1", + "stealthy-require": "^1.1.0", + "tough-cookie": ">=2.3.3" } }, "require-directory": { @@ -4622,6 +6331,15 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -4632,8 +6350,9 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-buffer": { @@ -4647,7 +6366,7 @@ "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", "dev": true, "requires": { - "truncate-utf8-bytes": "1.0.2" + "truncate-utf8-bytes": "^1.0.0" } }, "sax": { @@ -4666,7 +6385,7 @@ "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", "dev": true, "requires": { - "semver": "5.5.0" + "semver": "^5.0.3" } }, "set-blocking": { @@ -4681,7 +6400,7 @@ "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", "dev": true, "requires": { - "to-object-path": "0.3.0" + "to-object-path": "^0.3.0" } }, "set-immediate-shim": { @@ -4696,10 +6415,10 @@ "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" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" } }, "shebang-command": { @@ -4708,7 +6427,7 @@ "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -4726,24 +6445,30 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", + "dev": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.1" } }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" + }, "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" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^2.0.0" }, "dependencies": { "define-property": { @@ -4752,7 +6477,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -4761,7 +6486,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -4770,7 +6495,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -4781,7 +6506,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -4790,7 +6515,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -4801,9 +6526,9 @@ "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" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -4820,9 +6545,9 @@ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" } }, "snapdragon-util": { @@ -4831,7 +6556,7 @@ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.2.0" }, "dependencies": { "kind-of": { @@ -4840,7 +6565,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -4850,14 +6575,13 @@ "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", "requires": { - "hoek": "4.2.0" + "hoek": "4.x.x" } }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-resolve": { "version": "0.5.1", @@ -4865,11 +6589,11 @@ "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" + "atob": "^2.0.0", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, "source-map-support": { @@ -4877,7 +6601,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.3.tgz", "integrity": "sha512-eKkTgWYeBOQqFGXRfKabMFdnWepo51vWqEdoeikaEPFiJC7MCU5j2h4+6Q8npkZTeLGbSyecZvRxiSoWl3rh+w==", "requires": { - "source-map": "0.6.1" + "source-map": "^0.6.0" }, "dependencies": { "source-map": { @@ -4897,24 +6621,28 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, "requires": { - "spdx-license-ids": "1.2.2" + "spdx-license-ids": "^1.0.2" } }, "spdx-expression-parse": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true }, "spdx-license-ids": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true }, "speedometer": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", - "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=" + "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", + "dev": true }, "split": { "version": "0.3.3", @@ -4922,7 +6650,7 @@ "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=", "dev": true, "requires": { - "through": "2.3.8" + "through": "2" } }, "split-string": { @@ -4931,7 +6659,7 @@ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { - "extend-shallow": "3.0.2" + "extend-shallow": "^3.0.0" }, "dependencies": { "extend-shallow": { @@ -4940,8 +6668,8 @@ "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" } }, "is-extendable": { @@ -4950,7 +6678,7 @@ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -4965,14 +6693,14 @@ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", "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", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "tweetnacl": "~0.14.0" } }, "stat-mode": { @@ -4987,8 +6715,8 @@ "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { "define-property": { @@ -4997,7 +6725,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -5006,7 +6734,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -5015,7 +6743,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -5026,7 +6754,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -5035,7 +6763,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -5046,9 +6774,9 @@ "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" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -5059,13 +6787,18 @@ } } }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, "stream-combiner": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", "dev": true, "requires": { - "duplexer": "0.1.1" + "duplexer": "~0.1.1" } }, "strict-uri-encode": { @@ -5077,16 +6810,18 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } }, "string_decoder": { "version": "0.10.31", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true }, "stringstream": { "version": "0.0.5", @@ -5098,15 +6833,16 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-eof": { @@ -5119,8 +6855,9 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, "requires": { - "get-stdin": "4.0.1" + "get-stdin": "^4.0.1" } }, "strip-json-comments": { @@ -5132,9 +6869,10 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-1.3.1.tgz", "integrity": "sha1-ebs7RFbdBPGOvbwNcDodHa7FEF0=", + "dev": true, "requires": { - "debug": "2.6.9", - "es6-promise": "4.2.4" + "debug": "^2.2.0", + "es6-promise": "^4.0.5" } }, "supports-color": { @@ -5143,7 +6881,7 @@ "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", "dev": true, "requires": { - "has-flag": "2.0.0" + "has-flag": "^2.0.0" } }, "tar": { @@ -5152,9 +6890,9 @@ "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", "dev": true, "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" } }, "tar-pack": { @@ -5164,14 +6902,14 @@ "dev": true, "optional": true, "requires": { - "debug": "2.6.9", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.3.4", - "rimraf": "2.6.2", - "tar": "2.2.1", - "uid-number": "0.0.6" + "debug": "^2.2.0", + "fstream": "^1.0.10", + "fstream-ignore": "^1.0.5", + "once": "^1.3.3", + "readable-stream": "^2.1.4", + "rimraf": "^2.5.1", + "tar": "^2.2.1", + "uid-number": "^0.0.6" }, "dependencies": { "isarray": { @@ -5195,13 +6933,13 @@ "dev": true, "optional": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -5211,7 +6949,7 @@ "dev": true, "optional": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } @@ -5222,10 +6960,10 @@ "integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==", "dev": true, "requires": { - "bl": "1.2.1", - "end-of-stream": "1.4.1", - "readable-stream": "2.3.4", - "xtend": "4.0.1" + "bl": "^1.0.0", + "end-of-stream": "^1.0.0", + "readable-stream": "^2.0.0", + "xtend": "^4.0.0" }, "dependencies": { "isarray": { @@ -5246,13 +6984,13 @@ "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -5261,7 +6999,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } }, "xtend": { @@ -5278,10 +7016,10 @@ "integrity": "sha512-W/6SJgtg2SE/5rxgwUwoDhdSXrvUWQBpgKJglaAe6S7mk1kLkI+LUbY/jPZBu3UhydDJZstNNd7AJhnZ0UZHtw==", "dev": true, "requires": { - "async-exit-hook": "2.0.1", - "bluebird-lst": "1.0.5", - "fs-extra-p": "4.5.0", - "lazy-val": "1.0.3" + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.5", + "fs-extra-p": "^4.5.0", + "lazy-val": "^1.0.3" } }, "term-size": { @@ -5290,13 +7028,14 @@ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "dev": true, "requires": { - "execa": "0.7.0" + "execa": "^0.7.0" } }, "throttleit": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", - "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=" + "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=", + "dev": true }, "through": { "version": "2.3.8", @@ -5308,9 +7047,10 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", + "dev": true, "requires": { - "readable-stream": "1.1.14", - "xtend": "2.1.2" + "readable-stream": "~1.1.9", + "xtend": "~2.1.1" } }, "timed-out": { @@ -5319,13 +7059,18 @@ "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", "dev": true }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=" + }, "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" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -5334,7 +7079,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -5345,9 +7090,9 @@ "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", "dev": true, "requires": { - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "regex-not": "1.0.0" + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "regex-not": "^1.0.0" }, "dependencies": { "define-property": { @@ -5356,7 +7101,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -5365,7 +7110,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -5374,7 +7119,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -5385,7 +7130,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -5394,7 +7139,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -5405,9 +7150,9 @@ "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" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -5424,8 +7169,8 @@ "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" } }, "touch": { @@ -5434,7 +7179,7 @@ "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", "dev": true, "requires": { - "nopt": "1.0.10" + "nopt": "~1.0.10" } }, "tough-cookie": { @@ -5442,13 +7187,19 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", "requires": { - "punycode": "1.4.1" + "punycode": "^1.4.1" } }, "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" }, "truncate-utf8-bytes": { "version": "1.0.2", @@ -5456,7 +7207,7 @@ "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", "dev": true, "requires": { - "utf8-byte-length": "1.0.4" + "utf8-byte-length": "^1.0.1" } }, "tunnel-agent": { @@ -5464,7 +7215,7 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "^5.0.1" } }, "tweetnacl": { @@ -5476,7 +7227,8 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true }, "uid-number": { "version": "0.0.6", @@ -5491,7 +7243,7 @@ "integrity": "sha1-A7LyoWyUVW4Usu3vMmzWaq+CcHo=", "dev": true, "requires": { - "debug": "2.6.9" + "debug": "^2.2.0" } }, "union-value": { @@ -5500,10 +7252,10 @@ "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" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" }, "dependencies": { "set-value": { @@ -5512,10 +7264,10 @@ "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" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" } } } @@ -5526,7 +7278,7 @@ "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", "dev": true, "requires": { - "crypto-random-string": "1.0.0" + "crypto-random-string": "^1.0.0" } }, "universalify": { @@ -5540,8 +7292,8 @@ "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { "has-value": { @@ -5550,9 +7302,9 @@ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "dependencies": { "isobject": { @@ -5597,15 +7349,15 @@ "integrity": "sha1-TognpruRUUCrCTVZ1wFOPruDdFE=", "dev": true, "requires": { - "boxen": "1.3.0", - "chalk": "2.3.0", - "configstore": "3.1.1", - "import-lazy": "2.1.0", - "is-installed-globally": "0.1.0", - "is-npm": "1.0.0", - "latest-version": "3.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "3.0.0" + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" } }, "urix": { @@ -5620,7 +7372,7 @@ "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", "dev": true, "requires": { - "prepend-http": "1.0.4" + "prepend-http": "^1.0.1" } }, "use": { @@ -5629,9 +7381,9 @@ "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", "dev": true, "requires": { - "define-property": "0.2.5", - "isobject": "3.0.1", - "lazy-cache": "2.0.2" + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "lazy-cache": "^2.0.2" }, "dependencies": { "define-property": { @@ -5640,7 +7392,7 @@ "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "is-accessor-descriptor": { @@ -5649,7 +7401,7 @@ "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -5658,7 +7410,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -5669,7 +7421,7 @@ "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -5678,7 +7430,7 @@ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -5689,9 +7441,9 @@ "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" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -5702,6 +7454,12 @@ } } }, + "user-home": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", @@ -5718,13 +7476,23 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" }, + "v8flags": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "^1.1.1" + } + }, "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" + "spdx-correct": "~1.0.0", + "spdx-expression-parse": "~1.0.0" } }, "verror": { @@ -5732,9 +7500,9 @@ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", + "assert-plus": "^1.0.0", "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "extsprintf": "^1.2.0" } }, "which": { @@ -5743,7 +7511,7 @@ "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -5759,7 +7527,7 @@ "dev": true, "optional": true, "requires": { - "string-width": "1.0.2" + "string-width": "^1.0.2" } }, "widest-line": { @@ -5768,7 +7536,7 @@ "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "dev": true, "requires": { - "string-width": "2.1.1" + "string-width": "^2.1.1" }, "dependencies": { "ansi-regex": { @@ -5789,8 +7557,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -5799,7 +7567,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -5815,23 +7583,24 @@ "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "write-file-atomic": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "signal-exit": "3.0.2" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" } }, "xdg-basedir": { @@ -5856,8 +7625,9 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, "requires": { - "object-keys": "0.4.0" + "object-keys": "~0.4.0" } }, "y18n": { @@ -5878,18 +7648,18 @@ "integrity": "sha512-ivSoxqBGYOqQVruxD35+EyCFDYNEFL/Uo6FcOnz+9xZdZzK0Zzw4r4KhbrME1Oo2gOggwJod2MnsdamSG7H9ig==", "dev": true, "requires": { - "cliui": "4.0.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.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": "8.1.0" + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^8.1.0" }, "dependencies": { "ansi-regex": { @@ -5904,7 +7674,7 @@ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "is-fullwidth-code-point": { @@ -5919,8 +7689,8 @@ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" } }, "strip-ansi": { @@ -5929,7 +7699,7 @@ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -5940,7 +7710,7 @@ "integrity": "sha512-yP+6QqN8BmrgW2ggLtTbdrOyBNSI7zBa4IykmiV5R1wl1JWNxQvWhMfMdmzIYtKU7oP3OOInY/tl2ov3BDjnJQ==", "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" }, "dependencies": { "camelcase": { @@ -5955,8 +7725,9 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, "requires": { - "fd-slicer": "1.0.1" + "fd-slicer": "~1.0.1" } }, "zip-stream": { @@ -5965,10 +7736,10 @@ "integrity": "sha1-qLxF9MG0lpnGuQGYuqyqzbzUugQ=", "dev": true, "requires": { - "archiver-utils": "1.3.0", - "compress-commons": "1.2.2", - "lodash": "4.17.5", - "readable-stream": "2.3.4" + "archiver-utils": "^1.3.0", + "compress-commons": "^1.2.0", + "lodash": "^4.8.0", + "readable-stream": "^2.0.0" }, "dependencies": { "isarray": { @@ -5989,13 +7760,13 @@ "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", "dev": true, "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.3", - "util-deprecate": "1.0.2" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.0.3", + "util-deprecate": "~1.0.1" } }, "string_decoder": { @@ -6004,7 +7775,7 @@ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "safe-buffer": "5.1.1" + "safe-buffer": "~5.1.0" } } } diff --git a/package.json b/package.json index 378f8f3..18102e3 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,15 @@ { "name": "RH-Ticker", - "version": "2.2.0", + "version": "2.3.0", "license": "MIT", "description": "Robinhood Ticker", "repository": "https://github.com/peniqliotuv/robinhood-ticker", - "main": "main.js", + "main": "src/entrypoint.js", "scripts": { - "prod-test": "NODE_ENV=production electron .", + "prod-start": "NODE_ENV=production electron .", "start": "NODE_ENV=development electron .", + "build": "NODE_ENV=production cp -r src/styles lib && cp -r src/views lib && babel src --out-dir lib", + "build-watch": "cp -r src/styles lib && cp -r src/views lib && babel src --out-dir lib --watch", "debug": "NODE_ENV=development electron --inspect=5858 .", "pack": "NODE_ENV=production electron-builder --dir", "dist": "NODE_ENV=production electron-builder", @@ -29,20 +31,33 @@ } }, "devDependencies": { + "babel-cli": "^6.26.0", + "babel-preset-env": "^1.6.1", + "babel-preset-minify": "^0.4.1", + "babel-preset-stage-0": "^6.24.1", "devtron": "^1.4.0", "electron": "^1.8.4", "electron-builder": "^19.55.2", "electron-builder-squirrel-windows": "^20.2.0", "electron-debug": "^1.5.0", "electron-reload": "^1.2.2", + "eslint-config-airbnb-base": "^12.1.0", + "eslint-plugin-import": "^2.11.0", "nodemon": "^1.14.11" }, "dependencies": { "about-window": "^1.9.1", + "alphavantage": "^1.1.1", "auto-launch": "^5.0.5", + "babel-plugin-transform-remove-console": "^6.9.2", + "babel-polyfill": "^6.26.0", + "babel-register": "^6.26.0", + "chartist": "^0.11.0", + "chartist-plugin-tooltip": "0.0.11", "electron-log": "^2.2.14", "electron-store": "^1.3.0", "electron-updater": "^2.20.1", + "install": "^0.11.0", "menubar": "^5.2.3", "moment-timezone": "^0.5.14", "node-fetch": "^1.7.3", diff --git a/renderer.js b/renderer.js deleted file mode 100644 index 901d75e..0000000 --- a/renderer.js +++ /dev/null @@ -1,3 +0,0 @@ -// This file is required by the index.html file and will -// be executed in the renderer process for that window. -// All of the Node.js APIs are available in this process. diff --git a/src/StockAPI.js b/src/StockAPI.js new file mode 100644 index 0000000..b7dc76a --- /dev/null +++ b/src/StockAPI.js @@ -0,0 +1,41 @@ +import queryString from 'query-string'; +import fetch from 'node-fetch'; + +class StockAPI { + constructor() { + throw new Error('Cannot instantiate StockAPI'); + } + + static get API_KEY() { + return 'EHW1WVBJZRY8CJJ1'; + } + + static get HOST() { + return 'https://api.iextrading.com/1.0/'; + } + + /* Gets the simple moving average of a stock */ + static async getSMA(symbol) { + // const query = { + // apikey: this.API_KEY, + // function: 'SMA', + // symbol, + // interval: '15min', + // series_type: 'close', + // time_period: 10 + // }; + // const qs = queryString.stringify(query); + try { + const res = await fetch(`${this.HOST}/stock/${symbol}/chart/1d/`); + const json = await res.json(); + /* Transform into [{x: ... y: ...}, {}]*/ + return json; + } catch (e) { + console.error(e); + console.error(e.stack); + throw e; + } + } +} + +export default StockAPI; diff --git a/api.js b/src/api.js similarity index 63% rename from api.js rename to src/api.js index 446fb25..922d65d 100644 --- a/api.js +++ b/src/api.js @@ -1,5 +1,4 @@ class RobinHoodAPI { - constructor() { if (!RobinHoodAPI.instance) { this._token = ''; @@ -60,7 +59,7 @@ class RobinHoodAPI { if (!accountNumber) { try { const res = await fetch('https://api.robinhood.com/accounts/', { - Authorization: `Token ${token}`, + Authorization: `Token ${token}` }); if (res.ok) { const json = await res.json(); @@ -79,25 +78,33 @@ class RobinHoodAPI { throw new Error('No account number provided'); } else { try { - const res = await fetch(`https://api.robinhood.com/accounts/${this.accountNumber}/positions/`); + const res = await fetch( + `https://api.robinhood.com/accounts/${this.accountNumber}/positions/` + ); if (res.ok) { const json = await res.json(); - const transformed = await Promise.all(json.results - .filter((result) => Number(result.quantity) !== 0) - .map(async (result) => { - const instrument = await(await fetch(decodeURIComponent(result.instrument))).json(); - const quote = await(await fetch(decodeURIComponent(instrument.quote))).json(); - return { - averageBuyPrice: result.average_buy_price, - instrument: result.instrument, - quantity: Number(result.quantity), - quote: quote, - currentPrice: quote.last_traded_price, - symbol: instrument.symbol, - name: instrument.name, - instrument: instrument, - } - })); + const transformed = await Promise.all( + json.results + .filter(result => Number(result.quantity) !== 0) + .map(async result => { + const instrument = await (await fetch( + decodeURIComponent(result.instrument) + )).json(); + const quote = await (await fetch( + decodeURIComponent(instrument.quote) + )).json(); + return { + averageBuyPrice: result.average_buy_price, + instrument: result.instrument, + quantity: Number(result.quantity), + quote: quote, + currentPrice: quote.last_traded_price, + symbol: instrument.symbol, + name: instrument.name, + instrument: instrument + }; + }) + ); return transformed; } } catch (e) { @@ -109,7 +116,9 @@ class RobinHoodAPI { async getPortfolio() { try { - const res = await fetch(`https://api.robinhood.com/accounts/${this.accountNumber}/portfolio/`); + const res = await fetch( + `https://api.robinhood.com/accounts/${this.accountNumber}/portfolio/` + ); if (res.ok) { return await res.json(); } else { @@ -126,10 +135,16 @@ class RobinHoodAPI { const res = await fetch('https://api.robinhood.com/watchlists/Default/'); const json = await res.json(); if (res.ok) { - return await Promise.all(json.results.map(async (result) => { - const instrument = await(await fetch(decodeURIComponent(result.instrument))).json(); - return await(await fetch(decodeURIComponent(instrument.quote))).json(); - })); + return await Promise.all( + json.results.map(async result => { + const instrument = await (await fetch( + decodeURIComponent(result.instrument) + )).json(); + return await (await fetch( + decodeURIComponent(instrument.quote) + )).json(); + }) + ); } } catch (e) { console.error(e.stack, e); @@ -141,14 +156,14 @@ class RobinHoodAPI { const res = await fetch('https://api.robinhood.com/api-token-auth/', { method: 'POST', Accept: 'application/json', - body: JSON.stringify({ username, password, mfa_code }), + body: JSON.stringify({ username, password, mfa_code }) }); const json = await res.json(); if (res.ok) { return { success: true, twoFactorAuthRequired: Boolean(json.mfa_required), - token: json.token || null, + token: json.token || null }; } else { // Get the error message from RobinHood and re-throw it @@ -163,7 +178,7 @@ class RobinHoodAPI { } catch (error) { return { success: false, - error: error.message, + error: error.message }; } } @@ -171,4 +186,6 @@ class RobinHoodAPI { let data = new RobinHoodAPI(); -module.exports = data; +// module.exports = data; + +export default data; diff --git a/app-updater.js b/src/app-updater.js similarity index 63% rename from app-updater.js rename to src/app-updater.js index 0de7218..96efc26 100644 --- a/app-updater.js +++ b/src/app-updater.js @@ -4,10 +4,10 @@ log.transports.file.format = '{h}:{i}:{s}:{ms} {text}'; log.transports.file.level = 'info'; const { app, autoUpdater, dialog } = require('electron'); const version = app.getVersion(); -const platform = os.platform() + '_' + os.arch(); // usually returns darwin_64 +const platform = os.platform() + '_' + os.arch(); // usually returns darwin_64 const updaterFeedURL = `https://rh-ticker-deploy-server.herokuapp.com/update/${platform}/${version}`; -function appUpdater() { +export function appUpdater() { if (process.env.NODE_ENV === 'development') { return; } @@ -20,11 +20,17 @@ function appUpdater() { autoUpdater.on('error', err => log.error(JSON.stringify(err))); autoUpdater.on('checking-for-update', () => log.error('checking-for-update')); autoUpdater.on('update-available', () => log.error('update-available')); - autoUpdater.on('update-not-available', () => log.error('update-not-available')); + autoUpdater.on('update-not-available', () => + log.error('update-not-available') + ); // Ask the user if update is available autoUpdater.on('update-downloaded', (event, releaseNotes, releaseName) => { - let message = app.getName() + ' ' + releaseName + ' is now available. It will be installed the next time you restart the application.'; + let message = + app.getName() + + ' ' + + releaseName + + ' is now available. It will be installed the next time you restart the application.'; if (releaseNotes) { const splitNotes = releaseNotes.split(/[^\r]\n/); message += '\n\nRelease notes:\n'; @@ -33,22 +39,25 @@ function appUpdater() { }); } // Ask user to update the app - dialog.showMessageBox({ - type: 'question', - buttons: ['Install and Relaunch', 'Later'], - defaultId: 0, - message: 'A new version of ' + app.getName() + ' has been downloaded', - detail: message - }, response => { - if (response === 0) { - setTimeout(() => autoUpdater.quitAndInstall(), 1); + dialog.showMessageBox( + { + type: 'question', + buttons: ['Install and Relaunch', 'Later'], + defaultId: 0, + message: 'A new version of ' + app.getName() + ' has been downloaded', + detail: message + }, + response => { + if (response === 0) { + setTimeout(() => autoUpdater.quitAndInstall(), 1); + } } - }); + ); }); // init for updates autoUpdater.checkForUpdates(); } -exports = module.exports = { - appUpdater -}; +// exports = module.exports = { +// appUpdater +// }; diff --git a/src/entrypoint.js b/src/entrypoint.js new file mode 100644 index 0000000..cac43ea --- /dev/null +++ b/src/entrypoint.js @@ -0,0 +1,5 @@ +if (process.env.NODE_ENV === 'development') { + require('babel-register'); +} + +require('./main'); diff --git a/main.js b/src/main.js similarity index 54% rename from main.js rename to src/main.js index f80c6e5..7997520 100644 --- a/main.js +++ b/src/main.js @@ -1,35 +1,44 @@ -const { +import 'babel-polyfill'; +import { app, BrowserWindow, Tray, Menu, session, ipcMain, - dialog, -} = require('electron'); -const AutoLaunch = require('auto-launch'); -const fetch = require('node-fetch'); -const path = require('path'); -const url = require('url'); -const openAboutWindow = require('about-window').default; -const menubar = require('menubar'); -const { appUpdater } = require('./app-updater'); -const { timeout, TimeoutError } = require('./utils/timeout.js'); -const Store = require('electron-store'); + dialog +} from 'electron'; +import AutoLaunch from 'auto-launch'; +import electronReload from 'electron-reload'; +import fetch from 'node-fetch'; +import path from 'path'; +import url from 'url'; +import openAboutWindow from 'about-window'; +import menubar from 'menubar'; +import { + appUpdater +} from './app-updater'; +import log from 'electron-log'; +import { + timeout, + TimeoutError +} from './utils/timeout.js'; +import Store from 'electron-store'; +import StockAPI from './StockAPI'; + const store = new Store(); -const ICON_LOGO_LARGE = `${__dirname}/assets/logo-512.png`; -const ICON_LOGO = `${__dirname}/assets/logo-16.png`; +const ICON_LOGO_LARGE = path.join(__dirname, '../assets/logo-512.png'); +const ICON_LOGO = path.join(__dirname, '../assets/logo-16.png'); const TIMEOUT_MS = 5000; - +console.log(`APP START: NODE_ENV: ${process.env.NODE_ENV}`); if (process.env.NODE_ENV === 'development') { - console.info('Electron is reloading'); - require('electron-reload')(__dirname, { - electron: require(`${__dirname}/node_modules/electron`) + electronReload(__dirname, { + electron: require(path.join(__dirname, '../node_modules/electron')) }); + require('electron-debug')(); } - // Keep a global reference of the window object, if you don't, the window will // be closed automatically when the JavaScript object is garbage collected. @@ -47,26 +56,37 @@ let refresh; ipcMain.on('data', (event, arg) => { RobinHoodAPI = arg; store.set('data', RobinHoodAPI); - const equity = Number(RobinHoodAPI._portfolio.extended_hours_equity || RobinHoodAPI._portfolio.equity).toFixed(2); + const equity = Number( + RobinHoodAPI._portfolio.extended_hours_equity || + RobinHoodAPI._portfolio.equity + ).toFixed(2); if (mb === null) { tray.destroy(); tray = new Tray(ICON_LOGO); mb = menubar({ dir: __dirname, - icon: `${__dirname}/assets/logo-16.png`, + icon: ICON_LOGO, preloadWindow: true, index: `file://${__dirname}/views/menubar.html`, width: 250, height: 500, tray, - webPreferences: { experimentalFeatures: true }, + resizable: false, + webPreferences: { + experimentalFeatures: true + } }); mb.window.webContents.on('did-finish-load', () => { - mb.window.webContents.send('data', { data: RobinHoodAPI, preferences: store.get('preferences') }); + mb.window.webContents.send('data', { + data: RobinHoodAPI, + preferences: store.get('preferences') + }); }); mb.on('show', () => { - mb.window.webContents.send('data', { data: RobinHoodAPI, preferences: store.get('preferences') }); - // mb.window.openDevTools({ mode: 'undocked' }); + mb.window.webContents.send('data', { + data: RobinHoodAPI, + preferences: store.get('preferences') + }); }); mb.on('hide', () => console.log('MenuBar hidden')); } @@ -78,18 +98,34 @@ ipcMain.on('preferences-saved', (event, arg) => { console.log('Preferences Saved!'); console.log(arg); store.set('preferences', arg); - mb.window.webContents.send('data', { data: RobinHoodAPI, preferences: store.get('preferences') }); + mb.window.webContents.send('data', { + data: RobinHoodAPI, + preferences: store.get('preferences') + }); refresh = startRefresh(); }); - ipcMain.on('open-preferences', (event, symbol) => { createPreferencesWindow(); }); +ipcMain.on('chart', (event, data) => { + const { + symbol, + tabIndex, + } = data; + console.log(data); + createStockWindow(symbol, tabIndex); +}); + ipcMain.on('logout', async (event, arg) => { try { - const res = await fetchWithAuth('https://api.robinhood.com/api-token-logout/', { method: 'POST', Accept: 'application/json' }); + const res = await fetchWithAuth( + 'https://api.robinhood.com/api-token-logout/', { + method: 'POST', + Accept: 'application/json' + } + ); RobinHoodAPI = null; const contextMenu = createLoginMenu(); mb.tray.setTitle(''); @@ -109,9 +145,12 @@ ipcMain.on('manual-refresh', async (event, arg) => { try { await refreshAccountData(RobinHoodAPI._accountNumber); console.log('Finished manual refresh.'); - mb.window.webContents.send('data', { data: RobinHoodAPI, preferences: store.get('preferences') }); + mb.window.webContents.send('data', { + data: RobinHoodAPI, + preferences: store.get('preferences') + }); } catch (e) { - console.error('***************************************') + console.error('***************************************'); console.error(e); console.error(e.stack); } @@ -126,9 +165,8 @@ ipcMain.on('show-about', (event, arg) => { icon_path: ICON_LOGO_LARGE, copyright: 'Copyright (c) 2018 Jerry Tsui', package_json_dir: __dirname, - description: 'www.github.com/peniqliotuv', + description: 'www.github.com/peniqliotuv' }); - }); const startRefresh = () => { @@ -138,7 +176,10 @@ const startRefresh = () => { try { await refreshAccountData(RobinHoodAPI._accountNumber); console.log('Finished automatic refresh.'); - mb.window.webContents.send('data', { data: RobinHoodAPI, preferences: store.get('preferences') }); + mb.window.webContents.send('data', { + data: RobinHoodAPI, + preferences: store.get('preferences') + }); } catch (e) { console.log('Could not refresh'); console.log(e); @@ -147,17 +188,23 @@ const startRefresh = () => { }, refreshRate); }; -const changeRefreshRate = (rate) => { +const changeRefreshRate = rate => { console.log(`Changing refresh rate to: ${rate}`); const preferences = store.get('preferences'); - const newPreferences = Object.assign({}, preferences, { refreshRate: rate }); + const newPreferences = Object.assign({}, preferences, { + refreshRate: rate + }); store.set('preferences', newPreferences); clearInterval(refresh); refresh = startRefresh(); }; const fetchWithAuth = (url, opts) => { - const options = Object.assign({}, opts, { headers: { Authorization: `Token ${RobinHoodAPI._token}` } }); + const options = Object.assign({}, opts, { + headers: { + Authorization: `Token ${RobinHoodAPI._token}` + } + }); return timeout(TIMEOUT_MS, fetch(url, options)); }; @@ -165,17 +212,20 @@ const fetchWithAuth = (url, opts) => { This method refreshes the account data and then repaints the contextmenu appropriately. May be called upon interval refresh or manual refresh. */ -const refreshAccountData = async (accountNumber) => { +const refreshAccountData = async accountNumber => { /* Fetch information about a user's positions*/ try { console.time('refreshAccountData'); await Promise.all([ refreshPositions(accountNumber), refreshPortfolio(accountNumber), - refreshWatchlist(), + refreshWatchlist() ]); console.timeEnd('refreshAccountData'); - const equity = Number(RobinHoodAPI._portfolio.extended_hours_equity || RobinHoodAPI._portfolio.equity).toFixed(2); + const equity = Number( + RobinHoodAPI._portfolio.extended_hours_equity || + RobinHoodAPI._portfolio.equity + ).toFixed(2); tray.setTitle(`$${equity}`); mb.tray.setTitle(`${equity}`); } catch (e) { @@ -183,19 +233,26 @@ const refreshAccountData = async (accountNumber) => { console.error('Timeout Error', e); } } -} +}; -const refreshPositions = async (accountNumber) => { +const refreshPositions = async accountNumber => { console.time('refreshPositions'); try { - const res = await fetchWithAuth(`https://api.robinhood.com/accounts/${accountNumber}/positions/`); + const res = await fetchWithAuth( + `https://api.robinhood.com/accounts/${accountNumber}/positions/` + ); const json = await res.json(); if (res.ok) { - const transformed = await Promise.all(json.results - .filter((result) => Number(result.quantity) !== 0) - .map(async (result) => { - const instrument = await(await fetchWithAuth(decodeURIComponent(result.instrument))).json(); - const quote = await(await fetchWithAuth(decodeURIComponent(instrument.quote))).json(); + const transformed = await Promise.all( + json.results + .filter(result => Number(result.quantity) !== 0) + .map(async result => { + const instrument = await (await fetchWithAuth( + decodeURIComponent(result.instrument) + )).json(); + const quote = await (await fetchWithAuth( + decodeURIComponent(instrument.quote) + )).json(); return { averageBuyPrice: result.average_buy_price, instrument: result.instrument, @@ -204,9 +261,10 @@ const refreshPositions = async (accountNumber) => { currentPrice: quote.last_traded_price, symbol: instrument.symbol, name: instrument.name, - instrument: instrument, - } - })); + instrument: instrument + }; + }) + ); RobinHoodAPI._positions = transformed; } else { throw new Error('Could not retrieve positions'); @@ -217,12 +275,14 @@ const refreshPositions = async (accountNumber) => { } } console.timeEnd('refreshPositions'); -} +}; -const refreshPortfolio = async (accountNumber) => { +const refreshPortfolio = async accountNumber => { console.time('refreshPortfolio'); try { - const res = await fetchWithAuth(`https://api.robinhood.com/accounts/${accountNumber}/portfolio/`); + const res = await fetchWithAuth( + `https://api.robinhood.com/accounts/${accountNumber}/portfolio/` + ); const json = await res.json(); if (res.ok) { RobinHoodAPI._portfolio = json; @@ -233,22 +293,32 @@ const refreshPortfolio = async (accountNumber) => { console.error(e); } console.timeEnd('refreshPortfolio'); -} +}; const refreshWatchlist = async () => { console.time('refreshWatchlist'); try { - const res = await fetchWithAuth('https://api.robinhood.com/watchlists/Default/'); + const res = await fetchWithAuth( + 'https://api.robinhood.com/watchlists/Default/' + ); const json = await res.json(); if (res.ok) { - const watchlistInstruments = await Promise.all(json.results - .map(async (result) => { - return await(await fetchWithAuth(decodeURIComponent(result.instrument))).json(); + const watchlistInstruments = await Promise.all( + json.results.map(async result => { + return await (await fetchWithAuth( + decodeURIComponent(result.instrument) + )).json(); }) ); - const querystring = watchlistInstruments.map((instrument) => instrument.symbol).join(','); - const { results: watchlistQuotes } = await(await fetchWithAuth(`https://api.robinhood.com/quotes/?symbols=${querystring}`)).json(); - RobinHoodAPI._watchlist = watchlistQuotes.filter((quote) => { + const querystring = watchlistInstruments + .map(instrument => instrument.symbol) + .join(','); + const { + results: watchlistQuotes + } = await (await fetchWithAuth( + `https://api.robinhood.com/quotes/?symbols=${querystring}` + )).json(); + RobinHoodAPI._watchlist = watchlistQuotes.filter(quote => { for (let position of RobinHoodAPI._positions) { if (position.symbol === quote.symbol) { return false; @@ -264,7 +334,7 @@ const refreshWatchlist = async () => { console.error('Timeout Error', e); } } -} +}; // The login window. const createLoginWindow = () => { @@ -276,45 +346,93 @@ const createLoginWindow = () => { title: 'RobinHood Ticker', resizable: false, titleBarStyle: 'hidden', - show: false, + show: false }); }; // To be displayed if the user has not authenticated yet const createLoginMenu = () => { - const template = [ - { - label: 'Login', - click: () => { - if (win === null) { - win = createLoginWindow(); - } + const template = [{ + label: 'Login', + click: () => { + if (win === null) { + win = createLoginWindow(); + } - win.loadURL(url.format({ + win.loadURL( + url.format({ pathname: path.join(__dirname, 'views/index.html'), protocol: 'file:', - slashes: true, - })); - // win.webContents.openDevTools({ mode: 'detach' }); - win.on('close', () => { - win = null; - }); - win.webContents.on('did-finish-load', () => win.show()); - }, - }, - ]; - template.push( - { - type: 'separator', - }, - { - label: 'Quit', - click: () => app.quit(), - }, - ); + slashes: true + }) + ); + win.on('close', () => { + win = null; + }); + win.webContents.on('did-finish-load', () => win.show()); + } + }]; + template.push({ + type: 'separator' + }, { + label: 'Quit', + click: () => app.quit() + }); return Menu.buildFromTemplate(template); }; +const createStockWindow = async (symbol, tabIndex) => { + let data; + let price; + if (tabIndex === 0) { + const position = RobinHoodAPI._positions.filter((quote) => quote.symbol === symbol)[0]; + price = position.quote.last_trade_price; + } else if (tabIndex === 1) { + const watchlist = RobinHoodAPI._watchlist.filter((quote) => quote.symbol === symbol)[0]; + price = watchlist.last_trade_price; + } + + try { + data = await StockAPI.getSMA(symbol); + } catch (e) { + console.error('ERROR: ' + e); + return; + } + + if (stockInfoWindow !== null) { + stockInfoWindow.destroy(); + } + stockInfoWindow = new BrowserWindow({ + width: 825, + height: 625, + backgroundColor: '#212025', + center: true, + title: symbol, + resizable: false, + titleBarStyle: 'hidden', + show: true, + }); + stockInfoWindow.loadURL( + url.format({ + pathname: path.join(__dirname, 'views/stock.html'), + protocol: 'file:', + slashes: true + }) + ); + + stockInfoWindow.webContents.on('did-finish-load', () => { + stockInfoWindow.webContents.send('data', { + data, + symbol, + price, + }); + }); + + stockInfoWindow.on('close', () => { + stockInfoWindow = null; + }); +}; + const createPreferencesWindow = () => { /* Prevent creation of unncessary number of windows*/ if (preferences !== null) { @@ -327,15 +445,16 @@ const createPreferencesWindow = () => { width: 275, resizable: false, backgroundColor: '#212025', - titleBarStyle: 'hidden', + titleBarStyle: 'hidden' }); - preferences.loadURL(url.format({ - pathname: path.join(__dirname, 'views/preferences.html'), - protocol: 'file:', - slashes: true, - })); - // preferences.webContents.openDevTools({ mode: 'undocked' }) + preferences.loadURL( + url.format({ + pathname: path.join(__dirname, 'views/preferences.html'), + protocol: 'file:', + slashes: true + }) + ); preferences.webContents.on('did-finish-load', () => { preferences.webContents.send('preferences', store.get('preferences')); @@ -346,8 +465,7 @@ const createPreferencesWindow = () => { }); }; - -const isAuthenticated = () => store.get('data') ? true : false; +const isAuthenticated = () => (store.get('data') ? true : false); const initializeApp = () => { app.dock.hide(); @@ -355,9 +473,9 @@ const initializeApp = () => { const autoLaunch = new AutoLaunch({ name: 'RH-Ticker', path: '/Applications/RH-Ticker.app', - isHidden: true, + isHidden: true }); - autoLaunch.isEnabled().then((isEnabled) => { + autoLaunch.isEnabled().then(isEnabled => { if (!isEnabled) autoLaunch.enable(); }); @@ -365,7 +483,10 @@ const initializeApp = () => { session.defaultSession.webRequest.onBeforeSendHeaders((details, callback) => { details.requestHeaders['Origin'] = 'electron://robinhood-app'; details.requestHeaders['content-type'] = 'application/json'; - callback({ cancel: false, requestHeaders: details.requestHeaders }); + callback({ + cancel: false, + requestHeaders: details.requestHeaders + }); }); // Default preferences @@ -373,50 +494,61 @@ const initializeApp = () => { store.set('preferences', { refreshRate: 1, viewChangeBy: 'gain/loss', - viewEquityBy: 'total-equity', + viewEquityBy: 'total-equity' }); } // Create the browser window. win = createLoginWindow(); - win.loadURL(url.format({ - pathname: path.join(__dirname, 'index.html'), - protocol: 'file:', - slashes: true, - })); + win.loadURL( + url.format({ + pathname: path.join(__dirname, 'index.html'), + protocol: 'file:', + slashes: true + }) + ); win.on('close', () => { win = null; }); - tray = new Tray(ICON_LOGO); let contextMenu; if (isAuthenticated()) { - console.log('authenticated') + console.log('authenticated'); RobinHoodAPI = store.get('data'); - const equity = Number(RobinHoodAPI._portfolio.extended_hours_equity || RobinHoodAPI._portfolio.equity).toFixed(2); + const equity = Number( + RobinHoodAPI._portfolio.extended_hours_equity || + RobinHoodAPI._portfolio.equity + ).toFixed(2); global.addAuthHeaders(RobinHoodAPI._token); mb = menubar({ dir: __dirname, - icon: `${__dirname}/assets/logo-16.png`, + icon: ICON_LOGO, preloadWindow: true, index: `file://${__dirname}/views/menubar.html`, width: 250, height: 500, tray, - webPreferences: { experimentalFeatures: true }, + resizable: false, + alwaysOnTop: true, + webPreferences: { + experimentalFeatures: true + } }); mb.tray.setTitle(`$${equity}`); mb.window.webContents.on('did-finish-load', () => { - mb.window.webContents.send('data', { data: RobinHoodAPI, preferences: store.get('preferences') }); + mb.window.webContents.send('data', { + data: RobinHoodAPI, + preferences: store.get('preferences') + }); }); mb.on('show', () => { - mb.window.webContents.send('data', { data: RobinHoodAPI, preferences: store.get('preferences') }); - // if (process.env.NODE_ENV === 'development') { - // mb.window.openDevTools({ mode: 'undocked' }); - // } + mb.window.webContents.send('data', { + data: RobinHoodAPI, + preferences: store.get('preferences') + }); }); mb.on('hide', () => console.log('MenuBar hidden')); mb.window.webContents.once('did-frame-finish-load', () => { @@ -467,22 +599,34 @@ app.on('activate', () => { }); // Necessary to authenticating requests -global.addAuthHeaders = (token) => { +global.addAuthHeaders = token => { const filter = { - urls: ['https://api.robinhood.com/accounts/*', 'https://api.robinhood.com/api-token-logout/'], + urls: [ + 'https://api.robinhood.com/accounts/*', + 'https://api.robinhood.com/api-token-logout/' + ] }; - session.defaultSession.webRequest.onBeforeSendHeaders(filter, (details, callback) => { - details.requestHeaders['Origin'] = 'electron://robinhood-app'; - details.requestHeaders['content-type'] = 'application/json'; - details.requestHeaders['Authorization'] = `Token ${token}` - callback({ cancel: false, requestHeaders: details.requestHeaders }); - }); + session.defaultSession.webRequest.onBeforeSendHeaders( + filter, + (details, callback) => { + details.requestHeaders['Origin'] = 'electron://robinhood-app'; + details.requestHeaders['content-type'] = 'application/json'; + details.requestHeaders['Authorization'] = `Token ${token}`; + callback({ + cancel: false, + requestHeaders: details.requestHeaders + }); + } + ); }; global.addContentTypeHeaders = () => { session.defaultSession.webRequest.onBeforeSendHeaders((details, callback) => { details.requestHeaders['Origin'] = 'electron://robinhood-app'; details.requestHeaders['content-type'] = 'application/json'; - callback({ cancel: false, requestHeaders: details.requestHeaders }); + callback({ + cancel: false, + requestHeaders: details.requestHeaders + }); }); -} +}; diff --git a/src/renderer.js b/src/renderer.js new file mode 100644 index 0000000..e69de29 diff --git a/src/styles/chartist.min.css b/src/styles/chartist.min.css new file mode 100644 index 0000000..c7f22bd --- /dev/null +++ b/src/styles/chartist.min.css @@ -0,0 +1,846 @@ +.ct-double-octave:after, +.ct-major-eleventh:after, +.ct-major-second:after, +.ct-major-seventh:after, +.ct-major-sixth:after, +.ct-major-tenth:after, +.ct-major-third:after, +.ct-major-twelfth:after, +.ct-minor-second:after, +.ct-minor-seventh:after, +.ct-minor-sixth:after, +.ct-minor-third:after, +.ct-octave:after, +.ct-perfect-fifth:after, +.ct-perfect-fourth:after, +.ct-square:after { + content: ""; + clear: both +} + +.ct-label { + fill: rgba(0, 0, 0, .4); + color: rgba(0, 0, 0, .4); + font-size: .75rem; + line-height: 1 +} + +.ct-grid-background, +.ct-line { + fill: none +} + +.ct-chart-bar .ct-label, +.ct-chart-line .ct-label { + display: block; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex +} + +.ct-chart-donut .ct-label, +.ct-chart-pie .ct-label { + dominant-baseline: central +} + +.ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start +} + +.ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start +} + +.ct-label.ct-vertical.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-end; + -webkit-justify-content: flex-end; + -ms-flex-pack: flex-end; + justify-content: flex-end; + text-align: right; + text-anchor: end +} + +.ct-label.ct-vertical.ct-end { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start +} + +.ct-chart-bar .ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; + text-anchor: start +} + +.ct-chart-bar .ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; + text-anchor: start +} + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start { + -webkit-box-align: flex-end; + -webkit-align-items: flex-end; + -ms-flex-align: flex-end; + align-items: flex-end; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start +} + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end { + -webkit-box-align: flex-start; + -webkit-align-items: flex-start; + -ms-flex-align: flex-start; + align-items: flex-start; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: start +} + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: flex-end; + -webkit-justify-content: flex-end; + -ms-flex-pack: flex-end; + justify-content: flex-end; + text-align: right; + text-anchor: end +} + +.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end { + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: flex-start; + -webkit-justify-content: flex-start; + -ms-flex-pack: flex-start; + justify-content: flex-start; + text-align: left; + text-anchor: end +} + +.ct-grid { + stroke: rgba(0, 0, 0, .2); + stroke-width: 1px; + stroke-dasharray: 2px +} + +.ct-point { + stroke-width: 15px; + stroke-linecap: round; + stroke-opacity: 0; +} + +.ct-line { + stroke-width: 1.25px +} + +.ct-area { + stroke: none; + fill-opacity: .1 +} + +.ct-bar { + fill: none; + stroke-width: 10px +} + +.ct-slice-donut { + fill: none; + stroke-width: 60px +} + +.ct-series-a .ct-bar, +.ct-series-a .ct-line, +.ct-series-a .ct-point, +.ct-series-a .ct-slice-donut { + stroke: #61ca9d +} + +.ct-series-a .ct-area, +.ct-series-a .ct-slice-donut-solid, +.ct-series-a .ct-slice-pie { + fill: #61ca9d +} + +.ct-series-b .ct-bar, +.ct-series-b .ct-line, +.ct-series-b .ct-point, +.ct-series-b .ct-slice-donut { + stroke: #f05b4f +} + +.ct-series-b .ct-area, +.ct-series-b .ct-slice-donut-solid, +.ct-series-b .ct-slice-pie { + fill: #f05b4f +} + +.ct-series-c .ct-bar, +.ct-series-c .ct-line, +.ct-series-c .ct-point, +.ct-series-c .ct-slice-donut { + stroke: #f4c63d +} + +.ct-series-c .ct-area, +.ct-series-c .ct-slice-donut-solid, +.ct-series-c .ct-slice-pie { + fill: #f4c63d +} + +.ct-series-d .ct-bar, +.ct-series-d .ct-line, +.ct-series-d .ct-point, +.ct-series-d .ct-slice-donut { + stroke: #d17905 +} + +.ct-series-d .ct-area, +.ct-series-d .ct-slice-donut-solid, +.ct-series-d .ct-slice-pie { + fill: #d17905 +} + +.ct-series-e .ct-bar, +.ct-series-e .ct-line, +.ct-series-e .ct-point, +.ct-series-e .ct-slice-donut { + stroke: #453d3f +} + +.ct-series-e .ct-area, +.ct-series-e .ct-slice-donut-solid, +.ct-series-e .ct-slice-pie { + fill: #453d3f +} + +.ct-series-f .ct-bar, +.ct-series-f .ct-line, +.ct-series-f .ct-point, +.ct-series-f .ct-slice-donut { + stroke: #59922b +} + +.ct-series-f .ct-area, +.ct-series-f .ct-slice-donut-solid, +.ct-series-f .ct-slice-pie { + fill: #59922b +} + +.ct-series-g .ct-bar, +.ct-series-g .ct-line, +.ct-series-g .ct-point, +.ct-series-g .ct-slice-donut { + stroke: #0544d3 +} + +.ct-series-g .ct-area, +.ct-series-g .ct-slice-donut-solid, +.ct-series-g .ct-slice-pie { + fill: #0544d3 +} + +.ct-series-h .ct-bar, +.ct-series-h .ct-line, +.ct-series-h .ct-point, +.ct-series-h .ct-slice-donut { + stroke: #6b0392 +} + +.ct-series-h .ct-area, +.ct-series-h .ct-slice-donut-solid, +.ct-series-h .ct-slice-pie { + fill: #6b0392 +} + +.ct-series-i .ct-bar, +.ct-series-i .ct-line, +.ct-series-i .ct-point, +.ct-series-i .ct-slice-donut { + stroke: #f05b4f +} + +.ct-series-i .ct-area, +.ct-series-i .ct-slice-donut-solid, +.ct-series-i .ct-slice-pie { + fill: #f05b4f +} + +.ct-series-j .ct-bar, +.ct-series-j .ct-line, +.ct-series-j .ct-point, +.ct-series-j .ct-slice-donut { + stroke: #dda458 +} + +.ct-series-j .ct-area, +.ct-series-j .ct-slice-donut-solid, +.ct-series-j .ct-slice-pie { + fill: #dda458 +} + +.ct-series-k .ct-bar, +.ct-series-k .ct-line, +.ct-series-k .ct-point, +.ct-series-k .ct-slice-donut { + stroke: #eacf7d +} + +.ct-series-k .ct-area, +.ct-series-k .ct-slice-donut-solid, +.ct-series-k .ct-slice-pie { + fill: #eacf7d +} + +.ct-series-l .ct-bar, +.ct-series-l .ct-line, +.ct-series-l .ct-point, +.ct-series-l .ct-slice-donut { + stroke: #86797d +} + +.ct-series-l .ct-area, +.ct-series-l .ct-slice-donut-solid, +.ct-series-l .ct-slice-pie { + fill: #86797d +} + +.ct-series-m .ct-bar, +.ct-series-m .ct-line, +.ct-series-m .ct-point, +.ct-series-m .ct-slice-donut { + stroke: #b2c326 +} + +.ct-series-m .ct-area, +.ct-series-m .ct-slice-donut-solid, +.ct-series-m .ct-slice-pie { + fill: #b2c326 +} + +.ct-series-n .ct-bar, +.ct-series-n .ct-line, +.ct-series-n .ct-point, +.ct-series-n .ct-slice-donut { + stroke: #6188e2 +} + +.ct-series-n .ct-area, +.ct-series-n .ct-slice-donut-solid, +.ct-series-n .ct-slice-pie { + fill: #6188e2 +} + +.ct-series-o .ct-bar, +.ct-series-o .ct-line, +.ct-series-o .ct-point, +.ct-series-o .ct-slice-donut { + stroke: #a748ca +} + +.ct-series-o .ct-area, +.ct-series-o .ct-slice-donut-solid, +.ct-series-o .ct-slice-pie { + fill: #a748ca +} + +.ct-square { + display: block; + position: relative; + width: 100% +} + +.ct-square:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 100% +} + +.ct-square:after { + display: table +} + +.ct-square>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-minor-second { + display: block; + position: relative; + width: 100% +} + +.ct-minor-second:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 93.75% +} + +.ct-minor-second:after { + display: table +} + +.ct-minor-second>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-major-second { + display: block; + position: relative; + width: 100% +} + +.ct-major-second:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 88.8888888889% +} + +.ct-major-second:after { + display: table +} + +.ct-major-second>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-minor-third { + display: block; + position: relative; + width: 100% +} + +.ct-minor-third:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 83.3333333333% +} + +.ct-minor-third:after { + display: table +} + +.ct-minor-third>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-major-third { + display: block; + position: relative; + width: 100% +} + +.ct-major-third:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 80% +} + +.ct-major-third:after { + display: table +} + +.ct-major-third>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-perfect-fourth { + display: block; + position: relative; + width: 100% +} + +.ct-perfect-fourth:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 75% +} + +.ct-perfect-fourth:after { + display: table +} + +.ct-perfect-fourth>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-perfect-fifth { + display: block; + position: relative; + width: 100% +} + +.ct-perfect-fifth:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 66.6666666667% +} + +.ct-perfect-fifth:after { + display: table +} + +.ct-perfect-fifth>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-minor-sixth { + display: block; + position: relative; + width: 100% +} + +.ct-minor-sixth:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 62.5% +} + +.ct-minor-sixth:after { + display: table +} + +.ct-minor-sixth>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-golden-section { + display: block; + position: relative; + width: 100% +} + +.ct-golden-section:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 61.804697157% +} + +.ct-golden-section:after { + content: ""; + display: table; + clear: both +} + +.ct-golden-section>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-major-sixth { + display: block; + position: relative; + width: 100% +} + +.ct-major-sixth:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 60% +} + +.ct-major-sixth:after { + display: table +} + +.ct-major-sixth>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-minor-seventh { + display: block; + position: relative; + width: 100% +} + +.ct-minor-seventh:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 56.25% +} + +.ct-minor-seventh:after { + display: table +} + +.ct-minor-seventh>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-major-seventh { + display: block; + position: relative; + width: 100% +} + +.ct-major-seventh:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 53.3333333333% +} + +.ct-major-seventh:after { + display: table +} + +.ct-major-seventh>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-octave { + display: block; + position: relative; + width: 100% +} + +.ct-octave:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 50% +} + +.ct-octave:after { + display: table +} + +.ct-octave>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-major-tenth { + display: block; + position: relative; + width: 100% +} + +.ct-major-tenth:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 40% +} + +.ct-major-tenth:after { + display: table +} + +.ct-major-tenth>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-major-eleventh { + display: block; + position: relative; + width: 100% +} + +.ct-major-eleventh:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 37.5% +} + +.ct-major-eleventh:after { + display: table +} + +.ct-major-eleventh>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-major-twelfth { + display: block; + position: relative; + width: 100% +} + +.ct-major-twelfth:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 33.3333333333% +} + +.ct-major-twelfth:after { + display: table +} + +.ct-major-twelfth>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} + +.ct-double-octave { + display: block; + position: relative; + width: 100% +} + +.ct-double-octave:before { + display: block; + float: left; + content: ""; + width: 0; + height: 0; + padding-bottom: 25% +} + +.ct-double-octave:after { + display: table +} + +.ct-double-octave>svg { + display: block; + position: absolute; + top: 0; + left: 0 +} diff --git a/styles/menubar.css b/src/styles/menubar.css similarity index 58% rename from styles/menubar.css rename to src/styles/menubar.css index 9a95c6d..82068a5 100644 --- a/styles/menubar.css +++ b/src/styles/menubar.css @@ -1,11 +1,11 @@ @font-face { font-family: 'Din'; - src: url('../assets/DIN-Medium.ttf'); + src: url('../../assets/DIN-Medium.ttf'); } @font-face { font-family: 'Din-Light'; - src: url('../assets/DIN-Light.ttf'); + src: url('../../assets/DIN-Light.ttf'); } body { @@ -13,15 +13,17 @@ body { font-family: 'Din-Light', sans-serif; font-weight: 100; user-select: none; - background-color: #61CA9D; - + background-color: #61ca9d; } @keyframes rotate { - 100% { transform: rotate(360deg); } + 100% { + transform: rotate(360deg); + } } + body.equity-loss { - background-color: #E35F3E; + background-color: #e35f3e; } .container { @@ -30,16 +32,16 @@ body.equity-loss { flex-direction: column; justify-content: space-around; align-items: center; - height: 100vh + height: 100vh; } #backdrop { position: absolute; height: 400px; - background-color: #1B1B1D; + background-color: #1b1b1d; width: 100vw; top: 100px; - z-index: -1 + z-index: -1; } #equity-container { @@ -64,7 +66,8 @@ body.equity-loss { font-family: 'Din'; } -#positions, #watchlist { +#positions, +#watchlist { width: 235px; max-height: 400px; overflow-y: scroll; @@ -76,24 +79,25 @@ body.equity-loss { display: none; } -#positions.active, #watchlist.active { +#positions.active, +#watchlist.active { transition: all 1s linear; display: block; } #positions::-webkit-scrollbar, #watchlist::-webkit-scrollbar { - display: none; + display: none; } .stock { - /* background-color: orange; */ display: flex; flex-direction: row; justify-content: space-between; align-items: center; padding: 5px 10px; transition: background-color 100ms linear; + box-sizing: border-box; } .stock:hover { @@ -101,35 +105,34 @@ body.equity-loss { background-color: #212025; } -.stock > .symbol-container > div, -.stock > .symbol-container > p, -.stock > .difference-container { +.stock>.symbol-container>div, +.stock>.symbol-container>p, +.stock>.difference-container { opacity: 1; transition: opacity 0.25s; } -.stock > .difference-container.equity-loss { - color: #E35F3E; +.stock>.difference-container.equity-loss { + color: #e35f3e; } -.blur .symbol-container > div, -.blur .symbol-container > p, +.blur .symbol-container>div, +.blur .symbol-container>p, .blur .difference-container { opacity: 0; } - .blur .stock:hover { cursor: default; background-color: initial; } .symbol-container { - display: flex; + display: flex; flex-direction: column; justify-content: space-around; align-items: flex-start; - color: #fafafa; + color: #fafafa; margin-left: 10px; /* background-color: red; */ } @@ -138,18 +141,18 @@ body.equity-loss { font-size: 20px; } -.symbol-container > p { +.symbol-container>p { margin: 0; font-family: 'Din-Light'; font-size: 12px; - color: lightgrey; + color: lightgrey; } .difference-container { text-align: left; margin-right: 10px; font-size: 24px; - color: #61CA9D; + color: #61ca9d; } #preferences { @@ -162,7 +165,7 @@ body.equity-loss { cursor: pointer; } -#preferences > img { +#preferences>img { height: 20px; width: 20px; } @@ -177,10 +180,9 @@ body.equity-loss { cursor: pointer; } -#reload > img { +#reload>img { height: 20px; width: 20px; - } .reloading { @@ -191,203 +193,226 @@ body.equity-loss { display: flex; flex-direction: row; justify-content: space-around; - align-items: center; + align-items: center; margin-top: 15px; border-radius: 2px; - color: #61CA9D; + color: #61ca9d; height: 30px; - width: 235px; + width: 235px; } .tab-container.equity-loss { - color: #E35F3E; + color: #e35f3e; } -.tab-container > .tab { +.tab-container>.tab { width: 100%; font-size: 16px; text-align: center; padding: 5px; cursor: pointer; - border-bottom: 1.5px solid #1B1B1D; + border-bottom: 1.5px solid #1b1b1d; transition: all 0.3s ease-in-out; } - -.tab-container > .tab.active { - border-bottom: 1.5px solid #61AC9D; +.tab-container>.tab.active { + border-bottom: 1.5px solid #61ac9d; } -.tab-container.equity-loss > .tab.active { - border-bottom: 1.5px solid #E35F3E; +.tab-container.equity-loss>.tab.active { + border-bottom: 1.5px solid #e35f3e; } #loader { - top: 250px; + top: 250px; } #loader.equity-loss { - color: #E35F3E!important; + color: #e35f3e !important; } - /*! * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/) * Copyright 2015 Daniel Cardoso <@DanielCardoso> * Licensed under MIT */ + .la-line-scale-pulse-out, -.la-line-scale-pulse-out > div { +.la-line-scale-pulse-out>div { position: relative; -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + .la-line-scale-pulse-out { display: block; font-size: 0; color: #fff; } + .la-line-scale-pulse-out.la-dark { color: #333; } -.la-line-scale-pulse-out > div { + +.la-line-scale-pulse-out>div { display: inline-block; float: none; background-color: currentColor; border: 0 solid currentColor; } + .la-line-scale-pulse-out { width: 40px; height: 32px; } -.la-line-scale-pulse-out > div { + +.la-line-scale-pulse-out>div { width: 4px; height: 32px; margin: 2px; margin-top: 0; margin-bottom: 0; border-radius: 0; - -webkit-animation: line-scale-pulse-out .9s infinite cubic-bezier(.85, .25, .37, .85); - -moz-animation: line-scale-pulse-out .9s infinite cubic-bezier(.85, .25, .37, .85); - -o-animation: line-scale-pulse-out .9s infinite cubic-bezier(.85, .25, .37, .85); - animation: line-scale-pulse-out .9s infinite cubic-bezier(.85, .25, .37, .85); -} -.la-line-scale-pulse-out > div:nth-child(3) { - -webkit-animation-delay: -.9s; - -moz-animation-delay: -.9s; - -o-animation-delay: -.9s; - animation-delay: -.9s; -} -.la-line-scale-pulse-out > div:nth-child(2), -.la-line-scale-pulse-out > div:nth-child(4) { - -webkit-animation-delay: -.7s; - -moz-animation-delay: -.7s; - -o-animation-delay: -.7s; - animation-delay: -.7s; -} -.la-line-scale-pulse-out > div:nth-child(1), -.la-line-scale-pulse-out > div:nth-child(5) { - -webkit-animation-delay: -.5s; - -moz-animation-delay: -.5s; - -o-animation-delay: -.5s; - animation-delay: -.5s; + -webkit-animation: line-scale-pulse-out 0.9s infinite cubic-bezier(0.85, 0.25, 0.37, 0.85); + -moz-animation: line-scale-pulse-out 0.9s infinite cubic-bezier(0.85, 0.25, 0.37, 0.85); + -o-animation: line-scale-pulse-out 0.9s infinite cubic-bezier(0.85, 0.25, 0.37, 0.85); + animation: line-scale-pulse-out 0.9s infinite cubic-bezier(0.85, 0.25, 0.37, 0.85); +} + +.la-line-scale-pulse-out>div:nth-child(3) { + -webkit-animation-delay: -0.9s; + -moz-animation-delay: -0.9s; + -o-animation-delay: -0.9s; + animation-delay: -0.9s; } + +.la-line-scale-pulse-out>div:nth-child(2), +.la-line-scale-pulse-out>div:nth-child(4) { + -webkit-animation-delay: -0.7s; + -moz-animation-delay: -0.7s; + -o-animation-delay: -0.7s; + animation-delay: -0.7s; +} + +.la-line-scale-pulse-out>div:nth-child(1), +.la-line-scale-pulse-out>div:nth-child(5) { + -webkit-animation-delay: -0.5s; + -moz-animation-delay: -0.5s; + -o-animation-delay: -0.5s; + animation-delay: -0.5s; +} + .la-line-scale-pulse-out.la-sm { width: 20px; height: 16px; } -.la-line-scale-pulse-out.la-sm > div { + +.la-line-scale-pulse-out.la-sm>div { width: 2px; height: 16px; margin: 1px; margin-top: 0; margin-bottom: 0; } + .la-line-scale-pulse-out.la-2x { width: 80px; height: 64px; } -.la-line-scale-pulse-out.la-2x > div { + +.la-line-scale-pulse-out.la-2x>div { width: 8px; height: 64px; margin: 4px; margin-top: 0; margin-bottom: 0; } + .la-line-scale-pulse-out.la-3x { width: 120px; height: 96px; } -.la-line-scale-pulse-out.la-3x > div { + +.la-line-scale-pulse-out.la-3x>div { width: 12px; height: 96px; margin: 6px; margin-top: 0; margin-bottom: 0; } + /* * Animation */ + @-webkit-keyframes line-scale-pulse-out { 0% { -webkit-transform: scaley(1); - transform: scaley(1); + transform: scaley(1); } 50% { - -webkit-transform: scaley(.3); - transform: scaley(.3); + -webkit-transform: scaley(0.3); + transform: scaley(0.3); } 100% { -webkit-transform: scaley(1); - transform: scaley(1); + transform: scaley(1); } } + @-moz-keyframes line-scale-pulse-out { 0% { -moz-transform: scaley(1); - transform: scaley(1); + transform: scaley(1); } 50% { - -moz-transform: scaley(.3); - transform: scaley(.3); + -moz-transform: scaley(0.3); + transform: scaley(0.3); } 100% { -moz-transform: scaley(1); - transform: scaley(1); + transform: scaley(1); } } + @-o-keyframes line-scale-pulse-out { 0% { -o-transform: scaley(1); - transform: scaley(1); + transform: scaley(1); } 50% { - -o-transform: scaley(.3); - transform: scaley(.3); + -o-transform: scaley(0.3); + transform: scaley(0.3); } 100% { -o-transform: scaley(1); - transform: scaley(1); + transform: scaley(1); } } + @keyframes line-scale-pulse-out { 0% { -webkit-transform: scaley(1); - -moz-transform: scaley(1); - -o-transform: scaley(1); - transform: scaley(1); + -moz-transform: scaley(1); + -o-transform: scaley(1); + transform: scaley(1); } 50% { - -webkit-transform: scaley(.3); - -moz-transform: scaley(.3); - -o-transform: scaley(.3); - transform: scaley(.3); + -webkit-transform: scaley(0.3); + -moz-transform: scaley(0.3); + -o-transform: scaley(0.3); + transform: scaley(0.3); } 100% { -webkit-transform: scaley(1); - -moz-transform: scaley(1); - -o-transform: scaley(1); - transform: scaley(1); + -moz-transform: scaley(1); + -o-transform: scaley(1); + transform: scaley(1); } } + +.movable { + border-top: 1.5px solid #1b1b1d; + padding-top: 3.5px; +} diff --git a/styles/preferences.css b/src/styles/preferences.css similarity index 53% rename from styles/preferences.css rename to src/styles/preferences.css index 196604d..0a770fa 100644 --- a/styles/preferences.css +++ b/src/styles/preferences.css @@ -1,14 +1,13 @@ @font-face { font-family: 'Din'; - src: url('../assets/DIN-Medium.ttf'); + src: url('../../assets/DIN-Medium.ttf'); } @font-face { font-family: 'Din-Light'; - src: url('../assets/DIN-Light.ttf'); + src: url('../../assets/DIN-Light.ttf'); } - body { display: flex; height: 100vh; @@ -16,12 +15,14 @@ body { font-family: 'Din-Light', sans-serif; font-weight: 100; user-select: none; - background-color: #212025; + background-color: #212025; -webkit-app-region: drag; } + /* Needed so button is not draggable */ + button { - -webkit-app-region: no-drag; + -webkit-app-region: no-drag; } input { @@ -35,58 +36,64 @@ input { width: 100%; margin-top: 20px; align-items: center; - flex-direction: column + flex-direction: column; } -.mui-btn, .mui-btn:hover { +.mui-btn, +.mui-btn:hover { display: flex; justify-content: center; align-items: center; border-radius: 2px; height: 40px; width: 200px; - margin-left: 0!important; - color: white!important; - background-color: #61CA9D!important; + margin-left: 0 !important; + color: white !important; + background-color: #61ca9d !important; } .mui-btn:hover { - background-color: #50A885!important; + background-color: #50a885 !important; } /* UGH */ -#logout, #quit { - background-color: #E35F3E!important; + +#logout, +#quit { + background-color: #e35f3e !important; } -#logout:hover, #quit:hover { - background-color: #CC5537!important; +#logout:hover, +#quit:hover { + background-color: #cc5537 !important; } .mui-btn:active { - color: white!important; - background-color: #529B80!important; + color: white !important; + background-color: #529b80 !important; } .mui-select { width: 80%; } -.mui-select > select, .mui-select > label { - color: #E6E4E7; +.mui-select>select, +.mui-select>label { + color: #e6e4e7; } -.mui-select:focus > select { - border-color: #529B80; +.mui-select:focus>select { + border-color: #529b80; } -.mui-select:focus>label, .mui-select>select:focus~label { - color: #529B80; +.mui-select:focus>label, +.mui-select>select:focus~label { + color: #529b80; } .button-container { - display: flex; - flex-direction: column; + display: flex; + flex-direction: column; } #backdrop { @@ -96,5 +103,5 @@ input { width: 100vw; border-radius: 0 0 2px 2px; top: 60px; - z-index: -1 + z-index: -1; } diff --git a/src/styles/stock.css b/src/styles/stock.css new file mode 100644 index 0000000..48cd11d --- /dev/null +++ b/src/styles/stock.css @@ -0,0 +1,102 @@ +@font-face { + font-family: 'Din'; + src: url('../../assets/DIN-Medium.ttf'); +} + +@font-face { + font-family: 'Din-Light'; + src: url('../../assets/DIN-Light.ttf'); +} + +body { + font-family: 'Din-Light', sans-serif; + font-weight: 100; + user-select: none; + background-color: #212025; + -webkit-app-region: drag; + overflow-y: hidden; +} + +#chart { + padding: 0px 20px; +} + +span { + color: white !important; + font-size: 14px !important; +} + +#title-container { + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + height: 13.5vh; + color: white; + padding: 10px 35px +} + +#title-container>.title { + font-family: 'Din'; + font-size: 36px; +} + +#title-container>.tooltip { + margin-top: 5px; + color: #e6e4e7; + font-size: 20px; +} + +#vr { + width: 1px; + background-color: #8c8c8e; + position: absolute; + height: 465px; + top: 132px; + visibility: hidden; +} + +#vr>#time { + color: #8c8c8e; + position: relative; + top: -40px; + display: inline-block; + width: 70px; + left: -29.5px; +} + +.gain>span { + color: #50a885 !important; +} + +.loss>span { + color: #e35f3e !important; +} + +.ct-line.ct-threshold-above, +.ct-point.ct-threshold-above, +.ct-bar.ct-threshold-above { + stroke: #50a885; +} + +.ct-line.ct-threshold-below, +.ct-point.ct-threshold-below, +.ct-bar.ct-threshold-below { + stroke: #e35f3e; +} + +.ct-area.ct-threshold-above { + fill: #50a885; +} + +.ct-area.ct-threshold-below { + fill: #e35f3e; +} + +.stock-tooltip.chartist-tooltip { + background-color: #50a885; +} + +.stock-tooltip.chartist-tooltip::before { + background-color: #50a885; +} diff --git a/styles/styles.css b/src/styles/styles.css similarity index 59% rename from styles/styles.css rename to src/styles/styles.css index 0a7c66f..5824032 100644 --- a/styles/styles.css +++ b/src/styles/styles.css @@ -1,11 +1,11 @@ @font-face { font-family: 'Din'; - src: url('../assets/DIN-Medium.ttf'); + src: url('../../assets/DIN-Medium.ttf'); } @font-face { font-family: 'Din-Light'; - src: url('../assets/DIN-Light.ttf'); + src: url('../../assets/DIN-Light.ttf'); } body { @@ -36,7 +36,7 @@ input { width: 100vw; border-radius: 2px; top: 75px; - z-index: -1 + z-index: -1; } #login-container { @@ -53,7 +53,7 @@ input { background-color: #303032; } -#login-container > input { +#login-container>input { margin: 10px 0; border-radius: 2px; border: none; @@ -63,20 +63,20 @@ input { } /* Ugh */ -.invalid > input::placeholder { - color: #E35F3E!important; -} -.invalid > .button { - background-color: #E35F3E; +.invalid>input::placeholder { + color: #e35f3e !important; } -.invalid > .button:active { - background-color: #E6E4E7; +.invalid>.button { + background-color: #e35f3e; } +.invalid>.button:active { + background-color: #e6e4e7; +} -#login-container > input:focus { +#login-container>input:focus { text-decoration: none; outline: none; } @@ -97,52 +97,55 @@ input { border-radius: 2px; height: 40px; width: 275px; - color: white; - background-color: #50A885; + color: white; + background-color: #50a885; } .button:active { - background-color: #529B80; + background-color: #529b80; } .button:hover { - cursor: pointer; + cursor: pointer; } - - - /*! * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/) * Copyright 2015 Daniel Cardoso <@DanielCardoso> * Licensed under MIT */ + .la-cube-transition, -.la-cube-transition > div { +.la-cube-transition>div { position: relative; -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + .la-cube-transition { display: block; font-size: 0; color: #fff; } + .la-cube-transition.la-dark { color: #333; } -.la-cube-transition > div { + +.la-cube-transition>div { display: inline-block; float: none; background-color: currentColor; border: 0 solid currentColor; } + .la-cube-transition { width: 32px; height: 32px; } -.la-cube-transition > div { + +.la-cube-transition>div { position: absolute; top: 0; left: 0; @@ -152,158 +155,170 @@ input { margin-left: -7px; border-radius: 0; -webkit-animation: cube-transition 1.6s 0s infinite ease-in-out; - -moz-animation: cube-transition 1.6s 0s infinite ease-in-out; - -o-animation: cube-transition 1.6s 0s infinite ease-in-out; - animation: cube-transition 1.6s 0s infinite ease-in-out; + -moz-animation: cube-transition 1.6s 0s infinite ease-in-out; + -o-animation: cube-transition 1.6s 0s infinite ease-in-out; + animation: cube-transition 1.6s 0s infinite ease-in-out; } -.la-cube-transition > div:last-child { - -webkit-animation-delay: -.8s; - -moz-animation-delay: -.8s; - -o-animation-delay: -.8s; - animation-delay: -.8s; + +.la-cube-transition>div:last-child { + -webkit-animation-delay: -0.8s; + -moz-animation-delay: -0.8s; + -o-animation-delay: -0.8s; + animation-delay: -0.8s; } + .la-cube-transition.la-sm { width: 16px; height: 16px; } -.la-cube-transition.la-sm > div { + +.la-cube-transition.la-sm>div { width: 6px; height: 6px; margin-top: -3px; margin-left: -3px; } + .la-cube-transition.la-2x { width: 64px; height: 64px; } -.la-cube-transition.la-2x > div { + +.la-cube-transition.la-2x>div { width: 28px; height: 28px; margin-top: -14px; margin-left: -14px; } + .la-cube-transition.la-3x { width: 96px; height: 96px; } -.la-cube-transition.la-3x > div { + +.la-cube-transition.la-3x>div { width: 42px; height: 42px; margin-top: -21px; margin-left: -21px; } + /* * Animation */ + @-webkit-keyframes cube-transition { 25% { top: 0; left: 100%; - -webkit-transform: scale(.5) rotate(-90deg); - transform: scale(.5) rotate(-90deg); + -webkit-transform: scale(0.5) rotate(-90deg); + transform: scale(0.5) rotate(-90deg); } 50% { top: 100%; left: 100%; -webkit-transform: scale(1) rotate(-180deg); - transform: scale(1) rotate(-180deg); + transform: scale(1) rotate(-180deg); } 75% { top: 100%; left: 0; - -webkit-transform: scale(.5) rotate(-270deg); - transform: scale(.5) rotate(-270deg); + -webkit-transform: scale(0.5) rotate(-270deg); + transform: scale(0.5) rotate(-270deg); } 100% { top: 0; left: 0; -webkit-transform: scale(1) rotate(-360deg); - transform: scale(1) rotate(-360deg); + transform: scale(1) rotate(-360deg); } } + @-moz-keyframes cube-transition { 25% { top: 0; left: 100%; - -moz-transform: scale(.5) rotate(-90deg); - transform: scale(.5) rotate(-90deg); + -moz-transform: scale(0.5) rotate(-90deg); + transform: scale(0.5) rotate(-90deg); } 50% { top: 100%; left: 100%; -moz-transform: scale(1) rotate(-180deg); - transform: scale(1) rotate(-180deg); + transform: scale(1) rotate(-180deg); } 75% { top: 100%; left: 0; - -moz-transform: scale(.5) rotate(-270deg); - transform: scale(.5) rotate(-270deg); + -moz-transform: scale(0.5) rotate(-270deg); + transform: scale(0.5) rotate(-270deg); } 100% { top: 0; left: 0; -moz-transform: scale(1) rotate(-360deg); - transform: scale(1) rotate(-360deg); + transform: scale(1) rotate(-360deg); } } + @-o-keyframes cube-transition { 25% { top: 0; left: 100%; - -o-transform: scale(.5) rotate(-90deg); - transform: scale(.5) rotate(-90deg); + -o-transform: scale(0.5) rotate(-90deg); + transform: scale(0.5) rotate(-90deg); } 50% { top: 100%; left: 100%; -o-transform: scale(1) rotate(-180deg); - transform: scale(1) rotate(-180deg); + transform: scale(1) rotate(-180deg); } 75% { top: 100%; left: 0; - -o-transform: scale(.5) rotate(-270deg); - transform: scale(.5) rotate(-270deg); + -o-transform: scale(0.5) rotate(-270deg); + transform: scale(0.5) rotate(-270deg); } 100% { top: 0; left: 0; -o-transform: scale(1) rotate(-360deg); - transform: scale(1) rotate(-360deg); + transform: scale(1) rotate(-360deg); } } + @keyframes cube-transition { 25% { top: 0; left: 100%; - -webkit-transform: scale(.5) rotate(-90deg); - -moz-transform: scale(.5) rotate(-90deg); - -o-transform: scale(.5) rotate(-90deg); - transform: scale(.5) rotate(-90deg); + -webkit-transform: scale(0.5) rotate(-90deg); + -moz-transform: scale(0.5) rotate(-90deg); + -o-transform: scale(0.5) rotate(-90deg); + transform: scale(0.5) rotate(-90deg); } 50% { top: 100%; left: 100%; -webkit-transform: scale(1) rotate(-180deg); - -moz-transform: scale(1) rotate(-180deg); - -o-transform: scale(1) rotate(-180deg); - transform: scale(1) rotate(-180deg); + -moz-transform: scale(1) rotate(-180deg); + -o-transform: scale(1) rotate(-180deg); + transform: scale(1) rotate(-180deg); } 75% { top: 100%; left: 0; - -webkit-transform: scale(.5) rotate(-270deg); - -moz-transform: scale(.5) rotate(-270deg); - -o-transform: scale(.5) rotate(-270deg); - transform: scale(.5) rotate(-270deg); + -webkit-transform: scale(0.5) rotate(-270deg); + -moz-transform: scale(0.5) rotate(-270deg); + -o-transform: scale(0.5) rotate(-270deg); + transform: scale(0.5) rotate(-270deg); } 100% { top: 0; left: 0; -webkit-transform: scale(1) rotate(-360deg); - -moz-transform: scale(1) rotate(-360deg); - -o-transform: scale(1) rotate(-360deg); - transform: scale(1) rotate(-360deg); + -moz-transform: scale(1) rotate(-360deg); + -o-transform: scale(1) rotate(-360deg); + transform: scale(1) rotate(-360deg); } } diff --git a/src/utils/chartist-plugin-threshold.min.js b/src/utils/chartist-plugin-threshold.min.js new file mode 100644 index 0000000..91f7507 --- /dev/null +++ b/src/utils/chartist-plugin-threshold.min.js @@ -0,0 +1,73 @@ +/* chartist-plugin-threshold 0.0.1 + * Copyright © 2015 Gion Kunz + * Free to use under the WTFPL license. + * http://www.wtfpl.net/ + */ + +! function (a, b) { + "function" == typeof define && define.amd ? define([], function () { + return a.returnExportsGlobal = b() + }) : "object" == typeof exports ? module.exports = b() : a["Chartist.plugins.ctThreshold"] = b() +}(this, function () { + return function (a, b, c) { + "use strict"; + + function d(a, b) { + var c = a.svg.querySelector("defs") || a.svg.elem("defs"), + d = a.chartRect.height() - a.axisY.projectValue(b.threshold) + a.chartRect.y2, + e = a.svg.width(), + f = a.svg.height(); + return c.elem("mask", { + x: 0, + y: 0, + width: e, + height: f, + id: b.maskNames.aboveThreshold + }).elem("rect", { + x: 0, + y: 0, + width: e, + height: d, + fill: "white" + }), c.elem("mask", { + x: 0, + y: 0, + width: e, + height: f, + id: b.maskNames.belowThreshold + }).elem("rect", { + x: 0, + y: d, + width: e, + height: f - d, + fill: "white" + }), c + } + var e = { + threshold: 0, + classNames: { + aboveThreshold: "ct-threshold-above", + belowThreshold: "ct-threshold-below" + }, + maskNames: { + aboveThreshold: "ct-threshold-mask-above", + belowThreshold: "ct-threshold-mask-below" + } + }; + c.plugins = c.plugins || {}, c.plugins.ctThreshold = function (a) { + return a = c.extend({}, e, a), + function (b) { + (b instanceof c.Line || b instanceof c.Bar) && (b.on("draw", function (b) { + "point" === b.type ? b.element.addClass(b.value.y >= a.threshold ? a.classNames.aboveThreshold : a.classNames.belowThreshold) : ("line" === b.type || "bar" === b.type || "area" === b.type) && (b.element.parent().elem(b.element._node.cloneNode(!0)).attr({ + mask: "url(#" + a.maskNames.aboveThreshold + ")" + }).addClass(a.classNames.aboveThreshold), b.element.attr({ + mask: "url(#" + a.maskNames.belowThreshold + ")" + }).addClass(a.classNames.belowThreshold)) + }), b.on("created", function (b) { + d(b, a) + })) + } + } + }(window, document, Chartist), Chartist.plugins.ctThreshold +}); +//# sourceMappingURL=chartist-plugin-threshold.min.js.map diff --git a/src/utils/chartist-target-line.min.js b/src/utils/chartist-target-line.min.js new file mode 100644 index 0000000..ae92585 --- /dev/null +++ b/src/utils/chartist-target-line.min.js @@ -0,0 +1,30 @@ +/** + * Chartist.js plugin to display a target line on a chart. + * With code from @gionkunz in https://github.com/gionkunz/chartist-js/issues/235 + * and @OscarGodson in https://github.com/gionkunz/chartist-js/issues/491. + * Based on https://github.com/gionkunz/chartist-plugin-pointlabels + */ +! function (t, n, e) { + "use strict"; + var c = { + class: "ct-target-line", + value: null + }; + e.plugins = e.plugins || {}, e.plugins.ctTargetLine = function (t) { + return t = e.extend({}, c, t), + function (n) { + function e(t, n, e) { + return t.y1 - t.height() / n.max * e + } + n.on("created", function (n) { + var c = e(n.chartRect, n.bounds, t.value); + n.svg.elem("line", { + x1: n.chartRect.x1, + x2: n.chartRect.x2, + y1: c, + y2: c + }, t.class) + }) + } + } +}(window, document, Chartist); diff --git a/src/utils/chartist.min.js b/src/utils/chartist.min.js new file mode 100644 index 0000000..b99fcc9 --- /dev/null +++ b/src/utils/chartist.min.js @@ -0,0 +1,1575 @@ +/* Chartist.js 0.11.0 + * Copyright © 2017 Gion Kunz + * Free to use under either the WTFPL license or the MIT license. + * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-WTFPL + * https://raw.githubusercontent.com/gionkunz/chartist-js/master/LICENSE-MIT + */ + +! function (a, b) { + "function" == typeof define && define.amd ? define("Chartist", [], function () { + return a.Chartist = b() + }) : "object" == typeof module && module.exports ? module.exports = b() : a.Chartist = b() +}(this, function () { + var a = { + version: "0.11.0" + }; + return function (a, b, c) { + "use strict"; + c.namespaces = { + svg: "http://www.w3.org/2000/svg", + xmlns: "http://www.w3.org/2000/xmlns/", + xhtml: "http://www.w3.org/1999/xhtml", + xlink: "http://www.w3.org/1999/xlink", + ct: "http://gionkunz.github.com/chartist-js/ct" + }, c.noop = function (a) { + return a + }, c.alphaNumerate = function (a) { + return String.fromCharCode(97 + a % 26) + }, c.extend = function (a) { + var b, d, e; + for (a = a || {}, b = 1; b < arguments.length; b++) { + d = arguments[b]; + for (var f in d) e = d[f], "object" != typeof e || null === e || e instanceof Array ? a[f] = e : a[f] = c.extend(a[f], e) + } + return a + }, c.replaceAll = function (a, b, c) { + return a.replace(new RegExp(b, "g"), c) + }, c.ensureUnit = function (a, b) { + return "number" == typeof a && (a += b), a + }, c.quantity = function (a) { + if ("string" == typeof a) { + var b = /^(\d+)\s*(.*)$/g.exec(a); + return { + value: +b[1], + unit: b[2] || void 0 + } + } + return { + value: a + } + }, c.querySelector = function (a) { + return a instanceof Node ? a : b.querySelector(a) + }, c.times = function (a) { + return Array.apply(null, new Array(a)) + }, c.sum = function (a, b) { + return a + (b ? b : 0) + }, c.mapMultiply = function (a) { + return function (b) { + return b * a + } + }, c.mapAdd = function (a) { + return function (b) { + return b + a + } + }, c.serialMap = function (a, b) { + var d = [], + e = Math.max.apply(null, a.map(function (a) { + return a.length + })); + return c.times(e).forEach(function (c, e) { + var f = a.map(function (a) { + return a[e] + }); + d[e] = b.apply(null, f) + }), d + }, c.roundWithPrecision = function (a, b) { + var d = Math.pow(10, b || c.precision); + return Math.round(a * d) / d + }, c.precision = 8, c.escapingMap = { + "&": "&", + "<": "<", + ">": ">", + '"': """, + "'": "'" + }, c.serialize = function (a) { + return null === a || void 0 === a ? a : ("number" == typeof a ? a = "" + a : "object" == typeof a && (a = JSON.stringify({ + data: a + })), Object.keys(c.escapingMap).reduce(function (a, b) { + return c.replaceAll(a, b, c.escapingMap[b]) + }, a)) + }, c.deserialize = function (a) { + if ("string" != typeof a) return a; + a = Object.keys(c.escapingMap).reduce(function (a, b) { + return c.replaceAll(a, c.escapingMap[b], b) + }, a); + try { + a = JSON.parse(a), a = void 0 !== a.data ? a.data : a + } catch (b) {} + return a + }, c.createSvg = function (a, b, d, e) { + var f; + return b = b || "100%", d = d || "100%", Array.prototype.slice.call(a.querySelectorAll("svg")).filter(function (a) { + return a.getAttributeNS(c.namespaces.xmlns, "ct") + }).forEach(function (b) { + a.removeChild(b) + }), f = new c.Svg("svg").attr({ + width: b, + height: d + }).addClass(e), f._node.style.width = b, f._node.style.height = d, a.appendChild(f._node), f + }, c.normalizeData = function (a, b, d) { + var e, f = { + raw: a, + normalized: {} + }; + return f.normalized.series = c.getDataArray({ + series: a.series || [] + }, b, d), e = f.normalized.series.every(function (a) { + return a instanceof Array + }) ? Math.max.apply(null, f.normalized.series.map(function (a) { + return a.length + })) : f.normalized.series.length, f.normalized.labels = (a.labels || []).slice(), Array.prototype.push.apply(f.normalized.labels, c.times(Math.max(0, e - f.normalized.labels.length)).map(function () { + return "" + })), b && c.reverseData(f.normalized), f + }, c.safeHasProperty = function (a, b) { + return null !== a && "object" == typeof a && a.hasOwnProperty(b) + }, c.isDataHoleValue = function (a) { + return null === a || void 0 === a || "number" == typeof a && isNaN(a) + }, c.reverseData = function (a) { + a.labels.reverse(), a.series.reverse(); + for (var b = 0; b < a.series.length; b++) "object" == typeof a.series[b] && void 0 !== a.series[b].data ? a.series[b].data.reverse() : a.series[b] instanceof Array && a.series[b].reverse() + }, c.getDataArray = function (a, b, d) { + function e(a) { + if (c.safeHasProperty(a, "value")) return e(a.value); + if (c.safeHasProperty(a, "data")) return e(a.data); + if (a instanceof Array) return a.map(e); + if (!c.isDataHoleValue(a)) { + if (d) { + var b = {}; + return "string" == typeof d ? b[d] = c.getNumberOrUndefined(a) : b.y = c.getNumberOrUndefined(a), b.x = a.hasOwnProperty("x") ? c.getNumberOrUndefined(a.x) : b.x, b.y = a.hasOwnProperty("y") ? c.getNumberOrUndefined(a.y) : b.y, b + } + return c.getNumberOrUndefined(a) + } + } + return a.series.map(e) + }, c.normalizePadding = function (a, b) { + return b = b || 0, "number" == typeof a ? { + top: a, + right: a, + bottom: a, + left: a + } : { + top: "number" == typeof a.top ? a.top : b, + right: "number" == typeof a.right ? a.right : b, + bottom: "number" == typeof a.bottom ? a.bottom : b, + left: "number" == typeof a.left ? a.left : b + } + }, c.getMetaData = function (a, b) { + var c = a.data ? a.data[b] : a[b]; + return c ? c.meta : void 0 + }, c.orderOfMagnitude = function (a) { + return Math.floor(Math.log(Math.abs(a)) / Math.LN10) + }, c.projectLength = function (a, b, c) { + return b / c.range * a + }, c.getAvailableHeight = function (a, b) { + return Math.max((c.quantity(b.height).value || a.height()) - (b.chartPadding.top + b.chartPadding.bottom) - b.axisX.offset, 0) + }, c.getHighLow = function (a, b, d) { + function e(a) { + if (void 0 !== a) + if (a instanceof Array) + for (var b = 0; b < a.length; b++) e(a[b]); + else { + var c = d ? +a[d] : +a; + g && c > f.high && (f.high = c), h && c < f.low && (f.low = c) + } + } + b = c.extend({}, b, d ? b["axis" + d.toUpperCase()] : {}); + var f = { + high: void 0 === b.high ? -Number.MAX_VALUE : +b.high, + low: void 0 === b.low ? Number.MAX_VALUE : +b.low + }, + g = void 0 === b.high, + h = void 0 === b.low; + return (g || h) && e(a), (b.referenceValue || 0 === b.referenceValue) && (f.high = Math.max(b.referenceValue, f.high), f.low = Math.min(b.referenceValue, f.low)), f.high <= f.low && (0 === f.low ? f.high = 1 : f.low < 0 ? f.high = 0 : f.high > 0 ? f.low = 0 : (f.high = 1, f.low = 0)), f + }, c.isNumeric = function (a) { + return null !== a && isFinite(a) + }, c.isFalseyButZero = function (a) { + return !a && 0 !== a + }, c.getNumberOrUndefined = function (a) { + return c.isNumeric(a) ? +a : void 0 + }, c.isMultiValue = function (a) { + return "object" == typeof a && ("x" in a || "y" in a) + }, c.getMultiValue = function (a, b) { + return c.isMultiValue(a) ? c.getNumberOrUndefined(a[b || "y"]) : c.getNumberOrUndefined(a) + }, c.rho = function (a) { + function b(a, c) { + return a % c === 0 ? c : b(c, a % c) + } + + function c(a) { + return a * a + 1 + } + if (1 === a) return a; + var d, e = 2, + f = 2; + if (a % 2 === 0) return 2; + do e = c(e) % a, f = c(c(f)) % a, d = b(Math.abs(e - f), a); while (1 === d); + return d + }, c.getBounds = function (a, b, d, e) { + function f(a, b) { + return a === (a += b) && (a *= 1 + (b > 0 ? o : -o)), a + } + var g, h, i, j = 0, + k = { + high: b.high, + low: b.low + }; + k.valueRange = k.high - k.low, k.oom = c.orderOfMagnitude(k.valueRange), k.step = Math.pow(10, k.oom), k.min = Math.floor(k.low / k.step) * k.step, k.max = Math.ceil(k.high / k.step) * k.step, k.range = k.max - k.min, k.numberOfSteps = Math.round(k.range / k.step); + var l = c.projectLength(a, k.step, k), + m = l < d, + n = e ? c.rho(k.range) : 0; + if (e && c.projectLength(a, 1, k) >= d) k.step = 1; + else if (e && n < k.step && c.projectLength(a, n, k) >= d) k.step = n; + else + for (;;) { + if (m && c.projectLength(a, k.step, k) <= d) k.step *= 2; + else { + if (m || !(c.projectLength(a, k.step / 2, k) >= d)) break; + if (k.step /= 2, e && k.step % 1 !== 0) { + k.step *= 2; + break + } + } + if (j++ > 1e3) throw new Error("Exceeded maximum number of iterations while optimizing scale step!") + } + var o = 2.221e-16; + for (k.step = Math.max(k.step, o), h = k.min, i = k.max; h + k.step <= k.low;) h = f(h, k.step); + for (; i - k.step >= k.high;) i = f(i, -k.step); + k.min = h, k.max = i, k.range = k.max - k.min; + var p = []; + for (g = k.min; g <= k.max; g = f(g, k.step)) { + var q = c.roundWithPrecision(g); + q !== p[p.length - 1] && p.push(q) + } + return k.values = p, k + }, c.polarToCartesian = function (a, b, c, d) { + var e = (d - 90) * Math.PI / 180; + return { + x: a + c * Math.cos(e), + y: b + c * Math.sin(e) + } + }, c.createChartRect = function (a, b, d) { + var e = !(!b.axisX && !b.axisY), + f = e ? b.axisY.offset : 0, + g = e ? b.axisX.offset : 0, + h = a.width() || c.quantity(b.width).value || 0, + i = a.height() || c.quantity(b.height).value || 0, + j = c.normalizePadding(b.chartPadding, d); + h = Math.max(h, f + j.left + j.right), i = Math.max(i, g + j.top + j.bottom); + var k = { + padding: j, + width: function () { + return this.x2 - this.x1 + }, + height: function () { + return this.y1 - this.y2 + } + }; + return e ? ("start" === b.axisX.position ? (k.y2 = j.top + g, k.y1 = Math.max(i - j.bottom, k.y2 + 1)) : (k.y2 = j.top, k.y1 = Math.max(i - j.bottom - g, k.y2 + 1)), "start" === b.axisY.position ? (k.x1 = j.left + f, k.x2 = Math.max(h - j.right, k.x1 + 1)) : (k.x1 = j.left, k.x2 = Math.max(h - j.right - f, k.x1 + 1))) : (k.x1 = j.left, k.x2 = Math.max(h - j.right, k.x1 + 1), k.y2 = j.top, k.y1 = Math.max(i - j.bottom, k.y2 + 1)), k + }, c.createGrid = function (a, b, d, e, f, g, h, i) { + var j = {}; + j[d.units.pos + "1"] = a, j[d.units.pos + "2"] = a, j[d.counterUnits.pos + "1"] = e, j[d.counterUnits.pos + "2"] = e + f; + var k = g.elem("line", j, h.join(" ")); + i.emit("draw", c.extend({ + type: "grid", + axis: d, + index: b, + group: g, + element: k + }, j)) + }, c.createGridBackground = function (a, b, c, d) { + var e = a.elem("rect", { + x: b.x1, + y: b.y2, + width: b.width(), + height: b.height() + }, c, !0); + d.emit("draw", { + type: "gridBackground", + group: a, + element: e + }) + }, c.createLabel = function (a, d, e, f, g, h, i, j, k, l, m) { + var n, o = {}; + if (o[g.units.pos] = a + i[g.units.pos], o[g.counterUnits.pos] = i[g.counterUnits.pos], o[g.units.len] = d, o[g.counterUnits.len] = Math.max(0, h - 10), l) { + var p = b.createElement("span"); + p.className = k.join(" "), p.setAttribute("xmlns", c.namespaces.xhtml), p.innerText = f[e], p.style[g.units.len] = Math.round(o[g.units.len]) + "px", p.style[g.counterUnits.len] = Math.round(o[g.counterUnits.len]) + "px", n = j.foreignObject(p, c.extend({ + style: "overflow: visible;" + }, o)) + } else n = j.elem("text", o, k.join(" ")).text(f[e]); + m.emit("draw", c.extend({ + type: "label", + axis: g, + index: e, + group: j, + element: n, + text: f[e] + }, o)) + }, c.getSeriesOption = function (a, b, c) { + if (a.name && b.series && b.series[a.name]) { + var d = b.series[a.name]; + return d.hasOwnProperty(c) ? d[c] : b[c] + } + return b[c] + }, c.optionsProvider = function (b, d, e) { + function f(b) { + var f = h; + if (h = c.extend({}, j), d) + for (i = 0; i < d.length; i++) { + var g = a.matchMedia(d[i][0]); + g.matches && (h = c.extend(h, d[i][1])) + } + e && b && e.emit("optionsChanged", { + previousOptions: f, + currentOptions: h + }) + } + + function g() { + k.forEach(function (a) { + a.removeListener(f) + }) + } + var h, i, j = c.extend({}, b), + k = []; + if (!a.matchMedia) throw "window.matchMedia not found! Make sure you're using a polyfill."; + if (d) + for (i = 0; i < d.length; i++) { + var l = a.matchMedia(d[i][0]); + l.addListener(f), k.push(l) + } + return f(), { + removeMediaQueryListeners: g, + getCurrentOptions: function () { + return c.extend({}, h) + } + } + }, c.splitIntoSegments = function (a, b, d) { + var e = { + increasingX: !1, + fillHoles: !1 + }; + d = c.extend({}, e, d); + for (var f = [], g = !0, h = 0; h < a.length; h += 2) void 0 === c.getMultiValue(b[h / 2].value) ? d.fillHoles || (g = !0) : (d.increasingX && h >= 2 && a[h] <= a[h - 2] && (g = !0), g && (f.push({ + pathCoordinates: [], + valueData: [] + }), g = !1), f[f.length - 1].pathCoordinates.push(a[h], a[h + 1]), f[f.length - 1].valueData.push(b[h / 2])); + return f + } + }(window, document, a), + function (a, b, c) { + "use strict"; + c.Interpolation = {}, c.Interpolation.none = function (a) { + var b = { + fillHoles: !1 + }; + return a = c.extend({}, b, a), + function (b, d) { + for (var e = new c.Svg.Path, f = !0, g = 0; g < b.length; g += 2) { + var h = b[g], + i = b[g + 1], + j = d[g / 2]; + void 0 !== c.getMultiValue(j.value) ? (f ? e.move(h, i, !1, j) : e.line(h, i, !1, j), f = !1) : a.fillHoles || (f = !0) + } + return e + } + }, c.Interpolation.simple = function (a) { + var b = { + divisor: 2, + fillHoles: !1 + }; + a = c.extend({}, b, a); + var d = 1 / Math.max(1, a.divisor); + return function (b, e) { + for (var f, g, h, i = new c.Svg.Path, j = 0; j < b.length; j += 2) { + var k = b[j], + l = b[j + 1], + m = (k - f) * d, + n = e[j / 2]; + void 0 !== n.value ? (void 0 === h ? i.move(k, l, !1, n) : i.curve(f + m, g, k - m, l, k, l, !1, n), f = k, g = l, h = n) : a.fillHoles || (f = k = h = void 0) + } + return i + } + }, c.Interpolation.cardinal = function (a) { + var b = { + tension: 1, + fillHoles: !1 + }; + a = c.extend({}, b, a); + var d = Math.min(1, Math.max(0, a.tension)), + e = 1 - d; + return function f(b, g) { + var h = c.splitIntoSegments(b, g, { + fillHoles: a.fillHoles + }); + if (h.length) { + if (h.length > 1) { + var i = []; + return h.forEach(function (a) { + i.push(f(a.pathCoordinates, a.valueData)) + }), c.Svg.Path.join(i) + } + if (b = h[0].pathCoordinates, g = h[0].valueData, b.length <= 4) return c.Interpolation.none()(b, g); + for (var j, k = (new c.Svg.Path).move(b[0], b[1], !1, g[0]), l = 0, m = b.length; m - 2 * !j > l; l += 2) { + var n = [{ + x: +b[l - 2], + y: +b[l - 1] + }, { + x: +b[l], + y: +b[l + 1] + }, { + x: +b[l + 2], + y: +b[l + 3] + }, { + x: +b[l + 4], + y: +b[l + 5] + }]; + j ? l ? m - 4 === l ? n[3] = { + x: +b[0], + y: +b[1] + } : m - 2 === l && (n[2] = { + x: +b[0], + y: +b[1] + }, n[3] = { + x: +b[2], + y: +b[3] + }) : n[0] = { + x: +b[m - 2], + y: +b[m - 1] + } : m - 4 === l ? n[3] = n[2] : l || (n[0] = { + x: +b[l], + y: +b[l + 1] + }), k.curve(d * (-n[0].x + 6 * n[1].x + n[2].x) / 6 + e * n[2].x, d * (-n[0].y + 6 * n[1].y + n[2].y) / 6 + e * n[2].y, d * (n[1].x + 6 * n[2].x - n[3].x) / 6 + e * n[2].x, d * (n[1].y + 6 * n[2].y - n[3].y) / 6 + e * n[2].y, n[2].x, n[2].y, !1, g[(l + 2) / 2]) + } + return k + } + return c.Interpolation.none()([]) + } + }, c.Interpolation.monotoneCubic = function (a) { + var b = { + fillHoles: !1 + }; + return a = c.extend({}, b, a), + function d(b, e) { + var f = c.splitIntoSegments(b, e, { + fillHoles: a.fillHoles, + increasingX: !0 + }); + if (f.length) { + if (f.length > 1) { + var g = []; + return f.forEach(function (a) { + g.push(d(a.pathCoordinates, a.valueData)) + }), c.Svg.Path.join(g) + } + if (b = f[0].pathCoordinates, e = f[0].valueData, b.length <= 4) return c.Interpolation.none()(b, e); + var h, i, j = [], + k = [], + l = b.length / 2, + m = [], + n = [], + o = [], + p = []; + for (h = 0; h < l; h++) j[h] = b[2 * h], k[h] = b[2 * h + 1]; + for (h = 0; h < l - 1; h++) o[h] = k[h + 1] - k[h], p[h] = j[h + 1] - j[h], n[h] = o[h] / p[h]; + for (m[0] = n[0], m[l - 1] = n[l - 2], h = 1; h < l - 1; h++) 0 === n[h] || 0 === n[h - 1] || n[h - 1] > 0 != n[h] > 0 ? m[h] = 0 : (m[h] = 3 * (p[h - 1] + p[h]) / ((2 * p[h] + p[h - 1]) / n[h - 1] + (p[h] + 2 * p[h - 1]) / n[h]), isFinite(m[h]) || (m[h] = 0)); + for (i = (new c.Svg.Path).move(j[0], k[0], !1, e[0]), h = 0; h < l - 1; h++) i.curve(j[h] + p[h] / 3, k[h] + m[h] * p[h] / 3, j[h + 1] - p[h] / 3, k[h + 1] - m[h + 1] * p[h] / 3, j[h + 1], k[h + 1], !1, e[h + 1]); + return i + } + return c.Interpolation.none()([]) + } + }, c.Interpolation.step = function (a) { + var b = { + postpone: !0, + fillHoles: !1 + }; + return a = c.extend({}, b, a), + function (b, d) { + for (var e, f, g, h = new c.Svg.Path, i = 0; i < b.length; i += 2) { + var j = b[i], + k = b[i + 1], + l = d[i / 2]; + void 0 !== l.value ? (void 0 === g ? h.move(j, k, !1, l) : (a.postpone ? h.line(j, f, !1, g) : h.line(e, k, !1, l), h.line(j, k, !1, l)), e = j, f = k, g = l) : a.fillHoles || (e = f = g = void 0) + } + return h + } + } + }(window, document, a), + function (a, b, c) { + "use strict"; + c.EventEmitter = function () { + function a(a, b) { + d[a] = d[a] || [], d[a].push(b) + } + + function b(a, b) { + d[a] && (b ? (d[a].splice(d[a].indexOf(b), 1), 0 === d[a].length && delete d[a]) : delete d[a]) + } + + function c(a, b) { + d[a] && d[a].forEach(function (a) { + a(b) + }), d["*"] && d["*"].forEach(function (c) { + c(a, b) + }) + } + var d = []; + return { + addEventHandler: a, + removeEventHandler: b, + emit: c + } + } + }(window, document, a), + function (a, b, c) { + "use strict"; + + function d(a) { + var b = []; + if (a.length) + for (var c = 0; c < a.length; c++) b.push(a[c]); + return b + } + + function e(a, b) { + var d = b || this.prototype || c.Class, + e = Object.create(d); + c.Class.cloneDefinitions(e, a); + var f = function () { + var a, b = e.constructor || function () {}; + return a = this === c ? Object.create(e) : this, b.apply(a, Array.prototype.slice.call(arguments, 0)), a + }; + return f.prototype = e, f["super"] = d, f.extend = this.extend, f + } + + function f() { + var a = d(arguments), + b = a[0]; + return a.splice(1, a.length - 1).forEach(function (a) { + Object.getOwnPropertyNames(a).forEach(function (c) { + delete b[c], Object.defineProperty(b, c, Object.getOwnPropertyDescriptor(a, c)) + }) + }), b + } + c.Class = { + extend: e, + cloneDefinitions: f + } + }(window, document, a), + function (a, b, c) { + "use strict"; + + function d(a, b, d) { + return a && (this.data = a || {}, this.data.labels = this.data.labels || [], this.data.series = this.data.series || [], this.eventEmitter.emit("data", { + type: "update", + data: this.data + })), b && (this.options = c.extend({}, d ? this.options : this.defaultOptions, b), this.initializeTimeoutId || (this.optionsProvider.removeMediaQueryListeners(), this.optionsProvider = c.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter))), this.initializeTimeoutId || this.createChart(this.optionsProvider.getCurrentOptions()), this + } + + function e() { + return this.initializeTimeoutId ? a.clearTimeout(this.initializeTimeoutId) : (a.removeEventListener("resize", this.resizeListener), this.optionsProvider.removeMediaQueryListeners()), this + } + + function f(a, b) { + return this.eventEmitter.addEventHandler(a, b), this + } + + function g(a, b) { + return this.eventEmitter.removeEventHandler(a, b), this + } + + function h() { + a.addEventListener("resize", this.resizeListener), this.optionsProvider = c.optionsProvider(this.options, this.responsiveOptions, this.eventEmitter), this.eventEmitter.addEventHandler("optionsChanged", function () { + this.update() + }.bind(this)), this.options.plugins && this.options.plugins.forEach(function (a) { + a instanceof Array ? a[0](this, a[1]) : a(this) + }.bind(this)), this.eventEmitter.emit("data", { + type: "initial", + data: this.data + }), this.createChart(this.optionsProvider.getCurrentOptions()), this.initializeTimeoutId = void 0 + } + + function i(a, b, d, e, f) { + this.container = c.querySelector(a), this.data = b || {}, this.data.labels = this.data.labels || [], this.data.series = this.data.series || [], this.defaultOptions = d, this.options = e, this.responsiveOptions = f, this.eventEmitter = c.EventEmitter(), this.supportsForeignObject = c.Svg.isSupported("Extensibility"), this.supportsAnimations = c.Svg.isSupported("AnimationEventsAttribute"), this.resizeListener = function () { + this.update() + }.bind(this), this.container && (this.container.__chartist__ && this.container.__chartist__.detach(), this.container.__chartist__ = this), this.initializeTimeoutId = setTimeout(h.bind(this), 0) + } + c.Base = c.Class.extend({ + constructor: i, + optionsProvider: void 0, + container: void 0, + svg: void 0, + eventEmitter: void 0, + createChart: function () { + throw new Error("Base chart type can't be instantiated!") + }, + update: d, + detach: e, + on: f, + off: g, + version: c.version, + supportsForeignObject: !1 + }) + }(window, document, a), + function (a, b, c) { + "use strict"; + + function d(a, d, e, f, g) { + a instanceof Element ? this._node = a : (this._node = b.createElementNS(c.namespaces.svg, a), "svg" === a && this.attr({ + "xmlns:ct": c.namespaces.ct + })), d && this.attr(d), e && this.addClass(e), f && (g && f._node.firstChild ? f._node.insertBefore(this._node, f._node.firstChild) : f._node.appendChild(this._node)) + } + + function e(a, b) { + return "string" == typeof a ? b ? this._node.getAttributeNS(b, a) : this._node.getAttribute(a) : (Object.keys(a).forEach(function (b) { + if (void 0 !== a[b]) + if (b.indexOf(":") !== -1) { + var d = b.split(":"); + this._node.setAttributeNS(c.namespaces[d[0]], b, a[b]) + } else this._node.setAttribute(b, a[b]) + }.bind(this)), this) + } + + function f(a, b, d, e) { + return new c.Svg(a, b, d, this, e) + } + + function g() { + return this._node.parentNode instanceof SVGElement ? new c.Svg(this._node.parentNode) : null + } + + function h() { + for (var a = this._node; + "svg" !== a.nodeName;) a = a.parentNode; + return new c.Svg(a) + } + + function i(a) { + var b = this._node.querySelector(a); + return b ? new c.Svg(b) : null + } + + function j(a) { + var b = this._node.querySelectorAll(a); + return b.length ? new c.Svg.List(b) : null + } + + function k() { + return this._node + } + + function l(a, d, e, f) { + if ("string" == typeof a) { + var g = b.createElement("div"); + g.innerHTML = a, a = g.firstChild + } + a.setAttribute("xmlns", c.namespaces.xmlns); + var h = this.elem("foreignObject", d, e, f); + return h._node.appendChild(a), h + } + + function m(a) { + return this._node.appendChild(b.createTextNode(a)), this + } + + function n() { + for (; this._node.firstChild;) this._node.removeChild(this._node.firstChild); + return this + } + + function o() { + return this._node.parentNode.removeChild(this._node), this.parent() + } + + function p(a) { + return this._node.parentNode.replaceChild(a._node, this._node), a + } + + function q(a, b) { + return b && this._node.firstChild ? this._node.insertBefore(a._node, this._node.firstChild) : this._node.appendChild(a._node), this + } + + function r() { + return this._node.getAttribute("class") ? this._node.getAttribute("class").trim().split(/\s+/) : [] + } + + function s(a) { + return this._node.setAttribute("class", this.classes(this._node).concat(a.trim().split(/\s+/)).filter(function (a, b, c) { + return c.indexOf(a) === b + }).join(" ")), this + } + + function t(a) { + var b = a.trim().split(/\s+/); + return this._node.setAttribute("class", this.classes(this._node).filter(function (a) { + return b.indexOf(a) === -1 + }).join(" ")), this + } + + function u() { + return this._node.setAttribute("class", ""), this + } + + function v() { + return this._node.getBoundingClientRect().height + } + + function w() { + return this._node.getBoundingClientRect().width + } + + function x(a, b, d) { + return void 0 === b && (b = !0), Object.keys(a).forEach(function (e) { + function f(a, b) { + var f, g, h, i = {}; + a.easing && (h = a.easing instanceof Array ? a.easing : c.Svg.Easing[a.easing], delete a.easing), a.begin = c.ensureUnit(a.begin, "ms"), a.dur = c.ensureUnit(a.dur, "ms"), h && (a.calcMode = "spline", a.keySplines = h.join(" "), a.keyTimes = "0;1"), b && (a.fill = "freeze", i[e] = a.from, this.attr(i), g = c.quantity(a.begin || 0).value, a.begin = "indefinite"), f = this.elem("animate", c.extend({ + attributeName: e + }, a)), b && setTimeout(function () { + try { + f._node.beginElement() + } catch (b) { + i[e] = a.to, this.attr(i), f.remove() + } + }.bind(this), g), d && f._node.addEventListener("beginEvent", function () { + d.emit("animationBegin", { + element: this, + animate: f._node, + params: a + }) + }.bind(this)), f._node.addEventListener("endEvent", function () { + d && d.emit("animationEnd", { + element: this, + animate: f._node, + params: a + }), b && (i[e] = a.to, this.attr(i), f.remove()) + }.bind(this)) + } + a[e] instanceof Array ? a[e].forEach(function (a) { + f.bind(this)(a, !1) + }.bind(this)) : f.bind(this)(a[e], b) + }.bind(this)), this + } + + function y(a) { + var b = this; + this.svgElements = []; + for (var d = 0; d < a.length; d++) this.svgElements.push(new c.Svg(a[d])); + Object.keys(c.Svg.prototype).filter(function (a) { + return ["constructor", "parent", "querySelector", "querySelectorAll", "replace", "append", "classes", "height", "width"].indexOf(a) === -1 + }).forEach(function (a) { + b[a] = function () { + var d = Array.prototype.slice.call(arguments, 0); + return b.svgElements.forEach(function (b) { + c.Svg.prototype[a].apply(b, d) + }), b + } + }) + } + c.Svg = c.Class.extend({ + constructor: d, + attr: e, + elem: f, + parent: g, + root: h, + querySelector: i, + querySelectorAll: j, + getNode: k, + foreignObject: l, + text: m, + empty: n, + remove: o, + replace: p, + append: q, + classes: r, + addClass: s, + removeClass: t, + removeAllClasses: u, + height: v, + width: w, + animate: x + }), c.Svg.isSupported = function (a) { + return b.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#" + a, "1.1") + }; + var z = { + easeInSine: [.47, 0, .745, .715], + easeOutSine: [.39, .575, .565, 1], + easeInOutSine: [.445, .05, .55, .95], + easeInQuad: [.55, .085, .68, .53], + easeOutQuad: [.25, .46, .45, .94], + easeInOutQuad: [.455, .03, .515, .955], + easeInCubic: [.55, .055, .675, .19], + easeOutCubic: [.215, .61, .355, 1], + easeInOutCubic: [.645, .045, .355, 1], + easeInQuart: [.895, .03, .685, .22], + easeOutQuart: [.165, .84, .44, 1], + easeInOutQuart: [.77, 0, .175, 1], + easeInQuint: [.755, .05, .855, .06], + easeOutQuint: [.23, 1, .32, 1], + easeInOutQuint: [.86, 0, .07, 1], + easeInExpo: [.95, .05, .795, .035], + easeOutExpo: [.19, 1, .22, 1], + easeInOutExpo: [1, 0, 0, 1], + easeInCirc: [.6, .04, .98, .335], + easeOutCirc: [.075, .82, .165, 1], + easeInOutCirc: [.785, .135, .15, .86], + easeInBack: [.6, -.28, .735, .045], + easeOutBack: [.175, .885, .32, 1.275], + easeInOutBack: [.68, -.55, .265, 1.55] + }; + c.Svg.Easing = z, c.Svg.List = c.Class.extend({ + constructor: y + }) + }(window, document, a), + function (a, b, c) { + "use strict"; + + function d(a, b, d, e, f, g) { + var h = c.extend({ + command: f ? a.toLowerCase() : a.toUpperCase() + }, b, g ? { + data: g + } : {}); + d.splice(e, 0, h) + } + + function e(a, b) { + a.forEach(function (c, d) { + u[c.command.toLowerCase()].forEach(function (e, f) { + b(c, e, d, f, a) + }) + }) + } + + function f(a, b) { + this.pathElements = [], this.pos = 0, this.close = a, this.options = c.extend({}, v, b) + } + + function g(a) { + return void 0 !== a ? (this.pos = Math.max(0, Math.min(this.pathElements.length, a)), this) : this.pos + } + + function h(a) { + return this.pathElements.splice(this.pos, a), this + } + + function i(a, b, c, e) { + return d("M", { + x: +a, + y: +b + }, this.pathElements, this.pos++, c, e), this + } + + function j(a, b, c, e) { + return d("L", { + x: +a, + y: +b + }, this.pathElements, this.pos++, c, e), this + } + + function k(a, b, c, e, f, g, h, i) { + return d("C", { + x1: +a, + y1: +b, + x2: +c, + y2: +e, + x: +f, + y: +g + }, this.pathElements, this.pos++, h, i), this + } + + function l(a, b, c, e, f, g, h, i, j) { + return d("A", { + rx: +a, + ry: +b, + xAr: +c, + lAf: +e, + sf: +f, + x: +g, + y: +h + }, this.pathElements, this.pos++, i, j), this + } + + function m(a) { + var b = a.replace(/([A-Za-z])([0-9])/g, "$1 $2").replace(/([0-9])([A-Za-z])/g, "$1 $2").split(/[\s,]+/).reduce(function (a, b) { + return b.match(/[A-Za-z]/) && a.push([]), a[a.length - 1].push(b), a + }, []); + "Z" === b[b.length - 1][0].toUpperCase() && b.pop(); + var d = b.map(function (a) { + var b = a.shift(), + d = u[b.toLowerCase()]; + return c.extend({ + command: b + }, d.reduce(function (b, c, d) { + return b[c] = +a[d], b + }, {})) + }), + e = [this.pos, 0]; + return Array.prototype.push.apply(e, d), Array.prototype.splice.apply(this.pathElements, e), this.pos += d.length, this + } + + function n() { + var a = Math.pow(10, this.options.accuracy); + return this.pathElements.reduce(function (b, c) { + var d = u[c.command.toLowerCase()].map(function (b) { + return this.options.accuracy ? Math.round(c[b] * a) / a : c[b] + }.bind(this)); + return b + c.command + d.join(",") + }.bind(this), "") + (this.close ? "Z" : "") + } + + function o(a, b) { + return e(this.pathElements, function (c, d) { + c[d] *= "x" === d[0] ? a : b + }), this + } + + function p(a, b) { + return e(this.pathElements, function (c, d) { + c[d] += "x" === d[0] ? a : b + }), this + } + + function q(a) { + return e(this.pathElements, function (b, c, d, e, f) { + var g = a(b, c, d, e, f); + (g || 0 === g) && (b[c] = g) + }), this + } + + function r(a) { + var b = new c.Svg.Path(a || this.close); + return b.pos = this.pos, b.pathElements = this.pathElements.slice().map(function (a) { + return c.extend({}, a) + }), b.options = c.extend({}, this.options), b + } + + function s(a) { + var b = [new c.Svg.Path]; + return this.pathElements.forEach(function (d) { + d.command === a.toUpperCase() && 0 !== b[b.length - 1].pathElements.length && b.push(new c.Svg.Path), b[b.length - 1].pathElements.push(d) + }), b + } + + function t(a, b, d) { + for (var e = new c.Svg.Path(b, d), f = 0; f < a.length; f++) + for (var g = a[f], h = 0; h < g.pathElements.length; h++) e.pathElements.push(g.pathElements[h]); + return e + } + var u = { + m: ["x", "y"], + l: ["x", "y"], + c: ["x1", "y1", "x2", "y2", "x", "y"], + a: ["rx", "ry", "xAr", "lAf", "sf", "x", "y"] + }, + v = { + accuracy: 3 + }; + c.Svg.Path = c.Class.extend({ + constructor: f, + position: g, + remove: h, + move: i, + line: j, + curve: k, + arc: l, + scale: o, + translate: p, + transform: q, + parse: m, + stringify: n, + clone: r, + splitByCommand: s + }), c.Svg.Path.elementDescriptions = u, c.Svg.Path.join = t + }(window, document, a), + function (a, b, c) { + "use strict"; + + function d(a, b, c, d) { + this.units = a, this.counterUnits = a === f.x ? f.y : f.x, this.chartRect = b, this.axisLength = b[a.rectEnd] - b[a.rectStart], this.gridOffset = b[a.rectOffset], this.ticks = c, this.options = d + } + + function e(a, b, d, e, f) { + var g = e["axis" + this.units.pos.toUpperCase()], + h = this.ticks.map(this.projectValue.bind(this)), + i = this.ticks.map(g.labelInterpolationFnc); + h.forEach(function (j, k) { + var l, m = { + x: 0, + y: 0 + }; + l = h[k + 1] ? h[k + 1] - j : Math.max(this.axisLength - j, 30), c.isFalseyButZero(i[k]) && "" !== i[k] || ("x" === this.units.pos ? (j = this.chartRect.x1 + j, m.x = e.axisX.labelOffset.x, "start" === e.axisX.position ? m.y = this.chartRect.padding.top + e.axisX.labelOffset.y + (d ? 5 : 20) : m.y = this.chartRect.y1 + e.axisX.labelOffset.y + (d ? 5 : 20)) : (j = this.chartRect.y1 - j, m.y = e.axisY.labelOffset.y - (d ? l : 0), "start" === e.axisY.position ? m.x = d ? this.chartRect.padding.left + e.axisY.labelOffset.x : this.chartRect.x1 - 10 : m.x = this.chartRect.x2 + e.axisY.labelOffset.x + 10), g.showGrid && c.createGrid(j, k, this, this.gridOffset, this.chartRect[this.counterUnits.len](), a, [e.classNames.grid, e.classNames[this.units.dir]], f), g.showLabel && c.createLabel(j, l, k, i, this, g.offset, m, b, [e.classNames.label, e.classNames[this.units.dir], "start" === g.position ? e.classNames[g.position] : e.classNames.end], d, f)) + }.bind(this)) + } + var f = { + x: { + pos: "x", + len: "width", + dir: "horizontal", + rectStart: "x1", + rectEnd: "x2", + rectOffset: "y2" + }, + y: { + pos: "y", + len: "height", + dir: "vertical", + rectStart: "y2", + rectEnd: "y1", + rectOffset: "x1" + } + }; + c.Axis = c.Class.extend({ + constructor: d, + createGridAndLabels: e, + projectValue: function (a, b, c) { + throw new Error("Base axis can't be instantiated!") + } + }), c.Axis.units = f + }(window, document, a), + function (a, b, c) { + "use strict"; + + function d(a, b, d, e) { + var f = e.highLow || c.getHighLow(b, e, a.pos); + this.bounds = c.getBounds(d[a.rectEnd] - d[a.rectStart], f, e.scaleMinSpace || 20, e.onlyInteger), this.range = { + min: this.bounds.min, + max: this.bounds.max + }, c.AutoScaleAxis["super"].constructor.call(this, a, d, this.bounds.values, e) + } + + function e(a) { + return this.axisLength * (+c.getMultiValue(a, this.units.pos) - this.bounds.min) / this.bounds.range + } + c.AutoScaleAxis = c.Axis.extend({ + constructor: d, + projectValue: e + }) + }(window, document, a), + function (a, b, c) { + "use strict"; + + function d(a, b, d, e) { + var f = e.highLow || c.getHighLow(b, e, a.pos); + this.divisor = e.divisor || 1, this.ticks = e.ticks || c.times(this.divisor).map(function (a, b) { + return f.low + (f.high - f.low) / this.divisor * b + }.bind(this)), this.ticks.sort(function (a, b) { + return a - b + }), this.range = { + min: f.low, + max: f.high + }, c.FixedScaleAxis["super"].constructor.call(this, a, d, this.ticks, e), this.stepLength = this.axisLength / this.divisor + } + + function e(a) { + return this.axisLength * (+c.getMultiValue(a, this.units.pos) - this.range.min) / (this.range.max - this.range.min) + } + c.FixedScaleAxis = c.Axis.extend({ + constructor: d, + projectValue: e + }) + }(window, document, a), + function (a, b, c) { + "use strict"; + + function d(a, b, d, e) { + c.StepAxis["super"].constructor.call(this, a, d, e.ticks, e); + var f = Math.max(1, e.ticks.length - (e.stretch ? 1 : 0)); + this.stepLength = this.axisLength / f + } + + function e(a, b) { + return this.stepLength * b + } + c.StepAxis = c.Axis.extend({ + constructor: d, + projectValue: e + }) + }(window, document, a), + function (a, b, c) { + "use strict"; + + function d(a) { + var b = c.normalizeData(this.data, a.reverseData, !0); + this.svg = c.createSvg(this.container, a.width, a.height, a.classNames.chart); + var d, e, g = this.svg.elem("g").addClass(a.classNames.gridGroup), + h = this.svg.elem("g"), + i = this.svg.elem("g").addClass(a.classNames.labelGroup), + j = c.createChartRect(this.svg, a, f.padding); + d = void 0 === a.axisX.type ? new c.StepAxis(c.Axis.units.x, b.normalized.series, j, c.extend({}, a.axisX, { + ticks: b.normalized.labels, + stretch: a.fullWidth + })) : a.axisX.type.call(c, c.Axis.units.x, b.normalized.series, j, a.axisX), e = void 0 === a.axisY.type ? new c.AutoScaleAxis(c.Axis.units.y, b.normalized.series, j, c.extend({}, a.axisY, { + high: c.isNumeric(a.high) ? a.high : a.axisY.high, + low: c.isNumeric(a.low) ? a.low : a.axisY.low + })) : a.axisY.type.call(c, c.Axis.units.y, b.normalized.series, j, a.axisY), d.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), e.createGridAndLabels(g, i, this.supportsForeignObject, a, this.eventEmitter), a.showGridBackground && c.createGridBackground(g, j, a.classNames.gridBackground, this.eventEmitter), b.raw.series.forEach(function (f, g) { + var i = h.elem("g"); + i.attr({ + "ct:series-name": f.name, + "ct:meta": c.serialize(f.meta) + }), i.addClass([a.classNames.series, f.className || a.classNames.series + "-" + c.alphaNumerate(g)].join(" ")); + var k = [], + l = []; + b.normalized.series[g].forEach(function (a, h) { + var i = { + x: j.x1 + d.projectValue(a, h, b.normalized.series[g]), + y: j.y1 - e.projectValue(a, h, b.normalized.series[g]) + }; + k.push(i.x, i.y), l.push({ + value: a, + valueIndex: h, + meta: c.getMetaData(f, h) + }) + }.bind(this)); + var m = { + lineSmooth: c.getSeriesOption(f, a, "lineSmooth"), + showPoint: c.getSeriesOption(f, a, "showPoint"), + showLine: c.getSeriesOption(f, a, "showLine"), + showArea: c.getSeriesOption(f, a, "showArea"), + areaBase: c.getSeriesOption(f, a, "areaBase") + }, + n = "function" == typeof m.lineSmooth ? m.lineSmooth : m.lineSmooth ? c.Interpolation.monotoneCubic() : c.Interpolation.none(), + o = n(k, l); + if (m.showPoint && o.pathElements.forEach(function (b) { + var h = i.elem("line", { + x1: b.x, + y1: b.y, + x2: b.x + .01, + y2: b.y + }, a.classNames.point).attr({ + "ct:value": [b.data.value.x, b.data.value.y].filter(c.isNumeric).join(","), + "ct:meta": c.serialize(b.data.meta) + }); + this.eventEmitter.emit("draw", { + type: "point", + value: b.data.value, + index: b.data.valueIndex, + meta: b.data.meta, + series: f, + seriesIndex: g, + axisX: d, + axisY: e, + group: i, + element: h, + x: b.x, + y: b.y + }) + }.bind(this)), m.showLine) { + var p = i.elem("path", { + d: o.stringify() + }, a.classNames.line, !0); + this.eventEmitter.emit("draw", { + type: "line", + values: b.normalized.series[g], + path: o.clone(), + chartRect: j, + index: g, + series: f, + seriesIndex: g, + seriesMeta: f.meta, + axisX: d, + axisY: e, + group: i, + element: p + }) + } + if (m.showArea && e.range) { + var q = Math.max(Math.min(m.areaBase, e.range.max), e.range.min), + r = j.y1 - e.projectValue(q); + o.splitByCommand("M").filter(function (a) { + return a.pathElements.length > 1 + }).map(function (a) { + var b = a.pathElements[0], + c = a.pathElements[a.pathElements.length - 1]; + return a.clone(!0).position(0).remove(1).move(b.x, r).line(b.x, b.y).position(a.pathElements.length + 1).line(c.x, r) + }).forEach(function (c) { + var h = i.elem("path", { + d: c.stringify() + }, a.classNames.area, !0); + this.eventEmitter.emit("draw", { + type: "area", + values: b.normalized.series[g], + path: c.clone(), + series: f, + seriesIndex: g, + axisX: d, + axisY: e, + chartRect: j, + index: g, + group: i, + element: h + }) + }.bind(this)) + } + }.bind(this)), this.eventEmitter.emit("created", { + bounds: e.bounds, + chartRect: j, + axisX: d, + axisY: e, + svg: this.svg, + options: a + }) + } + + function e(a, b, d, e) { + c.Line["super"].constructor.call(this, a, b, f, c.extend({}, f, d), e) + } + var f = { + axisX: { + offset: 30, + position: "end", + labelOffset: { + x: 0, + y: 0 + }, + showLabel: !0, + showGrid: !0, + labelInterpolationFnc: c.noop, + type: void 0 + }, + axisY: { + offset: 40, + position: "start", + labelOffset: { + x: 0, + y: 0 + }, + showLabel: !0, + showGrid: !0, + labelInterpolationFnc: c.noop, + type: void 0, + scaleMinSpace: 20, + onlyInteger: !1 + }, + width: void 0, + height: void 0, + showLine: !0, + showPoint: !0, + showArea: !1, + areaBase: 0, + lineSmooth: !0, + showGridBackground: !1, + low: void 0, + high: void 0, + chartPadding: { + top: 15, + right: 15, + bottom: 5, + left: 10 + }, + fullWidth: !1, + reverseData: !1, + classNames: { + chart: "ct-chart-line", + label: "ct-label", + labelGroup: "ct-labels", + series: "ct-series", + line: "ct-line", + point: "ct-point", + area: "ct-area", + grid: "ct-grid", + gridGroup: "ct-grids", + gridBackground: "ct-grid-background", + vertical: "ct-vertical", + horizontal: "ct-horizontal", + start: "ct-start", + end: "ct-end" + } + }; + c.Line = c.Base.extend({ + constructor: e, + createChart: d + }) + }(window, document, a), + function (a, b, c) { + "use strict"; + + function d(a) { + var b, d; + a.distributeSeries ? (b = c.normalizeData(this.data, a.reverseData, a.horizontalBars ? "x" : "y"), b.normalized.series = b.normalized.series.map(function (a) { + return [a] + })) : b = c.normalizeData(this.data, a.reverseData, a.horizontalBars ? "x" : "y"), this.svg = c.createSvg(this.container, a.width, a.height, a.classNames.chart + (a.horizontalBars ? " " + a.classNames.horizontalBars : "")); + var e = this.svg.elem("g").addClass(a.classNames.gridGroup), + g = this.svg.elem("g"), + h = this.svg.elem("g").addClass(a.classNames.labelGroup); + if (a.stackBars && 0 !== b.normalized.series.length) { + var i = c.serialMap(b.normalized.series, function () { + return Array.prototype.slice.call(arguments).map(function (a) { + return a + }).reduce(function (a, b) { + return { + x: a.x + (b && b.x) || 0, + y: a.y + (b && b.y) || 0 + } + }, { + x: 0, + y: 0 + }) + }); + d = c.getHighLow([i], a, a.horizontalBars ? "x" : "y") + } else d = c.getHighLow(b.normalized.series, a, a.horizontalBars ? "x" : "y"); + d.high = +a.high || (0 === a.high ? 0 : d.high), d.low = +a.low || (0 === a.low ? 0 : d.low); + var j, k, l, m, n, o = c.createChartRect(this.svg, a, f.padding); + k = a.distributeSeries && a.stackBars ? b.normalized.labels.slice(0, 1) : b.normalized.labels, a.horizontalBars ? (j = m = void 0 === a.axisX.type ? new c.AutoScaleAxis(c.Axis.units.x, b.normalized.series, o, c.extend({}, a.axisX, { + highLow: d, + referenceValue: 0 + })) : a.axisX.type.call(c, c.Axis.units.x, b.normalized.series, o, c.extend({}, a.axisX, { + highLow: d, + referenceValue: 0 + })), l = n = void 0 === a.axisY.type ? new c.StepAxis(c.Axis.units.y, b.normalized.series, o, { + ticks: k + }) : a.axisY.type.call(c, c.Axis.units.y, b.normalized.series, o, a.axisY)) : (l = m = void 0 === a.axisX.type ? new c.StepAxis(c.Axis.units.x, b.normalized.series, o, { + ticks: k + }) : a.axisX.type.call(c, c.Axis.units.x, b.normalized.series, o, a.axisX), j = n = void 0 === a.axisY.type ? new c.AutoScaleAxis(c.Axis.units.y, b.normalized.series, o, c.extend({}, a.axisY, { + highLow: d, + referenceValue: 0 + })) : a.axisY.type.call(c, c.Axis.units.y, b.normalized.series, o, c.extend({}, a.axisY, { + highLow: d, + referenceValue: 0 + }))); + var p = a.horizontalBars ? o.x1 + j.projectValue(0) : o.y1 - j.projectValue(0), + q = []; + l.createGridAndLabels(e, h, this.supportsForeignObject, a, this.eventEmitter), j.createGridAndLabels(e, h, this.supportsForeignObject, a, this.eventEmitter), a.showGridBackground && c.createGridBackground(e, o, a.classNames.gridBackground, this.eventEmitter), b.raw.series.forEach(function (d, e) { + var f, h, i = e - (b.raw.series.length - 1) / 2; + f = a.distributeSeries && !a.stackBars ? l.axisLength / b.normalized.series.length / 2 : a.distributeSeries && a.stackBars ? l.axisLength / 2 : l.axisLength / b.normalized.series[e].length / 2, h = g.elem("g"), h.attr({ + "ct:series-name": d.name, + "ct:meta": c.serialize(d.meta) + }), h.addClass([a.classNames.series, d.className || a.classNames.series + "-" + c.alphaNumerate(e)].join(" ")), b.normalized.series[e].forEach(function (g, k) { + var r, s, t, u; + if (u = a.distributeSeries && !a.stackBars ? e : a.distributeSeries && a.stackBars ? 0 : k, r = a.horizontalBars ? { + x: o.x1 + j.projectValue(g && g.x ? g.x : 0, k, b.normalized.series[e]), + y: o.y1 - l.projectValue(g && g.y ? g.y : 0, u, b.normalized.series[e]) + } : { + x: o.x1 + l.projectValue(g && g.x ? g.x : 0, u, b.normalized.series[e]), + y: o.y1 - j.projectValue(g && g.y ? g.y : 0, k, b.normalized.series[e]) + }, l instanceof c.StepAxis && (l.options.stretch || (r[l.units.pos] += f * (a.horizontalBars ? -1 : 1)), r[l.units.pos] += a.stackBars || a.distributeSeries ? 0 : i * a.seriesBarDistance * (a.horizontalBars ? -1 : 1)), t = q[k] || p, q[k] = t - (p - r[l.counterUnits.pos]), void 0 !== g) { + var v = {}; + v[l.units.pos + "1"] = r[l.units.pos], v[l.units.pos + "2"] = r[l.units.pos], !a.stackBars || "accumulate" !== a.stackMode && a.stackMode ? (v[l.counterUnits.pos + "1"] = p, v[l.counterUnits.pos + "2"] = r[l.counterUnits.pos]) : (v[l.counterUnits.pos + "1"] = t, v[l.counterUnits.pos + "2"] = q[k]), v.x1 = Math.min(Math.max(v.x1, o.x1), o.x2), v.x2 = Math.min(Math.max(v.x2, o.x1), o.x2), v.y1 = Math.min(Math.max(v.y1, o.y2), o.y1), v.y2 = Math.min(Math.max(v.y2, o.y2), o.y1); + var w = c.getMetaData(d, k); + s = h.elem("line", v, a.classNames.bar).attr({ + "ct:value": [g.x, g.y].filter(c.isNumeric).join(","), + "ct:meta": c.serialize(w) + }), this.eventEmitter.emit("draw", c.extend({ + type: "bar", + value: g, + index: k, + meta: w, + series: d, + seriesIndex: e, + axisX: m, + axisY: n, + chartRect: o, + group: h, + element: s + }, v)) + } + }.bind(this)) + }.bind(this)), this.eventEmitter.emit("created", { + bounds: j.bounds, + chartRect: o, + axisX: m, + axisY: n, + svg: this.svg, + options: a + }) + } + + function e(a, b, d, e) { + c.Bar["super"].constructor.call(this, a, b, f, c.extend({}, f, d), e) + } + var f = { + axisX: { + offset: 30, + position: "end", + labelOffset: { + x: 0, + y: 0 + }, + showLabel: !0, + showGrid: !0, + labelInterpolationFnc: c.noop, + scaleMinSpace: 30, + onlyInteger: !1 + }, + axisY: { + offset: 40, + position: "start", + labelOffset: { + x: 0, + y: 0 + }, + showLabel: !0, + showGrid: !0, + labelInterpolationFnc: c.noop, + scaleMinSpace: 20, + onlyInteger: !1 + }, + width: void 0, + height: void 0, + high: void 0, + low: void 0, + referenceValue: 0, + chartPadding: { + top: 15, + right: 15, + bottom: 5, + left: 10 + }, + seriesBarDistance: 15, + stackBars: !1, + stackMode: "accumulate", + horizontalBars: !1, + distributeSeries: !1, + reverseData: !1, + showGridBackground: !1, + classNames: { + chart: "ct-chart-bar", + horizontalBars: "ct-horizontal-bars", + label: "ct-label", + labelGroup: "ct-labels", + series: "ct-series", + bar: "ct-bar", + grid: "ct-grid", + gridGroup: "ct-grids", + gridBackground: "ct-grid-background", + vertical: "ct-vertical", + horizontal: "ct-horizontal", + start: "ct-start", + end: "ct-end" + } + }; + c.Bar = c.Base.extend({ + constructor: e, + createChart: d + }) + }(window, document, a), + function (a, b, c) { + "use strict"; + + function d(a, b, c) { + var d = b.x > a.x; + return d && "explode" === c || !d && "implode" === c ? "start" : d && "implode" === c || !d && "explode" === c ? "end" : "middle" + } + + function e(a) { + var b, e, f, h, i, j = c.normalizeData(this.data), + k = [], + l = a.startAngle; + this.svg = c.createSvg(this.container, a.width, a.height, a.donut ? a.classNames.chartDonut : a.classNames.chartPie), e = c.createChartRect(this.svg, a, g.padding), f = Math.min(e.width() / 2, e.height() / 2), i = a.total || j.normalized.series.reduce(function (a, b) { + return a + b + }, 0); + var m = c.quantity(a.donutWidth); + "%" === m.unit && (m.value *= f / 100), f -= a.donut && !a.donutSolid ? m.value / 2 : 0, h = "outside" === a.labelPosition || a.donut && !a.donutSolid ? f : "center" === a.labelPosition ? 0 : a.donutSolid ? f - m.value / 2 : f / 2, h += a.labelOffset; + var n = { + x: e.x1 + e.width() / 2, + y: e.y2 + e.height() / 2 + }, + o = 1 === j.raw.series.filter(function (a) { + return a.hasOwnProperty("value") ? 0 !== a.value : 0 !== a + }).length; + j.raw.series.forEach(function (a, b) { + k[b] = this.svg.elem("g", null, null) + }.bind(this)), a.showLabel && (b = this.svg.elem("g", null, null)), j.raw.series.forEach(function (e, g) { + if (0 !== j.normalized.series[g] || !a.ignoreEmptyValues) { + k[g].attr({ + "ct:series-name": e.name + }), k[g].addClass([a.classNames.series, e.className || a.classNames.series + "-" + c.alphaNumerate(g)].join(" ")); + var p = i > 0 ? l + j.normalized.series[g] / i * 360 : 0, + q = Math.max(0, l - (0 === g || o ? 0 : .2)); + p - q >= 359.99 && (p = q + 359.99); + var r, s, t, u = c.polarToCartesian(n.x, n.y, f, q), + v = c.polarToCartesian(n.x, n.y, f, p), + w = new c.Svg.Path(!a.donut || a.donutSolid).move(v.x, v.y).arc(f, f, 0, p - l > 180, 0, u.x, u.y); + a.donut ? a.donutSolid && (t = f - m.value, r = c.polarToCartesian(n.x, n.y, t, l - (0 === g || o ? 0 : .2)), s = c.polarToCartesian(n.x, n.y, t, p), w.line(r.x, r.y), w.arc(t, t, 0, p - l > 180, 1, s.x, s.y)) : w.line(n.x, n.y); + var x = a.classNames.slicePie; + a.donut && (x = a.classNames.sliceDonut, a.donutSolid && (x = a.classNames.sliceDonutSolid)); + var y = k[g].elem("path", { + d: w.stringify() + }, x); + if (y.attr({ + "ct:value": j.normalized.series[g], + "ct:meta": c.serialize(e.meta) + }), a.donut && !a.donutSolid && (y._node.style.strokeWidth = m.value + "px"), this.eventEmitter.emit("draw", { + type: "slice", + value: j.normalized.series[g], + totalDataSum: i, + index: g, + meta: e.meta, + series: e, + group: k[g], + element: y, + path: w.clone(), + center: n, + radius: f, + startAngle: l, + endAngle: p + }), a.showLabel) { + var z; + z = 1 === j.raw.series.length ? { + x: n.x, + y: n.y + } : c.polarToCartesian(n.x, n.y, h, l + (p - l) / 2); + var A; + A = j.normalized.labels && !c.isFalseyButZero(j.normalized.labels[g]) ? j.normalized.labels[g] : j.normalized.series[g]; + var B = a.labelInterpolationFnc(A, g); + if (B || 0 === B) { + var C = b.elem("text", { + dx: z.x, + dy: z.y, + "text-anchor": d(n, z, a.labelDirection) + }, a.classNames.label).text("" + B); + this.eventEmitter.emit("draw", { + type: "label", + index: g, + group: b, + element: C, + text: "" + B, + x: z.x, + y: z.y + }) + } + } + l = p + } + }.bind(this)), this.eventEmitter.emit("created", { + chartRect: e, + svg: this.svg, + options: a + }) + } + + function f(a, b, d, e) { + c.Pie["super"].constructor.call(this, a, b, g, c.extend({}, g, d), e) + } + var g = { + width: void 0, + height: void 0, + chartPadding: 5, + classNames: { + chartPie: "ct-chart-pie", + chartDonut: "ct-chart-donut", + series: "ct-series", + slicePie: "ct-slice-pie", + sliceDonut: "ct-slice-donut", + sliceDonutSolid: "ct-slice-donut-solid", + label: "ct-label" + }, + startAngle: 0, + total: void 0, + donut: !1, + donutSolid: !1, + donutWidth: 60, + showLabel: !0, + labelOffset: 0, + labelPosition: "inside", + labelInterpolationFnc: c.noop, + labelDirection: "neutral", + reverseData: !1, + ignoreEmptyValues: !1 + }; + c.Pie = c.Base.extend({ + constructor: f, + createChart: e, + determineAnchorPosition: d + }) + }(window, document, a), a +}); +//# sourceMappingURL=chartist.min.js.map diff --git a/src/utils/domHelpers.js b/src/utils/domHelpers.js new file mode 100644 index 0000000..cb93139 --- /dev/null +++ b/src/utils/domHelpers.js @@ -0,0 +1,9 @@ +function removeClass(el, className) { + if (el.classList.contains(className)) { + el.classList.remove(className); + } +} + +module.exports = { + removeClass +}; diff --git a/src/utils/longPress.js b/src/utils/longPress.js new file mode 100644 index 0000000..467d537 --- /dev/null +++ b/src/utils/longPress.js @@ -0,0 +1,49 @@ +/*! + * long-press.js + * Pure JavaScript long-press event + * https://github.com/john-doherty/long-press + * @author John Doherty