From 65d53b3bc65c9a2bf2d9b1a2a2c9d9adfd02a435 Mon Sep 17 00:00:00 2001 From: Gil Barbara Date: Tue, 5 Dec 2017 11:31:31 -0200 Subject: [PATCH] refactor build --- .babelrc | 32 +- .gitignore | 3 +- .npmignore | 11 - bower.json | 7 +- gulpfile.js | 16 +- lib/index.js | 281 -------- lib/utils.js | 127 ---- package-lock.json | 1256 +++++++++++++++------------------ package.json | 43 +- standalone/react-inlinesvg.js | 407 +++++------ tasks/index.js | 85 +++ 11 files changed, 873 insertions(+), 1395 deletions(-) delete mode 100644 .npmignore delete mode 100644 lib/index.js delete mode 100644 lib/utils.js create mode 100755 tasks/index.js diff --git a/.babelrc b/.babelrc index f0cd9bc..ceb1190 100644 --- a/.babelrc +++ b/.babelrc @@ -1,14 +1,34 @@ { "presets": [ - ["env", { + [ + "env", { + "useBuiltIns": true, + "modules": false, "targets": { - "browsers": ["last 2 versions", "safari >= 7"] + "node": "8" } - }], + } + ], "react", "stage-1" ], - "plugins": [ - "add-module-exports" - ] + "env": { + "production": { + "plugins": [ + "array-includes", + "transform-flow-strip-types" + ] + }, + "commonjs": { + "plugins": [ + ["transform-es2015-modules-commonjs", { "loose": true }] + ] + }, + "test": { + "plugins": [ + "transform-es2015-modules-commonjs" + ], + "sourceMaps": "both" + } + } } diff --git a/.gitignore b/.gitignore index d102acb..505f933 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,9 @@ .idea/ .tmp/ coverage/ -dist/ +es/ documentation/ +lib/ node_modules/ reports/ selenium-debug.log diff --git a/.npmignore b/.npmignore deleted file mode 100644 index 478c094..0000000 --- a/.npmignore +++ /dev/null @@ -1,11 +0,0 @@ -.babelrc -.codeclimate.yml -.editorconfig -.eslintrc -.gitignore -.travis.yml -bower.json -gulpfile.js -node_modules -standalone -test diff --git a/bower.json b/bower.json index 414c51c..db38eb8 100644 --- a/bower.json +++ b/bower.json @@ -10,18 +10,19 @@ "keywords": [ "react-component", "react", - "svg", - "component" + "component", + "svg" ], "license": "MIT", "homepage": "https://github.com/matthewwithanm/react-inlinesvg", "ignore": [ "**/.*", "coverage", + "es", "gulpfile.js", + "lib", "jest.config.js", "node_modules", - "lib", "test" ] } diff --git a/gulpfile.js b/gulpfile.js index d2ba819..596ac18 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -23,20 +23,10 @@ gulp.task('bump:patch', function() { return bump('patch'); }); -gulp.task('watch', function() { - gulp.watch('./src/**/*', ['build']); -}); - -gulp.task('build:node', function() { +gulp.task('build', function() { process.env.NODE_ENV = 'production'; + process.env.BABEL_ENV = 'commonjs'; - return gulp.src('./src/**/*.js') - .pipe($.babel({})) - .pipe(gulp.dest('./lib')); -}); - -gulp.task('build:browser', function() { - process.env.NODE_ENV = 'production'; var bundler; var stream; @@ -75,5 +65,3 @@ gulp.task('server:xdomain', function() { } }); }); - -gulp.task('build', ['build:node', 'build:browser']); diff --git a/lib/index.js b/lib/index.js deleted file mode 100644 index 3dc7ca9..0000000 --- a/lib/index.js +++ /dev/null @@ -1,281 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _propTypes = require('prop-types'); - -var _propTypes2 = _interopRequireDefault(_propTypes); - -var _httpplease = require('httpplease'); - -var _httpplease2 = _interopRequireDefault(_httpplease); - -var _oldiexdomain = require('httpplease/plugins/oldiexdomain'); - -var _oldiexdomain2 = _interopRequireDefault(_oldiexdomain); - -var _utils = require('./utils'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var http = _httpplease2.default.use(_oldiexdomain2.default); - -var Status = { - PENDING: 'pending', - LOADING: 'loading', - LOADED: 'loaded', - FAILED: 'failed', - UNSUPPORTED: 'unsupported' -}; - -var getRequestsByUrl = {}; -var loadedIcons = {}; - -var InlineSVG = function (_React$PureComponent) { - _inherits(InlineSVG, _React$PureComponent); - - function InlineSVG(props) { - _classCallCheck(this, InlineSVG); - - var _this = _possibleConstructorReturn(this, (InlineSVG.__proto__ || Object.getPrototypeOf(InlineSVG)).call(this, props)); - - _this.handleLoad = function (err, res) { - var isCached = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (err) { - _this.fail(err); - return; - } - - if (_this.isActive) { - _this.setState({ - loadedText: res.text, - status: Status.LOADED - }, function () { - _this.props.onLoad(_this.props.src, isCached); - }); - } - }; - - _this.state = { - status: Status.PENDING - }; - - _this.isActive = false; - return _this; - } - - _createClass(InlineSVG, [{ - key: 'componentWillMount', - value: function componentWillMount() { - this.isActive = true; - } - }, { - key: 'componentDidMount', - value: function componentDidMount() { - /* istanbul ignore else */ - if (this.state.status === Status.PENDING) { - if (this.props.supportTest()) { - if (this.props.src) { - this.startLoad(); - } else { - this.fail((0, _utils.configurationError)('Missing source')); - } - } else { - this.fail((0, _utils.unsupportedBrowserError)()); - } - } - } - }, { - key: 'componentDidUpdate', - value: function componentDidUpdate(prevProps) { - if (prevProps.src !== this.props.src) { - if (this.props.src) { - this.startLoad(); - } else { - this.fail((0, _utils.configurationError)('Missing source')); - } - } - } - }, { - key: 'componentWillUnmount', - value: function componentWillUnmount() { - this.isActive = false; - } - }, { - key: 'getFile', - value: function getFile(callback) { - var _props = this.props, - cacheGetRequests = _props.cacheGetRequests, - src = _props.src; - - - if (cacheGetRequests) { - if (loadedIcons[src]) { - var _loadedIcons$src = _slicedToArray(loadedIcons[src], 2), - err = _loadedIcons$src[0], - res = _loadedIcons$src[1]; - - setTimeout(function () { - return callback(err, res, true); - }, 0); - } - - if (!getRequestsByUrl[src]) { - getRequestsByUrl[src] = []; - - http.get(src, function (err, res) { - getRequestsByUrl[src].forEach(function (cb) { - loadedIcons[src] = [err, res]; - cb(err, res); - }); - }); - } - - getRequestsByUrl[src].push(callback); - } else { - http.get(src, function (err, res) { - callback(err, res); - }); - } - } - }, { - key: 'fail', - value: function fail(error) { - var _this2 = this; - - var status = error.isUnsupportedBrowserError ? Status.UNSUPPORTED : Status.FAILED; - - /* istanbul ignore else */ - if (this.isActive) { - this.setState({ status: status }, function () { - if (typeof _this2.props.onError === 'function') { - _this2.props.onError(error); - } - }); - } - } - }, { - key: 'startLoad', - value: function startLoad() { - /* istanbul ignore else */ - if (this.isActive) { - this.setState({ - status: Status.LOADING - }, this.load); - } - } - }, { - key: 'load', - value: function load() { - var match = this.props.src.match(/data:image\/svg[^,]*?(;base64)?,(.*)/); - - if (match) { - return this.handleLoad(null, { - text: match[1] ? atob(match[2]) : decodeURIComponent(match[2]) - }); - } - - return this.getFile(this.handleLoad); - } - }, { - key: 'getClassName', - value: function getClassName() { - var className = 'isvg ' + this.state.status; - - if (this.props.className) { - className += ' ' + this.props.className; - } - - return className; - } - }, { - key: 'processSVG', - value: function processSVG(svgText) { - var _props2 = this.props, - uniquifyIDs = _props2.uniquifyIDs, - uniqueHash = _props2.uniqueHash; - - - if (uniquifyIDs) { - return (0, _utils.uniquifySVGIDs)(svgText, uniqueHash); - } - - return svgText; - } - }, { - key: 'renderContents', - value: function renderContents() { - switch (this.state.status) { - case Status.UNSUPPORTED: - case Status.FAILED: - return this.props.children; - default: - return this.props.preloader; - } - } - }, { - key: 'render', - value: function render() { - var content = void 0; - var html = void 0; - - if (this.state.loadedText) { - html = { - __html: this.processSVG(this.state.loadedText) - }; - } else { - content = this.renderContents(); - } - - return this.props.wrapper({ - style: this.props.style, - className: this.getClassName(), - dangerouslySetInnerHTML: html - }, content); - } - }]); - - return InlineSVG; -}(_react2.default.PureComponent); - -InlineSVG.propTypes = { - cacheGetRequests: _propTypes2.default.bool, - children: _propTypes2.default.node, - className: _propTypes2.default.string, - onError: _propTypes2.default.func, - onLoad: _propTypes2.default.func, - preloader: _propTypes2.default.node, - src: _propTypes2.default.string.isRequired, - style: _propTypes2.default.object, - supportTest: _propTypes2.default.func, - uniqueHash: _propTypes2.default.string, - uniquifyIDs: _propTypes2.default.bool, - wrapper: _propTypes2.default.func -}; -InlineSVG.defaultProps = { - cacheGetRequests: false, - onLoad: function onLoad() {}, - supportTest: _utils.isSupportedEnvironment, - uniquifyIDs: true, - uniqueHash: (0, _utils.randomString)(), - wrapper: _react2.default.createFactory('span') -}; -exports.default = InlineSVG; -module.exports = exports['default']; \ No newline at end of file diff --git a/lib/utils.js b/lib/utils.js deleted file mode 100644 index 0c193cf..0000000 --- a/lib/utils.js +++ /dev/null @@ -1,127 +0,0 @@ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.configurationError = exports.unsupportedBrowserError = exports.uniquifySVGIDs = exports.randomString = exports.isSupportedEnvironment = exports.supportsInlineSVG = undefined; - -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _once = require('once'); - -var _once2 = _interopRequireDefault(_once); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var supportsInlineSVG = exports.supportsInlineSVG = (0, _once2.default)(function () { - /* istanbul ignore next */ - if (!document) { - return false; - } - - var div = document.createElement('div'); - div.innerHTML = ''; - return div.firstChild && div.firstChild.namespaceURI === 'http://www.w3.org/2000/svg'; -}); - -var isSupportedEnvironment = exports.isSupportedEnvironment = (0, _once2.default)(function () { - return ((typeof window !== 'undefined' && window !== null ? window.XMLHttpRequest : false) || (typeof window !== 'undefined' && window !== null ? window.XDomainRequest : false)) && supportsInlineSVG(); -}); - -var randomString = exports.randomString = function randomString() { - var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 8; - - var letters = 'abcdefghijklmnopqrstuvwxyz'; - var numbers = '1234567890'; - var charset = letters + letters.toUpperCase() + numbers; - - var randomCharacter = function randomCharacter(array) { - return array[Math.floor(Math.random() * array.length)]; - }; - - var R = ''; - for (var i = 0; i < length; i++) { - R += randomCharacter(charset); - } - return R; -}; - -var uniquifySVGIDs = exports.uniquifySVGIDs = function () { - var mkAttributePattern = function mkAttributePattern(attr) { - return '(?:(?:\\s|\\:)' + attr + ')'; - }; - - var idPattern = new RegExp('(?:(' + mkAttributePattern('id') + ')="([^"]+)")|(?:(' + mkAttributePattern('href') + '|' + mkAttributePattern('role') + '|' + mkAttributePattern('arcrole') + ')="\\#([^"]+)")|(?:="url\\(\\#([^\\)]+)\\)")', 'g'); - - return function (svgText, svgID) { - var uniquifyID = function uniquifyID(id) { - return id + '___' + svgID; - }; - - return svgText.replace(idPattern, function (m, p1, p2, p3, p4, p5) { - //eslint-disable-line consistent-return - /* istanbul ignore else */ - if (p2) { - return p1 + '="' + uniquifyID(p2) + '"'; - } else if (p4) { - return p3 + '="#' + uniquifyID(p4) + '"'; - } else if (p5) { - return '="url(#' + uniquifyID(p5) + ')"'; - } - }); - }; -}(); - -var InlineSVGError = function (_Error) { - _inherits(InlineSVGError, _Error); - - function InlineSVGError(message) { - var _ret; - - _classCallCheck(this, InlineSVGError); - - var _this = _possibleConstructorReturn(this, (InlineSVGError.__proto__ || Object.getPrototypeOf(InlineSVGError)).call(this)); - - _this.name = 'InlineSVGError'; - _this.isSupportedBrowser = true; - _this.isConfigurationError = false; - _this.isUnsupportedBrowserError = false; - _this.message = message; - - return _ret = _this, _possibleConstructorReturn(_this, _ret); - } - - return InlineSVGError; -}(Error); - -var createError = function createError(message, attrs) { - var err = new InlineSVGError(message); - - return _extends({}, err, attrs); -}; - -var unsupportedBrowserError = exports.unsupportedBrowserError = function unsupportedBrowserError(message) { - var newMessage = message; - - /* istanbul ignore else */ - if (!newMessage) { - newMessage = 'Unsupported Browser'; - } - - return createError(newMessage, { - isSupportedBrowser: false, - isUnsupportedBrowserError: true - }); -}; - -var configurationError = exports.configurationError = function configurationError(message) { - return createError(message, { - isConfigurationError: true - }); -}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 64a8d0a..21254be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,43 +13,6 @@ "chalk": "2.3.0", "esutils": "2.0.2", "js-tokens": "3.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } } }, "@babel/helper-function-name": { @@ -104,7 +67,7 @@ "@babel/types": "7.0.0-beta.31", "babylon": "7.0.0-beta.31", "debug": "3.1.0", - "globals": "10.3.0", + "globals": "10.4.0", "invariant": "2.2.2", "lodash": "4.17.4" }, @@ -125,9 +88,9 @@ } }, "globals": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-10.3.0.tgz", - "integrity": "sha512-1g6qO5vMbiPHbRTDtR9JVjRkAhkgH4nSANYGyx1eOfqgxcMnYMMD+7MjmjfzXjwFpVUE/7/NzF+jQxYE7P4r7A==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-10.4.0.tgz", + "integrity": "sha512-uNUtxIZpGyuaq+5BqGGQHsL4wUlJAXRqOm6g3Y48/CWNGTLONgBibI0lh6lGxjR2HljFYUfszb+mk4WkgMntsA==", "dev": true } } @@ -151,12 +114,21 @@ } } }, - "@types/node": { - "version": "6.0.90", - "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.90.tgz", - "integrity": "sha512-tXoGRVdi7wZX7P1VWoV9Wfk0uYDOAHdEYXAttuWgSrN76Q32wQlSrMX0Rgyv3RTEaQY2ZLQrzYHVM2e8rfo8sA==", + "@types/events": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-1.1.0.tgz", + "integrity": "sha512-y3bR98mzYOo0pAZuiLari+cQyiKk3UXRuT45h1RjhfeCzqkjaVsfZJNaxdgtk7/3tzOm1ozLTqEqMP3VbI48jw==", "dev": true }, + "@types/node": { + "version": "8.0.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.54.tgz", + "integrity": "sha512-qetMdTv3Ytz9u9ESLdcYs45LPI0mczYZIbC184n7kY0jczOqPNQsabBfVCh+na3B2shAfvC459JqHV771A8Rxg==", + "dev": true, + "requires": { + "@types/events": "1.1.0" + } + }, "JSONStream": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.1.tgz", @@ -247,9 +219,9 @@ } }, "ajv-keywords": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.0.tgz", - "integrity": "sha1-opbhf3v658HOT34N5T0pyzIWLfA=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", "dev": true }, "align-text": { @@ -300,10 +272,13 @@ "dev": true }, "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } }, "ansi-wrap": { "version": "0.1.0", @@ -570,6 +545,33 @@ "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=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "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=", + "dev": true + } } }, "babel-core": { @@ -599,6 +601,12 @@ "source-map": "0.5.6" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -608,6 +616,21 @@ "chalk": "1.1.3", "esutils": "2.0.2", "js-tokens": "3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + } } }, "babel-generator": { @@ -689,13 +712,19 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, "babel-eslint": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.0.2.tgz", - "integrity": "sha512-yyl5U088oE+419+BNLJDKVWkUokuPLQeQt9ZTy9uM9kAzbtQgyYL3JkG425B8jxXA7MwTxnDAtRLMKJNH36qjA==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.0.3.tgz", + "integrity": "sha512-7D4iUpylEiKJPGbeSAlNddGcmA41PadgZ6UAb6JVyh003h3d0EbZusYFBR/+nBgqtaVJM2J2zUVa3N0hrpMH6g==", "dev": true, "requires": { "@babel/code-frame": "7.0.0-beta.31", @@ -978,10 +1007,10 @@ "babel-runtime": "6.23.0" } }, - "babel-plugin-add-module-exports": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.2.1.tgz", - "integrity": "sha1-mumh9KjcZ/DN7E9K7aHkOl/2XiU=", + "babel-plugin-array-includes": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-array-includes/-/babel-plugin-array-includes-2.0.3.tgz", + "integrity": "sha1-z1RS6Bx7gD+3lZ8QRayI4uwo/3Y=", "dev": true }, "babel-plugin-check-es2015-constants": { @@ -1182,6 +1211,12 @@ "lodash": "4.17.4" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -1191,6 +1226,21 @@ "chalk": "1.1.3", "esutils": "2.0.2", "js-tokens": "3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + } } }, "babel-runtime": { @@ -1256,6 +1306,12 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, @@ -1357,6 +1413,12 @@ "babel-types": "6.26.0" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -1366,6 +1428,21 @@ "chalk": "1.1.3", "esutils": "2.0.2", "js-tokens": "3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + } } }, "babel-runtime": { @@ -1431,6 +1508,12 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, @@ -2003,6 +2086,12 @@ "umd": "3.0.1" } }, + "browser-process-hrtime": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.2.tgz", + "integrity": "sha1-Ql1opY00R/AqBKqJQYf86K+Le44=", + "dev": true + }, "browser-resolve": { "version": "1.11.2", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", @@ -2306,18 +2395,22 @@ } }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { - "ansi-styles": "2.2.1", + "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "supports-color": "4.5.0" } }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, "cheerio": { "version": "1.0.0-rc.2", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", @@ -2329,7 +2422,7 @@ "entities": "1.1.1", "htmlparser2": "3.9.2", "lodash": "4.17.4", - "parse5": "3.0.2" + "parse5": "3.0.3" } }, "ci-info": { @@ -2791,6 +2884,24 @@ "sha.js": "2.4.9" } }, + "cross-env": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.1.1.tgz", + "integrity": "sha512-Wtvr+z0Z06KO1JxjfRRsPC+df7biIOiuV4iZ73cThjFGkH+ULBZq1MkBdywEcJC4cTDbO6c8IjgRjfswx3YTBA==", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "is-windows": "1.0.1" + }, + "dependencies": { + "is-windows": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.1.tgz", + "integrity": "sha1-MQ23D3QtJZoWo2kgK1GvhCMzENk=", + "dev": true + } + } + }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", @@ -3047,7 +3158,7 @@ "object-assign": "4.1.1", "pify": "2.3.0", "pinkie-promise": "2.0.1", - "rimraf": "2.6.1" + "rimraf": "2.6.2" } }, "delayed-stream": { @@ -3148,13 +3259,12 @@ "dev": true }, "doctrine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", - "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz", + "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", "dev": true, "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" + "esutils": "2.0.2" } }, "dom-serializer": { @@ -3282,7 +3392,7 @@ "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "dev": true, "requires": { - "iconv-lite": "0.4.18" + "iconv-lite": "0.4.19" } }, "end-of-stream": { @@ -3312,13 +3422,14 @@ "dev": true }, "enzyme": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.1.1.tgz", - "integrity": "sha512-+Lj90HE3c6Jgtpha3kYfB/mTdD1GNWqSh7q8AcA8d+/CRJojRT+3yABHqKpfRx71qeEACjuvXU3Eu5UP//p/mA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.2.0.tgz", + "integrity": "sha512-l0HcjycivXjB4IXkwuRc1K5z8hzWIVZB2b/Y/H2bao9eFTpBz4ACOwAQf44SgG5Nu3d1jF41LasxDgFWZeeysA==", "dev": true, "requires": { "cheerio": "1.0.0-rc.2", "function.prototype.name": "1.0.3", + "has": "1.0.1", "is-subset": "0.1.1", "lodash": "4.17.4", "object-is": "1.0.1", @@ -3330,28 +3441,28 @@ } }, "enzyme-adapter-react-16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.0.4.tgz", - "integrity": "sha512-MCjuwrCE5yhTJxaBhd6zTVdm8T01Ydjys5JaFm9ILkxP7oYb3N4i+nytKlzhI7rVouPdAuUVI8mO5UcEbEFAmw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.1.0.tgz", + "integrity": "sha512-OlZJn5PJUJ91EOQQRuISZpXgPlqT9fYR2yBZQPu9UYok+wS19Rn4teXywF34LMcyw2AzE1s0ZRDtcI952/vQHg==", "dev": true, "requires": { - "enzyme-adapter-utils": "1.1.1", + "enzyme-adapter-utils": "1.2.0", "lodash": "4.17.4", "object.assign": "4.0.4", "object.values": "1.0.4", - "prop-types": "15.5.10", - "react-test-renderer": "16.1.0" + "prop-types": "15.6.0", + "react-test-renderer": "16.2.0" } }, "enzyme-adapter-utils": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.1.1.tgz", - "integrity": "sha512-XU41nEiTl7O2JJvRA7JoCMhkDYRW9mQAgiy67Yz9BqTiRP/ldwuJYX8Gkom2LlihKIb9wy96IDuayR3RQspSNg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/enzyme-adapter-utils/-/enzyme-adapter-utils-1.2.0.tgz", + "integrity": "sha512-6CeIrmymLWoQgvH5m/ixJLaCsa6pSoWU2nlMeO0nHCZR8LQ+tKzP/jPh4qceTPlB4oFfyMRFeqr0+IryY4gAxg==", "dev": true, "requires": { "lodash": "4.17.4", "object.assign": "4.0.4", - "prop-types": "15.5.10" + "prop-types": "15.6.0" } }, "enzyme-matchers": { @@ -3490,9 +3601,9 @@ } }, "eslint": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.10.0.tgz", - "integrity": "sha512-MMVl8P/dYUFZEvolL8PYt7qc5LNdS2lwheq9BYa5Y07FblhcZqFyaUqlS8TW5QITGex21tV4Lk0a3fK8lsJIkA==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.12.1.tgz", + "integrity": "sha512-28hOYej+NZ/R5H1yMvyKa1+bPlu+fnsIAQffK6hxXgvmXnImos2bA5XfCn5dYv2k2mrKj+/U/Z4L5ICWxC7TQw==", "dev": true, "requires": { "ajv": "5.3.0", @@ -3501,22 +3612,22 @@ "concat-stream": "1.6.0", "cross-spawn": "5.1.0", "debug": "3.1.0", - "doctrine": "2.0.0", + "doctrine": "2.0.2", "eslint-scope": "3.7.1", - "espree": "3.5.1", + "espree": "3.5.2", "esquery": "1.0.0", "estraverse": "4.2.0", "esutils": "2.0.2", "file-entry-cache": "2.0.0", "functional-red-black-tree": "1.0.1", "glob": "7.1.2", - "globals": "9.18.0", + "globals": "11.0.1", "ignore": "3.3.7", "imurmurhash": "0.1.4", "inquirer": "3.3.0", "is-resolvable": "1.0.0", "js-yaml": "3.10.0", - "json-stable-stringify": "1.0.1", + "json-stable-stringify-without-jsonify": "1.0.1", "levn": "0.3.0", "lodash": "4.17.4", "minimatch": "3.0.4", @@ -3534,44 +3645,12 @@ "text-table": "0.2.0" }, "dependencies": { - "ajv": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", - "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, "concat-stream": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", @@ -3592,43 +3671,18 @@ "ms": "2.0.0" } }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, "estraverse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "globals": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.0.1.tgz", + "integrity": "sha1-Eqh7sBDlFUOWrMU14eQ/x1Ow5eg=", "dev": true }, - "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==", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "0.0.0" - } - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -3637,15 +3691,6 @@ "requires": { "ansi-regex": "3.0.0" } - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } } } }, @@ -3733,15 +3778,15 @@ } }, "eslint-plugin-react": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz", - "integrity": "sha512-tvjU9u3VqmW2vVuYnE8Qptq+6ji4JltjOjJ9u7VAOxVYkUkyBZWRvNYKbDv5fN+L6wiA+4we9+qQahZ0m63XEA==", + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.5.1.tgz", + "integrity": "sha512-YGSjB9Qu6QbVTroUZi66pYky3DfoIPLdHQ/wmrBGyBRnwxQsBXAov9j2rpXt/55i8nyMv6IRWJv2s4d4YnduzQ==", "dev": true, "requires": { - "doctrine": "2.0.0", + "doctrine": "2.0.2", "has": "1.0.1", "jsx-ast-utils": "2.0.1", - "prop-types": "15.5.10" + "prop-types": "15.6.0" }, "dependencies": { "jsx-ast-utils": { @@ -3780,19 +3825,19 @@ } }, "espree": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.1.tgz", - "integrity": "sha1-DJiLirRttTEAoZVK5LqZXd0n2H4=", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", "dev": true, "requires": { - "acorn": "5.1.2", + "acorn": "5.2.1", "acorn-jsx": "3.0.1" }, "dependencies": { "acorn": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", - "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", "dev": true } } @@ -4088,13 +4133,13 @@ } }, "external-editor": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.5.tgz", - "integrity": "sha512-Msjo64WT5W+NhOpQXh0nOHm+n0RfU1QUwDnKYvJ8dEJ8zlwLrqXNTv5mSUTJpepf41PDJGyhueTw2vNZW+Fr/w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", "dev": true, "requires": { - "iconv-lite": "0.4.18", - "jschardet": "1.6.0", + "chardet": "0.4.2", + "iconv-lite": "0.4.19", "tmp": "0.0.33" } }, @@ -4121,6 +4166,33 @@ "requires": { "chalk": "1.1.3", "time-stamp": "1.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "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=", + "dev": true + } } }, "fast-deep-equal": { @@ -4160,9 +4232,9 @@ } }, "fbjs": { - "version": "0.8.12", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.12.tgz", - "integrity": "sha1-ELXZL3bUVXX9Y6IX1OoCvqL47QQ=", + "version": "0.8.16", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", + "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", "dev": true, "requires": { "core-js": "1.2.7", @@ -4171,7 +4243,7 @@ "object-assign": "4.1.1", "promise": "7.3.1", "setimmediate": "1.0.5", - "ua-parser-js": "0.7.13" + "ua-parser-js": "0.7.17" }, "dependencies": { "core-js": { @@ -5650,6 +5722,25 @@ "vinyl-fs": "0.3.14" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", @@ -5661,6 +5752,12 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, @@ -5794,6 +5891,25 @@ "vinyl": "0.5.3" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", @@ -5805,8 +5921,14 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", "dev": true - } - } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } }, "gulplog": { "version": "1.0.0", @@ -6069,9 +6191,9 @@ } }, "iconv-lite": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", - "integrity": "sha512-sr1ZQph3UwHTR0XftSbK85OvBbxe/abLGzEnPENCQwmHf7sck8Oyu4ob3LgBxWWxRoM+QszeUyl7jbqapu2TqA==", + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", "dev": true }, "ieee754": { @@ -6148,7 +6270,7 @@ "chalk": "2.3.0", "cli-cursor": "2.1.0", "cli-width": "2.2.0", - "external-editor": "2.0.5", + "external-editor": "2.1.0", "figures": "2.0.0", "lodash": "4.17.4", "mute-stream": "0.0.7", @@ -6166,48 +6288,6 @@ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -6216,15 +6296,6 @@ "requires": { "ansi-regex": "3.0.0" } - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } } } }, @@ -6406,13 +6477,13 @@ "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", "dev": true, "requires": { - "is-path-inside": "1.0.0" + "is-path-inside": "1.0.1" } }, "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", "dev": true, "requires": { "path-is-inside": "1.0.2" @@ -6552,7 +6623,7 @@ "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", "dev": true, "requires": { - "node-fetch": "1.7.1", + "node-fetch": "1.7.3", "whatwg-fetch": "2.0.3" } }, @@ -6657,7 +6728,7 @@ "debug": "3.1.0", "istanbul-lib-coverage": "1.1.1", "mkdirp": "0.5.1", - "rimraf": "2.6.1", + "rimraf": "2.6.2", "source-map": "0.5.6" }, "dependencies": { @@ -6705,6 +6776,12 @@ "color-convert": "1.9.0" } }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, "chalk": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", @@ -6716,6 +6793,45 @@ "supports-color": "4.5.0" } }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "string-width": { + "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" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + } + } + }, "jest-cli": { "version": "21.2.1", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-21.2.1.tgz", @@ -6751,6 +6867,29 @@ "which": "1.2.14", "worker-farm": "1.5.1", "yargs": "9.0.1" + }, + "dependencies": { + "yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + } } }, "pify": { @@ -6776,6 +6915,15 @@ "requires": { "has-flag": "2.0.0" } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } } } }, @@ -7270,6 +7418,12 @@ "color-convert": "1.9.0" } }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, "chalk": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", @@ -7281,6 +7435,30 @@ "supports-color": "4.5.0" } }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "string-width": { + "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" + } + } + } + }, "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", @@ -7298,6 +7476,36 @@ "requires": { "has-flag": "2.0.0" } + }, + "yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + } } } }, @@ -7472,30 +7680,26 @@ "dev": true, "optional": true }, - "jschardet": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/jschardet/-/jschardet-1.6.0.tgz", - "integrity": "sha512-xYuhvQ7I9PDJIGBWev9xm0+SMSed3ZDBAmvVjbFR1ZRLAF+vlXcQu6cRI9uAlj81rzikElRVteehwV7DuX2ZmQ==", - "dev": true - }, "jsdom": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.3.0.tgz", - "integrity": "sha512-aPZTDl4MplzQhx5bLztk6nzjbEslmO3Q3+z0WpCMutL1XJDhZIRzir6R1Y8S84LgeT/7jhQvgtUMkY6oPwvlUw==", + "version": "11.5.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.5.1.tgz", + "integrity": "sha512-89ztIZ03aYK9f1uUrLXLsZndRge/JnZjzjpaN+lrse3coqz+8PR/dX4WLHpbF5fIKTXhDjFODOJw2328lPJ90g==", "dev": true, "requires": { "abab": "1.0.3", - "acorn": "5.1.2", + "acorn": "5.2.1", "acorn-globals": "4.1.0", "array-equal": "1.0.0", + "browser-process-hrtime": "0.1.2", "content-type-parser": "1.0.1", "cssom": "0.3.2", "cssstyle": "0.2.37", "domexception": "1.0.0", "escodegen": "1.9.0", "html-encoding-sniffer": "1.0.1", - "nwmatcher": "1.4.1", - "parse5": "3.0.2", + "left-pad": "1.2.0", + "nwmatcher": "1.4.3", + "parse5": "3.0.3", "pn": "1.0.0", "request": "2.83.0", "request-promise-native": "1.0.5", @@ -7509,9 +7713,9 @@ }, "dependencies": { "acorn": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.1.2.tgz", - "integrity": "sha512-o96FZLJBPY1lvTuJylGA9Bk3t/GKPPJG8H0ydQQl01crzwJgspa4AEIq/pVTXigmK0PHVQhiAtn8WMBLL9D2WA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", "dev": true }, "acorn-globals": { @@ -7520,60 +7724,7 @@ "integrity": "sha512-KjZwU26uG3u6eZcfGbTULzFcsoz6pegNKtHPksZPOUsiKo5bUmiBPa38FuHZ/Eun+XYh/JCCkS9AS3Lu4McQOQ==", "dev": true, "requires": { - "acorn": "5.1.2" - } - }, - "ajv": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", - "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "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=", - "dev": true - }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "dev": true, - "requires": { - "hoek": "4.2.0" - } - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "dev": true, - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "dev": true, - "requires": { - "hoek": "4.2.0" - } - } + "acorn": "5.2.1" } }, "escodegen": { @@ -7601,137 +7752,12 @@ "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, - "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "dev": true, - "requires": { - "ajv": "5.3.0", - "har-schema": "2.0.0" - } - }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "dev": true, - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.0", - "sntp": "2.1.0" - } - }, - "hoek": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", - "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", - "dev": true - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.0", - "sshpk": "1.13.1" - } - }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", - "dev": true - }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "dev": true, - "requires": { - "mime-db": "1.30.0" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", "dev": true }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", - "dev": true - }, - "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", - "dev": true, - "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.1.0" - } - }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "dev": true, - "requires": { - "hoek": "4.2.0" - } - }, - "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", - "dev": true, - "requires": { - "punycode": "1.4.1" - } - }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", @@ -7767,6 +7793,12 @@ "jsonify": "0.0.0" } }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -7861,6 +7893,12 @@ "invert-kv": "1.0.0" } }, + "left-pad": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.2.0.tgz", + "integrity": "sha1-0wpzxrggHY99jnlWupYWCHpo4O4=", + "dev": true + }, "leven": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", @@ -8631,9 +8669,9 @@ "dev": true }, "node-fetch": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.1.tgz", - "integrity": "sha512-j8XsFGCLw79vWXkZtMSmmLaOk9z5SQ9bV/tkbZVCqvgwzrjAGq66igobLofHtF63NvMTp2WjytpsNTGKa+XRIQ==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "dev": true, "requires": { "encoding": "0.1.12", @@ -9038,12 +9076,12 @@ "dev": true }, "parse5": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.2.tgz", - "integrity": "sha1-Be/1fw70V3+xRKefi5qWemzERRA=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", "dev": true, "requires": { - "@types/node": "6.0.90" + "@types/node": "8.0.54" } }, "parseurl": { @@ -9232,6 +9270,25 @@ "dateformat": "1.0.12" }, "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, "dateformat": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.12.tgz", @@ -9241,6 +9298,12 @@ "get-stdin": "4.0.1", "meow": "3.7.0" } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true } } }, @@ -9335,13 +9398,14 @@ } }, "prop-types": { - "version": "15.5.10", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.5.10.tgz", - "integrity": "sha1-J5ffwxJhguOpXj37suiT3ddFYVQ=", + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", + "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", "dev": true, "requires": { - "fbjs": "0.8.12", - "loose-envify": "1.3.1" + "fbjs": "0.8.16", + "loose-envify": "1.3.1", + "object-assign": "4.1.1" } }, "prr": { @@ -9400,14 +9464,6 @@ "dev": true, "requires": { "performance-now": "2.1.0" - }, - "dependencies": { - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - } } }, "railroad-diagrams": { @@ -9514,49 +9570,15 @@ } }, "react": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/react/-/react-16.1.0.tgz", - "integrity": "sha512-hvKYlKqde2JNnNiEzORvSA0J1L7uSZ43l+J89ZNoP4EXxQrVNH0CFj8vorfPou3w+1ou1BNMBir2VVsuXtETRA==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.2.0.tgz", + "integrity": "sha512-ZmIomM7EE1DvPEnSFAHZn9Vs9zJl5A9H7el0EGTE6ZbW9FKe/14IYAlPbC8iH25YarEQxZL+E8VW7Mi7kfQrDQ==", "dev": true, "requires": { "fbjs": "0.8.16", "loose-envify": "1.3.1", "object-assign": "4.1.1", "prop-types": "15.6.0" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", - "dev": true - }, - "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", - "dev": true, - "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.13" - } - }, - "prop-types": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", - "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", - "dev": true, - "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" - } - } } }, "react-addons-test-utils": { @@ -9566,94 +9588,26 @@ "dev": true }, "react-dom": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.1.0.tgz", - "integrity": "sha512-i9in5qW3H2PDinUPD9bnQK7tLAD8LhjYQ+fXi3nJOvVnxOO3ErHq6RNEnKY7pbjTPt155e74q7al8eBUuyLtew==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz", + "integrity": "sha512-zpGAdwHVn9K0091d+hr+R0qrjoJ84cIBFL2uU60KvWBPfZ7LPSrfqviTxGHWN0sjPZb2hxWzMexwrvJdKePvjg==", "dev": true, "requires": { "fbjs": "0.8.16", "loose-envify": "1.3.1", "object-assign": "4.1.1", "prop-types": "15.6.0" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", - "dev": true - }, - "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", - "dev": true, - "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.13" - } - }, - "prop-types": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", - "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", - "dev": true, - "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" - } - } } }, "react-test-renderer": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.1.0.tgz", - "integrity": "sha512-PQx92UCj6GMl/vQtitzV2iHg+Zgu5ft5FT/2HpYfwQBG9OjDtBQ6PEo988rVjEaTjmJ06mNpA1sG3on47l6MOg==", + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-16.2.0.tgz", + "integrity": "sha512-Kd4gJFtpNziR9ElOE/C23LeflKLZPRpNQYWP3nQBY43SJ5a+xyEGSeMrm2zxNKXcnCbBS/q1UpD9gqd5Dv+rew==", "dev": true, "requires": { "fbjs": "0.8.16", "object-assign": "4.1.1", "prop-types": "15.6.0" - }, - "dependencies": { - "core-js": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", - "dev": true - }, - "fbjs": { - "version": "0.8.16", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.16.tgz", - "integrity": "sha1-XmdDL1UNxBtXK/VYR7ispk5TN9s=", - "dev": true, - "requires": { - "core-js": "1.2.7", - "isomorphic-fetch": "2.2.1", - "loose-envify": "1.3.1", - "object-assign": "4.1.1", - "promise": "7.3.1", - "setimmediate": "1.0.5", - "ua-parser-js": "0.7.13" - } - }, - "prop-types": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.0.tgz", - "integrity": "sha1-zq8IMCL8RrSjX2nhPvda7Q1jmFY=", - "dev": true, - "requires": { - "fbjs": "0.8.16", - "loose-envify": "1.3.1", - "object-assign": "4.1.1" - } - } } }, "read-only-stream": { @@ -9943,17 +9897,6 @@ "request-promise-core": "1.1.1", "stealthy-require": "1.1.1", "tough-cookie": "2.3.3" - }, - "dependencies": { - "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", - "dev": true, - "requires": { - "punycode": "1.4.1" - } - } } }, "require-directory": { @@ -10048,9 +9991,9 @@ } }, "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "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" @@ -10698,10 +10641,13 @@ } }, "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } }, "symbol-tree": { "version": "3.2.2", @@ -10725,91 +10671,11 @@ "dev": true, "requires": { "ajv": "5.3.0", - "ajv-keywords": "2.1.0", + "ajv-keywords": "2.1.1", "chalk": "2.3.0", "lodash": "4.17.4", "slice-ansi": "1.0.0", "string-width": "2.1.1" - }, - "dependencies": { - "ajv": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.3.0.tgz", - "integrity": "sha1-RBT/dKUIecII7l/cgm4ywwNUnto=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, - "requires": { - "color-convert": "1.9.0" - } - }, - "chalk": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", - "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, - "requires": { - "ansi-styles": "3.2.0", - "escape-string-regexp": "1.0.5", - "supports-color": "4.5.0" - } - }, - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "3.0.0" - } - }, - "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, - "requires": { - "has-flag": "2.0.0" - } - } } }, "ternary": { @@ -11177,9 +11043,9 @@ "dev": true }, "ua-parser-js": { - "version": "0.7.13", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.13.tgz", - "integrity": "sha1-zZ3S+GSTs/RNvu7zeA/adMXuFL4=", + "version": "0.7.17", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", + "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", "dev": true }, "uglify-js": { @@ -11790,32 +11656,25 @@ "dev": true }, "yargs": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", - "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-10.0.3.tgz", + "integrity": "sha512-DqBpQ8NAUX4GyPP/ijDGHsJya4tYqLQrjPr95HNsr1YwL3+daCfvBwg7+gIC6IdJhR2kATh3hb61vjzMWEtjdw==", "dev": true, "requires": { - "camelcase": "4.1.0", "cliui": "3.2.0", "decamelize": "1.2.0", + "find-up": "2.1.0", "get-caller-file": "1.0.2", "os-locale": "2.1.0", - "read-pkg-up": "2.0.0", "require-directory": "2.1.1", "require-main-filename": "1.0.1", "set-blocking": "2.0.0", "string-width": "2.1.1", "which-module": "2.0.0", "y18n": "3.2.1", - "yargs-parser": "7.0.0" + "yargs-parser": "8.0.0" }, "dependencies": { - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", @@ -11839,13 +11698,22 @@ } } } + }, + "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" + } } } }, "yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-8.0.0.tgz", + "integrity": "sha1-IdR2Mw5agieaS4gTRb8GYQLiGcY=", "dev": true, "requires": { "camelcase": "4.1.0" diff --git a/package.json b/package.json index ca6ecfe..1ed0e9a 100644 --- a/package.json +++ b/package.json @@ -35,9 +35,10 @@ }, "devDependencies": { "babel-core": "^6.26.0", - "babel-eslint": "^8.0.2", + "babel-eslint": "^8.0.3", "babel-jest": "^21.2.0", - "babel-plugin-add-module-exports": "^0.2.1", + "babel-plugin-array-includes": "^2.0.3", + "babel-plugin-transform-flow-strip-types": "^6.22.0", "babel-preset-env": "^1.6.1", "babel-preset-react": "^6.24.1", "babel-preset-stage-1": "^6.24.1", @@ -45,14 +46,16 @@ "babelify": "^8.0.0", "browserify": "^14.5.0", "browserify-shim": "^3.8.14", + "chalk": "^2.3.0", "cors": "^2.8.4", - "enzyme": "^3.1.1", - "enzyme-adapter-react-16": "^1.0.4", - "eslint": "^4.10.0", + "cross-env": "^5.1.1", + "enzyme": "^3.2.0", + "enzyme-adapter-react-16": "^1.1.0", + "eslint": "^4.12.1", "eslint-config-airbnb": "^16.1.0", "eslint-plugin-import": "^2.8.0", "eslint-plugin-jsx-a11y": "^6.0.2", - "eslint-plugin-react": "^7.4.0", + "eslint-plugin-react": "^7.5.1", "gulp": "^3.9.1", "gulp-babel": "^7.0.0", "gulp-bump": "^2.8.0", @@ -64,21 +67,29 @@ "husky": "^0.14.3", "jest": "^21.2.1", "jest-enzyme": "^4.0.1", - "jsdom": "^11.3.0", - "react": "^16.1.0", + "jsdom": "^11.5.1", + "react": "^16.2.0", "react-addons-test-utils": "^15.6.2", - "react-dom": "^16.1.0", - "react-test-renderer": "^16.1.0", - "vinyl-source-stream": "^1.1.0" + "react-dom": "^16.2.0", + "react-test-renderer": "^16.2.0", + "rimraf": "^2.6.2", + "vinyl-source-stream": "^1.1.0", + "yargs": "^10.0.3" }, "scripts": { - "build": "gulp build", - "server": "gulp server", - "test": "npm run server & SERVE_PID=$! && jest --bail --coverage && kill $SERVE_PID", + "build": "npm run clean && npm run build:commonjs && npm run build:es && npm run build:standalone", + "build:commonjs": "cross-env BABEL_ENV=commonjs babel src -d lib", + "build:es": "cross-env NODE_ENV=production babel src -d es", + "build:standalone": "gulp build", + "watch": "npm run build:commonjs -- -w", + "clean": "rimraf es && rimraf lib && rimraf standalone", + "start": "gulp server", + "test": "npm run start & SERVE_PID=$! && jest --bail --coverage && kill $SERVE_PID", "test:watch": "jest --watch", "lint": "eslint -c ./.eslintrc $(find src -name '*.js')", - "precommit": "npm run lint && npm test", - "prepare": "npm run build" + "precommit": "node tasks has-commits && npm run lint && npm test", + "postmerge": "node tasks update", + "prepublishOnly": "npm run build" }, "browserify": { "transform": [ diff --git a/standalone/react-inlinesvg.js b/standalone/react-inlinesvg.js index 466700a..6ca1976 100644 --- a/standalone/react-inlinesvg.js +++ b/standalone/react-inlinesvg.js @@ -3205,13 +3205,7 @@ function extend() { },{}],33:[function(require,module,exports){ 'use strict'; -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); +exports.__esModule = true; var _react = require('react'); @@ -3233,15 +3227,9 @@ var _utils = require('./utils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var http = _httpplease2.default.use(_oldiexdomain2.default); +const http = _httpplease2.default.use(_oldiexdomain2.default); -var Status = { +const Status = { PENDING: 'pending', LOADING: 'loading', LOADED: 'loaded', @@ -3249,217 +3237,182 @@ var Status = { UNSUPPORTED: 'unsupported' }; -var getRequestsByUrl = {}; -var loadedIcons = {}; +const getRequestsByUrl = {}; +const loadedIcons = {}; -var InlineSVG = function (_React$PureComponent) { - _inherits(InlineSVG, _React$PureComponent); - - function InlineSVG(props) { - _classCallCheck(this, InlineSVG); - - var _this = _possibleConstructorReturn(this, (InlineSVG.__proto__ || Object.getPrototypeOf(InlineSVG)).call(this, props)); - - _this.handleLoad = function (err, res) { - var isCached = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; +class InlineSVG extends _react2.default.PureComponent { + constructor(props) { + super(props); + this.handleLoad = (err, res, isCached = false) => { if (err) { - _this.fail(err); + this.fail(err); return; } - if (_this.isActive) { - _this.setState({ + if (this.isActive) { + this.setState({ loadedText: res.text, status: Status.LOADED - }, function () { - _this.props.onLoad(_this.props.src, isCached); + }, () => { + this.props.onLoad(this.props.src, isCached); }); } }; - _this.state = { + this.state = { status: Status.PENDING }; - _this.isActive = false; - return _this; + this.isActive = false; } - _createClass(InlineSVG, [{ - key: 'componentWillMount', - value: function componentWillMount() { - this.isActive = true; - } - }, { - key: 'componentDidMount', - value: function componentDidMount() { - /* istanbul ignore else */ - if (this.state.status === Status.PENDING) { - if (this.props.supportTest()) { - if (this.props.src) { - this.startLoad(); - } else { - this.fail((0, _utils.configurationError)('Missing source')); - } - } else { - this.fail((0, _utils.unsupportedBrowserError)()); - } - } - } - }, { - key: 'componentDidUpdate', - value: function componentDidUpdate(prevProps) { - if (prevProps.src !== this.props.src) { + componentWillMount() { + this.isActive = true; + } + + componentDidMount() { + /* istanbul ignore else */ + if (this.state.status === Status.PENDING) { + if (this.props.supportTest()) { if (this.props.src) { this.startLoad(); } else { this.fail((0, _utils.configurationError)('Missing source')); } + } else { + this.fail((0, _utils.unsupportedBrowserError)()); } } - }, { - key: 'componentWillUnmount', - value: function componentWillUnmount() { - this.isActive = false; + } + + componentDidUpdate(prevProps) { + if (prevProps.src !== this.props.src) { + if (this.props.src) { + this.startLoad(); + } else { + this.fail((0, _utils.configurationError)('Missing source')); + } } - }, { - key: 'getFile', - value: function getFile(callback) { - var _props = this.props, - cacheGetRequests = _props.cacheGetRequests, - src = _props.src; + } + componentWillUnmount() { + this.isActive = false; + } - if (cacheGetRequests) { - if (loadedIcons[src]) { - var _loadedIcons$src = _slicedToArray(loadedIcons[src], 2), - err = _loadedIcons$src[0], - res = _loadedIcons$src[1]; + getFile(callback) { + const { cacheGetRequests, src } = this.props; - setTimeout(function () { - return callback(err, res, true); - }, 0); - } + if (cacheGetRequests) { + if (loadedIcons[src]) { + const [err, res] = loadedIcons[src]; - if (!getRequestsByUrl[src]) { - getRequestsByUrl[src] = []; + setTimeout(() => callback(err, res, true), 0); + } - http.get(src, function (err, res) { - getRequestsByUrl[src].forEach(function (cb) { - loadedIcons[src] = [err, res]; - cb(err, res); - }); - }); - } + if (!getRequestsByUrl[src]) { + getRequestsByUrl[src] = []; - getRequestsByUrl[src].push(callback); - } else { - http.get(src, function (err, res) { - callback(err, res); + http.get(src, (err, res) => { + getRequestsByUrl[src].forEach(cb => { + loadedIcons[src] = [err, res]; + cb(err, res); + }); }); } + + getRequestsByUrl[src].push(callback); + } else { + http.get(src, (err, res) => { + callback(err, res); + }); } - }, { - key: 'fail', - value: function fail(error) { - var _this2 = this; + } - var status = error.isUnsupportedBrowserError ? Status.UNSUPPORTED : Status.FAILED; + fail(error) { + const status = error.isUnsupportedBrowserError ? Status.UNSUPPORTED : Status.FAILED; - /* istanbul ignore else */ - if (this.isActive) { - this.setState({ status: status }, function () { - if (typeof _this2.props.onError === 'function') { - _this2.props.onError(error); - } - }); - } + /* istanbul ignore else */ + if (this.isActive) { + this.setState({ status }, () => { + if (typeof this.props.onError === 'function') { + this.props.onError(error); + } + }); } - }, { - key: 'startLoad', - value: function startLoad() { - /* istanbul ignore else */ - if (this.isActive) { - this.setState({ - status: Status.LOADING - }, this.load); - } + } + + startLoad() { + /* istanbul ignore else */ + if (this.isActive) { + this.setState({ + status: Status.LOADING + }, this.load); } - }, { - key: 'load', - value: function load() { - var match = this.props.src.match(/data:image\/svg[^,]*?(;base64)?,(.*)/); + } - if (match) { - return this.handleLoad(null, { - text: match[1] ? atob(match[2]) : decodeURIComponent(match[2]) - }); - } + load() { + const match = this.props.src.match(/data:image\/svg[^,]*?(;base64)?,(.*)/); - return this.getFile(this.handleLoad); + if (match) { + return this.handleLoad(null, { + text: match[1] ? atob(match[2]) : decodeURIComponent(match[2]) + }); } - }, { - key: 'getClassName', - value: function getClassName() { - var className = 'isvg ' + this.state.status; - if (this.props.className) { - className += ' ' + this.props.className; - } + return this.getFile(this.handleLoad); + } + + getClassName() { + let className = `isvg ${this.state.status}`; - return className; + if (this.props.className) { + className += ` ${this.props.className}`; } - }, { - key: 'processSVG', - value: function processSVG(svgText) { - var _props2 = this.props, - uniquifyIDs = _props2.uniquifyIDs, - uniqueHash = _props2.uniqueHash; + return className; + } - if (uniquifyIDs) { - return (0, _utils.uniquifySVGIDs)(svgText, uniqueHash); - } + processSVG(svgText) { + const { uniquifyIDs, uniqueHash } = this.props; - return svgText; - } - }, { - key: 'renderContents', - value: function renderContents() { - switch (this.state.status) { - case Status.UNSUPPORTED: - case Status.FAILED: - return this.props.children; - default: - return this.props.preloader; - } + if (uniquifyIDs) { + return (0, _utils.uniquifySVGIDs)(svgText, uniqueHash); } - }, { - key: 'render', - value: function render() { - var content = void 0; - var html = void 0; - if (this.state.loadedText) { - html = { - __html: this.processSVG(this.state.loadedText) - }; - } else { - content = this.renderContents(); - } + return svgText; + } - return this.props.wrapper({ - style: this.props.style, - className: this.getClassName(), - dangerouslySetInnerHTML: html - }, content); + renderContents() { + switch (this.state.status) { + case Status.UNSUPPORTED: + case Status.FAILED: + return this.props.children; + default: + return this.props.preloader; } - }]); + } + + render() { + let content; + let html; - return InlineSVG; -}(_react2.default.PureComponent); + if (this.state.loadedText) { + html = { + __html: this.processSVG(this.state.loadedText) + }; + } else { + content = this.renderContents(); + } + return this.props.wrapper({ + style: this.props.style, + className: this.getClassName(), + dangerouslySetInnerHTML: html + }, content); + } +} +exports.default = InlineSVG; InlineSVG.propTypes = { cacheGetRequests: _propTypes2.default.bool, children: _propTypes2.default.node, @@ -3476,21 +3429,17 @@ InlineSVG.propTypes = { }; InlineSVG.defaultProps = { cacheGetRequests: false, - onLoad: function onLoad() {}, + onLoad: () => {}, supportTest: _utils.isSupportedEnvironment, uniquifyIDs: true, uniqueHash: (0, _utils.randomString)(), wrapper: _react2.default.createFactory('span') }; -exports.default = InlineSVG; -module.exports = exports['default']; },{"./utils":34,"httpplease":5,"httpplease/plugins/oldiexdomain":13,"prop-types":19,"react":23}],34:[function(require,module,exports){ 'use strict'; -Object.defineProperty(exports, "__esModule", { - value: true -}); +exports.__esModule = true; exports.configurationError = exports.unsupportedBrowserError = exports.uniquifySVGIDs = exports.randomString = exports.isSupportedEnvironment = exports.supportsInlineSVG = undefined; var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; @@ -3501,101 +3450,77 @@ var _once2 = _interopRequireDefault(_once); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var supportsInlineSVG = exports.supportsInlineSVG = (0, _once2.default)(function () { +const supportsInlineSVG = exports.supportsInlineSVG = (0, _once2.default)(() => { /* istanbul ignore next */ if (!document) { return false; } - var div = document.createElement('div'); + const div = document.createElement('div'); div.innerHTML = ''; return div.firstChild && div.firstChild.namespaceURI === 'http://www.w3.org/2000/svg'; }); -var isSupportedEnvironment = exports.isSupportedEnvironment = (0, _once2.default)(function () { - return ((typeof window !== 'undefined' && window !== null ? window.XMLHttpRequest : false) || (typeof window !== 'undefined' && window !== null ? window.XDomainRequest : false)) && supportsInlineSVG(); -}); - -var randomString = exports.randomString = function randomString() { - var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 8; +const isSupportedEnvironment = exports.isSupportedEnvironment = (0, _once2.default)(() => ((typeof window !== 'undefined' && window !== null ? window.XMLHttpRequest : false) || (typeof window !== 'undefined' && window !== null ? window.XDomainRequest : false)) && supportsInlineSVG()); - var letters = 'abcdefghijklmnopqrstuvwxyz'; - var numbers = '1234567890'; - var charset = letters + letters.toUpperCase() + numbers; +const randomString = exports.randomString = (length = 8) => { + const letters = 'abcdefghijklmnopqrstuvwxyz'; + const numbers = '1234567890'; + const charset = letters + letters.toUpperCase() + numbers; - var randomCharacter = function randomCharacter(array) { - return array[Math.floor(Math.random() * array.length)]; - }; + const randomCharacter = array => array[Math.floor(Math.random() * array.length)]; - var R = ''; - for (var i = 0; i < length; i++) { + let R = ''; + for (let i = 0; i < length; i++) { R += randomCharacter(charset); } return R; }; -var uniquifySVGIDs = exports.uniquifySVGIDs = function () { - var mkAttributePattern = function mkAttributePattern(attr) { - return '(?:(?:\\s|\\:)' + attr + ')'; - }; +const uniquifySVGIDs = exports.uniquifySVGIDs = (() => { + const mkAttributePattern = attr => `(?:(?:\\s|\\:)${attr})`; - var idPattern = new RegExp('(?:(' + mkAttributePattern('id') + ')="([^"]+)")|(?:(' + mkAttributePattern('href') + '|' + mkAttributePattern('role') + '|' + mkAttributePattern('arcrole') + ')="\\#([^"]+)")|(?:="url\\(\\#([^\\)]+)\\)")', 'g'); + const idPattern = new RegExp(`(?:(${mkAttributePattern('id')})="([^"]+)")|(?:(${mkAttributePattern('href')}|${mkAttributePattern('role')}|${mkAttributePattern('arcrole')})="\\#([^"]+)")|(?:="url\\(\\#([^\\)]+)\\)")`, 'g'); - return function (svgText, svgID) { - var uniquifyID = function uniquifyID(id) { - return id + '___' + svgID; - }; + return (svgText, svgID) => { + const uniquifyID = id => `${id}___${svgID}`; - return svgText.replace(idPattern, function (m, p1, p2, p3, p4, p5) { + return svgText.replace(idPattern, (m, p1, p2, p3, p4, p5) => { //eslint-disable-line consistent-return /* istanbul ignore else */ if (p2) { - return p1 + '="' + uniquifyID(p2) + '"'; + return `${p1}="${uniquifyID(p2)}"`; } else if (p4) { - return p3 + '="#' + uniquifyID(p4) + '"'; + return `${p3}="#${uniquifyID(p4)}"`; } else if (p5) { - return '="url(#' + uniquifyID(p5) + ')"'; + return `="url(#${uniquifyID(p5)})"`; } }); }; -}(); - -var InlineSVGError = function (_Error) { - _inherits(InlineSVGError, _Error); +})(); - function InlineSVGError(message) { - var _ret; +class InlineSVGError extends Error { + constructor(message) { + super(); - _classCallCheck(this, InlineSVGError); - - var _this = _possibleConstructorReturn(this, (InlineSVGError.__proto__ || Object.getPrototypeOf(InlineSVGError)).call(this)); - - _this.name = 'InlineSVGError'; - _this.isSupportedBrowser = true; - _this.isConfigurationError = false; - _this.isUnsupportedBrowserError = false; - _this.message = message; + this.name = 'InlineSVGError'; + this.isSupportedBrowser = true; + this.isConfigurationError = false; + this.isUnsupportedBrowserError = false; + this.message = message; - return _ret = _this, _possibleConstructorReturn(_this, _ret); + return this; } +} - return InlineSVGError; -}(Error); - -var createError = function createError(message, attrs) { - var err = new InlineSVGError(message); +const createError = (message, attrs) => { + const err = new InlineSVGError(message); return _extends({}, err, attrs); }; -var unsupportedBrowserError = exports.unsupportedBrowserError = function unsupportedBrowserError(message) { - var newMessage = message; +const unsupportedBrowserError = exports.unsupportedBrowserError = message => { + let newMessage = message; /* istanbul ignore else */ if (!newMessage) { @@ -3608,11 +3533,9 @@ var unsupportedBrowserError = exports.unsupportedBrowserError = function unsuppo }); }; -var configurationError = exports.configurationError = function configurationError(message) { - return createError(message, { - isConfigurationError: true - }); -}; +const configurationError = exports.configurationError = message => createError(message, { + isConfigurationError: true +}); },{"once":15}]},{},[33])(33) }); \ No newline at end of file diff --git a/tasks/index.js b/tasks/index.js new file mode 100755 index 0000000..1f33a8b --- /dev/null +++ b/tasks/index.js @@ -0,0 +1,85 @@ +/*eslint-disable no-var, vars-on-top, no-console */ +const { promisify } = require('util'); +const { exec } = require('child_process'); +const chalk = require('chalk'); +const yargs = require('yargs'); + +const run = promisify(exec); + +module.exports = yargs + .command({ + command: 'has-commits', + desc: 'has new remote commits', + handler: () => { + run('git rev-parse --is-inside-work-tree') + .then(() => + run('git remote -v update') + .then(() => + Promise.all([ + run('git rev-parse @'), + run('git rev-parse @{u}'), + run('git merge-base @ @{u}'), + ]) + .then(values => { + const [{ stdout: $local }, { stdout: $remote }, { stdout: $base }] = values; + + if ($local === $remote) { + console.log(chalk.green('✔ Repo is up-to-date!')); + } + else if ($local === $base) { + console.log(chalk.red('⊘ Error'), 'You need to pull, there are new commits.'); + process.exit(1); + } + }) + .catch(err => { + if (err.message.includes('no upstream configured ')) { + console.log(chalk.yellow('⚠ Warning'), 'No upstream. Is this a new branch?'); + return; + } + + console.log(chalk.yellow('⚠ Warning'), err.message); + })) + .catch(err => { + throw new Error(err); + })) + .catch(() => { + console.log('not under git'); + }); + }, + }) + .command({ + command: 'update', + desc: 'run `npm update` if package.json has changed', + handler: () => + run('git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD') + .then(({ stdout }) => { + if (stdout.match('package.json')) { + console.log(chalk.yellow('▼ Updating...')); + exec('npm update') + .stdout + .pipe(process.stdout); + } + else { + console.log(chalk.green('✔ Nothing to update')); + } + }) + .catch(err => { + throw new Error(err); + }), + }) + .demandCommand() + .help() + .wrap(72) + .version(false) + .strict() + .fail((msg, err, instance) => { + if (err) { + throw new Error(err); + } + + console.error(`${chalk.red(msg)} + `); + console.log(instance.help()); + process.exit(1); + }) + .argv;