diff --git a/.babelrc b/.babelrc index 9abdcc55..963f009a 100644 --- a/.babelrc +++ b/.babelrc @@ -1,5 +1,5 @@ { - "presets": ["airbnb", "stage-0"], + "presets": ["env", "babel-preset-react", "babel-preset-stage-0"], "plugins": [ "add-module-exports", "transform-class-properties", diff --git a/.eslintrc b/.eslintrc index ea5ab18c..d06f13f5 100644 --- a/.eslintrc +++ b/.eslintrc @@ -5,12 +5,23 @@ "browser": true, "es6": true }, - "parser": "babel-eslint", - "ecmaFeatures": { - "modules": true, - "jsx": true - }, "rules": { + "comma-dangle": [2, "never"], "semi": [2, "never"], - } + "arrow-body-style": [2, "always"], + "class-methods-use-this": 0, + "no-console": 0, + "no-param-reassign": 0, + "func-names": 0, + "no-restricted-syntax": 0, + "no-plusplus": 0, + "no-continue": 0, + "no-prototype-builtins": 0, + "prefer-rest-params": 0, + "no-unused-vars": [2, { "args": "none" }], + "no-underscore-dangle": 0, + "react/jsx-filename-extension": 0, + "react/forbid-prop-types": 0, + }, + "parser": "babel-eslint" } diff --git a/CHANGELOG.md b/CHANGELOG.md index a45f76f0..33e4d076 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.0.0 + +* Upgrade babel, webpack, react versions to latest + ## 0.18.6 * Fixes inheritance for actions #678 diff --git a/README.md b/README.md index 807c9a09..7376c78e 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ class TodoStore { export default alt.createStore(TodoStore, 'TodoStore'); ``` -View +View Using the [connectToStores](https://github.com/altjs/utils/blob/master/src/connectToStores.js) util from [alt-utils](https://github.com/altjs/utils) package (`npm install alt-utils`) diff --git a/bower.json b/bower.json index e5955df5..4f405eba 100644 --- a/bower.json +++ b/bower.json @@ -8,7 +8,7 @@ "description": "Alt is a flux implementation that is small (~4.3kb & 400 LOC), well tested, terse, insanely flexible, and forward thinking.", "main": "dist/alt.js", "devDependencies": { - "babel": "^4.0.1", + "babel": "^6.25.0", "coveralls": "^2.11.2", "istanbul": "^0.3.5", "mocha": "^2.1.0" diff --git a/dist.config.js b/dist.config.js index 666382a1..a46abc7d 100644 --- a/dist.config.js +++ b/dist.config.js @@ -1,10 +1,10 @@ module.exports = { - context: __dirname + '/src', + context: `${__dirname}/src`, entry: { - 'alt': ['./index.js'], + alt: ['./index.js'] }, output: { - path: __dirname + '/dist', + path: `${__dirname}/dist`, filename: '[name].js', library: 'Alt', libraryTarget: 'umd' @@ -12,8 +12,8 @@ module.exports = { module: { loaders: [{ test: /\.js$/, - loader: 'babel', + loader: 'babel-loader', exclude: /node_modules/ }] - }, -}; + } +} diff --git a/dist.min.config.js b/dist.min.config.js index 646fd44e..ec01d424 100644 --- a/dist.min.config.js +++ b/dist.min.config.js @@ -1,10 +1,10 @@ module.exports = { - context: __dirname + '/src', + context: `${__dirname}/src`, entry: { - 'alt': ['./index.js'], + alt: ['./index.js'] }, output: { - path: __dirname + '/dist', + path: `${__dirname}/dist`, filename: '[name].min.js', library: 'Alt', libraryTarget: 'umd' @@ -12,8 +12,8 @@ module.exports = { module: { loaders: [{ test: /\.js$/, - loader: 'babel', + loader: 'babel-loader', exclude: /node_modules/ }] - }, -}; + } +} diff --git a/dist/alt.js b/dist/alt.js index cbe0f296..cb535ab9 100644 --- a/dist/alt.js +++ b/dist/alt.js @@ -11,1950 +11,1823 @@ return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; - +/******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { - +/******/ /******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) +/******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; - +/******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { -/******/ exports: {}, -/******/ id: moduleId, -/******/ loaded: false +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} /******/ }; - +/******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); - +/******/ /******/ // Flag the module as loaded -/******/ module.loaded = true; - +/******/ module.l = true; +/******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } - - +/******/ +/******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; - +/******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; - +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; - +/******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(0); +/******/ return __webpack_require__(__webpack_require__.s = 4); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { - module.exports = __webpack_require__(1); +"use strict"; -/***/ }, +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isMutableObject = isMutableObject; +exports.eachObject = eachObject; +exports.assign = assign; +var isFunction = exports.isFunction = function isFunction(x) { + return typeof x === 'function'; +}; + +function isMutableObject(target) { + var Ctor = target.constructor; + + return !!target && Object.prototype.toString.call(target) === '[object Object]' && isFunction(Ctor) && !Object.isFrozen(target) && (Ctor instanceof Ctor || target.type === 'AltStore'); +} + +function eachObject(f, o) { + o.forEach(function (from) { + Object.keys(Object(from)).forEach(function (key) { + f(key, from[key]); + }); + }); +} + +function assign(target) { + for (var _len = arguments.length, source = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + source[_key - 1] = arguments[_key]; + } + + eachObject(function (key, value) { + target[key] = value; //eslint-disable-line + }, source); + return target; +} + +/***/ }), /* 1 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; +/***/ (function(module, exports, __webpack_require__) { - Object.defineProperty(exports, "__esModule", { - value: true - }); +"use strict"; - var _flux = __webpack_require__(2); - var _StateFunctions = __webpack_require__(6); - - var StateFunctions = _interopRequireWildcard(_StateFunctions); - - var _functions = __webpack_require__(7); - - var fn = _interopRequireWildcard(_functions); - - var _store = __webpack_require__(8); +Object.defineProperty(exports, "__esModule", { + value: true +}); - var store = _interopRequireWildcard(_store); +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; }; + +exports.getInternalMethods = getInternalMethods; +exports.getPrototypeChain = getPrototypeChain; +exports.warn = warn; +exports.uid = uid; +exports.formatAsConstant = formatAsConstant; +exports.dispatchIdentity = dispatchIdentity; +exports.fsa = fsa; +exports.dispatch = dispatch; + +var _functions = __webpack_require__(0); + +var fn = _interopRequireWildcard(_functions); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +/*eslint-disable*/ +var builtIns = Object.getOwnPropertyNames(NoopClass); +var builtInProto = Object.getOwnPropertyNames(NoopClass.prototype); +/* eslint-enable */ + +function getInternalMethods(Obj, isProto) { + var excluded = isProto ? builtInProto : builtIns; + var obj = isProto ? Obj.prototype : Obj; + return Object.getOwnPropertyNames(obj).reduce(function (value, m) { + if (excluded.indexOf(m) !== -1) { + return value; + } + + value[m] = obj[m]; //eslint-disable-line + return value; + }, {}); +} + +function getPrototypeChain(Obj) { + var methods = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + return Obj === Function.prototype ? methods : getPrototypeChain(Object.getPrototypeOf(Obj), fn.assign(getInternalMethods(Obj, true), methods)); +} + +function warn(msg) { + /* istanbul ignore else */ + /*eslint-disable*/ + if (typeof console !== 'undefined') { + console.warn(new ReferenceError(msg)); + } + /* eslint-enable */ +} + +function uid(container, name) { + var count = 0; + var key = name; + while (Object.hasOwnProperty.call(container, key)) { + count += 1; + key = name + String(count); + } + return key; +} + +function formatAsConstant(name) { + return name.replace(/[a-z]([A-Z])/g, function (i) { + return i[0] + '_' + i[1].toLowerCase(); + }).toUpperCase(); +} + +function dispatchIdentity(x) { + if (x === undefined) return null; + + for (var _len = arguments.length, a = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + a[_key - 1] = arguments[_key]; + } + + return a.length ? [x].concat(a) : x; +} + +function fsa(id, type, payload, details) { + return { + type: type, + payload: payload, + meta: _extends({ + dispatchId: id + }, details), + + id: id, + action: type, + data: payload, + details: details + }; +} + +function dispatch(id, actionObj, payload, alt) { + var data = actionObj.dispatch(payload); + if (data === undefined) return null; + + var type = actionObj.id; + var namespace = type; + var name = type; + var details = { id: type, namespace: namespace, name: name }; + + var dispatchLater = function dispatchLater(x) { + return alt.dispatch(type, x, details); + }; + + if (fn.isFunction(data)) return data(dispatchLater, alt); + + // XXX standardize this + return alt.dispatcher.dispatch(fsa(id, type, data, details)); +} + +/* istanbul ignore next */ +function NoopClass() {} + +/***/ }), +/* 2 */ +/***/ (function(module, exports) { + +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function transmitter() { + var subscriptions = []; + var nowDispatching = false; + var toUnsubscribe = {}; + + var unsubscribe = function unsubscribe(onChange) { + var id = subscriptions.indexOf(onChange); + if (id < 0) return; + if (nowDispatching) { + toUnsubscribe[id] = onChange; + return; + } + subscriptions.splice(id, 1); + }; + + var subscribe = function subscribe(onChange) { + var id = subscriptions.push(onChange); + var dispose = function dispose() { + return unsubscribe(onChange); + }; + return { dispose: dispose }; + }; + + var publish = function publish() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + nowDispatching = true; + try { + subscriptions.forEach(function (subscription, id) { + return toUnsubscribe[id] || subscription.apply(undefined, args); + }); + } finally { + nowDispatching = false; + Object.keys(toUnsubscribe).forEach(function (id) { + return unsubscribe(toUnsubscribe[id]); + }); + toUnsubscribe = {}; + } + }; + + return { + publish: publish, + subscribe: subscribe, + $subscriptions: subscriptions + }; +} + +module.exports = transmitter; + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { - var _AltUtils = __webpack_require__(9); +module.exports = __webpack_require__(5); - var utils = _interopRequireWildcard(_AltUtils); - var _actions = __webpack_require__(13); +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { - var _actions2 = _interopRequireDefault(_actions); +"use strict"; - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } +Object.defineProperty(exports, "__esModule", { + value: true +}); - 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; } +var _flux = __webpack_require__(6); - 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 _StateFunctions = __webpack_require__(9); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /* global window */ +var StateFunctions = _interopRequireWildcard(_StateFunctions); +var _functions = __webpack_require__(0); - var Alt = function () { - function Alt() { - var config = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; +var fn = _interopRequireWildcard(_functions); - _classCallCheck(this, Alt); +var _store = __webpack_require__(10); - this.config = config; - this.serialize = config.serialize || JSON.stringify; - this.deserialize = config.deserialize || JSON.parse; - this.dispatcher = config.dispatcher || new _flux.Dispatcher(); - this.batchingFunction = config.batchingFunction || function (callback) { - return callback(); - }; - this.actions = { global: {} }; - this.stores = {}; - this.storeTransforms = config.storeTransforms || []; - this.trapAsync = false; - this._actionsRegistry = {}; - this._initSnapshot = {}; - this._lastSnapshot = {}; - } +var store = _interopRequireWildcard(_store); - Alt.prototype.dispatch = function () { - function dispatch(action, data, details) { - var _this = this; +var _AltUtils = __webpack_require__(1); - this.batchingFunction(function () { - var id = Math.random().toString(18).substr(2, 16); +var utils = _interopRequireWildcard(_AltUtils); - // support straight dispatching of FSA-style actions - if (action.hasOwnProperty('type') && action.hasOwnProperty('payload')) { - var fsaDetails = { - id: action.type, - namespace: action.type, - name: action.type - }; - return _this.dispatcher.dispatch(utils.fsa(id, action.type, action.payload, fsaDetails)); - } +var _actions = __webpack_require__(13); - if (action.id && action.dispatch) { - return utils.dispatch(id, action, data, _this); - } +var _actions2 = _interopRequireDefault(_actions); - return _this.dispatcher.dispatch(utils.fsa(id, action, data, details)); - }); - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - return dispatch; - }(); +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - Alt.prototype.createUnsavedStore = function () { - function createUnsavedStore(StoreModel) { - var key = StoreModel.displayName || ''; - store.createStoreConfig(this.config, StoreModel); - var Store = store.transformStore(this.storeTransforms, StoreModel); +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; } - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } +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; } - return fn.isFunction(Store) ? store.createStoreFromClass.apply(store, [this, Store, key].concat(args)) : store.createStoreFromObject(this, Store, key); - } +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /* global window */ - return createUnsavedStore; - }(); - Alt.prototype.createStore = function () { - function createStore(StoreModel, iden) { - var key = iden || StoreModel.displayName || StoreModel.name || ''; - store.createStoreConfig(this.config, StoreModel); - var Store = store.transformStore(this.storeTransforms, StoreModel); +var Alt = function () { + function Alt() { + var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - /* istanbul ignore next */ - if (false) delete this.stores[key]; + _classCallCheck(this, Alt); - if (this.stores[key] || !key) { - if (this.stores[key]) { - utils.warn('A store named ' + String(key) + ' already exists, double check your store ' + 'names or pass in your own custom identifier for each store'); - } else { - utils.warn('Store name was not specified'); - } + this.config = config; + this.serialize = config.serialize || JSON.stringify; + this.deserialize = config.deserialize || JSON.parse; + this.dispatcher = config.dispatcher || new _flux.Dispatcher(); + this.batchingFunction = config.batchingFunction || function (callback) { + return callback(); + }; + this.actions = { global: {} }; + this.stores = {}; + this.storeTransforms = config.storeTransforms || []; + this.trapAsync = false; + this._actionsRegistry = {}; + this._initSnapshot = {}; + this._lastSnapshot = {}; + } - key = utils.uid(this.stores, key); - } + Alt.prototype.dispatch = function dispatch(action, data, details) { + var _this = this; - for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { - args[_key2 - 2] = arguments[_key2]; - } + this.batchingFunction(function () { + var id = Math.random().toString(18).substr(2, 16); - var storeInstance = fn.isFunction(Store) ? store.createStoreFromClass.apply(store, [this, Store, key].concat(args)) : store.createStoreFromObject(this, Store, key); + // support straight dispatching of FSA-style actions + if (action.hasOwnProperty('type') && action.hasOwnProperty('payload')) { + var fsaDetails = { + id: action.type, + namespace: action.type, + name: action.type + }; + return _this.dispatcher.dispatch(utils.fsa(id, action.type, action.payload, fsaDetails)); + } - this.stores[key] = storeInstance; - StateFunctions.saveInitialSnapshot(this, key); + if (action.id && action.dispatch) { + return utils.dispatch(id, action, data, _this); + } - return storeInstance; - } + return _this.dispatcher.dispatch(utils.fsa(id, action, data, details)); + }); + }; - return createStore; - }(); - - Alt.prototype.generateActions = function () { - function generateActions() { - var actions = { name: 'global' }; - - for (var _len3 = arguments.length, actionNames = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { - actionNames[_key3] = arguments[_key3]; - } - - return this.createActions(actionNames.reduce(function (obj, action) { - obj[action] = utils.dispatchIdentity; - return obj; - }, actions)); - } - - return generateActions; - }(); - - Alt.prototype.createAction = function () { - function createAction(name, implementation, obj) { - return (0, _actions2['default'])(this, 'global', name, implementation, obj); - } + Alt.prototype.createUnsavedStore = function createUnsavedStore(StoreModel) { + var key = StoreModel.displayName || ''; + store.createStoreConfig(this.config, StoreModel); + var Store = store.transformStore(this.storeTransforms, StoreModel); - return createAction; - }(); + for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } - Alt.prototype.createActions = function () { - function createActions(ActionsClass) { - var _this3 = this; + return fn.isFunction(Store) ? store.createStoreFromClass.apply(store, [this, Store, key].concat(args)) : store.createStoreFromObject(this, Store, key); + }; - var exportObj = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; + Alt.prototype.createStore = function createStore(StoreModel, iden) { + var key = iden || StoreModel.displayName || StoreModel.name || ''; + store.createStoreConfig(this.config, StoreModel); + var Store = store.transformStore(this.storeTransforms, StoreModel); - var actions = {}; - var key = utils.uid(this._actionsRegistry, ActionsClass.displayName || ActionsClass.name || 'Unknown'); + /* istanbul ignore next */ + if (false) delete this.stores[key]; - if (fn.isFunction(ActionsClass)) { - fn.assign(actions, utils.getPrototypeChain(ActionsClass)); + if (this.stores[key] || !key) { + if (this.stores[key]) { + utils.warn('A store named ' + key + ' already exists, double check your store ' + 'names or pass in your own custom identifier for each store'); + } else { + utils.warn('Store name was not specified'); + } - var ActionsGenerator = function (_ActionsClass) { - _inherits(ActionsGenerator, _ActionsClass); + key = utils.uid(this.stores, key); + } - function ActionsGenerator() { - _classCallCheck(this, ActionsGenerator); + for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { + args[_key2 - 2] = arguments[_key2]; + } - for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - args[_key5] = arguments[_key5]; - } + var storeInstance = fn.isFunction(Store) ? store.createStoreFromClass.apply(store, [this, Store, key].concat(args)) : store.createStoreFromObject(this, Store, key); - return _possibleConstructorReturn(this, _ActionsClass.call.apply(_ActionsClass, [this].concat(args))); - } + this.stores[key] = storeInstance; + StateFunctions.saveInitialSnapshot(this, key); - ActionsGenerator.prototype.generateActions = function () { - function generateActions() { - for (var _len6 = arguments.length, actionNames = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - actionNames[_key6] = arguments[_key6]; - } + return storeInstance; + }; - actionNames.forEach(function (actionName) { - actions[actionName] = utils.dispatchIdentity; - }); - } + Alt.prototype.generateActions = function generateActions() { + var actions = { name: 'global' }; - return generateActions; - }(); - - return ActionsGenerator; - }(ActionsClass); - - for (var _len4 = arguments.length, argsForConstructor = Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) { - argsForConstructor[_key4 - 2] = arguments[_key4]; - } - - fn.assign(actions, new (Function.prototype.bind.apply(ActionsGenerator, [null].concat(argsForConstructor)))()); - } else { - fn.assign(actions, ActionsClass); - } - - this.actions[key] = this.actions[key] || {}; - - fn.eachObject(function (actionName, action) { - if (!fn.isFunction(action)) { - exportObj[actionName] = action; - return; - } - - // create the action - exportObj[actionName] = (0, _actions2['default'])(_this3, key, actionName, action, exportObj); - - // generate a constant - var constant = utils.formatAsConstant(actionName); - exportObj[constant] = exportObj[actionName].id; - }, [actions]); - - return exportObj; - } - - return createActions; - }(); - - Alt.prototype.takeSnapshot = function () { - function takeSnapshot() { - for (var _len7 = arguments.length, storeNames = Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { - storeNames[_key7] = arguments[_key7]; - } - - var state = StateFunctions.snapshot(this, storeNames); - fn.assign(this._lastSnapshot, state); - return this.serialize(state); - } - - return takeSnapshot; - }(); - - Alt.prototype.rollback = function () { - function rollback() { - StateFunctions.setAppState(this, this.serialize(this._lastSnapshot), function (storeInst) { - storeInst.lifecycle('rollback'); - storeInst.emitChange(); - }); - } - - return rollback; - }(); - - Alt.prototype.recycle = function () { - function recycle() { - for (var _len8 = arguments.length, storeNames = Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { - storeNames[_key8] = arguments[_key8]; - } - - var initialSnapshot = storeNames.length ? StateFunctions.filterSnapshots(this, this._initSnapshot, storeNames) : this._initSnapshot; - - StateFunctions.setAppState(this, this.serialize(initialSnapshot), function (storeInst) { - storeInst.lifecycle('init'); - storeInst.emitChange(); - }); - } - - return recycle; - }(); - - Alt.prototype.flush = function () { - function flush() { - var state = this.serialize(StateFunctions.snapshot(this)); - this.recycle(); - return state; - } - - return flush; - }(); - - Alt.prototype.bootstrap = function () { - function bootstrap(data) { - StateFunctions.setAppState(this, data, function (storeInst, state) { - storeInst.lifecycle('bootstrap', state); - storeInst.emitChange(); - }); - } - - return bootstrap; - }(); - - Alt.prototype.prepare = function () { - function prepare(storeInst, payload) { - var data = {}; - if (!storeInst.displayName) { - throw new ReferenceError('Store provided does not have a name'); - } - data[storeInst.displayName] = payload; - return this.serialize(data); - } - - return prepare; - }(); - - // Instance type methods for injecting alt into your application as context - - Alt.prototype.addActions = function () { - function addActions(name, ActionsClass) { - for (var _len9 = arguments.length, args = Array(_len9 > 2 ? _len9 - 2 : 0), _key9 = 2; _key9 < _len9; _key9++) { - args[_key9 - 2] = arguments[_key9]; - } - - this.actions[name] = Array.isArray(ActionsClass) ? this.generateActions.apply(this, ActionsClass) : this.createActions.apply(this, [ActionsClass].concat(args)); - } - - return addActions; - }(); - - Alt.prototype.addStore = function () { - function addStore(name, StoreModel) { - for (var _len10 = arguments.length, args = Array(_len10 > 2 ? _len10 - 2 : 0), _key10 = 2; _key10 < _len10; _key10++) { - args[_key10 - 2] = arguments[_key10]; - } - - this.createStore.apply(this, [StoreModel, name].concat(args)); - } - - return addStore; - }(); - - Alt.prototype.getActions = function () { - function getActions(name) { - return this.actions[name]; - } - - return getActions; - }(); - - Alt.prototype.getStore = function () { - function getStore(name) { - return this.stores[name]; - } - - return getStore; - }(); - - Alt.debug = function () { - function debug(name, alt, win) { - var key = 'alt.js.org'; - var context = win; - if (!context && typeof window !== 'undefined') { - context = window; - } - if (typeof context !== 'undefined') { - context[key] = context[key] || []; - context[key].push({ name: name, alt: alt }); - } - return alt; - } - - return debug; - }(); - - return Alt; - }(); - - exports['default'] = Alt; - module.exports = exports['default']; - -/***/ }, -/* 2 */ -/***/ function(module, exports, __webpack_require__) { + for (var _len3 = arguments.length, actionNames = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + actionNames[_key3] = arguments[_key3]; + } + + return this.createActions(actionNames.reduce(function (obj, action) { + obj[action] = utils.dispatchIdentity; //eslint-disable-line + return obj; + }, actions)); + }; + + Alt.prototype.createAction = function createAction(name, implementation, obj) { + return (0, _actions2.default)(this, 'global', name, implementation, obj); + }; + + Alt.prototype.createActions = function createActions(ActionsClass) { + var //eslint-disable-line + _this3 = this; + + var exportObj = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var actions = {}; + var key = utils.uid(this._actionsRegistry, ActionsClass.displayName || ActionsClass.name || 'Unknown'); + + if (fn.isFunction(ActionsClass)) { + fn.assign(actions, utils.getPrototypeChain(ActionsClass)); + + var ActionsGenerator = function (_ActionsClass) { + _inherits(ActionsGenerator, _ActionsClass); + + function ActionsGenerator() { + _classCallCheck(this, ActionsGenerator); + + return _possibleConstructorReturn(this, _ActionsClass.apply(this, arguments)); + } + + ActionsGenerator.prototype.generateActions = function generateActions() { + for (var _len5 = arguments.length, actionNames = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + actionNames[_key5] = arguments[_key5]; + } + + actionNames.forEach(function (actionName) { + actions[actionName] = utils.dispatchIdentity; + }); + }; + + return ActionsGenerator; + }(ActionsClass); + + for (var _len4 = arguments.length, argsForConstructor = Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) { + argsForConstructor[_key4 - 2] = arguments[_key4]; + } + + fn.assign(actions, new (Function.prototype.bind.apply(ActionsGenerator, [null].concat(argsForConstructor)))()); + } else { + fn.assign(actions, ActionsClass); + } + + this.actions[key] = this.actions[key] || {}; + + fn.eachObject(function (actionName, action) { + if (!fn.isFunction(action)) { + exportObj[actionName] = action; //eslint-disable-line + return; + } + + // create the action + exportObj[actionName] = (0, _actions2.default)(_this3, key, actionName, action, exportObj); + + // generate a constant + var constant = utils.formatAsConstant(actionName); + exportObj[constant] = exportObj[actionName].id; //eslint-disable-line + }, [actions]); + + return exportObj; + }; + + Alt.prototype.takeSnapshot = function takeSnapshot() { + for (var _len6 = arguments.length, storeNames = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { + storeNames[_key6] = arguments[_key6]; + } + + var state = StateFunctions.snapshot(this, storeNames); + fn.assign(this._lastSnapshot, state); + return this.serialize(state); + }; + + Alt.prototype.rollback = function rollback() { + StateFunctions.setAppState(this, this.serialize(this._lastSnapshot), function (storeInst) { + storeInst.lifecycle('rollback'); + storeInst.emitChange(); + }); + }; + + Alt.prototype.recycle = function recycle() { + for (var _len7 = arguments.length, storeNames = Array(_len7), _key7 = 0; _key7 < _len7; _key7++) { + storeNames[_key7] = arguments[_key7]; + } + + var initialSnapshot = storeNames.length ? StateFunctions.filterSnapshots(this, this._initSnapshot, storeNames) : this._initSnapshot; + + StateFunctions.setAppState(this, this.serialize(initialSnapshot), function (storeInst) { + storeInst.lifecycle('init'); + storeInst.emitChange(); + }); + }; + + Alt.prototype.flush = function flush() { + var state = this.serialize(StateFunctions.snapshot(this)); + this.recycle(); + return state; + }; + + Alt.prototype.bootstrap = function bootstrap(data) { + StateFunctions.setAppState(this, data, function (storeInst, state) { + storeInst.lifecycle('bootstrap', state); + storeInst.emitChange(); + }); + }; + + Alt.prototype.prepare = function prepare(storeInst, payload) { + var data = {}; + if (!storeInst.displayName) { + throw new ReferenceError('Store provided does not have a name'); + } + data[storeInst.displayName] = payload; + return this.serialize(data); + }; + + // Instance type methods for injecting alt into your application as context + + Alt.prototype.addActions = function addActions(name, ActionsClass) { + for (var _len8 = arguments.length, args = Array(_len8 > 2 ? _len8 - 2 : 0), _key8 = 2; _key8 < _len8; _key8++) { + args[_key8 - 2] = arguments[_key8]; + } + + this.actions[name] = Array.isArray(ActionsClass) ? this.generateActions.apply(this, ActionsClass) //eslint-disable-line + : this.createActions.apply(this, [ActionsClass].concat(args)); + }; + + Alt.prototype.addStore = function addStore(name, StoreModel) { + for (var _len9 = arguments.length, args = Array(_len9 > 2 ? _len9 - 2 : 0), _key9 = 2; _key9 < _len9; _key9++) { + args[_key9 - 2] = arguments[_key9]; + } + + this.createStore.apply(this, [StoreModel, name].concat(args)); + }; + + Alt.prototype.getActions = function getActions(name) { + return this.actions[name]; + }; + + Alt.prototype.getStore = function getStore(name) { + return this.stores[name]; + }; + + Alt.debug = function debug(name, alt, win) { + var key = 'alt.js.org'; + var context = win; + if (!context && typeof window !== 'undefined') { + context = window; + } + if (typeof context !== 'undefined') { + context[key] = context[key] || []; + context[key].push({ name: name, alt: alt }); + } + return alt; + }; + + return Alt; +}(); + +exports.default = Alt; +module.exports = exports['default']; + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { - /** - * Copyright (c) 2014-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - */ +/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ - module.exports.Dispatcher = __webpack_require__(3); +module.exports.Dispatcher = __webpack_require__(7); -/***/ }, -/* 3 */ -/***/ function(module, exports, __webpack_require__) { - - /* WEBPACK VAR INJECTION */(function(process) {/** - * Copyright (c) 2014-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @providesModule Dispatcher - * - * @preventMunge - */ - - 'use strict'; - - exports.__esModule = true; - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } - - var invariant = __webpack_require__(5); - - var _prefix = 'ID_'; - - /** - * Dispatcher is used to broadcast payloads to registered callbacks. This is - * different from generic pub-sub systems in two ways: - * - * 1) Callbacks are not subscribed to particular events. Every payload is - * dispatched to every registered callback. - * 2) Callbacks can be deferred in whole or part until other callbacks have - * been executed. - * - * For example, consider this hypothetical flight destination form, which - * selects a default city when a country is selected: - * - * var flightDispatcher = new Dispatcher(); - * - * // Keeps track of which country is selected - * var CountryStore = {country: null}; - * - * // Keeps track of which city is selected - * var CityStore = {city: null}; - * - * // Keeps track of the base flight price of the selected city - * var FlightPriceStore = {price: null} - * - * When a user changes the selected city, we dispatch the payload: - * - * flightDispatcher.dispatch({ - * actionType: 'city-update', - * selectedCity: 'paris' - * }); - * - * This payload is digested by `CityStore`: - * - * flightDispatcher.register(function(payload) { - * if (payload.actionType === 'city-update') { - * CityStore.city = payload.selectedCity; - * } - * }); - * - * When the user selects a country, we dispatch the payload: - * - * flightDispatcher.dispatch({ - * actionType: 'country-update', - * selectedCountry: 'australia' - * }); - * - * This payload is digested by both stores: - * - * CountryStore.dispatchToken = flightDispatcher.register(function(payload) { - * if (payload.actionType === 'country-update') { - * CountryStore.country = payload.selectedCountry; - * } - * }); - * - * When the callback to update `CountryStore` is registered, we save a reference - * to the returned token. Using this token with `waitFor()`, we can guarantee - * that `CountryStore` is updated before the callback that updates `CityStore` - * needs to query its data. - * - * CityStore.dispatchToken = flightDispatcher.register(function(payload) { - * if (payload.actionType === 'country-update') { - * // `CountryStore.country` may not be updated. - * flightDispatcher.waitFor([CountryStore.dispatchToken]); - * // `CountryStore.country` is now guaranteed to be updated. - * - * // Select the default city for the new country - * CityStore.city = getDefaultCityForCountry(CountryStore.country); - * } - * }); - * - * The usage of `waitFor()` can be chained, for example: - * - * FlightPriceStore.dispatchToken = - * flightDispatcher.register(function(payload) { - * switch (payload.actionType) { - * case 'country-update': - * case 'city-update': - * flightDispatcher.waitFor([CityStore.dispatchToken]); - * FlightPriceStore.price = - * getFlightPriceStore(CountryStore.country, CityStore.city); - * break; - * } - * }); - * - * The `country-update` payload will be guaranteed to invoke the stores' - * registered callbacks in order: `CountryStore`, `CityStore`, then - * `FlightPriceStore`. - */ - - var Dispatcher = (function () { - function Dispatcher() { - _classCallCheck(this, Dispatcher); - - this._callbacks = {}; - this._isDispatching = false; - this._isHandled = {}; - this._isPending = {}; - this._lastID = 1; - } - - /** - * Registers a callback to be invoked with every dispatched payload. Returns - * a token that can be used with `waitFor()`. - */ - - Dispatcher.prototype.register = function register(callback) { - var id = _prefix + this._lastID++; - this._callbacks[id] = callback; - return id; - }; - - /** - * Removes a callback based on its token. - */ - - Dispatcher.prototype.unregister = function unregister(id) { - !this._callbacks[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.unregister(...): `%s` does not map to a registered callback.', id) : invariant(false) : undefined; - delete this._callbacks[id]; - }; - - /** - * Waits for the callbacks specified to be invoked before continuing execution - * of the current callback. This method should only be used by a callback in - * response to a dispatched payload. - */ - - Dispatcher.prototype.waitFor = function waitFor(ids) { - !this._isDispatching ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): Must be invoked while dispatching.') : invariant(false) : undefined; - for (var ii = 0; ii < ids.length; ii++) { - var id = ids[ii]; - if (this._isPending[id]) { - !this._isHandled[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): Circular dependency detected while ' + 'waiting for `%s`.', id) : invariant(false) : undefined; - continue; - } - !this._callbacks[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.', id) : invariant(false) : undefined; - this._invokeCallback(id); - } - }; - - /** - * Dispatches a payload to all registered callbacks. - */ - - Dispatcher.prototype.dispatch = function dispatch(payload) { - !!this._isDispatching ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.') : invariant(false) : undefined; - this._startDispatching(payload); - try { - for (var id in this._callbacks) { - if (this._isPending[id]) { - continue; - } - this._invokeCallback(id); - } - } finally { - this._stopDispatching(); - } - }; - - /** - * Is this Dispatcher currently dispatching. - */ - - Dispatcher.prototype.isDispatching = function isDispatching() { - return this._isDispatching; - }; - - /** - * Call the callback stored with the given id. Also do some internal - * bookkeeping. - * - * @internal - */ - - Dispatcher.prototype._invokeCallback = function _invokeCallback(id) { - this._isPending[id] = true; - this._callbacks[id](this._pendingPayload); - this._isHandled[id] = true; - }; - - /** - * Set up bookkeeping needed when dispatching. - * - * @internal - */ - - Dispatcher.prototype._startDispatching = function _startDispatching(payload) { - for (var id in this._callbacks) { - this._isPending[id] = false; - this._isHandled[id] = false; - } - this._pendingPayload = payload; - this._isDispatching = true; - }; - - /** - * Clear bookkeeping used for dispatching. - * - * @internal - */ - - Dispatcher.prototype._stopDispatching = function _stopDispatching() { - delete this._pendingPayload; - this._isDispatching = false; - }; - - return Dispatcher; - })(); - - module.exports = Dispatcher; - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) - -/***/ }, -/* 4 */ -/***/ function(module, exports) { - - // shim for using process in browser - var process = module.exports = {}; - - // cached from whatever global is present so that test runners that stub it - // don't break things. But we need to wrap it in a try catch in case it is - // wrapped in strict mode code which doesn't define any globals. It's inside a - // function because try/catches deoptimize in certain engines. - - var cachedSetTimeout; - var cachedClearTimeout; - - function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); - } - function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); - } - (function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } - } ()) - function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } - - - } - function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - - } - var queue = []; - var draining = false; - var currentQueue; - var queueIndex = -1; - - function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } - } - - function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); - } - - process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } - }; - - // v8 likes predictible objects - function Item(fun, array) { - this.fun = fun; - this.array = array; - } - Item.prototype.run = function () { - this.fun.apply(null, this.array); - }; - process.title = 'browser'; - process.browser = true; - process.env = {}; - process.argv = []; - process.version = ''; // empty string to avoid regexp issues - process.versions = {}; - - function noop() {} - - process.on = noop; - process.addListener = noop; - process.once = noop; - process.off = noop; - process.removeListener = noop; - process.removeAllListeners = noop; - process.emit = noop; - - process.binding = function (name) { - throw new Error('process.binding is not supported'); - }; - - process.cwd = function () { return '/' }; - process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); - }; - process.umask = function() { return 0; }; - - -/***/ }, -/* 5 */ -/***/ function(module, exports, __webpack_require__) { - - /* WEBPACK VAR INJECTION */(function(process) {/** - * Copyright 2013-2015, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @providesModule invariant - */ - - "use strict"; - - /** - * Use invariant() to assert state which your program assumes to be true. - * - * Provide sprintf-style format (only %s is supported) and arguments - * to provide information about what broke and what you were - * expecting. - * - * The invariant message will be stripped in production, but the invariant - * will remain to ensure logic does not differ in production. - */ - - var invariant = function (condition, format, a, b, c, d, e, f) { - if (process.env.NODE_ENV !== 'production') { - if (format === undefined) { - throw new Error('invariant requires an error message argument'); - } - } - - if (!condition) { - var error; - if (format === undefined) { - error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); - } else { - var args = [a, b, c, d, e, f]; - var argIndex = 0; - error = new Error('Invariant Violation: ' + format.replace(/%s/g, function () { - return args[argIndex++]; - })); - } - - error.framesToPop = 1; // we don't care about invariant's own frame - throw error; - } - }; - - module.exports = invariant; - /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(4))) - -/***/ }, -/* 6 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.setAppState = setAppState; - exports.snapshot = snapshot; - exports.saveInitialSnapshot = saveInitialSnapshot; - exports.filterSnapshots = filterSnapshots; - - var _functions = __webpack_require__(7); - - var fn = _interopRequireWildcard(_functions); - - function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } - - function setAppState(instance, data, onStore) { - var obj = instance.deserialize(data); - fn.eachObject(function (key, value) { - var store = instance.stores[key]; - if (store) { - (function () { - var config = store.StoreModel.config; - - var state = store.state; - if (config.onDeserialize) obj[key] = config.onDeserialize(value) || value; - if (fn.isMutableObject(state)) { - fn.eachObject(function (k) { - return delete state[k]; - }, [state]); - fn.assign(state, obj[key]); - } else { - store.state = obj[key]; - } - onStore(store, store.state); - })(); - } - }, [obj]); - } - - function snapshot(instance) { - var storeNames = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1]; - - var stores = storeNames.length ? storeNames : Object.keys(instance.stores); - return stores.reduce(function (obj, storeHandle) { - var storeName = storeHandle.displayName || storeHandle; - var store = instance.stores[storeName]; - var config = store.StoreModel.config; - - store.lifecycle('snapshot'); - var customSnapshot = config.onSerialize && config.onSerialize(store.state); - obj[storeName] = customSnapshot ? customSnapshot : store.getState(); - return obj; - }, {}); - } - - function saveInitialSnapshot(instance, key) { - var state = instance.deserialize(instance.serialize(instance.stores[key].state)); - instance._initSnapshot[key] = state; - instance._lastSnapshot[key] = state; - } - - function filterSnapshots(instance, state, stores) { - return stores.reduce(function (obj, store) { - var storeName = store.displayName || store; - if (!state[storeName]) { - throw new ReferenceError(String(storeName) + ' is not a valid store'); - } - obj[storeName] = state[storeName]; - return obj; - }, {}); - } - -/***/ }, +/***/ }), /* 7 */ -/***/ function(module, exports) { - - 'use strict'; - - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.isMutableObject = isMutableObject; - exports.eachObject = eachObject; - exports.assign = assign; - var isFunction = exports.isFunction = function isFunction(x) { - return typeof x === 'function'; - }; - - function isMutableObject(target) { - var Ctor = target.constructor; - - return !!target && Object.prototype.toString.call(target) === '[object Object]' && isFunction(Ctor) && !Object.isFrozen(target) && (Ctor instanceof Ctor || target.type === 'AltStore'); - } - - function eachObject(f, o) { - o.forEach(function (from) { - Object.keys(Object(from)).forEach(function (key) { - f(key, from[key]); - }); - }); - } - - function assign(target) { - for (var _len = arguments.length, source = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - source[_key - 1] = arguments[_key]; - } - - eachObject(function (key, value) { - return target[key] = value; - }, source); - return target; - } - -/***/ }, +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) {/** + * Copyright (c) 2014-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @providesModule Dispatcher + * + * @preventMunge + */ + + + +exports.__esModule = true; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } + +var invariant = __webpack_require__(8); + +var _prefix = 'ID_'; + +/** + * Dispatcher is used to broadcast payloads to registered callbacks. This is + * different from generic pub-sub systems in two ways: + * + * 1) Callbacks are not subscribed to particular events. Every payload is + * dispatched to every registered callback. + * 2) Callbacks can be deferred in whole or part until other callbacks have + * been executed. + * + * For example, consider this hypothetical flight destination form, which + * selects a default city when a country is selected: + * + * var flightDispatcher = new Dispatcher(); + * + * // Keeps track of which country is selected + * var CountryStore = {country: null}; + * + * // Keeps track of which city is selected + * var CityStore = {city: null}; + * + * // Keeps track of the base flight price of the selected city + * var FlightPriceStore = {price: null} + * + * When a user changes the selected city, we dispatch the payload: + * + * flightDispatcher.dispatch({ + * actionType: 'city-update', + * selectedCity: 'paris' + * }); + * + * This payload is digested by `CityStore`: + * + * flightDispatcher.register(function(payload) { + * if (payload.actionType === 'city-update') { + * CityStore.city = payload.selectedCity; + * } + * }); + * + * When the user selects a country, we dispatch the payload: + * + * flightDispatcher.dispatch({ + * actionType: 'country-update', + * selectedCountry: 'australia' + * }); + * + * This payload is digested by both stores: + * + * CountryStore.dispatchToken = flightDispatcher.register(function(payload) { + * if (payload.actionType === 'country-update') { + * CountryStore.country = payload.selectedCountry; + * } + * }); + * + * When the callback to update `CountryStore` is registered, we save a reference + * to the returned token. Using this token with `waitFor()`, we can guarantee + * that `CountryStore` is updated before the callback that updates `CityStore` + * needs to query its data. + * + * CityStore.dispatchToken = flightDispatcher.register(function(payload) { + * if (payload.actionType === 'country-update') { + * // `CountryStore.country` may not be updated. + * flightDispatcher.waitFor([CountryStore.dispatchToken]); + * // `CountryStore.country` is now guaranteed to be updated. + * + * // Select the default city for the new country + * CityStore.city = getDefaultCityForCountry(CountryStore.country); + * } + * }); + * + * The usage of `waitFor()` can be chained, for example: + * + * FlightPriceStore.dispatchToken = + * flightDispatcher.register(function(payload) { + * switch (payload.actionType) { + * case 'country-update': + * case 'city-update': + * flightDispatcher.waitFor([CityStore.dispatchToken]); + * FlightPriceStore.price = + * getFlightPriceStore(CountryStore.country, CityStore.city); + * break; + * } + * }); + * + * The `country-update` payload will be guaranteed to invoke the stores' + * registered callbacks in order: `CountryStore`, `CityStore`, then + * `FlightPriceStore`. + */ + +var Dispatcher = (function () { + function Dispatcher() { + _classCallCheck(this, Dispatcher); + + this._callbacks = {}; + this._isDispatching = false; + this._isHandled = {}; + this._isPending = {}; + this._lastID = 1; + } + + /** + * Registers a callback to be invoked with every dispatched payload. Returns + * a token that can be used with `waitFor()`. + */ + + Dispatcher.prototype.register = function register(callback) { + var id = _prefix + this._lastID++; + this._callbacks[id] = callback; + return id; + }; + + /** + * Removes a callback based on its token. + */ + + Dispatcher.prototype.unregister = function unregister(id) { + !this._callbacks[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.unregister(...): `%s` does not map to a registered callback.', id) : invariant(false) : undefined; + delete this._callbacks[id]; + }; + + /** + * Waits for the callbacks specified to be invoked before continuing execution + * of the current callback. This method should only be used by a callback in + * response to a dispatched payload. + */ + + Dispatcher.prototype.waitFor = function waitFor(ids) { + !this._isDispatching ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): Must be invoked while dispatching.') : invariant(false) : undefined; + for (var ii = 0; ii < ids.length; ii++) { + var id = ids[ii]; + if (this._isPending[id]) { + !this._isHandled[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): Circular dependency detected while ' + 'waiting for `%s`.', id) : invariant(false) : undefined; + continue; + } + !this._callbacks[id] ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.', id) : invariant(false) : undefined; + this._invokeCallback(id); + } + }; + + /** + * Dispatches a payload to all registered callbacks. + */ + + Dispatcher.prototype.dispatch = function dispatch(payload) { + !!this._isDispatching ? process.env.NODE_ENV !== 'production' ? invariant(false, 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.') : invariant(false) : undefined; + this._startDispatching(payload); + try { + for (var id in this._callbacks) { + if (this._isPending[id]) { + continue; + } + this._invokeCallback(id); + } + } finally { + this._stopDispatching(); + } + }; + + /** + * Is this Dispatcher currently dispatching. + */ + + Dispatcher.prototype.isDispatching = function isDispatching() { + return this._isDispatching; + }; + + /** + * Call the callback stored with the given id. Also do some internal + * bookkeeping. + * + * @internal + */ + + Dispatcher.prototype._invokeCallback = function _invokeCallback(id) { + this._isPending[id] = true; + this._callbacks[id](this._pendingPayload); + this._isHandled[id] = true; + }; + + /** + * Set up bookkeeping needed when dispatching. + * + * @internal + */ + + Dispatcher.prototype._startDispatching = function _startDispatching(payload) { + for (var id in this._callbacks) { + this._isPending[id] = false; + this._isHandled[id] = false; + } + this._pendingPayload = payload; + this._isDispatching = true; + }; + + /** + * Clear bookkeeping used for dispatching. + * + * @internal + */ + + Dispatcher.prototype._stopDispatching = function _stopDispatching() { + delete this._pendingPayload; + this._isDispatching = false; + }; + + return Dispatcher; +})(); + +module.exports = Dispatcher; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2))) + +/***/ }), /* 8 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports.createStoreConfig = createStoreConfig; - exports.transformStore = transformStore; - exports.createStoreFromObject = createStoreFromObject; - exports.createStoreFromClass = createStoreFromClass; - - var _AltUtils = __webpack_require__(9); - - var utils = _interopRequireWildcard(_AltUtils); - - var _functions = __webpack_require__(7); +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) {/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + + + +/** + * Use invariant() to assert state which your program assumes to be true. + * + * Provide sprintf-style format (only %s is supported) and arguments + * to provide information about what broke and what you were + * expecting. + * + * The invariant message will be stripped in production, but the invariant + * will remain to ensure logic does not differ in production. + */ + +var validateFormat = function validateFormat(format) {}; + +if (process.env.NODE_ENV !== 'production') { + validateFormat = function validateFormat(format) { + if (format === undefined) { + throw new Error('invariant requires an error message argument'); + } + }; +} + +function invariant(condition, format, a, b, c, d, e, f) { + validateFormat(format); + + if (!condition) { + var error; + if (format === undefined) { + error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.'); + } else { + var args = [a, b, c, d, e, f]; + var argIndex = 0; + error = new Error(format.replace(/%s/g, function () { + return args[argIndex++]; + })); + error.name = 'Invariant Violation'; + } + + error.framesToPop = 1; // we don't care about invariant's own frame + throw error; + } +} + +module.exports = invariant; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2))) + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { - var fn = _interopRequireWildcard(_functions); +"use strict"; - var _AltStore = __webpack_require__(10); - var _AltStore2 = _interopRequireDefault(_AltStore); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.setAppState = setAppState; +exports.snapshot = snapshot; +exports.saveInitialSnapshot = saveInitialSnapshot; +exports.filterSnapshots = filterSnapshots; + +var _functions = __webpack_require__(0); + +var fn = _interopRequireWildcard(_functions); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function setAppState(instance, data, onStore) { + var obj = instance.deserialize(data); + fn.eachObject(function (key, value) { + var store = instance.stores[key]; + if (store) { + var config = store.StoreModel.config; + + var state = store.state; + if (config.onDeserialize) obj[key] = config.onDeserialize(value) || value; + if (fn.isMutableObject(state)) { + fn.eachObject(function (k) { + return delete state[k]; + }, [state]); + fn.assign(state, obj[key]); + } else { + store.state = obj[key]; + } + onStore(store, store.state); + } + }, [obj]); +} + +function snapshot(instance) { + var storeNames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + + var stores = storeNames.length ? storeNames : Object.keys(instance.stores); + return stores.reduce(function (obj, storeHandle) { + var storeName = storeHandle.displayName || storeHandle; + var store = instance.stores[storeName]; + var config = store.StoreModel.config; + + store.lifecycle('snapshot'); + var customSnapshot = config.onSerialize && config.onSerialize(store.state); + obj[storeName] = customSnapshot || store.getState(); //eslint-disable-line + return obj; + }, {}); +} + +function saveInitialSnapshot(instance, key) { + var state = instance.deserialize(instance.serialize(instance.stores[key].state)); + instance._initSnapshot[key] = state; //eslint-disable-line + instance._lastSnapshot[key] = state; //eslint-disable-line +} + +function filterSnapshots(instance, state, stores) { + return stores.reduce(function (obj, store) { + var storeName = store.displayName || store; + if (!state[storeName]) { + throw new ReferenceError(storeName + ' is not a valid store'); + } + obj[storeName] = state[storeName]; //eslint-disable-line + return obj; + }, {}); +} + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { - var _StoreMixin = __webpack_require__(12); +"use strict"; - var _StoreMixin2 = _interopRequireDefault(_StoreMixin); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.createStoreConfig = createStoreConfig; +exports.transformStore = transformStore; +exports.createStoreFromObject = createStoreFromObject; +exports.createStoreFromClass = createStoreFromClass; - function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } +var _AltUtils = __webpack_require__(1); - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +var utils = _interopRequireWildcard(_AltUtils); + +var _functions = __webpack_require__(0); + +var fn = _interopRequireWildcard(_functions); + +var _AltStore = __webpack_require__(11); + +var _AltStore2 = _interopRequireDefault(_AltStore); + +var _StoreMixin = __webpack_require__(12); + +var _StoreMixin2 = _interopRequireDefault(_StoreMixin); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +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; } + +function doSetState(store, storeInstance, state) { + if (!state) { + return; + } + + var config = storeInstance.StoreModel.config; + + + var nextState = fn.isFunction(state) ? state(storeInstance.state) : state; + + storeInstance.state = config.setState.call( //eslint-disable-line + store, storeInstance.state, nextState); + + if (!store.alt.dispatcher.isDispatching()) { + store.emitChange(); + } +} + +function createPrototype(proto, alt, key, extras) { + return fn.assign(proto, _StoreMixin2.default, { + displayName: key, + alt: alt, + dispatcher: alt.dispatcher, + preventDefault: function preventDefault() { + this.getInstance().preventDefault = true; + }, + + boundListeners: [], + lifecycleEvents: {}, + actionListeners: {}, + publicMethods: {}, + handlesOwnErrors: false + }, extras); +} + +function createStoreConfig(globalConfig, StoreModel) { + StoreModel.config = fn.assign({ + //eslint-disable-line + getState: function getState(state) { + if (Array.isArray(state)) { + return state.slice(); + } else if (fn.isMutableObject(state)) { + return fn.assign({}, state); + } + return state; + }, + setState: function setState(currentState, nextState) { + if (fn.isMutableObject(nextState)) { + return fn.assign(currentState, nextState); + } + return nextState; + } + }, globalConfig, StoreModel.config); +} + +function transformStore(transforms, StoreModel) { + return transforms.reduce(function (Store, transform) { + return transform(Store); + }, StoreModel); +} + +function createStoreFromObject(alt, StoreModel, key) { + var storeInstance = void 0; + + var StoreProto = createPrototype({}, alt, key, fn.assign({ + getInstance: function getInstance() { + return storeInstance; + }, + setState: function setState(nextState) { + doSetState(this, storeInstance, nextState); + } + }, StoreModel)); + + // bind the store listeners + /* istanbul ignore else */ + if (StoreProto.bindListeners) { + _StoreMixin2.default.bindListeners.call(StoreProto, StoreProto.bindListeners); + } + /* istanbul ignore else */ + if (StoreProto.observe) { + _StoreMixin2.default.bindListeners.call(StoreProto, StoreProto.observe(alt)); + } + + // bind the lifecycle events + /* istanbul ignore else */ + if (StoreProto.lifecycle) { + fn.eachObject(function (eventName, event) { + _StoreMixin2.default.on.call(StoreProto, eventName, event); + }, [StoreProto.lifecycle]); + } + + // create the instance and fn.assign the public methods to the instance + storeInstance = fn.assign(new _AltStore2.default(alt, StoreProto, StoreProto.state !== undefined ? StoreProto.state : {}, StoreModel), StoreProto.publicMethods, { + displayName: key, + config: StoreModel.config + }); + + return storeInstance; +} + +function createStoreFromClass(alt, StoreModel, key) { + var storeInstance = void 0; + var config = StoreModel.config; + + // Creating a class here so we don't overload the provided store's + // prototype with the mixin behaviour and I'm extending from StoreModel + // so we can inherit any extensions from the provided store. + + var Store = function (_StoreModel) { + _inherits(Store, _StoreModel); + + function Store() { + _classCallCheck(this, Store); + + return _possibleConstructorReturn(this, _StoreModel.apply(this, arguments)); + } + + return Store; + }(StoreModel); + + createPrototype(Store.prototype, alt, key, { + type: 'AltStore', + getInstance: function getInstance() { + return storeInstance; + }, + setState: function setState(nextState) { + doSetState(this, storeInstance, nextState); + } + }); + + for (var _len = arguments.length, argsForClass = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { + argsForClass[_key - 3] = arguments[_key]; + } + + var store = new (Function.prototype.bind.apply(Store, [null].concat(argsForClass)))(); + + /* istanbul ignore next */ + if (config.bindListeners) store.bindListeners(config.bindListeners); + /* istanbul ignore next */ + if (config.datasource) store.registerAsync(config.datasource); + + storeInstance = fn.assign(new _AltStore2.default(alt, store, store.state !== undefined ? store.state : store, StoreModel), utils.getInternalMethods(StoreModel), config.publicMethods, { displayName: key }); + + return storeInstance; +} + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __webpack_require__) { - 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; } +"use strict"; - 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; } - function doSetState(store, storeInstance, state) { - if (!state) { - return; - } +Object.defineProperty(exports, "__esModule", { + value: true +}); - var config = storeInstance.StoreModel.config; - - - var nextState = fn.isFunction(state) ? state(storeInstance.state) : state; - - storeInstance.state = config.setState.call(store, storeInstance.state, nextState); - - if (!store.alt.dispatcher.isDispatching()) { - store.emitChange(); - } - } - - function createPrototype(proto, alt, key, extras) { - return fn.assign(proto, _StoreMixin2['default'], { - displayName: key, - alt: alt, - dispatcher: alt.dispatcher, - preventDefault: function () { - function preventDefault() { - this.getInstance().preventDefault = true; - } - - return preventDefault; - }(), - - boundListeners: [], - lifecycleEvents: {}, - actionListeners: {}, - publicMethods: {}, - handlesOwnErrors: false - }, extras); - } - - function createStoreConfig(globalConfig, StoreModel) { - StoreModel.config = fn.assign({ - getState: function () { - function getState(state) { - if (Array.isArray(state)) { - return state.slice(); - } else if (fn.isMutableObject(state)) { - return fn.assign({}, state); - } - - return state; - } - - return getState; - }(), - setState: function () { - function setState(currentState, nextState) { - if (fn.isMutableObject(nextState)) { - return fn.assign(currentState, nextState); - } - return nextState; - } - - return setState; - }() - }, globalConfig, StoreModel.config); - } - - function transformStore(transforms, StoreModel) { - return transforms.reduce(function (Store, transform) { - return transform(Store); - }, StoreModel); - } - - function createStoreFromObject(alt, StoreModel, key) { - var storeInstance = void 0; - - var StoreProto = createPrototype({}, alt, key, fn.assign({ - getInstance: function () { - function getInstance() { - return storeInstance; - } - - return getInstance; - }(), - setState: function () { - function setState(nextState) { - doSetState(this, storeInstance, nextState); - } - - return setState; - }() - }, StoreModel)); - - // bind the store listeners - /* istanbul ignore else */ - if (StoreProto.bindListeners) { - _StoreMixin2['default'].bindListeners.call(StoreProto, StoreProto.bindListeners); - } - /* istanbul ignore else */ - if (StoreProto.observe) { - _StoreMixin2['default'].bindListeners.call(StoreProto, StoreProto.observe(alt)); - } - - // bind the lifecycle events - /* istanbul ignore else */ - if (StoreProto.lifecycle) { - fn.eachObject(function (eventName, event) { - _StoreMixin2['default'].on.call(StoreProto, eventName, event); - }, [StoreProto.lifecycle]); - } - - // create the instance and fn.assign the public methods to the instance - storeInstance = fn.assign(new _AltStore2['default'](alt, StoreProto, StoreProto.state !== undefined ? StoreProto.state : {}, StoreModel), StoreProto.publicMethods, { - displayName: key, - config: StoreModel.config - }); - - return storeInstance; - } - - function createStoreFromClass(alt, StoreModel, key) { - var storeInstance = void 0; - var config = StoreModel.config; - - // Creating a class here so we don't overload the provided store's - // prototype with the mixin behaviour and I'm extending from StoreModel - // so we can inherit any extensions from the provided store. - - var Store = function (_StoreModel) { - _inherits(Store, _StoreModel); - - function Store() { - _classCallCheck(this, Store); - - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - return _possibleConstructorReturn(this, _StoreModel.call.apply(_StoreModel, [this].concat(args))); - } - - return Store; - }(StoreModel); - - createPrototype(Store.prototype, alt, key, { - type: 'AltStore', - getInstance: function () { - function getInstance() { - return storeInstance; - } - - return getInstance; - }(), - setState: function () { - function setState(nextState) { - doSetState(this, storeInstance, nextState); - } - - return setState; - }() - }); - - for (var _len = arguments.length, argsForClass = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { - argsForClass[_key - 3] = arguments[_key]; - } - - var store = new (Function.prototype.bind.apply(Store, [null].concat(argsForClass)))(); - - /* istanbul ignore next */ - if (config.bindListeners) store.bindListeners(config.bindListeners); - /* istanbul ignore next */ - if (config.datasource) store.registerAsync(config.datasource); - - storeInstance = fn.assign(new _AltStore2['default'](alt, store, store.state !== undefined ? store.state : store, StoreModel), utils.getInternalMethods(StoreModel), config.publicMethods, { displayName: key }); - - return storeInstance; - } - -/***/ }, -/* 9 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - Object.defineProperty(exports, "__esModule", { - value: true - }); - - 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; }; - - exports.getInternalMethods = getInternalMethods; - exports.getPrototypeChain = getPrototypeChain; - exports.warn = warn; - exports.uid = uid; - exports.formatAsConstant = formatAsConstant; - exports.dispatchIdentity = dispatchIdentity; - exports.fsa = fsa; - exports.dispatch = dispatch; - - var _functions = __webpack_require__(7); - - var fn = _interopRequireWildcard(_functions); - - function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } - - /*eslint-disable*/ - var builtIns = Object.getOwnPropertyNames(NoopClass); - var builtInProto = Object.getOwnPropertyNames(NoopClass.prototype); - /*eslint-enable*/ - - function getInternalMethods(Obj, isProto) { - var excluded = isProto ? builtInProto : builtIns; - var obj = isProto ? Obj.prototype : Obj; - return Object.getOwnPropertyNames(obj).reduce(function (value, m) { - if (excluded.indexOf(m) !== -1) { - return value; - } - - value[m] = obj[m]; - return value; - }, {}); - } - - function getPrototypeChain(Obj) { - var methods = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; - - return Obj === Function.prototype ? methods : getPrototypeChain(Object.getPrototypeOf(Obj), fn.assign(getInternalMethods(Obj, true), methods)); - } - - function warn(msg) { - /* istanbul ignore else */ - /*eslint-disable*/ - if (typeof console !== 'undefined') { - console.warn(new ReferenceError(msg)); - } - /*eslint-enable*/ - } - - function uid(container, name) { - var count = 0; - var key = name; - while (Object.hasOwnProperty.call(container, key)) { - key = name + String(++count); - } - return key; - } - - function formatAsConstant(name) { - return name.replace(/[a-z]([A-Z])/g, function (i) { - return String(i[0]) + '_' + String(i[1].toLowerCase()); - }).toUpperCase(); - } - - function dispatchIdentity(x) { - if (x === undefined) return null; - - for (var _len = arguments.length, a = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - a[_key - 1] = arguments[_key]; - } - - return a.length ? [x].concat(a) : x; - } - - function fsa(id, type, payload, details) { - return { - type: type, - payload: payload, - meta: _extends({ - dispatchId: id - }, details), - - id: id, - action: type, - data: payload, - details: details - }; - } - - function dispatch(id, actionObj, payload, alt) { - var data = actionObj.dispatch(payload); - if (data === undefined) return null; - - var type = actionObj.id; - var namespace = type; - var name = type; - var details = { id: type, namespace: namespace, name: name }; - - var dispatchLater = function dispatchLater(x) { - return alt.dispatch(type, x, details); - }; - - if (fn.isFunction(data)) return data(dispatchLater, alt); - - // XXX standardize this - return alt.dispatcher.dispatch(fsa(id, type, data, details)); - } - - /* istanbul ignore next */ - function NoopClass() {} - -/***/ }, -/* 10 */ -/***/ function(module, exports, __webpack_require__) { +var _transmitter = __webpack_require__(3); + +var _transmitter2 = _interopRequireDefault(_transmitter); + +var _functions = __webpack_require__(0); + +var fn = _interopRequireWildcard(_functions); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +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"); } } + +var AltStore = function () { + function AltStore(alt, model, state, StoreModel) { + var _this = this; + + _classCallCheck(this, AltStore); + + var lifecycleEvents = model.lifecycleEvents; + this.transmitter = (0, _transmitter2.default)(); + this.lifecycle = function (event, x) { + if (lifecycleEvents[event]) lifecycleEvents[event].publish(x); + }; + this.state = state; + + this.alt = alt; + this.preventDefault = false; + this.displayName = model.displayName; + this.boundListeners = model.boundListeners; + this.StoreModel = StoreModel; + this.reduce = model.reduce || function (x) { + return x; + }; + this.subscriptions = []; + + var output = model.output || function (x) { + return x; + }; + + this.emitChange = function () { + return _this.transmitter.publish(output(_this.state)); + }; + + var handleDispatch = function handleDispatch(f, payload) { + try { + return f(); + } catch (e) { + if (model.handlesOwnErrors) { + _this.lifecycle('error', { + error: e, + payload: payload, + state: _this.state + }); + return false; + } + + throw e; + } + }; + + fn.assign(this, model.publicMethods); + + // Register dispatcher + this.dispatchToken = alt.dispatcher.register(function (payload) { + _this.preventDefault = false; + + _this.lifecycle('beforeEach', { + payload: payload, + state: _this.state + }); + + var actionHandlers = model.actionListeners[payload.action]; + + if (actionHandlers || model.otherwise) { + var result = void 0; + + if (actionHandlers) { + result = handleDispatch(function () { + return actionHandlers.filter(Boolean).every(function (handler) { + return handler.call(model, payload.data, payload.action) !== false; + }); + }, payload); + } else { + result = handleDispatch(function () { + model.otherwise(payload.data, payload.action); + }, payload); + } + if (result !== false && !_this.preventDefault) _this.emitChange(); + } + + if (model.reduce) { + handleDispatch(function () { + var value = model.reduce(_this.state, payload); + if (value !== undefined) _this.state = value; + }, payload); + if (!_this.preventDefault) _this.emitChange(); + } + + _this.lifecycle('afterEach', { + payload: payload, + state: _this.state + }); + }); + + this.lifecycle('init'); + } + + AltStore.prototype.listen = function listen(cb) { + var _this2 = this; + + if (!fn.isFunction(cb)) throw new TypeError('listen expects a function'); + + var _transmitter$subscrib = this.transmitter.subscribe(cb), + dispose = _transmitter$subscrib.dispose; + + this.subscriptions.push({ cb: cb, dispose: dispose }); + return function () { + _this2.lifecycle('unlisten'); + dispose(); + }; + }; + + AltStore.prototype.unlisten = function unlisten(cb) { + this.lifecycle('unlisten'); + this.subscriptions.filter(function (subscription) { + return subscription.cb === cb; + }).forEach(function (subscription) { + return subscription.dispose(); + }); + }; + + AltStore.prototype.getState = function getState() { + return this.StoreModel.config.getState.call(this, this.state); + }; + + return AltStore; +}(); + +exports.default = AltStore; +module.exports = exports['default']; + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __webpack_require__) { - 'use strict'; - - Object.defineProperty(exports, "__esModule", { - value: true - }); - - var _functions = __webpack_require__(7); - - var fn = _interopRequireWildcard(_functions); - - var _transmitter = __webpack_require__(11); - - var _transmitter2 = _interopRequireDefault(_transmitter); - - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - - function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - - var AltStore = function () { - function AltStore(alt, model, state, StoreModel) { - var _this = this; +"use strict"; - _classCallCheck(this, AltStore); - var lifecycleEvents = model.lifecycleEvents; - this.transmitter = (0, _transmitter2['default'])(); - this.lifecycle = function (event, x) { - if (lifecycleEvents[event]) lifecycleEvents[event].publish(x); - }; - this.state = state; +Object.defineProperty(exports, "__esModule", { + value: true +}); - this.alt = alt; - this.preventDefault = false; - this.displayName = model.displayName; - this.boundListeners = model.boundListeners; - this.StoreModel = StoreModel; - this.reduce = model.reduce || function (x) { - return x; - }; - this.subscriptions = []; - - var output = model.output || function (x) { - return x; - }; - - this.emitChange = function () { - return _this.transmitter.publish(output(_this.state)); - }; - - var handleDispatch = function handleDispatch(f, payload) { - try { - return f(); - } catch (e) { - if (model.handlesOwnErrors) { - _this.lifecycle('error', { - error: e, - payload: payload, - state: _this.state - }); - return false; - } - - throw e; - } - }; - - fn.assign(this, model.publicMethods); - - // Register dispatcher - this.dispatchToken = alt.dispatcher.register(function (payload) { - _this.preventDefault = false; - - _this.lifecycle('beforeEach', { - payload: payload, - state: _this.state - }); - - var actionHandlers = model.actionListeners[payload.action]; - - if (actionHandlers || model.otherwise) { - var result = void 0; - - if (actionHandlers) { - result = handleDispatch(function () { - return actionHandlers.filter(Boolean).every(function (handler) { - return handler.call(model, payload.data, payload.action) !== false; - }); - }, payload); - } else { - result = handleDispatch(function () { - return model.otherwise(payload.data, payload.action); - }, payload); - } - - if (result !== false && !_this.preventDefault) _this.emitChange(); - } - - if (model.reduce) { - handleDispatch(function () { - var value = model.reduce(_this.state, payload); - if (value !== undefined) _this.state = value; - }, payload); - if (!_this.preventDefault) _this.emitChange(); - } - - _this.lifecycle('afterEach', { - payload: payload, - state: _this.state - }); - }); - - this.lifecycle('init'); - } - - AltStore.prototype.listen = function () { - function listen(cb) { - var _this2 = this; - - if (!fn.isFunction(cb)) throw new TypeError('listen expects a function'); - - var _transmitter$subscrib = this.transmitter.subscribe(cb); - - var dispose = _transmitter$subscrib.dispose; - - this.subscriptions.push({ cb: cb, dispose: dispose }); - return function () { - _this2.lifecycle('unlisten'); - dispose(); - }; - } - - return listen; - }(); - - AltStore.prototype.unlisten = function () { - function unlisten(cb) { - this.lifecycle('unlisten'); - this.subscriptions.filter(function (subscription) { - return subscription.cb === cb; - }).forEach(function (subscription) { - return subscription.dispose(); - }); - } - - return unlisten; - }(); - - AltStore.prototype.getState = function () { - function getState() { - return this.StoreModel.config.getState.call(this, this.state); - } - - return getState; - }(); - - return AltStore; - }(); - - exports['default'] = AltStore; - module.exports = exports['default']; - -/***/ }, -/* 11 */ -/***/ function(module, exports) { - - "use strict"; - - function transmitter() { - var subscriptions = []; - var nowDispatching = false; - var toUnsubscribe = {}; - - var unsubscribe = function unsubscribe(onChange) { - var id = subscriptions.indexOf(onChange); - if (id < 0) return; - if (nowDispatching) { - toUnsubscribe[id] = onChange; - return; - } - subscriptions.splice(id, 1); - }; - - var subscribe = function subscribe(onChange) { - var id = subscriptions.push(onChange); - var dispose = function dispose() { - return unsubscribe(onChange); - }; - return { dispose: dispose }; - }; - - var publish = function publish() { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - nowDispatching = true; - try { - subscriptions.forEach(function (subscription, id) { - return toUnsubscribe[id] || subscription.apply(undefined, args); - }); - } finally { - nowDispatching = false; - Object.keys(toUnsubscribe).forEach(function (id) { - return unsubscribe(toUnsubscribe[id]); - }); - toUnsubscribe = {}; - } - }; - - return { - publish: publish, - subscribe: subscribe, - $subscriptions: subscriptions - }; - } - - module.exports = transmitter; - -/***/ }, -/* 12 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - Object.defineProperty(exports, "__esModule", { - value: true - }); - - var _transmitter = __webpack_require__(11); - - var _transmitter2 = _interopRequireDefault(_transmitter); - - var _functions = __webpack_require__(7); - - var fn = _interopRequireWildcard(_functions); - - function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } - - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } - - var StoreMixin = { - waitFor: function () { - function waitFor() { - for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) { - sources[_key] = arguments[_key]; - } - - if (!sources.length) { - throw new ReferenceError('Dispatch tokens not provided'); - } - - var sourcesArray = sources; - if (sources.length === 1) { - sourcesArray = Array.isArray(sources[0]) ? sources[0] : sources; - } - - var tokens = sourcesArray.map(function (source) { - return source.dispatchToken || source; - }); - - this.dispatcher.waitFor(tokens); - } - - return waitFor; - }(), - exportAsync: function () { - function exportAsync(asyncMethods) { - this.registerAsync(asyncMethods); - } - - return exportAsync; - }(), - registerAsync: function () { - function registerAsync(asyncDef) { - var _this = this; - - var loadCounter = 0; - - var asyncMethods = fn.isFunction(asyncDef) ? asyncDef(this.alt) : asyncDef; - - var toExport = Object.keys(asyncMethods).reduce(function (publicMethods, methodName) { - var desc = asyncMethods[methodName]; - var spec = fn.isFunction(desc) ? desc(_this) : desc; - - var validHandlers = ['success', 'error', 'loading']; - validHandlers.forEach(function (handler) { - if (spec[handler] && !spec[handler].id) { - throw new Error(String(handler) + ' handler must be an action function'); - } - }); - - publicMethods[methodName] = function () { - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } - - var state = _this.getInstance().getState(); - var value = spec.local && spec.local.apply(spec, [state].concat(args)); - var shouldFetch = spec.shouldFetch ? spec.shouldFetch.apply(spec, [state].concat(args)) - /*eslint-disable*/ - : value == null; - /*eslint-enable*/ - var intercept = spec.interceptResponse || function (x) { - return x; - }; - - var makeActionHandler = function () { - function makeActionHandler(action, isError) { - return function (x) { - var fire = function () { - function fire() { - loadCounter -= 1; - action(intercept(x, action, args)); - if (isError) throw x; - return x; - } - - return fire; - }(); - return _this.alt.trapAsync ? function () { - return fire(); - } : fire(); - }; - } - - return makeActionHandler; - }(); - - // if we don't have it in cache then fetch it - if (shouldFetch) { - loadCounter += 1; - /* istanbul ignore else */ - if (spec.loading) spec.loading(intercept(null, spec.loading, args)); - return spec.remote.apply(spec, [state].concat(args)).then(makeActionHandler(spec.success), makeActionHandler(spec.error, 1)); - } - - // otherwise emit the change now - _this.emitChange(); - return value; - }; - - return publicMethods; - }, {}); - - this.exportPublicMethods(toExport); - this.exportPublicMethods({ - isLoading: function () { - function isLoading() { - return loadCounter > 0; - } - - return isLoading; - }() - }); - } - - return registerAsync; - }(), - exportPublicMethods: function () { - function exportPublicMethods(methods) { - var _this2 = this; - - fn.eachObject(function (methodName, value) { - if (!fn.isFunction(value)) { - throw new TypeError('exportPublicMethods expects a function'); - } - - _this2.publicMethods[methodName] = value; - }, [methods]); - } - - return exportPublicMethods; - }(), - emitChange: function () { - function emitChange() { - this.getInstance().emitChange(); - } - - return emitChange; - }(), - on: function () { - function on(lifecycleEvent, handler) { - if (lifecycleEvent === 'error') this.handlesOwnErrors = true; - var bus = this.lifecycleEvents[lifecycleEvent] || (0, _transmitter2['default'])(); - this.lifecycleEvents[lifecycleEvent] = bus; - return bus.subscribe(handler.bind(this)); - } - - return on; - }(), - bindAction: function () { - function bindAction(symbol, handler) { - if (!symbol) { - throw new ReferenceError('Invalid action reference passed in'); - } - if (!fn.isFunction(handler)) { - throw new TypeError('bindAction expects a function'); - } - - // You can pass in the constant or the function itself - var key = symbol.id ? symbol.id : symbol; - this.actionListeners[key] = this.actionListeners[key] || []; - this.actionListeners[key].push(handler.bind(this)); - this.boundListeners.push(key); - } - - return bindAction; - }(), - bindActions: function () { - function bindActions(actions) { - var _this3 = this; - - fn.eachObject(function (action, symbol) { - var matchFirstCharacter = /./; - var assumedEventHandler = action.replace(matchFirstCharacter, function (x) { - return 'on' + String(x[0].toUpperCase()); - }); - - if (_this3[action] && _this3[assumedEventHandler]) { - // If you have both action and onAction - throw new ReferenceError('You have multiple action handlers bound to an action: ' + (String(action) + ' and ' + String(assumedEventHandler))); - } - - var handler = _this3[action] || _this3[assumedEventHandler]; - if (handler) { - _this3.bindAction(symbol, handler); - } - }, [actions]); - } - - return bindActions; - }(), - bindListeners: function () { - function bindListeners(obj) { - var _this4 = this; - - fn.eachObject(function (methodName, symbol) { - var listener = _this4[methodName]; - - if (!listener) { - throw new ReferenceError(String(methodName) + ' defined but does not exist in ' + String(_this4.displayName)); - } - - if (Array.isArray(symbol)) { - symbol.forEach(function (action) { - _this4.bindAction(action, listener); - }); - } else { - _this4.bindAction(symbol, listener); - } - }, [obj]); - } - - return bindListeners; - }() - }; - - exports['default'] = StoreMixin; - module.exports = exports['default']; - -/***/ }, +var _transmitter = __webpack_require__(3); + +var _transmitter2 = _interopRequireDefault(_transmitter); + +var _functions = __webpack_require__(0); + +var fn = _interopRequireWildcard(_functions); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var StoreMixin = { + waitFor: function waitFor() { + for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) { + sources[_key] = arguments[_key]; + } + + if (!sources.length) { + throw new ReferenceError('Dispatch tokens not provided'); + } + + var sourcesArray = sources; + if (sources.length === 1) { + sourcesArray = Array.isArray(sources[0]) ? sources[0] : sources; + } + + var tokens = sourcesArray.map(function (source) { + return source.dispatchToken || source; + }); + + this.dispatcher.waitFor(tokens); + }, + exportAsync: function exportAsync(asyncMethods) { + this.registerAsync(asyncMethods); + }, + registerAsync: function registerAsync(asyncDef) { + var _this = this; + + var loadCounter = 0; + + var asyncMethods = fn.isFunction(asyncDef) ? asyncDef(this.alt) : asyncDef; + + var toExport = Object.keys(asyncMethods).reduce(function (publicMethods, methodName) { + var desc = asyncMethods[methodName]; + var spec = fn.isFunction(desc) ? desc(_this) : desc; + + var validHandlers = ['success', 'error', 'loading']; + validHandlers.forEach(function (handler) { + if (spec[handler] && !spec[handler].id) { + throw new Error(handler + ' handler must be an action function'); + } + }); + + publicMethods[methodName] = function () { + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + //eslint-disable-line + var state = _this.getInstance().getState(); + var value = spec.local && spec.local.apply(spec, [state].concat(args)); + var shouldFetch = spec.shouldFetch ? spec.shouldFetch.apply(spec, [state].concat(args)) + /*eslint-disable*/ + : value == null; + /* eslint-enable */ + var intercept = spec.interceptResponse || function (x) { + return x; + }; + var makeActionHandler = function makeActionHandler(action, isError) { + return function (x) { + var fire = function fire() { + loadCounter -= 1; + action(intercept(x, action, args)); + if (isError) throw x; + return x; + }; + return _this.alt.trapAsync ? function () { + return fire(); + } : fire(); + }; + }; + + // if we don't have it in cache then fetch it + if (shouldFetch) { + loadCounter += 1; + /* istanbul ignore else */ + if (spec.loading) spec.loading(intercept(null, spec.loading, args)); + return spec.remote.apply(spec, [state].concat(args)).then(makeActionHandler(spec.success), makeActionHandler(spec.error, 1)); + } + + // otherwise emit the change now + _this.emitChange(); + return value; + }; + + return publicMethods; + }, {}); + + this.exportPublicMethods(toExport); + this.exportPublicMethods({ + isLoading: function isLoading() { + return loadCounter > 0; + } + }); + }, + exportPublicMethods: function exportPublicMethods(methods) { + var _this2 = this; + + fn.eachObject(function (methodName, value) { + if (!fn.isFunction(value)) { + throw new TypeError('exportPublicMethods expects a function'); + } + + _this2.publicMethods[methodName] = value; + }, [methods]); + }, + emitChange: function emitChange() { + this.getInstance().emitChange(); + }, + on: function on(lifecycleEvent, handler) { + if (lifecycleEvent === 'error') this.handlesOwnErrors = true; + var bus = this.lifecycleEvents[lifecycleEvent] || (0, _transmitter2.default)(); + this.lifecycleEvents[lifecycleEvent] = bus; + return bus.subscribe(handler.bind(this)); + }, + bindAction: function bindAction(symbol, handler) { + if (!symbol) { + throw new ReferenceError('Invalid action reference passed in'); + } + if (!fn.isFunction(handler)) { + throw new TypeError('bindAction expects a function'); + } + + // You can pass in the constant or the function itself + var key = symbol.id ? symbol.id : symbol; + this.actionListeners[key] = this.actionListeners[key] || []; + this.actionListeners[key].push(handler.bind(this)); + this.boundListeners.push(key); + }, + bindActions: function bindActions(actions) { + var _this3 = this; + + fn.eachObject(function (action, symbol) { + var matchFirstCharacter = /./; + var assumedEventHandler = action.replace(matchFirstCharacter, function (x) { + return 'on' + x[0].toUpperCase(); + }); + + if (_this3[action] && _this3[assumedEventHandler]) { + // If you have both action and onAction + throw new ReferenceError('You have multiple action handlers bound to an action: ' + (action + ' and ' + assumedEventHandler)); + } + + var handler = _this3[action] || _this3[assumedEventHandler]; + if (handler) { + _this3.bindAction(symbol, handler); + } + }, [actions]); + }, + bindListeners: function bindListeners(obj) { + var _this4 = this; + + fn.eachObject(function (methodName, symbol) { + var listener = _this4[methodName]; + + if (!listener) { + throw new ReferenceError(methodName + ' defined but does not exist in ' + _this4.displayName); + } + + if (Array.isArray(symbol)) { + symbol.forEach(function (action) { + _this4.bindAction(action, listener); + }); + } else { + _this4.bindAction(symbol, listener); + } + }, [obj]); + } +}; + +exports.default = StoreMixin; +module.exports = exports['default']; + +/***/ }), /* 13 */ -/***/ function(module, exports, __webpack_require__) { +/***/ (function(module, exports, __webpack_require__) { - 'use strict'; +"use strict"; - Object.defineProperty(exports, "__esModule", { - value: true - }); - exports['default'] = makeAction; - var _functions = __webpack_require__(7); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = makeAction; + +var _isPromise = __webpack_require__(14); - var fn = _interopRequireWildcard(_functions); +var _isPromise2 = _interopRequireDefault(_isPromise); - var _AltUtils = __webpack_require__(9); +var _functions = __webpack_require__(0); - var utils = _interopRequireWildcard(_AltUtils); +var fn = _interopRequireWildcard(_functions); - var _isPromise = __webpack_require__(14); +var _AltUtils = __webpack_require__(1); - var _isPromise2 = _interopRequireDefault(_isPromise); +var utils = _interopRequireWildcard(_AltUtils); - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - function makeAction(alt, namespace, name, implementation, obj) { - var id = utils.uid(alt._actionsRegistry, String(namespace) + '.' + String(name)); - alt._actionsRegistry[id] = 1; +function makeAction(alt, namespace, name, implementation, obj) { + var id = utils.uid(alt._actionsRegistry, namespace + '.' + name); + alt._actionsRegistry[id] = 1; //eslint-disable-line - var data = { id: id, namespace: namespace, name: name }; + var data = { id: id, namespace: namespace, name: name }; - var dispatch = function dispatch(payload) { - return alt.dispatch(id, payload, data); - }; + var dispatch = function dispatch(payload) { + return alt.dispatch(id, payload, data); + }; - // the action itself - var action = function action() { - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } + // the action itself + var action = function action() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } - var invocationResult = implementation.apply(obj, args); - var actionResult = invocationResult; + var invocationResult = implementation.apply(obj, args); + var actionResult = invocationResult; - // async functions that return promises should not be dispatched - if (invocationResult !== undefined && !(0, _isPromise2['default'])(invocationResult)) { - if (fn.isFunction(invocationResult)) { - // inner function result should be returned as an action result - actionResult = invocationResult(dispatch, alt); - } else { - dispatch(invocationResult); - } - } + // async functions that return promises should not be dispatched + if (invocationResult !== undefined && !(0, _isPromise2.default)(invocationResult)) { + if (fn.isFunction(invocationResult)) { + // inner function result should be returned as an action result + actionResult = invocationResult(dispatch, alt); + } else { + dispatch(invocationResult); + } + } - if (invocationResult === undefined) { - utils.warn('An action was called but nothing was dispatched'); - } + if (invocationResult === undefined) { + utils.warn('An action was called but nothing was dispatched'); + } - return actionResult; - }; - action.defer = function () { - for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { - args[_key2] = arguments[_key2]; - } + return actionResult; + }; + action.defer = function () { + for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } - return setTimeout(function () { - return action.apply(null, args); - }); - }; - action.id = id; - action.data = data; + return setTimeout(function () { + return action.apply(undefined, args); + }); + }; + action.id = id; + action.data = data; - // ensure each reference is unique in the namespace - var container = alt.actions[namespace]; - var namespaceId = utils.uid(container, name); - container[namespaceId] = action; + // ensure each reference is unique in the namespace + var container = alt.actions[namespace]; + var namespaceId = utils.uid(container, name); + container[namespaceId] = action; - // generate a constant - var constant = utils.formatAsConstant(namespaceId); - container[constant] = id; + // generate a constant + var constant = utils.formatAsConstant(namespaceId); + container[constant] = id; - return action; - } - module.exports = exports['default']; + return action; +} +module.exports = exports['default']; -/***/ }, +/***/ }), /* 14 */ -/***/ function(module, exports) { +/***/ (function(module, exports) { - module.exports = isPromise; +module.exports = isPromise; - function isPromise(obj) { - return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'; - } +function isPromise(obj) { + return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function'; +} -/***/ } -/******/ ]) -}); -; \ No newline at end of file +/***/ }) +/******/ ]); +}); \ No newline at end of file diff --git a/dist/alt.min.js b/dist/alt.min.js index f940e8bc..793cc235 100644 --- a/dist/alt.min.js +++ b/dist/alt.min.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.Alt=e():t.Alt=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return t[r].call(i.exports,i,i.exports,e),i.loaded=!0,i.exports}var n={};return e.m=t,e.c=n,e.p="",e(0)}([function(t,e,n){t.exports=n(6)},function(t,e){"use strict";function n(t){var e=t.constructor;return!!t&&"[object Object]"===Object.prototype.toString.call(t)&&o(e)&&!Object.isFrozen(t)&&(e instanceof e||"AltStore"===t.type)}function r(t,e){e.forEach(function(e){Object.keys(Object(e)).forEach(function(n){t(n,e[n])})})}function i(t){for(var e=arguments.length,n=Array(e>1?e-1:0),i=1;i1?e-1:0),r=1;r1)for(var n=1;n1?r-1:0),o=1;o2?i-2:0),a=2;a2?u-2:0),l=2;l2?n-2:0),i=2;i2?n-2:0),i=2;i0}return t}()})}return t}(),exportPublicMethods:function(){function t(t){var e=this;c.eachObject(function(t,n){if(!c.isFunction(n))throw new TypeError("exportPublicMethods expects a function");e.publicMethods[t]=n},[t])}return t}(),emitChange:function(){function t(){this.getInstance().emitChange()}return t}(),on:function(){function t(t,e){"error"===t&&(this.handlesOwnErrors=!0);var n=this.lifecycleEvents[t]||(0,a["default"])();return this.lifecycleEvents[t]=n,n.subscribe(e.bind(this))}return t}(),bindAction:function(){function t(t,e){if(!t)throw new ReferenceError("Invalid action reference passed in");if(!c.isFunction(e))throw new TypeError("bindAction expects a function");var n=t.id?t.id:t;this.actionListeners[n]=this.actionListeners[n]||[],this.actionListeners[n].push(e.bind(this)),this.boundListeners.push(n)}return t}(),bindActions:function(){function t(t){var e=this;c.eachObject(function(t,n){var r=/./,i=t.replace(r,function(t){return"on"+String(t[0].toUpperCase())});if(e[t]&&e[i])throw new ReferenceError("You have multiple action handlers bound to an action: "+(String(t)+" and "+String(i)));var o=e[t]||e[i];o&&e.bindAction(n,o)},[t])}return t}(),bindListeners:function(){function t(t){var e=this;c.eachObject(function(t,n){var r=e[t];if(!r)throw new ReferenceError(String(t)+" defined but does not exist in "+String(e.displayName));Array.isArray(n)?n.forEach(function(t){e.bindAction(t,r)}):e.bindAction(n,r)},[t])}return t}()};e["default"]=u,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function c(t,e,n){if(n){var r=e.StoreModel.config,i=g.isFunction(n)?n(e.state):n;e.state=r.setState.call(t,e.state,i),t.alt.dispatcher.isDispatching()||t.emitChange()}}function u(t,e,n,r){return g.assign(t,m["default"],{displayName:n,alt:e,dispatcher:e.dispatcher,preventDefault:function(){function t(){this.getInstance().preventDefault=!0}return t}(),boundListeners:[],lifecycleEvents:{},actionListeners:{},publicMethods:{},handlesOwnErrors:!1},r)}function f(t,e){e.config=g.assign({getState:function(){function t(t){return Array.isArray(t)?t.slice():g.isMutableObject(t)?g.assign({},t):t}return t}(),setState:function(){function t(t,e){return g.isMutableObject(e)?g.assign(t,e):e}return t}()},t,e.config)}function l(t,e){return t.reduce(function(t,e){return e(t)},e)}function p(t,e,n){var r=void 0,i=u({},t,n,g.assign({getInstance:function(){function t(){return r}return t}(),setState:function(){function t(t){c(this,r,t)}return t}()},e));return i.bindListeners&&m["default"].bindListeners.call(i,i.bindListeners),i.observe&&m["default"].bindListeners.call(i,i.observe(t)),i.lifecycle&&g.eachObject(function(t,e){m["default"].on.call(i,t,e)},[i.lifecycle]),r=g.assign(new w["default"](t,i,void 0!==i.state?i.state:{},e),i.publicMethods,{displayName:n,config:e.config})}function h(t,e,n){var r=void 0,i=e.config,f=function(t){function e(){o(this,e);for(var n=arguments.length,r=Array(n),i=0;i3?l-3:0),h=3;h1?e-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:{};return t===Function.prototype?e:i(Object.getPrototypeOf(t),d.assign(r(t,!0),e))}function o(t){"undefined"!=typeof console&&console.warn(new ReferenceError(t))}function s(t,e){for(var n=0,r=e;Object.hasOwnProperty.call(t,r);)n+=1,r=e+String(n);return r}function a(t){return t.replace(/[a-z]([A-Z])/g,function(t){return t[0]+"_"+t[1].toLowerCase()}).toUpperCase()}function c(t){if(void 0===t)return null;for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r0&&void 0!==arguments[0]?arguments[0]:{};s(this,t),this.config=e,this.serialize=e.serialize||JSON.stringify,this.deserialize=e.deserialize||JSON.parse,this.dispatcher=e.dispatcher||new a.Dispatcher,this.batchingFunction=e.batchingFunction||function(t){return t()},this.actions={global:{}},this.stores={},this.storeTransforms=e.storeTransforms||[],this.trapAsync=!1,this._actionsRegistry={},this._initSnapshot={},this._lastSnapshot={}}return t.prototype.dispatch=function(t,e,n){var r=this;this.batchingFunction(function(){var i=Math.random().toString(18).substr(2,16);if(t.hasOwnProperty("type")&&t.hasOwnProperty("payload")){var o={id:t.type,namespace:t.type,name:t.type};return r.dispatcher.dispatch(y.fsa(i,t.type,t.payload,o))}return t.id&&t.dispatch?y.dispatch(i,t,e,r):r.dispatcher.dispatch(y.fsa(i,t,e,n))})},t.prototype.createUnsavedStore=function(t){var e=t.displayName||"";h.createStoreConfig(this.config,t);for(var n=h.transformStore(this.storeTransforms,t),r=arguments.length,i=Array(r>1?r-1:0),o=1;o2?i-2:0),s=2;s1&&void 0!==arguments[1]?arguments[1]:{},r={},a=y.uid(this._actionsRegistry,t.displayName||t.name||"Unknown");if(l.isFunction(t)){l.assign(r,y.getPrototypeChain(t));for(var c=function(t){function e(){return s(this,e),i(this,t.apply(this,arguments))}return o(e,t),e.prototype.generateActions=function(){for(var t=arguments.length,e=Array(t),n=0;n2?u-2:0),p=2;p2?n-2:0),i=2;i2?n-2:0),i=2;i1&&void 0!==arguments[1]?arguments[1]:[];return(e.length?e:Object.keys(t.stores)).reduce(function(e,n){var r=n.displayName||n,i=t.stores[r],o=i.StoreModel.config;i.lifecycle("snapshot");var s=o.onSerialize&&o.onSerialize(i.state);return e[r]=s||i.getState(),e},{})}function o(t,e){var n=t.deserialize(t.serialize(t.stores[e].state));t._initSnapshot[e]=n,t._lastSnapshot[e]=n}function s(t,e,n){return n.reduce(function(t,n){var r=n.displayName||n;if(!e[r])throw new ReferenceError(r+" is not a valid store");return t[r]=e[r],t},{})}Object.defineProperty(e,"__esModule",{value:!0}),e.setAppState=r,e.snapshot=i,e.saveInitialSnapshot=o,e.filterSnapshots=s;var a=n(0),c=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}(a)},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function i(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function a(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function c(t,e,n){if(n){var r=e.StoreModel.config,i=b.isFunction(n)?n(e.state):n;e.state=r.setState.call(t,e.state,i),t.alt.dispatcher.isDispatching()||t.emitChange()}}function u(t,e,n,r){return b.assign(t,m.default,{displayName:n,alt:e,dispatcher:e.dispatcher,preventDefault:function(){this.getInstance().preventDefault=!0},boundListeners:[],lifecycleEvents:{},actionListeners:{},publicMethods:{},handlesOwnErrors:!1},r)}function f(t,e){e.config=b.assign({getState:function(t){return Array.isArray(t)?t.slice():b.isMutableObject(t)?b.assign({},t):t},setState:function(t,e){return b.isMutableObject(e)?b.assign(t,e):e}},t,e.config)}function l(t,e){return t.reduce(function(t,e){return e(t)},e)}function p(t,e,n){var r=void 0,i=u({},t,n,b.assign({getInstance:function(){return r},setState:function(t){c(this,r,t)}},e));return i.bindListeners&&m.default.bindListeners.call(i,i.bindListeners),i.observe&&m.default.bindListeners.call(i,i.observe(t)),i.lifecycle&&b.eachObject(function(t,e){m.default.on.call(i,t,e)},[i.lifecycle]),r=b.assign(new _.default(t,i,void 0!==i.state?i.state:{},e),i.publicMethods,{displayName:n,config:e.config})}function h(t,e,n){var r=void 0,i=e.config,f=function(t){function e(){return o(this,e),s(this,t.apply(this,arguments))}return a(e,t),e}(e);u(f.prototype,t,n,{type:"AltStore",getInstance:function(){return r},setState:function(t){c(this,r,t)}});for(var l=arguments.length,p=Array(l>3?l-3:0),h=3;h0}})},exportPublicMethods:function(t){var e=this;s.eachObject(function(t,n){if(!s.isFunction(n))throw new TypeError("exportPublicMethods expects a function");e.publicMethods[t]=n},[t])},emitChange:function(){this.getInstance().emitChange()},on:function(t,e){"error"===t&&(this.handlesOwnErrors=!0);var n=this.lifecycleEvents[t]||(0,i.default)();return this.lifecycleEvents[t]=n,n.subscribe(e.bind(this))},bindAction:function(t,e){if(!t)throw new ReferenceError("Invalid action reference passed in");if(!s.isFunction(e))throw new TypeError("bindAction expects a function");var n=t.id?t.id:t;this.actionListeners[n]=this.actionListeners[n]||[],this.actionListeners[n].push(e.bind(this)),this.boundListeners.push(n)},bindActions:function(t){var e=this;s.eachObject(function(t,n){var r=/./,i=t.replace(r,function(t){return"on"+t[0].toUpperCase()});if(e[t]&&e[i])throw new ReferenceError("You have multiple action handlers bound to an action: "+t+" and "+i);var o=e[t]||e[i];o&&e.bindAction(n,o)},[t])},bindListeners:function(t){var e=this;s.eachObject(function(t,n){var r=e[t];if(!r)throw new ReferenceError(t+" defined but does not exist in "+e.displayName);Array.isArray(n)?n.forEach(function(t){e.bindAction(t,r)}):e.bindAction(n,r)},[t])}};e.default=a,t.exports=e.default},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e.default=t,e}function i(t,e,n,r,i){var o=f.uid(t._actionsRegistry,e+"."+n);t._actionsRegistry[o]=1;var a={id:o,namespace:e,name:n},u=function(e){return t.dispatch(o,e,a)},l=function(){for(var e=arguments.length,n=Array(e),o=0;o", - "Jonathan Lehman " + "Jonathan Lehman ", + "Ryan King " ], "license": "MIT", "scripts": { @@ -58,6 +64,7 @@ "clean": "rimraf lib", "coverage": "npm run transpile-cover && babel-node node_modules/.bin/istanbul cover node_modules/.bin/_mocha -- -u exports -R tap --require test/babel test", "lint": "eslint src components", + "lint-fix": "eslint --fix src test scripts", "postversion": "git push && git push --tags", "prepublish": "npm run lint && npm run build", "pretest": "npm run clean && npm run transpile", @@ -66,8 +73,9 @@ "size": "npm run transpile; browserify flux.js > flux-build.js; uglifyjs -m -c 'comparisons=false,keep_fargs=true,unsafe=true,unsafe_comps=true,warnings=false' flux-build.js > flux-build.min.js", "test": "npm run test-node", "test-node": "babel-node node_modules/.bin/_mocha -u exports -R nyan test", + "test-node-debug": "babel-node node_modules/.bin/_mocha -u exports -R nyan test --inspect-brk", "transpile": "babel src --out-dir lib", - "transpile-cover": "babel src --out-dir lib --plugins external-helpers-2", + "transpile-cover": "babel src --out-dir lib --plugins external-helpers", "version": "npm run build" }, "files": [ diff --git a/scripts/this-dispatch-to-return.js b/scripts/this-dispatch-to-return.js index 7fc02bc6..440b999d 100644 --- a/scripts/this-dispatch-to-return.js +++ b/scripts/this-dispatch-to-return.js @@ -1,28 +1,39 @@ -const isDispatch = path => ( - path.value.type === 'CallExpression' && - path.value.callee.type === 'MemberExpression' && -// path.value.callee.object.type === 'ThisExpression' && // commented out so we support var self = this; self.dispatch(); - path.value.callee.property.type === 'Identifier' && - path.value.callee.property.name === 'dispatch' -) +const isDispatch = (path) => { + return ( + path.value.type === 'CallExpression' && + path.value.callee.type === 'MemberExpression' && + // path.value.callee.object.type === 'ThisExpression' && + // commented out so we support var self = this; self.dispatch(); + path.value.callee.property.type === 'Identifier' && + path.value.callee.property.name === 'dispatch' + ) +} -const isThisActions = path => ( - path.value.type === 'MemberExpression' && +const isThisActions = (path) => { + return ( + path.value.type === 'MemberExpression' && path.value.object.type === 'MemberExpression' && path.value.object.property.type === 'Identifier' && path.value.object.property.name === 'actions' -) + ) +} -const updateDispatchToReturn = j => (p) => { - j(p).replaceWith(j.returnStatement(p.value.arguments[0] || null)) +const updateDispatchToReturn = (j) => { + return (p) => { + j(p).replaceWith(j.returnStatement(p.value.arguments[0] || null)) + } } -const updateDispatchToCall = j => (p) => { - j(p).replaceWith(j.callExpression(j.identifier('dispatch'), p.value.arguments)) +const updateDispatchToCall = (j) => { + return (p) => { + j(p).replaceWith(j.callExpression(j.identifier('dispatch'), p.value.arguments)) + } } -const updateToJustThis = j => (p) => { - j(p).replaceWith(j.memberExpression(p.value.object.object, p.value.property)) +const updateToJustThis = (j) => { + return (p) => { + j(p).replaceWith(j.memberExpression(p.value.object.object, p.value.property)) + } } const findDispatches = (j, p) => { @@ -61,12 +72,13 @@ module.exports = (file, api) => { // find all dispatches that are inside the function const dispatches = findDispatches(j, p).size() - const withinParent = findDispatches(j, p).filter(x => x.parent.parent.parent.value === p.value).size() + const withinParent = findDispatches(j, p).filter((x) => { + return x.parent.parent.parent.value === p.value + }).size() if (withinParent === 0 && dispatches > 0) { replaceFunction(j, p) findDispatches(j, p).forEach(updateDispatchToCall(j)) - } else if (dispatches === 0) { const hasReturn = j(p).find(j.ReturnStatement).size() > 0 if (hasReturn) { @@ -75,22 +87,19 @@ module.exports = (file, api) => { console.warn('This function does not dispatch?', 'at line', p.parent.value.loc.start.line) } - // if there are multiple dispatches happening then we'll need to return a - // dispatch function and update this.dispatch to a dispatch call + // if there are multiple dispatches happening then we'll need to return a + // dispatch function and update this.dispatch to a dispatch call } else if (dispatches > 1) { replaceFunction(j, p) findDispatches(j, p).forEach(updateDispatchToCall(j)) - - // if there's a single dispatch then it's ok to return to dispatch - } else { + // if there's a single dispatch then it's ok to return to dispatch + } else if (p.value.body.body.length === 1) { // if its the only statement within the function - if (p.value.body.body.length === 1) { - findDispatches(j, p).forEach(updateDispatchToReturn(j)) + findDispatches(j, p).forEach(updateDispatchToReturn(j)) + } else { // otherwise lets run the function - } else { - replaceFunction(j, p) - findDispatches(j, p).forEach(updateDispatchToCall(j)) - } + replaceFunction(j, p) + findDispatches(j, p).forEach(updateDispatchToCall(j)) } // Also find any mentions to `this.actions` diff --git a/src/actions/index.js b/src/actions/index.js index 41e4b8f7..44d917cf 100644 --- a/src/actions/index.js +++ b/src/actions/index.js @@ -1,14 +1,14 @@ +import isPromise from 'is-promise' import * as fn from '../functions' import * as utils from '../utils/AltUtils' -import isPromise from 'is-promise' export default function makeAction(alt, namespace, name, implementation, obj) { const id = utils.uid(alt._actionsRegistry, `${namespace}.${name}`) - alt._actionsRegistry[id] = 1 + alt._actionsRegistry[id] = 1; //eslint-disable-line const data = { id, namespace, name } - const dispatch = (payload) => alt.dispatch(id, payload, data) + const dispatch = (payload) => { return alt.dispatch(id, payload, data) } // the action itself const action = (...args) => { @@ -31,7 +31,7 @@ export default function makeAction(alt, namespace, name, implementation, obj) { return actionResult } - action.defer = (...args) => setTimeout(() => action.apply(null, args)) + action.defer = (...args) => { return setTimeout(() => { return action(...args) }) } action.id = id action.data = data diff --git a/src/functions.js b/src/functions.js index be30bfbf..b4587cc3 100644 --- a/src/functions.js +++ b/src/functions.js @@ -1,4 +1,4 @@ -export const isFunction = x => typeof x === 'function' +export const isFunction = (x) => { return typeof x === 'function' } export function isMutableObject(target) { const Ctor = target.constructor @@ -25,6 +25,8 @@ export function eachObject(f, o) { } export function assign(target, ...source) { - eachObject((key, value) => target[key] = value, source) + eachObject((key, value) => { + target[key] = value; //eslint-disable-line + }, source) return target } diff --git a/src/index.js b/src/index.js index cb263633..6117f8ce 100644 --- a/src/index.js +++ b/src/index.js @@ -13,7 +13,7 @@ class Alt { this.serialize = config.serialize || JSON.stringify this.deserialize = config.deserialize || JSON.parse this.dispatcher = config.dispatcher || new Dispatcher() - this.batchingFunction = config.batchingFunction || (callback => callback()) + this.batchingFunction = config.batchingFunction || ((callback) => { return callback() }) this.actions = { global: {} } this.stores = {} this.storeTransforms = config.storeTransforms || [] @@ -32,10 +32,10 @@ class Alt { const fsaDetails = { id: action.type, namespace: action.type, - name: action.type, + name: action.type } return this.dispatcher.dispatch( - utils.fsa(id, action.type, action.payload, fsaDetails) + utils.fsa(id, action.type, action.payload, fsaDetails), ) } @@ -69,7 +69,7 @@ class Alt { if (this.stores[key]) { utils.warn( `A store named ${key} already exists, double check your store ` + - `names or pass in your own custom identifier for each store` + 'names or pass in your own custom identifier for each store', ) } else { utils.warn('Store name was not specified') @@ -91,7 +91,7 @@ class Alt { generateActions(...actionNames) { const actions = { name: 'global' } return this.createActions(actionNames.reduce((obj, action) => { - obj[action] = utils.dispatchIdentity + obj[action] = utils.dispatchIdentity; //eslint-disable-line return obj }, actions)) } @@ -104,23 +104,18 @@ class Alt { const actions = {} const key = utils.uid( this._actionsRegistry, - ActionsClass.displayName || ActionsClass.name || 'Unknown' + ActionsClass.displayName || ActionsClass.name || 'Unknown', ) if (fn.isFunction(ActionsClass)) { fn.assign(actions, utils.getPrototypeChain(ActionsClass)) class ActionsGenerator extends ActionsClass { - constructor(...args) { - super(...args) - } - generateActions(...actionNames) { actionNames.forEach((actionName) => { actions[actionName] = utils.dispatchIdentity }) } } - fn.assign(actions, new ActionsGenerator(...argsForConstructor)) } else { fn.assign(actions, ActionsClass) @@ -130,22 +125,22 @@ class Alt { fn.eachObject((actionName, action) => { if (!fn.isFunction(action)) { - exportObj[actionName] = action + exportObj[actionName] = action; //eslint-disable-line return } // create the action - exportObj[actionName] = makeAction( + exportObj[actionName] = makeAction( //eslint-disable-line this, key, actionName, action, - exportObj + exportObj, ) // generate a constant const constant = utils.formatAsConstant(actionName) - exportObj[constant] = exportObj[actionName].id + exportObj[constant] = exportObj[actionName].id; //eslint-disable-line }, [actions]) return exportObj @@ -161,20 +156,20 @@ class Alt { StateFunctions.setAppState( this, this.serialize(this._lastSnapshot), - storeInst => { + (storeInst) => { storeInst.lifecycle('rollback') storeInst.emitChange() - } + }, ) } recycle(...storeNames) { const initialSnapshot = storeNames.length ? StateFunctions.filterSnapshots( - this, - this._initSnapshot, - storeNames - ) + this, + this._initSnapshot, + storeNames, + ) : this._initSnapshot StateFunctions.setAppState( @@ -183,7 +178,7 @@ class Alt { (storeInst) => { storeInst.lifecycle('init') storeInst.emitChange() - } + }, ) } @@ -213,7 +208,7 @@ class Alt { addActions(name, ActionsClass, ...args) { this.actions[name] = Array.isArray(ActionsClass) - ? this.generateActions.apply(this, ActionsClass) + ? this.generateActions.apply(this, ActionsClass) //eslint-disable-line : this.createActions(ActionsClass, ...args) } diff --git a/src/store/AltStore.js b/src/store/AltStore.js index 66ee738f..0d584ecc 100644 --- a/src/store/AltStore.js +++ b/src/store/AltStore.js @@ -1,5 +1,5 @@ -import * as fn from '../functions' import transmitter from 'transmitter' +import * as fn from '../functions' class AltStore { constructor(alt, model, state, StoreModel) { @@ -15,12 +15,12 @@ class AltStore { this.displayName = model.displayName this.boundListeners = model.boundListeners this.StoreModel = StoreModel - this.reduce = model.reduce || (x => x) + this.reduce = model.reduce || ((x) => { return x }) this.subscriptions = [] - const output = model.output || (x => x) + const output = model.output || ((x) => { return x }) - this.emitChange = () => this.transmitter.publish(output(this.state)) + this.emitChange = () => { return this.transmitter.publish(output(this.state)) } const handleDispatch = (f, payload) => { try { @@ -30,7 +30,7 @@ class AltStore { this.lifecycle('error', { error: e, payload, - state: this.state, + state: this.state }) return false } @@ -47,7 +47,7 @@ class AltStore { this.lifecycle('beforeEach', { payload, - state: this.state, + state: this.state }) const actionHandlers = model.actionListeners[payload.action] @@ -63,10 +63,9 @@ class AltStore { }, payload) } else { result = handleDispatch(() => { - return model.otherwise(payload.data, payload.action) + model.otherwise(payload.data, payload.action) }, payload) } - if (result !== false && !this.preventDefault) this.emitChange() } @@ -80,7 +79,7 @@ class AltStore { this.lifecycle('afterEach', { payload, - state: this.state, + state: this.state }) }) @@ -100,8 +99,8 @@ class AltStore { unlisten(cb) { this.lifecycle('unlisten') this.subscriptions - .filter(subscription => subscription.cb === cb) - .forEach(subscription => subscription.dispose()) + .filter((subscription) => { return subscription.cb === cb }) + .forEach((subscription) => { return subscription.dispose() }) } getState() { diff --git a/src/store/StoreMixin.js b/src/store/StoreMixin.js index 9e88bb77..daf982f7 100644 --- a/src/store/StoreMixin.js +++ b/src/store/StoreMixin.js @@ -12,9 +12,7 @@ const StoreMixin = { sourcesArray = Array.isArray(sources[0]) ? sources[0] : sources } - const tokens = sourcesArray.map((source) => { - return source.dispatchToken || source - }) + const tokens = sourcesArray.map((source) => { return source.dispatchToken || source }) this.dispatcher.waitFor(tokens) }, @@ -41,16 +39,15 @@ const StoreMixin = { } }) - publicMethods[methodName] = (...args) => { + publicMethods[methodName] = (...args) => { //eslint-disable-line const state = this.getInstance().getState() const value = spec.local && spec.local(state, ...args) const shouldFetch = spec.shouldFetch ? spec.shouldFetch(state, ...args) /*eslint-disable*/ : value == null - /*eslint-enable*/ - const intercept = spec.interceptResponse || (x => x) - + /* eslint-enable */ + const intercept = spec.interceptResponse || ((x) => { return x }) const makeActionHandler = (action, isError) => { return (x) => { const fire = () => { @@ -59,7 +56,7 @@ const StoreMixin = { if (isError) throw x return x } - return this.alt.trapAsync ? () => fire() : fire() + return this.alt.trapAsync ? () => { return fire() } : fire() } } @@ -70,7 +67,7 @@ const StoreMixin = { if (spec.loading) spec.loading(intercept(null, spec.loading, args)) return spec.remote(state, ...args).then( makeActionHandler(spec.success), - makeActionHandler(spec.error, 1) + makeActionHandler(spec.error, 1), ) } @@ -84,7 +81,7 @@ const StoreMixin = { this.exportPublicMethods(toExport) this.exportPublicMethods({ - isLoading: () => loadCounter > 0, + isLoading: () => { return loadCounter > 0 } }) }, @@ -127,15 +124,13 @@ const StoreMixin = { bindActions(actions) { fn.eachObject((action, symbol) => { const matchFirstCharacter = /./ - const assumedEventHandler = action.replace(matchFirstCharacter, (x) => { - return `on${x[0].toUpperCase()}` - }) + const assumedEventHandler = action.replace(matchFirstCharacter, (x) => { return `on${x[0].toUpperCase()}` }) if (this[action] && this[assumedEventHandler]) { // If you have both action and onAction throw new ReferenceError( - `You have multiple action handlers bound to an action: ` + - `${action} and ${assumedEventHandler}` + 'You have multiple action handlers bound to an action: ' + + `${action} and ${assumedEventHandler}`, ) } @@ -152,7 +147,7 @@ const StoreMixin = { if (!listener) { throw new ReferenceError( - `${methodName} defined but does not exist in ${this.displayName}` + `${methodName} defined but does not exist in ${this.displayName}`, ) } @@ -164,7 +159,7 @@ const StoreMixin = { this.bindAction(symbol, listener) } }, [obj]) - }, + } } export default StoreMixin diff --git a/src/store/index.js b/src/store/index.js index 43c90f58..37ab368a 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -14,10 +14,10 @@ function doSetState(store, storeInstance, state) { ? state(storeInstance.state) : state - storeInstance.state = config.setState.call( + storeInstance.state = config.setState.call( //eslint-disable-line store, storeInstance.state, - nextState + nextState, ) if (!store.alt.dispatcher.isDispatching()) { @@ -28,7 +28,7 @@ function doSetState(store, storeInstance, state) { function createPrototype(proto, alt, key, extras) { return fn.assign(proto, StoreMixin, { displayName: key, - alt: alt, + alt, dispatcher: alt.dispatcher, preventDefault() { this.getInstance().preventDefault = true @@ -37,19 +37,18 @@ function createPrototype(proto, alt, key, extras) { lifecycleEvents: {}, actionListeners: {}, publicMethods: {}, - handlesOwnErrors: false, + handlesOwnErrors: false }, extras) } export function createStoreConfig(globalConfig, StoreModel) { - StoreModel.config = fn.assign({ + StoreModel.config = fn.assign({ //eslint-disable-line getState(state) { if (Array.isArray(state)) { return state.slice() } else if (fn.isMutableObject(state)) { return fn.assign({}, state) } - return state }, setState(currentState, nextState) { @@ -57,12 +56,12 @@ export function createStoreConfig(globalConfig, StoreModel) { return fn.assign(currentState, nextState) } return nextState - }, + } }, globalConfig, StoreModel.config) } export function transformStore(transforms, StoreModel) { - return transforms.reduce((Store, transform) => transform(Store), StoreModel) + return transforms.reduce((Store, transform) => { return transform(Store) }, StoreModel) } export function createStoreFromObject(alt, StoreModel, key) { @@ -74,7 +73,7 @@ export function createStoreFromObject(alt, StoreModel, key) { }, setState(nextState) { doSetState(this, storeInstance, nextState) - }, + } }, StoreModel)) // bind the store listeners @@ -107,13 +106,13 @@ export function createStoreFromObject(alt, StoreModel, key) { alt, StoreProto, StoreProto.state !== undefined ? StoreProto.state : {}, - StoreModel + StoreModel, ), StoreProto.publicMethods, { displayName: key, - config: StoreModel.config, - } + config: StoreModel.config + }, ) return storeInstance @@ -126,11 +125,7 @@ export function createStoreFromClass(alt, StoreModel, key, ...argsForClass) { // Creating a class here so we don't overload the provided store's // prototype with the mixin behaviour and I'm extending from StoreModel // so we can inherit any extensions from the provided store. - class Store extends StoreModel { - constructor(...args) { - super(...args) - } - } + class Store extends StoreModel {} createPrototype(Store.prototype, alt, key, { type: 'AltStore', @@ -139,14 +134,14 @@ export function createStoreFromClass(alt, StoreModel, key, ...argsForClass) { }, setState(nextState) { doSetState(this, storeInstance, nextState) - }, + } }) const store = new Store(...argsForClass) /* istanbul ignore next */ if (config.bindListeners) store.bindListeners(config.bindListeners) - /* istanbul ignore next */ + /* istanbul ignore next */ if (config.datasource) store.registerAsync(config.datasource) storeInstance = fn.assign( @@ -154,7 +149,7 @@ export function createStoreFromClass(alt, StoreModel, key, ...argsForClass) { alt, store, store.state !== undefined ? store.state : store, - StoreModel + StoreModel, ), utils.getInternalMethods(StoreModel), config.publicMethods, diff --git a/src/utils/AltUtils.js b/src/utils/AltUtils.js index d5f11fb7..bb1c763a 100644 --- a/src/utils/AltUtils.js +++ b/src/utils/AltUtils.js @@ -3,7 +3,7 @@ import * as fn from '../functions' /*eslint-disable*/ const builtIns = Object.getOwnPropertyNames(NoopClass) const builtInProto = Object.getOwnPropertyNames(NoopClass.prototype) -/*eslint-enable*/ +/* eslint-enable */ export function getInternalMethods(Obj, isProto) { const excluded = isProto ? builtInProto : builtIns @@ -13,7 +13,7 @@ export function getInternalMethods(Obj, isProto) { return value } - value[m] = obj[m] + value[m] = obj[m]; //eslint-disable-line return value }, {}) } @@ -22,9 +22,9 @@ export function getPrototypeChain(Obj, methods = {}) { return Obj === Function.prototype ? methods : getPrototypeChain( - Object.getPrototypeOf(Obj), - fn.assign(getInternalMethods(Obj, true), methods) - ) + Object.getPrototypeOf(Obj), + fn.assign(getInternalMethods(Obj, true), methods), + ) } export function warn(msg) { @@ -33,22 +33,21 @@ export function warn(msg) { if (typeof console !== 'undefined') { console.warn(new ReferenceError(msg)) } - /*eslint-enable*/ + /* eslint-enable */ } export function uid(container, name) { let count = 0 let key = name while (Object.hasOwnProperty.call(container, key)) { - key = name + String(++count) + count += 1 + key = name + String(count) } return key } export function formatAsConstant(name) { - return name.replace(/[a-z]([A-Z])/g, (i) => { - return `${i[0]}_${i[1].toLowerCase()}` - }).toUpperCase() + return name.replace(/[a-z]([A-Z])/g, (i) => { return `${i[0]}_${i[1].toLowerCase()}` }).toUpperCase() } export function dispatchIdentity(x, ...a) { @@ -62,13 +61,13 @@ export function fsa(id, type, payload, details) { payload, meta: { dispatchId: id, - ...details, + ...details }, id, action: type, data: payload, - details, + details } } @@ -81,11 +80,11 @@ export function dispatch(id, actionObj, payload, alt) { const name = type const details = { id: type, namespace, name } - const dispatchLater = x => alt.dispatch(type, x, details) + const dispatchLater = (x) => { return alt.dispatch(type, x, details) } if (fn.isFunction(data)) return data(dispatchLater, alt) - // XXX standardize this + // XXX standardize this return alt.dispatcher.dispatch(fsa(id, type, data, details)) } diff --git a/src/utils/StateFunctions.js b/src/utils/StateFunctions.js index 8293c742..9c589ae9 100644 --- a/src/utils/StateFunctions.js +++ b/src/utils/StateFunctions.js @@ -9,7 +9,7 @@ export function setAppState(instance, data, onStore) { const state = store.state if (config.onDeserialize) obj[key] = config.onDeserialize(value) || value if (fn.isMutableObject(state)) { - fn.eachObject(k => delete state[k], [state]) + fn.eachObject((k) => { return delete state[k] }, [state]) fn.assign(state, obj[key]) } else { store.state = obj[key] @@ -28,17 +28,17 @@ export function snapshot(instance, storeNames = []) { store.lifecycle('snapshot') const customSnapshot = config.onSerialize && config.onSerialize(store.state) - obj[storeName] = customSnapshot ? customSnapshot : store.getState() + obj[storeName] = customSnapshot || store.getState() //eslint-disable-line return obj }, {}) } export function saveInitialSnapshot(instance, key) { const state = instance.deserialize( - instance.serialize(instance.stores[key].state) + instance.serialize(instance.stores[key].state), ) - instance._initSnapshot[key] = state - instance._lastSnapshot[key] = state + instance._initSnapshot[key] = state //eslint-disable-line + instance._lastSnapshot[key] = state //eslint-disable-line } export function filterSnapshots(instance, state, stores) { @@ -47,7 +47,7 @@ export function filterSnapshots(instance, state, stores) { if (!state[storeName]) { throw new ReferenceError(`${storeName} is not a valid store`) } - obj[storeName] = state[storeName] + obj[storeName] = state[storeName] //eslint-disable-line return obj }, {}) } diff --git a/test/actions-dump-test.js b/test/actions-dump-test.js index faabd985..9682b105 100644 --- a/test/actions-dump-test.js +++ b/test/actions-dump-test.js @@ -1,10 +1,10 @@ -import Alt from '../' import { assert } from 'chai' +import Alt from '../' const alt = new Alt() alt.generateActions('one', 'two') -const test = alt.generateActions('three') +alt.generateActions('three') alt.generateActions('one') alt.createActions(class FooActions { @@ -13,7 +13,7 @@ alt.createActions(class FooActions { two() {} }) -const pojo = alt.createActions({ +alt.createActions({ displayName: 'Pojo', one() { }, two() { } @@ -24,16 +24,16 @@ alt.createActions({ two() { } }) -alt.createAction('test', function () { }) +alt.createAction('test', () => { }) export default { - 'actions obj'() { + 'actions obj': function () { assert.isObject(alt.actions, 'actions exist') assert.isFunction(alt.actions.global.test, 'test exists') assert(Object.keys(alt.actions.global).length === 10, 'global actions contain stuff from createAction and generateActions') assert(Object.keys(alt.actions.FooActions).length === 4, '2 actions namespaced on FooActions') assert.isObject(alt.actions.Pojo, 'pojo named action exists') - assert(Object.keys(alt.actions.Pojo).length == 4, 'pojo has 2 actions associated with it') + assert(Object.keys(alt.actions.Pojo).length === 4, 'pojo has 2 actions associated with it') assert.isDefined(alt.actions.global.three, 'three action is defined in global') @@ -41,5 +41,5 @@ export default { assert.isDefined(alt.actions.global.one1, 'one1 was created because of a name clash') assert.isDefined(alt.actions.global.THREE, 'the constant exists too') - }, + } } diff --git a/test/alt-config-object.js b/test/alt-config-object.js index f10f9567..b9176228 100644 --- a/test/alt-config-object.js +++ b/test/alt-config-object.js @@ -19,7 +19,7 @@ class MyStore { } export default { - 'custom dispatcher can be specified in alt config'() { + 'custom dispatcher can be specified in alt config': function () { class CustomDispatcher { waitFor() {} register() {} @@ -37,10 +37,10 @@ export default { assert.equal(typeof dispatcher.dispatch, 'function') }, - 'custom serialize/deserialize'() { + 'custom serialize/deserialize': function () { const CustomSerialize = (data) => { return Object.keys(data).reduce((obj, key) => { - obj[key] = {wrapper: data[key]} + obj[key] = { wrapper: data[key] } return obj }, {}) } @@ -53,7 +53,7 @@ export default { const alt = new Alt({ serialize: CustomSerialize, - deserialize: CustomDeserialize, + deserialize: CustomDeserialize }) alt.addStore('MyStore', MyStore) alt.addActions('MyActions', MyActions) @@ -61,12 +61,12 @@ export default { alt.getActions('MyActions').changeNumber() alt.rollback() - assert.deepEqual(snapshot, {MyStore: {wrapper: {number: 2, letter: 'a'}}}) - assert.deepEqual(alt.getStore('MyStore').getState(), {number: 2, letter: 'a'}) + assert.deepEqual(snapshot, { MyStore: { wrapper: { number: 2, letter: 'a' } } }) + assert.deepEqual(alt.getStore('MyStore').getState(), { number: 2, letter: 'a' }) }, - 'custom transforms'() { + 'custom transforms': function () { const alt = new Alt({ storeTransforms: [] }) assert.isArray(alt.storeTransforms) - }, + } } diff --git a/test/async-action-test.js b/test/async-action-test.js index 3d0756ac..035e2fa2 100644 --- a/test/async-action-test.js +++ b/test/async-action-test.js @@ -1,6 +1,6 @@ -import Alt from '../' import { assert } from 'chai' import isPromise from 'is-promise' +import Alt from '../' const alt = new Alt() @@ -38,15 +38,15 @@ export default { alt.recycle(store) }, - 'are not dispatched automatically'() { + 'are not dispatched automatically': function () { actions.fetch() assert(store.state.dispatched === false, 'async action is not automatically dispatched') }, - 'return the result of inner function invocation'() { + 'return the result of inner function invocation': function () { const promise = actions.fetchAndDispatch() assert(isPromise(promise), 'async action does not return the result of inner function invocation') assert(store.state.dispatched === true, 'async action is dispatched when the dispatch is invoked manually') - }, - }, + } + } } diff --git a/test/async-test.js b/test/async-test.js index cd2be64a..06076f4c 100644 --- a/test/async-test.js +++ b/test/async-test.js @@ -1,14 +1,14 @@ -import Alt from '../' import sinon from 'sinon' import { assert } from 'chai' import { Promise } from 'es6-promise' +import Alt from '../' const alt = new Alt() const StargazerActions = alt.generateActions( 'fetchingUsers', 'usersReceived', - 'failed' + 'failed', ) const fauxjax = sinon.stub().returns(Promise.resolve([1, 2, 3, 4])) @@ -16,7 +16,7 @@ const failjax = sinon.stub().returns(Promise.reject(new Error('things broke'))) const api = { remote(state) { }, - local(state) { }, + local(state) { } } const remote = sinon.stub(api, 'remote', (state, repo = state.repo) => { @@ -41,20 +41,20 @@ const StargazerSource = { alwaysFetchUsers: { remote, - local: () => true, + local: () => { return true }, loading: StargazerActions.fetchingUsers, success: StargazerActions.usersReceived, error: StargazerActions.failed, - shouldFetch: () => true + shouldFetch: () => { return true } }, neverFetchUsers: { remote, - local: () => false, + local: () => { return false }, loading: StargazerActions.fetchingUsers, success: StargazerActions.usersReceived, error: StargazerActions.failed, - shouldFetch: () => false + shouldFetch: () => { return false } }, fetchRepos: { @@ -109,7 +109,7 @@ const StargazerStore = alt.createStore(class { }) export default { - 'async': { + async: { beforeEach() { global.window = {} @@ -122,24 +122,24 @@ export default { delete global.window }, - 'methods are available'() { + 'methods are available': function () { assert.isFunction(StargazerStore.fetchUsers) assert.isFunction(StargazerStore.isLoading) }, - 'data source with no action'() { + 'data source with no action': function () { assert.throws(() => { - const Store = alt.createStore(class { + alt.createStore(class { constructor() { this.registerAsync({ - derp() { return { success: () => null } } + derp() { return { success: () => { return null } } } }) } }) }, Error, /handler must be an action function/) }, - 'loading state'(done) { + 'loading state': function (done) { const spy = sinon.spy() const begin = StargazerStore.listen(spy) @@ -172,7 +172,7 @@ export default { assert.ok(StargazerStore.isLoading()) }, - 'data available already'(done) { + 'data available already': function (done) { StargazerActions.usersReceived([1, 2, 3]) const spy = sinon.spy() @@ -194,7 +194,7 @@ export default { assert.notOk(StargazerStore.isLoading()) }, - 'errors'(done) { + errors(done) { const spy = sinon.spy() const count = StargazerStore.listen(spy) @@ -216,19 +216,19 @@ export default { assert.ok(StargazerStore.isLoading()) }, - 'shouldFetch is true'() { + 'shouldFetch is true': function () { StargazerStore.alwaysFetchUsers() assert.ok(StargazerStore.isLoading(), 'i am loading') assert.ok(remote.calledOnce, 'remote was called once') }, - 'shouldFetch is false'() { + 'shouldFetch is false': function () { StargazerStore.neverFetchUsers() assert.notOk(StargazerStore.isLoading(), 'loading now') assert(remote.callCount === 0, 'remote was not called') }, - 'multiple loads'(done) { + 'multiple loads': function (done) { const unsub = StargazerStore.listen((state) => { if (state.users === 'TESTTEST') { assert.notOk(StargazerStore.isLoading()) @@ -244,7 +244,7 @@ export default { assert.ok(StargazerStore.isLoading()) }, - 'as a function'() { + 'as a function': function () { const FauxSource = sinon.stub().returns({}) class FauxStore { @@ -261,7 +261,7 @@ export default { assert.isFunction(store.isLoading) }, - 'server rendering does not happen unless you lock alt'(done) { + 'server rendering does not happen unless you lock alt': function (done) { delete global.window const actions = alt.generateActions('test') @@ -273,7 +273,7 @@ export default { return Promise.resolve(true) }, success: actions.test, - error: actions.test, + error: actions.test } } @@ -302,6 +302,6 @@ export default { alt.trapAsync = false done() }) - }, + } } } diff --git a/test/babel/index.js b/test/babel/index.js index 97eca62d..4972926e 100644 --- a/test/babel/index.js +++ b/test/babel/index.js @@ -1,185 +1,185 @@ (function (global) { - var babelHelpers = global.babelHelpers = {}; + const babelHelpers = global.babelHelpers = {} //eslint-disable-line babelHelpers.jsx = (function () { - var REACT_ELEMENT_TYPE = typeof Symbol === "function" && Symbol.for && Symbol.for("react.element") || 0xeac7; + const REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol.for && Symbol.for('react.element') || 0xeac7 //eslint-disable-line return function createRawReactElement(type, props, key, children) { - var defaultProps = type && type.defaultProps; - var childrenLength = arguments.length - 3; + const defaultProps = type && type.defaultProps + const childrenLength = arguments.length - 3 if (!props && childrenLength !== 0) { - props = {}; + props = {} } if (props && defaultProps) { - for (var propName in defaultProps) { - if (props[propName] === void 0) { - props[propName] = defaultProps[propName]; + for (const propName in defaultProps) { + if (props[propName] === void 0) { //eslint-disable-line + props[propName] = defaultProps[propName] } } } else if (!props) { - props = defaultProps || {}; + props = defaultProps || {} } if (childrenLength === 1) { - props.children = children; + props.children = children } else if (childrenLength > 1) { - var childArray = Array(childrenLength); + const childArray = Array(childrenLength) - for (var i = 0; i < childrenLength; i++) { - childArray[i] = arguments[i + 3]; + for (let i = 0; i < childrenLength; i++) { + childArray[i] = arguments[i + 3] } - props.children = childArray; + props.children = childArray } return { $$typeof: REACT_ELEMENT_TYPE, - type: type, - key: key === undefined ? null : '' + key, + type, + key: key === undefined ? null : `${key}`, ref: null, - props: props, + props, _owner: null - }; - }; - })(); + } + } + }()) babelHelpers.asyncToGenerator = function (fn) { return function () { - var gen = fn.apply(this, arguments); - return new Promise(function (resolve, reject) { + const gen = fn.apply(this, arguments) + return new Promise(((resolve, reject) => { function step(key, arg) { + let info = null + let value = null try { - var info = gen[key](arg); - var value = info.value; + info = gen[key](arg) + value = info.value } catch (error) { - reject(error); - return; + reject(error) + return } if (info.done) { - resolve(value); + resolve(value) } else { - Promise.resolve(value).then(function (value) { - step("next", value); - }, function (err) { - step("throw", err); - }); + Promise.resolve(value).then((promiseValue) => { + step('next', promiseValue) + }, (err) => { + step('throw', err) + }) } } - - step("next"); - }); - }; - }; + step('next') + })) + } + } babelHelpers.classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); + throw new TypeError('Cannot call a class as a function') } - }; + } babelHelpers.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); + for (let i = 0; i < props.length; i++) { + const 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; - }; - })(); + if (protoProps) defineProperties(Constructor.prototype, protoProps) + if (staticProps) defineProperties(Constructor, staticProps) + return Constructor + } + }()) babelHelpers.defineEnumerableProperties = function (obj, descs) { - for (var key in descs) { - var desc = descs[key]; - desc.configurable = desc.enumerable = true; - if ("value" in desc) desc.writable = true; - Object.defineProperty(obj, key, desc); + for (const key in descs) { + if (!descs.hasOwnProperty(key)) continue + const desc = descs[key] + desc.configurable = desc.enumerable = true //eslint-disable-line + if ('value' in desc) desc.writable = true + Object.defineProperty(obj, key, desc) } - return obj; - }; + return obj + } babelHelpers.defaults = function (obj, defaults) { - var keys = Object.getOwnPropertyNames(defaults); + const keys = Object.getOwnPropertyNames(defaults) - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var value = Object.getOwnPropertyDescriptor(defaults, key); + for (let i = 0; i < keys.length; i++) { + const key = keys[i] + const value = Object.getOwnPropertyDescriptor(defaults, key) if (value && value.configurable && obj[key] === undefined) { - Object.defineProperty(obj, key, value); + Object.defineProperty(obj, key, value) } } - return obj; - }; + return obj + } babelHelpers.defineProperty = function (obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { - value: value, + value, enumerable: true, configurable: true, writable: true - }); + }) } else { - obj[key] = value; + obj[key] = value } - return obj; - }; + return obj + } babelHelpers.extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; + for (let i = 1; i < arguments.length; i++) { + const source = arguments[i] - for (var key in source) { + for (const key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; + target[key] = source[key] } } } - return target; - }; + return target + } babelHelpers.get = function get(object, property, receiver) { - if (object === null) object = Function.prototype; - var desc = Object.getOwnPropertyDescriptor(object, property); + if (object === null) object = Function.prototype + const desc = Object.getOwnPropertyDescriptor(object, property) if (desc === undefined) { - var parent = Object.getPrototypeOf(object); + const parent = Object.getPrototypeOf(object) if (parent === null) { - return undefined; - } else { - return get(parent, property, receiver); - } - } else if ("value" in desc) { - return desc.value; - } else { - var getter = desc.get; - - if (getter === undefined) { - return undefined; + return undefined } + return get(parent, property, receiver) + } else if ('value' in desc) { + return desc.value + } + const getter = desc.get - return getter.call(receiver); + if (getter === undefined) { + return undefined } - }; + + return getter.call(receiver) + } babelHelpers.inherits = function (subClass, superClass) { - if (typeof superClass !== "function" && superClass !== null) { - throw new TypeError("Super expression must either be null or a function, not " + typeof 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, { @@ -189,185 +189,188 @@ writable: true, configurable: true } - }); - if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; - }; + }) + if (superClass) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(subClass, superClass) + } else { + subClass.__proto__ = superClass //eslint-disable-line + } + } + } babelHelpers.instanceof = function (left, right) { - if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { - return right[Symbol.hasInstance](left); - } else { - return left instanceof right; + if (right != null && typeof Symbol !== 'undefined' && right[Symbol.hasInstance]) { + return right[Symbol.hasInstance](left) } - }; + return left instanceof right + } babelHelpers.interopRequireDefault = function (obj) { return obj && obj.__esModule ? obj : { default: obj - }; - }; + } + } babelHelpers.interopRequireWildcard = function (obj) { if (obj && obj.__esModule) { - return obj; - } else { - var newObj = {}; + return obj + } + const newObj = {} - if (obj != null) { - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; - } + if (obj != null) { + for (const key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key] } - - newObj.default = obj; - return newObj; } - }; + + newObj.default = obj + return newObj + } babelHelpers.newArrowCheck = function (innerThis, boundThis) { if (innerThis !== boundThis) { - throw new TypeError("Cannot instantiate an arrow function"); + throw new TypeError('Cannot instantiate an arrow function') } - }; + } babelHelpers.objectDestructuringEmpty = function (obj) { - if (obj == null) throw new TypeError("Cannot destructure undefined"); - }; + if (obj == null) throw new TypeError('Cannot destructure undefined') + } babelHelpers.objectWithoutProperties = function (obj, keys) { - var target = {}; + const target = {} - for (var i in obj) { - if (keys.indexOf(i) >= 0) continue; - if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; - target[i] = obj[i]; + for (const i in obj) { + if (keys.indexOf(i) >= 0) continue + if (!Object.prototype.hasOwnProperty.call(obj, i)) continue + target[i] = obj[i] } - return target; - }; + return target + } babelHelpers.possibleConstructorReturn = function (self, call) { if (!self) { - throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } - return call && (typeof call === "object" || typeof call === "function") ? call : self; - }; + return call && (typeof call === 'object' || typeof call === 'function') ? call : self + } - babelHelpers.selfGlobal = typeof global === "undefined" ? self : global; + babelHelpers.selfGlobal = typeof global === 'undefined' ? self : global babelHelpers.set = function set(object, property, value, receiver) { - var desc = Object.getOwnPropertyDescriptor(object, property); + const desc = Object.getOwnPropertyDescriptor(object, property) if (desc === undefined) { - var parent = Object.getPrototypeOf(object); + const parent = Object.getPrototypeOf(object) if (parent !== null) { - set(parent, property, value, receiver); + set(parent, property, value, receiver) } - } else if ("value" in desc && desc.writable) { - desc.value = value; + } else if ('value' in desc && desc.writable) { + desc.value = value } else { - var setter = desc.set; + const setter = desc.set if (setter !== undefined) { - setter.call(receiver, value); + setter.call(receiver, value) } } - return value; - }; + return value + } babelHelpers.slicedToArray = (function () { function sliceIterator(arr, i) { - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; + const _arr = [] + let _n = true + let _d = false + let _e try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { //eslint-disable-line + _arr.push(_s.value) - if (i && _arr.length === i) break; + if (i && _arr.length === i) break } } catch (err) { - _d = true; - _e = err; + _d = true + _e = err } finally { try { - if (!_n && _i["return"]) _i["return"](); + if (!_n && _i.return) _i.return() //eslint-disable-line } finally { - if (_d) throw _e; + if (_d) throw _e //eslint-disable-line } } - return _arr; + return _arr } return function (arr, i) { if (Array.isArray(arr)) { - return 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"); + return sliceIterator(arr, i) } - }; - })(); + throw new TypeError('Invalid attempt to destructure non-iterable instance') + } + }()) babelHelpers.slicedToArrayLoose = function (arr, i) { if (Array.isArray(arr)) { - return arr; + return arr } else if (Symbol.iterator in Object(arr)) { - var _arr = []; + const _arr = [] - for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) { - _arr.push(_step.value); + for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) { //eslint-disable-line + _arr.push(_step.value) - if (i && _arr.length === i) break; + if (i && _arr.length === i) break } - return _arr; - } else { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); + return _arr } - }; + throw new TypeError('Invalid attempt to destructure non-iterable instance') + } babelHelpers.taggedTemplateLiteral = function (strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } - })); - }; + })) + } babelHelpers.taggedTemplateLiteralLoose = function (strings, raw) { - strings.raw = raw; - return strings; - }; + strings.raw = raw + return strings + } babelHelpers.temporalRef = function (val, name, undef) { if (val === undef) { - throw new ReferenceError(name + " is not defined - temporal dead zone"); + throw new ReferenceError(`${name} is not defined - temporal dead zone`) } else { - return val; + return val } - }; + } - babelHelpers.temporalUndefined = {}; + babelHelpers.temporalUndefined = {} babelHelpers.toArray = function (arr) { - return Array.isArray(arr) ? arr : Array.from(arr); - }; + return Array.isArray(arr) ? arr : Array.from(arr) + } babelHelpers.toConsumableArray = function (arr) { if (Array.isArray(arr)) { - for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; - - return arr2; - } else { - return Array.from(arr); + const arr2 = Array(arr.length) + for (let i = 0; i < arr.length; i++) { + arr2[i] = arr[i] + } + return arr2 } - }; -})(typeof global === "undefined" ? self : global); + return Array.from(arr) + } +}(typeof global === 'undefined' ? self : global)) diff --git a/test/batching-test.js b/test/batching-test.js index 6ef248ff..d92be2a1 100644 --- a/test/batching-test.js +++ b/test/batching-test.js @@ -1,17 +1,17 @@ -import { jsdom } from 'jsdom' -import Alt from '../' import React from 'react' +import PropTypes from 'prop-types' +import { jsdom } from 'jsdom' import { assert } from 'chai' -import sinon from 'sinon' -import TestUtils from 'react-addons-test-utils' +import TestUtils from 'react-dom/test-utils' import ReactDom from 'react-dom' +import Alt from '../' -// TOOD action was called but not dispatched? const Actions = { buttonClick() { setTimeout(() => { this.switchComponent() }, 10) + return null }, switchComponent() { @@ -32,40 +32,48 @@ function Store(actions) { } class ComponentA extends React.Component { - constructor(props) { - super(props) - - this.state = props.alt.stores.store.getState() - } + static propTypes = { + alt: PropTypes.object.isRequired, + callback: PropTypes.func.isRequired + }; + + constructor(props) { + super(props) + this.state = props.alt.stores.store.getState() + } - componentWillMount() { - this.props.alt.stores.store.listen(state => this.setState(state)) - } + componentWillMount() { + this.props.alt.stores.store.listen((state) => { return this.setState(state) }) + } - render() { - if (this.state.active) { - return - } else { + render() { + if (this.state.active) { + return + } return
} - } } -class ComponentB extends React.Component { - componentWillMount() { - let error = null - try { - this.props.alt.actions.actions.uhoh() - } catch (err) { - error = err - } finally { - this.props.callback(error) +class ComponentB extends React.Component { //eslint-disable-line + static propTypes = { + alt: PropTypes.object.isRequired, + callback: PropTypes.func.isRequired + }; + + componentWillMount() { + let error = null + try { + this.props.alt.actions.actions.uhoh() + } catch (err) { + error = err + } finally { + this.props.callback(error) + } } - } - render() { - return
- } + render() { + return
+ } } export default { @@ -80,7 +88,7 @@ export default { delete global.window }, - 'does not batch'(done) { + 'does not batch': function (done) { const alt = new Alt() alt.addActions('actions', Actions) alt.addStore('store', Store, alt.actions.actions) @@ -94,7 +102,7 @@ export default { alt.actions.actions.buttonClick() }, - 'allows batching'(done) { + 'allows batching': function (done) { const alt = new Alt({ batchingFunction: ReactDom.unstable_batchedUpdates }) alt.addActions('actions', Actions) alt.addStore('store', Store, alt.actions.actions) @@ -106,6 +114,6 @@ export default { TestUtils.renderIntoDocument() alt.actions.actions.buttonClick() - }, + } } } diff --git a/test/before-and-after-test.js b/test/before-and-after-test.js index 11233578..2d7efc2f 100644 --- a/test/before-and-after-test.js +++ b/test/before-and-after-test.js @@ -1,7 +1,6 @@ -import Alt from '../' import { assert } from 'chai' - import sinon from 'sinon' +import Alt from '../' const alt = new Alt() const action = alt.generateActions('fire') @@ -9,7 +8,7 @@ const action = alt.generateActions('fire') const beforeEach = sinon.spy() const afterEach = sinon.spy() -const store = alt.createStore({ +alt.createStore({ displayName: 'Store', state: { a: 1 }, @@ -25,7 +24,7 @@ const store = alt.createStore({ change(x) { this.setState({ a: x }) - }, + } }) export default { @@ -34,21 +33,21 @@ export default { alt.recycle() }, - 'before and after hook fire once'() { + 'before and after hook fire once': function () { action.fire(2) assert.ok(beforeEach.calledOnce) assert.ok(afterEach.calledOnce) }, - 'before is called before after'() { + 'before is called before after': function () { action.fire(2) assert.ok(beforeEach.calledBefore(afterEach)) assert.ok(afterEach.calledAfter(beforeEach)) }, - 'args passed in'() { + 'args passed in': function () { action.fire(2) assert.ok(beforeEach.args[0].length === 1, '1 arg is passed') @@ -58,11 +57,11 @@ export default { assert.ok(afterEach.args[0][0].payload.data === 2, 'after has payload') }, - 'before and after get state'() { + 'before and after get state': function () { let beforeValue = null let afterValue = null - const store = alt.createStore({ + alt.createStore({ displayName: 'SpecialStore', state: { a: 1 }, bindListeners: { @@ -85,6 +84,6 @@ export default { assert.ok(beforeValue === 1, 'before has current state') assert.ok(afterValue === 2, 'after has next state') - }, + } } } diff --git a/test/bound-listeners-test.js b/test/bound-listeners-test.js index a718affd..bde0f9e2 100644 --- a/test/bound-listeners-test.js +++ b/test/bound-listeners-test.js @@ -1,5 +1,5 @@ -import Alt from '../dist/alt-with-runtime' import { assert } from 'chai' +import Alt from '../dist/alt-with-runtime' const alt = new Alt() @@ -44,24 +44,24 @@ class BindActions { export default { 'Exporting listener names': { - 'when no actions are listened on'() { + 'when no actions are listened on': function () { const myStore = alt.createStore(NoActions) assert(myStore.boundListeners.length === 0, 'none are returned') }, - 'when using bindAction'() { + 'when using bindAction': function () { const myStore = alt.createStore(OneAction) assert(myStore.boundListeners.length === 1) assert(myStore.boundListeners[0] === Actions.ONE) }, - 'when using bindListeners'() { + 'when using bindListeners': function () { const myStore = alt.createStore(TwoAction) assert(myStore.boundListeners.length === 1) assert(myStore.boundListeners[0] === Actions.TWO) }, - 'when using bindActions'() { + 'when using bindActions': function () { const myStore = alt.createStore(BindActions) assert(myStore.boundListeners.length === 2) assert( @@ -70,23 +70,23 @@ export default { ) }, - 'dispatching actions'() { - const alt = new Alt() + 'dispatching actions': function () { + const newAlt = new Alt() - const one = alt.generateActions('one') - const two = alt.generateActions('one') + const one = newAlt.generateActions('one') + const two = newAlt.generateActions('one') - const store = alt.createStore(function Store() { - this.bindAction(one.one, function (x) { + newAlt.createStore(function Store() { + this.bindAction(one.one, (x) => { assert(x === 1) }) - this.bindAction(two.one, function (x) { + this.bindAction(two.one, (x) => { assert(x === 2) }) }) - alt.dispatch('global.one', 1) - alt.dispatch('global.one1', 2) - }, + newAlt.dispatch('global.one', 1) + newAlt.dispatch('global.one1', 2) + } } } diff --git a/test/browser/index.js b/test/browser/index.js index 2e53b4d8..f8fe4058 100644 --- a/test/browser/index.js +++ b/test/browser/index.js @@ -18,15 +18,15 @@ const tests = assign( // This code is directly from mocha/lib/interfaces/exports.js // with a few modifications function manualExports(exports, suite) { - var suites = [suite] + const suites = [suite] visit(exports) function visit(obj) { var suite - for (var key in obj) { - if ('function' == typeof obj[key]) { - var fn = obj[key] + for (const key in obj) { + if (typeof obj[key] === 'function') { + const fn = obj[key] switch (key) { case 'before': suites[0].beforeAll(fn) diff --git a/test/config-set-get-state-test.js b/test/config-set-get-state-test.js index 4fc59460..2884e176 100644 --- a/test/config-set-get-state-test.js +++ b/test/config-set-get-state-test.js @@ -1,11 +1,10 @@ -import Alt from '../' import { assert } from 'chai' import sinon from 'sinon' - +import Alt from '../' export default { 'Config state getter and setter': { - 'setting state'() { + 'setting state': function () { const setState = sinon.stub().returns({ foo: 'bar' }) @@ -34,7 +33,7 @@ export default { assert(store.getState().foo === 'bar') }, - 'getting state'() { + 'getting state': function () { const getState = sinon.stub().returns({ foo: 'bar' }) @@ -51,6 +50,6 @@ export default { assert.ok(getState.calledOnce) assert(getState.args[0].length === 1) assert(store.getState().foo === 'bar') - }, + } } } diff --git a/test/debug-alt-test.js b/test/debug-alt-test.js index 173f739a..4d982b76 100644 --- a/test/debug-alt-test.js +++ b/test/debug-alt-test.js @@ -1,5 +1,5 @@ -import Alt from '../' import { assert } from 'chai' +import Alt from '../' export default { 'debug mode': { @@ -7,7 +7,7 @@ export default { global.window = {} }, - 'enable debug mode'() { + 'enable debug mode': function () { const alt = new Alt() Alt.debug('an identifier', alt) @@ -23,9 +23,9 @@ export default { }, 'isomorphic debug mode': { - 'enable debug mode does not make things explode'() { + 'enable debug mode does not make things explode': function () { const alt = new Alt() Alt.debug(alt) - }, + } } } diff --git a/test/es3-module-pattern.js b/test/es3-module-pattern.js index a44d5efd..b510c9c6 100644 --- a/test/es3-module-pattern.js +++ b/test/es3-module-pattern.js @@ -1,13 +1,13 @@ -import Alt from '../dist/alt-with-runtime' import { assert } from 'chai' import sinon from 'sinon' +import Alt from '../dist/alt-with-runtime' const alt = new Alt() const actions = alt.generateActions('fire') function MyStore() { - var privateVariable = true + const privateVariable = true; //eslint-disable-line return { displayName: 'MyStore', @@ -17,7 +17,7 @@ function MyStore() { }, publicMethods: { - getData: function () { + getData() { return this.getState().data } }, @@ -28,7 +28,7 @@ function MyStore() { handleFire: actions.FIRE }, - handleFire: function (data) { + handleFire(data) { this.setState({ data }) } } @@ -43,7 +43,7 @@ export default { console.warn = function () { } }, - 'store method exists'() { + 'store method exists': function () { const storePrototype = Object.getPrototypeOf(myStore) const assertMethods = ['constructor', 'listen', 'unlisten', 'getState'] assert.deepEqual(Object.getOwnPropertyNames(storePrototype), assertMethods, 'methods exist for store') @@ -52,24 +52,24 @@ export default { assert.isUndefined(myStore.emit, 'event emitter methods not present') }, - 'public methods available'() { + 'public methods available': function () { assert.isFunction(myStore.getData, 'public methods are available') assert(myStore.getData() === 1, 'initial store data is set') }, - 'private and instance variables are not available'() { + 'private and instance variables are not available': function () { assert.isUndefined(myStore.privateVariable, 'encapsulated variables are not available') assert.isUndefined(myStore.testProperty, 'instance variables are not available') }, - 'firing an action'() { + 'firing an action': function () { actions.fire(2) assert(myStore.getState().data === 2, 'action was fired and handled correctly') }, - 'adding lifecycle events'() { - let spy = sinon.spy() + 'adding lifecycle events': function () { + const spy = sinon.spy() class TestStore { constructor() { @@ -87,7 +87,7 @@ export default { assert(store.getState().foo === 'bar', 'state is set') }, - 'set state'() { + 'set state': function () { const TestStore = { state: { hello: null }, @@ -112,7 +112,7 @@ export default { assert(store.getState().hello === 'world', 'store state was set using setState') }, - 'set state in lifecycle'() { + 'set state in lifecycle': function () { const TestStore = { state: { test: null }, @@ -127,7 +127,7 @@ export default { assert(store.getState().test === 'i am here', 'setting state on lifecycle') }, - 'get instance works'() { + 'get instance works': function () { const TestStore = { state: { test: null }, bindListeners: { @@ -141,6 +141,6 @@ export default { const store = alt.createStore(TestStore) actions.fire() assert(store.getState().test === store) - }, + } } } diff --git a/test/failed-dispatch-test.js b/test/failed-dispatch-test.js index 5e1dfcd6..f6c4d420 100644 --- a/test/failed-dispatch-test.js +++ b/test/failed-dispatch-test.js @@ -1,10 +1,10 @@ import { assert } from 'chai' -import Alt from '../dist/alt-with-runtime' import sinon from 'sinon' +import Alt from '../dist/alt-with-runtime' export default { 'catch failed dispatches': { - 'uncaught dispatches result in an error'() { + 'uncaught dispatches result in an error': function () { const alt = new Alt() const actions = alt.generateActions('fire') @@ -18,12 +18,11 @@ export default { } } - const uncaught = alt.createStore(Uncaught) - - assert.throws(() => actions.fire()) + alt.createStore(Uncaught) + assert.throws(() => { return actions.fire() }) }, - 'errors can be caught though'() { + 'errors can be caught though': function () { const alt = new Alt() const actions = alt.generateActions('fire') @@ -49,7 +48,7 @@ export default { caught.listen(storeListener) assert(caught.getState().x === 0) - assert.doesNotThrow(() => actions.fire()) + assert.doesNotThrow(() => { return actions.fire() }) assert(caught.getState().x === 1) assert.notOk(storeListener.calledOnce, 'the store did not emit a change') @@ -57,7 +56,7 @@ export default { caught.unlisten(storeListener) }, - 'you have to emit changes yourself'() { + 'you have to emit changes yourself': function () { const alt = new Alt() const actions = alt.generateActions('fire') @@ -84,12 +83,12 @@ export default { const dispose = caughtReturn.listen(storeListener) assert(caughtReturn.getState().x === 0) - assert.doesNotThrow(() => actions.fire()) + assert.doesNotThrow(() => { return actions.fire() }) assert(caughtReturn.getState().x === 1) assert.ok(storeListener.calledOnce) dispose() - }, + } } } diff --git a/test/functional-test.js b/test/functional-test.js index d766c999..5e0536d8 100644 --- a/test/functional-test.js +++ b/test/functional-test.js @@ -1,10 +1,10 @@ import { assert } from 'chai' -import Alt from '../dist/alt-with-runtime' import sinon from 'sinon' +import Alt from '../dist/alt-with-runtime' export default { 'functional goodies for alt': { - 'observing for changes in a POJO so we get context passed in'() { + 'observing for changes in a POJO so we get context passed in': function () { const alt = new Alt() const observe = sinon.stub().returns({}) @@ -16,7 +16,7 @@ export default { assert(observe.args[0][0] === alt, 'first arg is alt') }, - 'when observing changes, they are observed'() { + 'when observing changes, they are observed': function () { const alt = new Alt() const actions = alt.generateActions('fire') @@ -33,7 +33,7 @@ export default { assert(store.boundListeners.length === 1, 'there is 1 action bound') }, - 'otherwise works like a haskell guard'() { + 'otherwise works like a haskell guard': function () { const alt = new Alt() const actions = alt.generateActions('fire', 'test') @@ -68,7 +68,7 @@ export default { kill() }, - 'preventDefault prevents a change event to be emitted'() { + 'preventDefault prevents a change event to be emitted': function () { const alt = new Alt() const actions = alt.generateActions('fire') @@ -97,7 +97,7 @@ export default { kill() }, - 'reduce fires on every dispatch if defined'() { + 'reduce fires on every dispatch if defined': function () { const alt = new Alt() const actions = alt.generateActions('fire') @@ -107,7 +107,7 @@ export default { state: { x: 0 }, reduce(state) { - if (state.x >= 3) return + if (state.x >= 3) return undefined return { x: state.x + 1 } } }) @@ -120,7 +120,7 @@ export default { assert(store.getState().x === 3, 'counter was incremented') }, - 'reduce doesnt emit if preventDefault'() { + 'reduce doesnt emit if preventDefault': function () { const alt = new Alt() const actions = alt.generateActions('fire') @@ -146,7 +146,7 @@ export default { unsub() }, - 'stores have a reduce method'() { + 'stores have a reduce method': function () { const alt = new Alt() const store = alt.createStore({ @@ -162,7 +162,7 @@ export default { const store2 = alt.createStore({ displayName: 'store2', - state: { x: 1 }, + state: { x: 1 } }) assert.isFunction(store.reduce) @@ -170,6 +170,6 @@ export default { assert(store.reduce(store.state).x === 0) assert(store2.reduce(store2.state).x === 1) - }, + } } } diff --git a/test/functions-test.js b/test/functions-test.js index e5aded87..8c0bc1f8 100644 --- a/test/functions-test.js +++ b/test/functions-test.js @@ -6,40 +6,40 @@ const alt = new Alt() export default { 'test the functions.js isMutableObject()': { - 'can import lib/functions'() { + 'can import lib/functions': function () { assert.ok(fn) assert.ok(fn.isMutableObject) assert(typeof fn.isMutableObject === 'function', 'isMutableObject is imported') }, - 'isMutableObject works on regular objects'() { + 'isMutableObject works on regular objects': function () { const obj = {} - const obj2 = {foo: 'bar'} + const obj2 = { foo: 'bar' } assert(fn.isMutableObject(obj) === true, 'regular object should pass') assert(fn.isMutableObject(obj2) === true, 'regular object with fields should pass') }, - 'isMutableObject fails on non-objects'() { + 'isMutableObject fails on non-objects': function () { assert(fn.isMutableObject(false) === false, 'boolean should fail') assert(fn.isMutableObject(1) === false, 'integer should fail') assert(fn.isMutableObject(new Date()) === false, 'date should fail') }, - 'isMutableObject works on frozen objects'() { + 'isMutableObject works on frozen objects': function () { const obj = {} Object.freeze(obj) assert(fn.isMutableObject(obj) === false, 'frozen objects should fail') - }, + } }, 'can bootstrap a store with/without frozen state': { - 'normal store state can be bootstrapped'() { + 'normal store state can be bootstrapped': function () { class NonFrozenStore { constructor() { this.state = { - foo: 'bar', + foo: 'bar' } assert(this.state.foo === 'bar', 'State is initialized') @@ -53,18 +53,18 @@ export default { assert(myStore.getState().foo === 'bar2', 'State was bootstrapped with updated bar') }, - 'frozen store state can be bootstrapped'() { + 'frozen store state can be bootstrapped': function () { class FrozenStateStore { constructor() { this.config = { onDeserialize: (data) => { Object.freeze(data) return data - }, + } } this.state = { - foo: 'bar', + foo: 'bar' } Object.freeze(this.state) @@ -78,6 +78,6 @@ export default { const myStore = alt.getStore('FrozenStateStore') assert(myStore.getState().foo === 'bar2', 'State was bootstrapped with updated bar') - }, - }, + } + } } diff --git a/test/helpers/SaaM.js b/test/helpers/SaaM.js index 18568d19..ea673fa0 100644 --- a/test/helpers/SaaM.js +++ b/test/helpers/SaaM.js @@ -1,7 +1,6 @@ export const displayName = 'SaaM' - export const state = 1 -export function reduce(state, payload) { - return state + 1 +export function reduce(reduceState, payload) { //eslint-disable-line + return reduceState + 1 } diff --git a/test/helpers/alt.js b/test/helpers/alt.js index 97a145db..67e8f7c4 100644 --- a/test/helpers/alt.js +++ b/test/helpers/alt.js @@ -1,2 +1,3 @@ import Alt from '../../dist/alt-with-runtime' + export default new Alt() diff --git a/test/index.js b/test/index.js index 1187ca2e..ec205de3 100644 --- a/test/index.js +++ b/test/index.js @@ -1,6 +1,6 @@ -import Alt from '../' import { assert } from 'chai' import sinon from 'sinon' +import Alt from '../' const alt = new Alt() @@ -15,16 +15,16 @@ class MyActions { 'moreActions3', 'resetRecycled', 'asyncStoreAction', - 'updateAnotherVal' + 'updateAnotherVal', ) this.generateActions('anotherAction') - this.actionOnThis = function (x) { + this.actionOnThis = (x) => { return x } } - updateName(name) { + updateName(name) { //eslint-disable-line return name } @@ -50,7 +50,6 @@ class MyActions { updateThree(a, b, c) { return { a, b, c } } - } const myActions = {} @@ -116,7 +115,7 @@ class MyStore { } externalMethodNoStatic() { - return true + return true } } @@ -205,11 +204,11 @@ const secondStore = alt.createStore(SecondStore, 'AltSecondStore') class LifeCycleStore { static config = { onSerialize: (state) => { - state.serialized = true + state.serialized = true; //eslint-disable-line return state }, onDeserialize: (data) => { - data.deserialized = true + data.deserialized = true; //eslint-disable-line } }; @@ -255,14 +254,14 @@ class ThirdStore { onUpdateName() { this.waitFor(myStore, secondStore) // Not referencing dispatchToken! - this.name = secondStore.getState().name + '3' + this.name = `${secondStore.getState().name}3` } } const thirdStore = alt.createStore(ThirdStore) class Model { - constructor({x, y}) { + constructor({ x, y }) { this.x = x this.y = y } @@ -295,7 +294,7 @@ class InterceptSnapshotStore { }, onDeserialize: (data) => { const obj = { - modelData: new Model({x: data.modelData.x, y: data.modelData.y}), + modelData: new Model({ x: data.modelData.x, y: data.modelData.y }), anotherVal: data.anotherVal } return obj @@ -305,7 +304,7 @@ class InterceptSnapshotStore { constructor() { this.bindAction(myActions.updateAnotherVal, this.onUpdateAnotherVal) - this.modelData = new Model({x: 2, y: 3}) + this.modelData = new Model({ x: 2, y: 3 }) this.anotherVal = 5 this.privateVal = 10 } @@ -340,7 +339,7 @@ const alt1 = new Alt() const alt2 = new Alt() function NameActions() { } -NameActions.prototype.updateName = function (name) { +NameActions.prototype.updateName = (name) => { return name } @@ -353,7 +352,7 @@ function NameStore() { this.name = 'foo' } -NameStore.prototype.onUpdateName = function (name) { +NameStore.prototype.onUpdateName = function onUpdateName(name) { this.name = name } @@ -369,10 +368,10 @@ const tests = { altInstance.recycle() alt1.recycle() alt2.recycle() - console.warn = consoleWarn + console.warn = consoleWarn; //eslint-disable-line }, - 'alt instance'() { + 'alt instance': () => { assert.isFunction(alt.bootstrap, 'bootstrap function exists') assert.isObject(alt.dispatcher, 'dispatcher exists') assert.isFunction(alt.dispatcher.register, 'dispatcher function exists for listening to all events') @@ -382,7 +381,7 @@ const tests = { assert.isObject(alt.stores.AltSecondStore, 'store exists in alt.stores') }, - 'store methods'() { + 'store methods': () => { const storePrototype = Object.getPrototypeOf(myStore) const assertMethods = ['constructor', 'listen', 'unlisten', 'getState'] assert.deepEqual(Object.getOwnPropertyNames(storePrototype), assertMethods, 'methods exist for store') @@ -391,7 +390,7 @@ const tests = { assert.isUndefined(myStore.emit, 'event emitter methods not present') }, - 'store external methods'() { + 'store external methods': () => { assert.isFunction(myStore.externalMethod, 'static methods are made available') assert.isFunction(myStore.externalMethodNoStatic, 'methods via mixin are made available') assert(myStore.externalMethod() === true, 'static methods return proper result') @@ -404,7 +403,7 @@ const tests = { assert(secondStore.concatFooWithNoStatic('baz') === 'barbaz', 'static methods may be called with params too') }, - 'getting state'() { + 'getting state': () => { assert.isObject(myStore.getState()._dispatcher, 'the dispatcher is exposed internally') assert(lifecycleStore.getState().bootstrapped === false, 'bootstrap has not been called yet') @@ -415,7 +414,7 @@ const tests = { assert(lifecycleStore.getState().deserialized === true, 'deserialize has not been called yet') }, - 'snapshots and bootstrapping'() { + 'snapshots and bootstrapping': () => { const initialSnapshot = alt.takeSnapshot() assert(lifecycleStore.getState().snapshotted === true, 'takeSnapshot was called and the life cycle event was triggered') @@ -427,7 +426,7 @@ const tests = { assert(lifecycleStore.getState().deserialized === true, 'deserialize was called and the life cycle event was triggered') }, - 'existence of actions'() { + 'existence of actions': () => { assert.isFunction(myActions.anotherAction, 'shorthand function created with createAction exists') assert.isFunction(myActions.callInternalMethod, 'shorthand function created with createActions exists') assert.isFunction(myActions.updateName, 'prototype defined actions exist') @@ -440,17 +439,17 @@ const tests = { assert.isFunction(myActions.actionOnThis, 'actions defined in `this` are functions') }, - 'existence of constants'() { + 'existence of constants': () => { assert.isDefined(myActions.UPDATE_NAME, 'a constant is created for each action') assert.isDefined(myActions.UPDATE_TWO, 'a constant is created for each action') assert.isDefined(myActions.CALL_INTERNAL_METHOD, 'a constant is created for each action') }, - 'helper functions'() { + 'helper functions': () => { assert.isFunction(myActions.updateName.defer, 'actions have a defer method for async flow') }, - 'internal actions'() { + 'internal actions': () => { const internalActions = myActions.justTestingInternalActions() assert.isFunction(internalActions.updateThree, 'actions (below) are available internally through this.actions') assert.isFunction(internalActions.updateName, 'actions (above) are available internally through this.actions') @@ -464,7 +463,7 @@ const tests = { assert(myStore.getState().calledInternal === false, 'store has been initialized properly') }, - 'calling actions'() { + 'calling actions': () => { const actionReturnType = myActions.updateName('bear') assert(actionReturnType === 'bear', 'action returns what is dispatched') @@ -474,12 +473,12 @@ const tests = { assert(thirdStore.getState().name === 'bear3', 'third store gets its value from secondStore, adds 3') }, - 'calling internal methods'() { + 'calling internal methods': () => { myActions.callInternalMethod() assert(myStore.getState().calledInternal === true, 'internal method has been called successfully by an action') }, - 'snapshotting'() { + snapshotting() { myActions.updateName('bear') const snapshot = alt.takeSnapshot() assert.isString(snapshot, 'a snapshot json is returned') @@ -491,7 +490,7 @@ const tests = { assert(JSON.parse(snapshot).MyStore.name === 'bear', 'the snapshot is not affected by action') }, - 'specifying stores to snapshot'() { + 'specifying stores to snapshot': () => { const snapshot = alt.takeSnapshot('MyStore', 'AltSecondStore') assert.deepEqual(Object.keys(JSON.parse(snapshot)), ['MyStore', 'AltSecondStore'], 'the snapshot includes specified stores') assert(Object.keys(JSON.parse(snapshot)).indexOf('LifeCycleStore') === -1, 'the snapshot does not include unspecified stores') @@ -501,7 +500,7 @@ const tests = { assert(Object.keys(JSON.parse(snapshot2)).indexOf('LifeCycleStore') === -1, 'the snapshot does not include unspecified stores') }, - 'serializing/deserializing snapshot/bootstrap data'(){ + 'serializing/deserializing snapshot/bootstrap data': () => { myActions.updateAnotherVal(11) const snapshot = alt.takeSnapshot() const expectedSerializedData = { @@ -520,14 +519,14 @@ const tests = { assert.deepEqual(interceptSnapshotStore.getModelData(), expectedSerializedData.modelData) }, - 'mutation'() { + mutation() { const state = myStore.getState() state.name = 'foobar' assert(state.name === 'foobar', 'mutated returned state') assert(myStore.getState().name === 'first', 'store state was not mutated') }, - 'rolling back'() { + 'rolling back': () => { const rollbackValue = alt.rollback() assert(rollbackValue === undefined, 'rollback returns nothing') @@ -535,13 +534,14 @@ const tests = { assert(lifecycleStore.getState().rollback === true, 'rollback lifecycle method was called') myActions.updateName('blossom') - // check that subsequent snapshots overwrite the LAST_SNAPSHOT such that they can be rolled back to + // check that subsequent snapshots overwrite the LAST_SNAPSHOT such that + // they can be rolled back to alt.takeSnapshot() alt.rollback() assert(myStore.getState().name === 'blossom', 'rolled back to second snapshot') }, - 'store listening'() { + 'store listening': () => { const mooseChecker = (x) => { assert(x.name === 'moose', 'listener for store works') assert(myStore.getState().name === 'moose', 'new store state present') @@ -557,7 +557,7 @@ const tests = { assert(myStore.getState().name === 'badger', 'new store state present') }, - 'unlistening'() { + unlistening() { assert(myStore.getState().name !== 'moose', 'state has not been updated') const mooseChecker = sinon.spy() @@ -574,7 +574,7 @@ const tests = { assert.ok(mooseChecker.calledOnce) }, - 'unlisten lifecycle hook'() { + 'unlisten lifecycle hook': () => { const unlistener = sinon.spy() class XStore { constructor() { @@ -584,12 +584,12 @@ const tests = { const store = alt.createStore(XStore) // unlisten directly - store.listen(function () { })() + store.listen(() => { })() assert.ok(unlistener.calledOnce, 'unlisten lifecycle hook called') }, - 'bootstrapping'() { + bootstrapping() { alt.bootstrap('{"MyStore":{"name":"bee"}}') assert(myStore.getState().name === 'bee', 'I can bootstrap many times') @@ -599,7 +599,7 @@ const tests = { assert(myStore.getState().name === 'monkey', 'I can bootstrap many times') }, - 'variadic actions'(done) { + 'variadic actions': (done) => { myActions.updateTwo(4, 2) assert(secondStore.getState().foo === 6, 'im able to pass two params into an action') @@ -620,13 +620,13 @@ const tests = { }) }, - 'access of stores'() { + 'access of stores': () => { assert(secondStore.foo === undefined, 'cant access state properties that live inside store') assert(secondStore.bindAction === undefined, 'cant access action listeners from outside store') assert(secondStore.bindActions === undefined, 'cant access action listeners from outside store') }, - 'deferral of actions'(done) { + 'deferral of actions': (done) => { myActions.updateName('gerenuk') assert(myStore.getState().name === 'gerenuk', 'store state was updated properly') myActions.updateName.defer('marmot') @@ -637,7 +637,7 @@ const tests = { }) }, - 'getting instance'() { + 'getting instance': () => { assert.isFunction(myActions.getInstanceInside, 'action for getting the instance inside') assert(secondStore.getState().instance === null, 'instance is null because it has not been set') myActions.getInstanceInside() @@ -647,7 +647,7 @@ const tests = { assert(secondStore.getState().instance.externalMethod() === 'bar', 'calling a static method from instance and able to use this inside') }, - 'conflicting listeners on a store'() { + 'conflicting listeners on a store': () => { class StoreWithManyListeners { constructor() { this.bindActions(myActions) @@ -658,7 +658,7 @@ const tests = { onUpdateName() { } } - assert.throw(() => alt.createStore(StoreWithManyListeners), ReferenceError, 'You have multiple action handlers bound to an action: updateName and onUpdateName') + assert.throw(() => { return alt.createStore(StoreWithManyListeners) }, ReferenceError, 'You have multiple action handlers bound to an action: updateName and onUpdateName') class EvilStore { updateName() { } @@ -673,10 +673,10 @@ const tests = { onUpdateName() { } } - assert.throw(() => alt.createStore(InnocentStore), ReferenceError, 'You have multiple action handlers bound to an action: updateName and onUpdateName') + assert.throw(() => { return alt.createStore(InnocentStore) }, ReferenceError, 'You have multiple action handlers bound to an action: updateName and onUpdateName') }, - 'registering invalid action handlers'() { + 'registering invalid action handlers': () => { class StoreWithInvalidActionHandlers { constructor() { this.bindAction(myActions.THIS_DOES_NOT_EXIST, this.trololol) @@ -685,7 +685,7 @@ const tests = { trololol() { } } - assert.throw(() => alt.createStore(StoreWithInvalidActionHandlers), ReferenceError, 'Invalid action reference passed in') + assert.throw(() => { return alt.createStore(StoreWithInvalidActionHandlers) }, ReferenceError, 'Invalid action reference passed in') class StoreWithInvalidActionHandlers2 { constructor() { @@ -693,10 +693,10 @@ const tests = { } } - assert.throw(() => alt.createStore(StoreWithInvalidActionHandlers2), TypeError, 'bindAction expects a function') + assert.throw(() => { return alt.createStore(StoreWithInvalidActionHandlers2) }, TypeError, 'bindAction expects a function') }, - 'exporting invalid store methods'() { + 'exporting invalid store methods': () => { class StoreWithInvalidExportType { constructor() { this.foo = 'bar' @@ -704,10 +704,10 @@ const tests = { } } - assert.throw(() => alt.createStore(StoreWithInvalidExportType), TypeError, 'exportPublicMethods expects a function') + assert.throw(() => { return alt.createStore(StoreWithInvalidExportType) }, TypeError, 'exportPublicMethods expects a function') }, - 'waiting for nothing'() { + 'waiting for nothing': () => { class WaitPlease { constructor() { this.generateActions('pleaseWait') @@ -725,10 +725,10 @@ const tests = { } }) - assert.throw(() => waiter.pleaseWait(), ReferenceError, 'Dispatch tokens not provided') + assert.throw(() => { return waiter.pleaseWait() }, ReferenceError, 'Dispatch tokens not provided') }, - 'cancelling emit'() { + 'cancelling emit': () => { function eventEmittedFail() { assert(true === false, 'event was emitted but I did not want it to be') } @@ -738,7 +738,7 @@ const tests = { assert(myStore.getState().dontEmitEventCalled === true, 'dont emit event was called successfully and event was not emitted') }, - 'multiple deferrals'(done) { + 'multiple deferrals': (done) => { myActions.moreActions() assert(secondStore.getState().deferrals === 1, 'deferrals is initially set to 1') setTimeout(() => { @@ -747,7 +747,7 @@ const tests = { }) }, - 'recycling'() { + recycling() { alt.recycle() assert(myStore.getState().name === 'first', 'recycle sets the state back to its origin') @@ -757,7 +757,7 @@ const tests = { assert(secondStore.getState().recycled === true, 'init lifecycle method was called by recycling') }, - 'flushing'() { + flushing() { myActions.updateName('goat') const flushed = JSON.parse(alt.flush()) assert(myStore.getState().name === 'first', 'flush is a lot like recycle') @@ -768,7 +768,7 @@ const tests = { assert(secondStore.getState().name === 'butterfly', 'I can update the state again after a flush') }, - 'recycling single store'() { + 'recycling single store': () => { myActions.updateName('butterfly') alt.recycle('MyStore') assert(myStore.getState().name === 'first', 'I can recycle specific stores') @@ -779,11 +779,11 @@ const tests = { assert(myStore.getState().name === 'first', 'I can recycle specific stores') }, - 'recycling invalid stores'() { - assert.throw(() => alt.recycle('StoreThatDoesNotExist'), ReferenceError, 'StoreThatDoesNotExist is not a valid store') + 'recycling invalid stores': () => { + assert.throw(() => { return alt.recycle('StoreThatDoesNotExist') }, ReferenceError, 'StoreThatDoesNotExist is not a valid store') }, - 'alt single instances'() { + 'alt single instances': () => { assert.instanceOf(altInstance, Alt, 'altInstance is an instance of alt') assert.isObject(altInstance.dispatcher, 'it has a dispatcher') assert.isFunction(altInstance.bootstrap, 'bootstrap function exists') @@ -804,7 +804,7 @@ const tests = { assert(myStore.getState().name === 'first', 'and other singleton store was not affected') }, - 'multiple alt instances'() { + 'multiple alt instances': () => { nameActions1.updateName('bar') nameActions2.updateName('baz') @@ -814,18 +814,18 @@ const tests = { assert(myStore.getState().name === 'first', 'other singleton store not affected') }, - 'actions with the same name'() { - const alt = new Alt() + 'actions with the same name': () => { + const newAlt = new Alt() function UserActions() { this.generateActions('update') } - const ua = alt.createActions(UserActions) + const ua = newAlt.createActions(UserActions) function LinkActions() { this.generateActions('update') } - const la = alt.createActions(LinkActions) + const la = newAlt.createActions(LinkActions) function Store() { this.bindAction(ua.UPDATE, this.ua) @@ -835,15 +835,15 @@ const tests = { this.b = 0 } - Store.prototype.ua = function () { + Store.prototype.ua = function protoUa() { this.a = 1 } - Store.prototype.la = function () { + Store.prototype.la = function protoLa() { this.b = 1 } - const store = alt.createStore(Store) + const store = newAlt.createStore(Store) ua.update() la.update() @@ -854,17 +854,17 @@ const tests = { assert(state.b === 1, 'both actions were called') }, - 'actions with the same name and same class name'() { - const alt = new Alt() + 'actions with the same name and same class name': () => { + const newAlt = new Alt() - const ua = (function () { + const ua = (function ua() { function a() { this.generateActions('update') } - return alt.createActions(a) + return newAlt.createActions(a) }()) - const la = (function () { + const la = (function la() { function a() { this.generateActions('update') } - return alt.createActions(a) + return newAlt.createActions(a) }()) let uaOnce = 0 @@ -890,7 +890,7 @@ const tests = { } } - const store = alt.createStore(Store) + const store = newAlt.createStore(Store) ua.update() la.update() @@ -903,7 +903,7 @@ const tests = { assert.equal(laOnce, 1, 'actions only called once') }, - 'dispatching from alt instance'() { + 'dispatching from alt instance': () => { const inst = new AltInstance() let called = false const listen = (x) => { @@ -919,27 +919,28 @@ const tests = { assert(called === true, 'listener was called') }, - 'emit change method works from the store'(done) { + 'emit change method works from the store': (done) => { assert(myStore.getState().async === false, 'store async is false') + let dispose const listener = () => { assert(myStore.getState().async === true, 'store async is true') dispose() done() } - const dispose = myStore.listen(listener) + dispose = myStore.listen(listener) myActions.asyncStoreAction() }, - 'emit change method works with an isolated store'(done) { - const alt = new Alt() + 'emit change method works with an isolated store': (done) => { + const newAlt = new Alt() function Actions() { this.generateActions('test') } - const actions = alt.createActions(Actions) + const actions = newAlt.createActions(Actions) class Store { constructor() { @@ -956,22 +957,23 @@ const tests = { } } - const store = alt.createStore(Store) + const store = newAlt.createStore(Store) assert(store.getState().test === false, 'test is false') + let dispose const listener = () => { assert(store.getState().test === true, 'test is true') dispose() done() } - const dispose = store.listen(listener) + dispose = store.listen(listener) actions.test() }, - 'extending stores'() { - const alt = new Alt() + 'extending stores': () => { + const newAlt = new Alt() class Other { constructor() { @@ -989,14 +991,14 @@ const tests = { } } - const store = alt.createStore(Store) + const store = newAlt.createStore(Store) assert(store.getState().foo === true, 'store inherits properties') assert(store.getState().bar === true, 'store properties are available') assert(store.getState().baz === true, 'inherited methods can be called') }, - 'exporting public method of ancestor'() { + 'exporting public method of ancestor': () => { class StoreBase { baseMethod() { return true @@ -1017,7 +1019,7 @@ const tests = { assert.isFunction(store.baseMethod, 'ancestor methods via export mixin are made available') }, - 'binding a listener that does not exist'() { + 'binding a listener that does not exist': () => { class BadListenerStore { constructor() { this.bindListeners({ @@ -1026,10 +1028,10 @@ const tests = { } } - assert.throw(() => alt.createStore(BadListenerStore), ReferenceError, 'methodThatDoesNotExist defined but does not exist in BadListenerStore') + assert.throw(() => { return alt.createStore(BadListenerStore) }, ReferenceError, 'methodThatDoesNotExist defined but does not exist in BadListenerStore') }, - 'binding listeners to action that does not exist'() { + 'binding listeners to action that does not exist': () => { class BadListenerStore { constructor() { this.bindListeners({ @@ -1040,10 +1042,10 @@ const tests = { foo() { } } - assert.throw(() => alt.createStore(BadListenerStore), ReferenceError, 'Invalid action reference passed in') + assert.throw(() => { return alt.createStore(BadListenerStore) }, ReferenceError, 'Invalid action reference passed in') }, - 'do not include store in snapshots'() { + 'do not include store in snapshots': () => { function NoBootstrap() { } alt.createUnsavedStore(NoBootstrap, 'NoBootstrap') @@ -1063,22 +1065,22 @@ const tests = { assert.isObject(snapshot.AltSecondStore, 'AltSecondStore exists') }, - 'actions with no name are still ok'() { - var actions = alt.createActions(function () { + 'actions with no name are still ok': () => { + const actions = alt.createActions(function createActionsTest() { this.generateActions('foo') }) assert.isFunction(actions.foo, 'action still exists') }, - 'recycle store that does not exist'() { + 'recycle store that does not exist': () => { assert.doesNotThrow(() => { alt.bootstrap('{"AStoreThatIJustMadeUpButDoesNotReallyExist": {}}') }) }, - 'creating one off actions'() { - const action = alt.createAction('hello', function (x) { + 'creating one off actions': () => { + const action = alt.createAction('hello', (x) => { return x }) @@ -1098,12 +1100,12 @@ const tests = { assert(store.getState().x === 1, 'action fires correctly') }, - 'setState emits a change if not dispatching'(done) { - const alt = new Alt() + 'setState emits a change if not dispatching': (done) => { + const newAlt = new Alt() - const actions = alt.generateActions('fire') + const actions = newAlt.generateActions('fire') - const store = alt.createStore(class Store { + const store = newAlt.createStore(class Store { constructor() { this.bindActions(actions) this.test = false @@ -1130,7 +1132,7 @@ const tests = { actions.fire() }, - 'prepare a payload for bootstrap'() { + 'prepare a payload for bootstrap': () => { const serialized = alt.prepare(myStore, { a: 1, b: 2 }) const parsed = JSON.parse(serialized) @@ -1145,7 +1147,7 @@ const tests = { }, ReferenceError) }, - 'async dispatches'(done) { + 'async dispatches': (done) => { const AsyncAction = alt.createActions({ displayName: 'AsyncAction', fire(x) { @@ -1165,18 +1167,18 @@ const tests = { AsyncAction.fire(2) }, - 'listen expects function'() { + 'listen expects function': () => { assert.throws(() => { myStore.listen(null) }, TypeError, 'listen expects a function') }, - 'lots of listens'() { + 'lots of listens': () => { const ImportKeysActions = alt.generateActions('change', 'saved') const call = sinon.spy() - const BalanceClaimStore = alt.createStore(class { + const BalanceClaimStore = alt.createStore(class { //eslint-disable-line constructor() { this.bindListeners({ onRefreshBalanceClaims: ImportKeysActions.saved, @@ -1200,7 +1202,7 @@ const tests = { assert(call.calledTwice, 'multiple action handlers are ok') }, - 'dispatching action creators'() { + 'dispatching action creators': () => { const action = { id: 'hello', dispatch(data) { @@ -1208,7 +1210,7 @@ const tests = { } } - const alt = new Alt() + const newAlt = new Alt() class Store { constructor() { @@ -1221,48 +1223,48 @@ const tests = { } } - const store = alt.createStore(Store) + const store = newAlt.createStore(Store) assert(store.getState().x === null, 'x is null') - alt.dispatch(action, 3) + newAlt.dispatch(action, 3) assert(store.getState().x === 3, '3 was dispatched') - alt.dispatch(action, 4) + newAlt.dispatch(action, 4) assert(store.getState().x === 4, '4 was dispatched') - alt.dispatch(action, undefined) + newAlt.dispatch(action, undefined) assert(store.getState().x === 4, 'undefined means it wont dispatch') }, - 'dispatching async action creators'(done) { + 'dispatching async action creators': (done) => { const action = { id: 'hello', - dispatch(data) { - return dispatch => dispatch(done) + dispatch() { + return (dispatch) => { return dispatch(done) } } } - const alt = new Alt() + const newAlt = new Alt() class Store { constructor() { this.bindAction(action, this.hello) } - hello(done) { - done() + hello(cb) { + cb() } } - const store = alt.createStore(Store) - alt.dispatch(action) + newAlt.createStore(Store) + newAlt.dispatch(action) }, - 'is fsa'(done) { + 'is fsa': (done) => { const res = alt.dispatcher.register((x) => { assert.isDefined(x.type, 'there is a type') assert.isDefined(x.payload, 'there is a payload') @@ -1279,7 +1281,7 @@ const tests = { myActions.updateName('Jane') }, - 'can dispatch fsa'(done) { + 'can dispatch fsa': (done) => { const res = alt.dispatcher.register((x) => { assert.isDefined(x.type, 'there is a type') assert(x.type === 'owl') @@ -1293,7 +1295,7 @@ const tests = { }) alt.dispatch({ type: 'owl', payload: 'Tawny' }) - }, + } } export default tests diff --git a/test/setting-state.js b/test/setting-state.js index 1e721e9c..28222169 100644 --- a/test/setting-state.js +++ b/test/setting-state.js @@ -1,6 +1,6 @@ import { assert } from 'chai' -import Alt from '../dist/alt-with-runtime' import sinon from 'sinon' +import Alt from '../dist/alt-with-runtime' const alt = new Alt() @@ -25,12 +25,12 @@ class MyStore { const myStore = alt.createStore(MyStore) export default { - 'setState': { + setState: { beforeEach() { alt.recycle() }, - 'using setState to set the state'() { + 'using setState to set the state': function () { const spy = sinon.spy() const dispose = myStore.listen(spy) @@ -47,7 +47,7 @@ export default { assert.ok(spy.calledOnce, 'spy was only called once') }, - 'by using setState a change event is not emitted twice'() { + 'by using setState a change event is not emitted twice': function () { const spy = sinon.spy() const dispose = myStore.listen(spy) @@ -60,10 +60,10 @@ export default { dispose() }, - 'transactional setState'() { - const alt = new Alt() + 'transactional setState': function () { + const newAlt = new Alt() - const actions = alt.generateActions('fire') + const newActions = newAlt.generateActions('fire') class SetState { constructor() { this.bindActions(actions) @@ -79,17 +79,17 @@ export default { } } - const store = alt.createStore(SetState) + const store = newAlt.createStore(SetState) assert(store.getState().x === 0, 'x is initially 0') - actions.fire() + newActions.fire() assert(store.getState().x === 1, 'x is 1') }, - 'transactional setState with failure'() { - const alt = new Alt() + 'transactional setState with failure': function () { + const newAlt = new Alt() - const actions = alt.generateActions('fire') + const newActions = newAlt.generateActions('fire') class SetState { constructor() { this.bindActions(actions) @@ -103,17 +103,17 @@ export default { } } - const store = alt.createStore(SetState) + const store = newAlt.createStore(SetState) assert(store.getState().x === 0, 'x is initially 0') - assert.throws(() => actions.fire()) + assert.throws(() => { return newActions.fire() }) assert(store.getState().x === 0, 'x remains 0') }, - 'setState no dispatch'() { - const alt = new Alt() + 'setState no dispatch': function () { + const newAlt = new Alt() - const actions = alt.generateActions('fire') + newAlt.generateActions('fire') class BrokenSetState { constructor() { this.x = 0 @@ -122,17 +122,16 @@ export default { } assert.throws(() => { - alt.createStore(BrokenSetState) + newAlt.createStore(BrokenSetState) }) }, - 'state is set not replaced'() { - const alt = new Alt() - - const actions = alt.generateActions('fire') + 'state is set not replaced': function () { + const newAlt = new Alt() + const newActions = newAlt.generateActions('fire') class SetState { constructor() { - this.bindActions(actions) + this.bindActions(newActions) this.x = 0 this.y = 0 } @@ -141,12 +140,12 @@ export default { this.setState({ x: 1 }) } } - const store = alt.createStore(SetState) + const store = newAlt.createStore(SetState) assert(store.getState().x === 0, 'x is initially 0') - actions.fire() + newActions.fire() assert(store.getState().x === 1, 'x is now 1') assert(store.getState().y === 0, 'y was untouched') - }, + } } } diff --git a/test/store-as-a-module.js b/test/store-as-a-module.js index 56556c40..11f0e2c7 100644 --- a/test/store-as-a-module.js +++ b/test/store-as-a-module.js @@ -1,6 +1,5 @@ import assert from 'assert' import Alt from '../' - import * as StoreModel from './helpers/SaaM' const alt = new Alt() @@ -9,7 +8,7 @@ const store = alt.createStore(StoreModel) export default { 'Stores as a Module': { - 'store state is there'() { + 'store state is there': function () { assert.equal(store.getState(), 1, 'store data is initialized to 1') actions.increment() diff --git a/test/store-model-test.js b/test/store-model-test.js index b245e080..d5c9a53d 100644 --- a/test/store-model-test.js +++ b/test/store-model-test.js @@ -1,5 +1,5 @@ -import Alt from '../dist/alt-with-runtime' import { assert } from 'chai' +import Alt from '../dist/alt-with-runtime' const alt = new Alt() const Actions = alt.generateActions('hello') @@ -20,7 +20,7 @@ const MyStoreModelObj = { onHello: Actions.HELLO }, - onHello: function () { + onHello() { this.state.test = 1 } } @@ -31,7 +31,7 @@ export default { alt.recycle() }, - 'as an object'() { + 'as an object': function () { const MyStore = alt.createStore(MyStoreModelObj) assert(MyStore.getState().test === 2, 'store state is initially set') @@ -46,7 +46,7 @@ export default { assert(MyStore.getState().test === 1, 'i can change state through actions') }, - 'as a class'() { + 'as a class': function () { const MyStore = alt.createStore(MyStoreModel, 'MyStore') assert(MyStore.getState().test === 2, 'store state is initially set') @@ -59,6 +59,6 @@ export default { Actions.hello() assert(MyStore.getState().test === 1, 'i can change state through actions') - }, + } } } diff --git a/test/store-transforms-test.js b/test/store-transforms-test.js index a9acecc2..34b95294 100644 --- a/test/store-transforms-test.js +++ b/test/store-transforms-test.js @@ -3,7 +3,7 @@ import Alt from '../dist/alt-with-runtime' const alt = new Alt() -alt.storeTransforms.push(function (Store) { +alt.storeTransforms.push((Store) => { Store.test = 'hello' return Store }) @@ -14,24 +14,18 @@ class Store { } } -class Store2 { - constructor() { - this.y = 0 - } -} - export default { 'store transforms': { - 'when creating stores alt goes through its series of transforms'() { + 'when creating stores alt goes through its series of transforms': function () { const store = alt.createStore(Store) assert(alt.storeTransforms.length === 1) assert.isDefined(store.test) assert(store.test === 'hello', 'store that adds hello to instance transform') }, - 'unsaved stores get the same treatment'() { + 'unsaved stores get the same treatment': function () { const store2 = alt.createUnsavedStore(Store) assert.isDefined(store2.test) - }, - }, + } + } } diff --git a/test/stores-get-alt.js b/test/stores-get-alt.js index 9e16683d..5d6c83b9 100644 --- a/test/stores-get-alt.js +++ b/test/stores-get-alt.js @@ -4,20 +4,20 @@ import Alt from '../dist/alt-with-runtime' const alt = new Alt() export default { - 'the stores get the alt instance'() { + 'the stores get the alt instance': function () { class MyStore { - constructor(alt) { - assert.instanceOf(alt, Alt, 'alt is an instance of Alt') + constructor(altInstace) { + assert.instanceOf(altInstace, Alt, 'alt is an instance of Alt') } } alt.createStore(MyStore, 'MyStore', alt) }, - 'the actions get the alt instance'() { + 'the actions get the alt instance': function () { class MyActions { - constructor(alt) { - assert.instanceOf(alt, Alt, 'alt is an instance of Alt') + constructor(altInstace) { + assert.instanceOf(altInstace, Alt, 'alt is an instance of Alt') } } diff --git a/test/stores-with-colliding-names.js b/test/stores-with-colliding-names.js index d4f99456..6f45382a 100644 --- a/test/stores-with-colliding-names.js +++ b/test/stores-with-colliding-names.js @@ -4,7 +4,7 @@ import Alt from '../dist/alt-with-runtime' const alt = new Alt() -alt.createStore(function MyStore() { }) +alt.createStore(function MyStore() {}); //eslint-disable-line export default { 'console warn for missing identifier': { @@ -13,25 +13,24 @@ export default { console.warn.returnsArg(0) }, - 'stores with colliding names'() { - const MyStore = (function () { + 'stores with colliding names': function () { + const myStore = (function () { return function MyStore() { } }()) - alt.createStore(MyStore) + alt.createStore(myStore) assert.isObject(alt.stores.MyStore1, 'a store was still created') - }, - 'colliding names via identifier'() { + 'colliding names via identifier': function () { class auniquestore { } alt.createStore(auniquestore, 'MyStore') assert.isObject(alt.stores.MyStore1, 'a store was still created') }, - 'not providing a store name via anonymous function'() { - alt.createStore(function () { }) + 'not providing a store name via anonymous function': function () { + alt.createStore(() => { }) assert.isObject(alt.stores[''], 'a store with no name was still created') }, @@ -39,6 +38,6 @@ export default { afterEach() { assert.ok(console.warn.calledOnce, 'the warning was called') assert.instanceOf(console.warn.returnValues[0], ReferenceError, 'value returned is an instanceof referenceerror') - }, + } } } diff --git a/test/value-stores-test.js b/test/value-stores-test.js index 179c8295..43d81cf8 100644 --- a/test/value-stores-test.js +++ b/test/value-stores-test.js @@ -1,6 +1,5 @@ import { assert } from 'chai' import Alt from '../' -import sinon from 'sinon' const alt = new Alt() @@ -8,9 +7,7 @@ const actions = alt.generateActions('fire') const store = alt.createStore({ state: 21, - displayName: 'ValueStore', - reduce(state, payload) { return state + 1 } @@ -18,9 +15,7 @@ const store = alt.createStore({ const store2 = alt.createStore({ state: [1, 2, 3], - displayName: 'Value2Store', - reduce(state, payload) { return state.concat(state[state.length - 1] + 1) } @@ -28,13 +23,10 @@ const store2 = alt.createStore({ const store3 = alt.createStore({ state: 21, - displayName: 'ValueStore3', - bindListeners: { fire: actions.fire }, - fire() { this.setState(this.state + 1) } @@ -46,7 +38,7 @@ export default { alt.recycle() }, - 'stores can contain state as any value'(done) { + 'stores can contain state as any value': function (done) { assert(store.state === 21, 'store state is value') assert(store.getState() === 21, 'getState returns value too') @@ -61,7 +53,7 @@ export default { actions.fire() }, - 'stores can contain state as any value (non reduce)'(done) { + 'stores can contain state as any value (non reduce)': function (done) { assert(store3.state === 21, 'store state is value') assert(store3.getState() === 21, 'getState returns value too') @@ -76,7 +68,7 @@ export default { actions.fire() }, - 'store with array works too'() { + 'store with array works too': function () { assert.deepEqual(store2.state, [1, 2, 3]) actions.fire() assert.deepEqual(store2.state, [1, 2, 3, 4]) diff --git a/web/scripts/createIndex.js b/web/scripts/createIndex.js index c3316a7b..fc574077 100644 --- a/web/scripts/createIndex.js +++ b/web/scripts/createIndex.js @@ -1,6 +1,6 @@ const fs = require('fs') const path = require('path') -const lunr = require('lunr') +const lunr = require('lunr'); //eslint-disable-line const index = lunr(function () { this.field('title', { boost: 10 }) @@ -20,11 +20,11 @@ function addDocument(name, idx) { const doc = topdoc .split('\n') .filter(Boolean) - .reduce(function (obj, prop) { + .reduce((obj, prop) => { const keyVal = prop.split(':') obj[keyVal[0]] = keyVal[1].trim() return obj - }, { id: idx, body: body }) + }, { id: idx, body }) index.add(doc) @@ -46,10 +46,10 @@ function isDir(fullpath) { } function fromDirectory(dir) { - return fs.readdirSync(dir).reduce(function (dirs, file) { + return fs.readdirSync(dir).reduce((dirs, file) => { const fullpath = path.join(dir, file) if (isDir(fullpath)) { - dirs.push.apply(dirs, fromDirectory(path.join(fullpath))) + dirs.push(...fromDirectory(path.join(fullpath))) } else if (/.md$/.test(file)) { dirs.push(fullpath) } diff --git a/web/scripts/search.js b/web/scripts/search.js index 9a7cf6d5..6413849d 100644 --- a/web/scripts/search.js +++ b/web/scripts/search.js @@ -1,5 +1,6 @@ -import SearchApp from 'alt-search-docs' -import React from 'react' +import SearchApp from 'alt-search-docs' //eslint-disable-line +import React from 'react' //eslint-disable-line +import ReactDOM from 'react-dom' //eslint-disable-line const github = /goatslacker.github.io\/alt/ @@ -7,7 +8,7 @@ if (github.test(location.href)) { location.href = location.href.replace(github, 'alt.js.org') } -React.render( +ReactDOM.render( , document.getElementById('alt-search-app') ) diff --git a/web/webpack.config.js b/web/webpack.config.js index bea820d4..03fa60a6 100644 --- a/web/webpack.config.js +++ b/web/webpack.config.js @@ -1,5 +1,4 @@ -var path = require('path') -var webpack = require('webpack') +const path = require('path') module.exports = { entry: path.join(__dirname, 'scripts', 'search.js'), @@ -12,7 +11,7 @@ module.exports = { include: [ path.join(__dirname, 'scripts'), path.join(__dirname, '..', 'node_modules', 'alt-search-docs', 'src'), - path.join(__dirname, '..', 'node_modules', 'alt-search-docs', 'node_modules/react-text-highlight/src'), + path.join(__dirname, '..', 'node_modules', 'alt-search-docs', 'node_modules/react-text-highlight/src') ], loader: 'babel-loader?stage=0' }, diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..cb7b2c96 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4608 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + +abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + +acorn-dynamic-import@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" + dependencies: + acorn "^4.0.3" + +acorn-globals@^1.0.4: + version "1.0.9" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" + dependencies: + acorn "^2.1.0" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + dependencies: + acorn "^3.0.4" + +acorn@^2.1.0, acorn@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + +acorn@^4.0.3: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + +acorn@^5.0.0, acorn@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.2.1.tgz#317ac7821826c22c702d66189ab8359675f135d7" + +ajv-keywords@^2.0.0, ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" + +ajv@^4.9.1: + version "4.11.8" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" + dependencies: + co "^4.6.0" + json-stable-stringify "^1.0.1" + +ajv@^5.0.0, ajv@^5.1.0, ajv@^5.1.5, ajv@^5.2.3, ajv@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.3.0.tgz#4414ff74a50879c208ee5fdc826e32c303549eda" + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +alt-search-docs@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/alt-search-docs/-/alt-search-docs-1.0.6.tgz#adf03aa4fb231a730dca947542adfc5eb700ba51" + dependencies: + alt "^0.16.5" + axios "^0.5.4" + classnames "^2.1.1" + es6-promise "^2.1.1" + lunr "^0.5.9" + marked "^0.3.3" + react "^0.13.3" + react-text-highlight "^0.1.1" + +alt@^0.16.5: + version "0.16.10" + resolved "https://registry.yarnpkg.com/alt/-/alt-0.16.10.tgz#56c622c14a1f4b784ad7422f4c8aaac659f2f09d" + dependencies: + es-symbol "1.1.2" + eventemitter3 "0.1.6" + flux "2.0.3" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + +ansi-escapes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.0.0.tgz#ec3e8b4e9f8064fc02c3ac9b65f1c275bda8ef92" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + +ansi-styles@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" + dependencies: + color-convert "^1.9.0" + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + +are-we-there-yet@~1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.9" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" + dependencies: + sprintf-js "~1.0.2" + +"argparse@~ 0.1.11": + version "0.1.16" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-0.1.16.tgz#cfd01e0fbba3d6caed049fbd758d40f65196f57c" + dependencies: + underscore "~1.7.0" + underscore.string "~2.4.0" + +aria-query@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.0.tgz#4af10a1e61573ddea0cf3b99b51c52c05b424d24" + dependencies: + ast-types-flow "0.0.7" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + dependencies: + arr-flatten "^1.0.1" + +arr-flatten@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + +asn1.js@^4.0.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.2.tgz#8117ef4f7ed87cd8f89044b5bff97ac243a16c9a" + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@0.1.11: + version "0.1.11" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz#559be18376d08a4ec4dbe80877d27818639b2df7" + +asn1@~0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + +assert-plus@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.1.5.tgz#ee74009413002d84cec7219c6ac811812e723160" + +assert-plus@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" + +assert@^1.1.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" + dependencies: + util "0.10.3" + +assertion-error@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.0.tgz#c7f85438fdd466bc7ca16ab90c81513797a5d23b" + +ast-types-flow@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + +ast-types@0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.9.6.tgz#102c9e9e9005d3e7e3829bf0c4fa24ee862ee9b9" + +async-each@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" + +async@1.x: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + +async@^2.1.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" + dependencies: + lodash "^4.14.0" + +async@~0.2.6: + version "0.2.10" + resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1" + +async@~0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + +aws-sign2@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.5.0.tgz#c57103f7a17fc037f02d7c2e64b602ea223f7d63" + +aws-sign2@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + +aws4@^1.2.1, aws4@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" + +axios@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.5.4.tgz#e06f852257838133e69094d925ccb419de94fdfb" + dependencies: + es6-promise "^2.0.1" + +axobject-query@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-0.1.0.tgz#62f59dbc59c9f9242759ca349960e7a2fe3c36c0" + dependencies: + ast-types-flow "0.0.7" + +babel-cli@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.26.0.tgz#502ab54874d7db88ad00b887a06383ce03d002f1" + dependencies: + babel-core "^6.26.0" + babel-polyfill "^6.26.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + commander "^2.11.0" + convert-source-map "^1.5.0" + fs-readdir-recursive "^1.0.0" + glob "^7.1.2" + lodash "^4.17.4" + output-file-sync "^1.1.2" + path-is-absolute "^1.0.1" + slash "^1.0.0" + source-map "^0.5.6" + v8flags "^2.1.1" + optionalDependencies: + chokidar "^1.6.1" + +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.25.0, babel-core@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" + slash "^1.0.0" + source-map "^0.5.6" + +babel-eslint@^7.2.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-7.2.3.tgz#b2fe2d80126470f5c19442dc757253a897710827" + dependencies: + babel-code-frame "^6.22.0" + babel-traverse "^6.23.1" + babel-types "^6.23.0" + babylon "^6.17.0" + +babel-generator@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.0.tgz#ac1ae20070b79f6e3ca1d3269613053774f20dc5" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.6" + trim-right "^1.0.1" + +babel-helper-bindify-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-builder-react-jsx@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz#39ff8313b75c8b65dceff1f31d383e0ff2a408a0" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + esutils "^2.0.2" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-explode-class@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" + dependencies: + babel-helper-bindify-decorators "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-loader@^7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-7.1.2.tgz#f6cbe122710f1aa2af4d881c6d5b54358ca24126" + dependencies: + find-cache-dir "^1.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-add-module-exports@^0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/babel-plugin-add-module-exports/-/babel-plugin-add-module-exports-0.1.4.tgz#1a5b6d761ee1f663d845b4ea6878712de31c107a" + dependencies: + babel-template "^6.5.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-external-helpers@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz#2285f48b02bd5dede85175caf8c62e86adccefa1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + +babel-plugin-syntax-class-constructor-call@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + +babel-plugin-syntax-do-expressions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-do-expressions/-/babel-plugin-syntax-do-expressions-6.13.0.tgz#5747756139aa26d390d09410b03744ba07e4796d" + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-export-extensions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" + +babel-plugin-syntax-flow@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" + +babel-plugin-syntax-function-bind@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-function-bind/-/babel-plugin-syntax-function-bind-6.13.0.tgz#48c495f177bdf31a981e732f55adc0bdd2601f46" + +babel-plugin-syntax-jsx@^6.3.13, babel-plugin-syntax-jsx@^6.8.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-generator-functions@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-async-to-generator@^6.22.0, babel-plugin-transform-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-class-constructor-call@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" + dependencies: + babel-plugin-syntax-class-constructor-call "^6.18.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" + dependencies: + babel-helper-explode-class "^6.24.1" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-do-expressions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-do-expressions/-/babel-plugin-transform-do-expressions-6.22.0.tgz#28ccaf92812d949c2cd1281f690c8fdc468ae9bb" + dependencies: + babel-plugin-syntax-do-expressions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0, babel-plugin-transform-es2015-classes@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0, babel-plugin-transform-exponentiation-operator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-export-extensions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" + dependencies: + babel-plugin-syntax-export-extensions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-flow-strip-types@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" + dependencies: + babel-plugin-syntax-flow "^6.18.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-function-bind@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-function-bind/-/babel-plugin-transform-function-bind-6.22.0.tgz#c6fb8e96ac296a310b8cf8ea401462407ddf6a97" + dependencies: + babel-plugin-syntax-function-bind "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-react-display-name@^6.23.0: + version "6.25.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz#67e2bf1f1e9c93ab08db96792e05392bf2cc28d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx-self@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz#df6d80a9da2612a121e6ddd7558bcbecf06e636e" + dependencies: + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx-source@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz#66ac12153f5cd2d17b3c19268f4bf0197f44ecd6" + dependencies: + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-react-jsx@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz#840a028e7df460dfc3a2d29f0c0d91f6376e66a3" + dependencies: + babel-helper-builder-react-jsx "^6.24.1" + babel-plugin-syntax-jsx "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + +babel-preset-env@^1.6.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.6.1.tgz#a18b564cc9b9afdf4aae57ae3c1b0d99188e6f48" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^2.1.2" + invariant "^2.2.2" + semver "^5.3.0" + +babel-preset-flow@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz#e71218887085ae9a24b5be4169affb599816c49d" + dependencies: + babel-plugin-transform-flow-strip-types "^6.22.0" + +babel-preset-react@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-react/-/babel-preset-react-6.24.1.tgz#ba69dfaea45fc3ec639b6a4ecea6e17702c91380" + dependencies: + babel-plugin-syntax-jsx "^6.3.13" + babel-plugin-transform-react-display-name "^6.23.0" + babel-plugin-transform-react-jsx "^6.24.1" + babel-plugin-transform-react-jsx-self "^6.22.0" + babel-plugin-transform-react-jsx-source "^6.22.0" + babel-preset-flow "^6.23.0" + +babel-preset-stage-0@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-0/-/babel-preset-stage-0-6.24.1.tgz#5642d15042f91384d7e5af8bc88b1db95b039e6a" + dependencies: + babel-plugin-transform-do-expressions "^6.22.0" + babel-plugin-transform-function-bind "^6.22.0" + babel-preset-stage-1 "^6.24.1" + +babel-preset-stage-1@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" + dependencies: + babel-plugin-transform-class-constructor-call "^6.24.1" + babel-plugin-transform-export-extensions "^6.22.0" + babel-preset-stage-2 "^6.24.1" + +babel-preset-stage-2@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators "^6.24.1" + babel-preset-stage-3 "^6.24.1" + +babel-preset-stage-3@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-generator-functions "^6.24.1" + babel-plugin-transform-async-to-generator "^6.24.1" + babel-plugin-transform-exponentiation-operator "^6.24.1" + babel-plugin-transform-object-rest-spread "^6.22.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0, babel-template@^6.5.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.23.1, babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.23.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.17.0, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + +base62@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/base62/-/base62-1.2.0.tgz#31e7e560dc846c9f44c1a531df6514da35474157" + +base64-js@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886" + +bcrypt-pbkdf@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" + dependencies: + tweetnacl "^0.14.3" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + +binary-extensions@^1.0.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.10.0.tgz#9aeb9a6c5e88638aad171e167f5900abe24835d0" + +block-stream@*: + version "0.0.9" + resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + dependencies: + inherits "~2.0.0" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + +boom@0.4.x: + version "0.4.2" + resolved "https://registry.yarnpkg.com/boom/-/boom-0.4.2.tgz#7a636e9ded4efcefb19cef4947a3c67dfaee911b" + dependencies: + hoek "0.9.x" + +boom@2.x.x: + version "2.10.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" + dependencies: + hoek "2.x.x" + +boom@4.x.x: + version "4.3.1" + resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" + dependencies: + hoek "4.x.x" + +boom@5.x.x: + version "5.2.0" + resolved "https://registry.yarnpkg.com/boom/-/boom-5.2.0.tgz#5dd9da6ee3a5f302077436290cb717d3f4a54e02" + dependencies: + hoek "4.x.x" + +brace-expansion@^1.0.0, brace-expansion@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + +"browser-request@>= 0.3.1 < 0.4.0": + version "0.3.3" + resolved "https://registry.yarnpkg.com/browser-request/-/browser-request-0.3.3.tgz#9ece5b5aca89a29932242e18bf933def9876cc17" + +browser-stdout@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" + dependencies: + pako "~0.2.0" + +browserslist@^2.1.2: + version "2.8.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-2.8.0.tgz#27d64028130a2e8585ca96f7c3b7730eff4de493" + dependencies: + caniuse-lite "^1.0.30000758" + electron-to-chromium "^1.3.27" + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-modules@^1.0.0, builtin-modules@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + +caniuse-lite@^1.0.30000758: + version "1.0.30000760" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000760.tgz#ec720395742f1c7ec8947fd6dd2604e77a8f98ff" + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chai@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-2.3.0.tgz#8a2f6a34748da801090fd73287b2aa739a4e909a" + dependencies: + assertion-error "1.0.0" + deep-eql "0.1.3" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.0.tgz#b5ea48efc9c1793dccc9b4767c93914d3f2d52ba" + dependencies: + ansi-styles "^3.1.0" + escape-string-regexp "^1.0.5" + supports-color "^4.0.0" + +chokidar@^1.6.1, chokidar@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + +classnames@^2.1.1: + version "2.2.5" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.5.tgz#fb3801d453467649ef3603c7d61a02bd129bde6d" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + +color-convert@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.1.tgz#c1261107aeb2f294ebffec9ed9ecad529a6097ed" + dependencies: + color-name "^1.1.1" + +color-name@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + +combined-stream@^1.0.5, combined-stream@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" + dependencies: + delayed-stream "~1.0.0" + +combined-stream@~0.0.4: + version "0.0.7" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-0.0.7.tgz#0137e657baa5a7541c57ac37ac5fc07d73b4dc1f" + dependencies: + delayed-stream "0.0.5" + +commander@2.11.0, commander@^2.11.0, commander@^2.5.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + +commoner@^0.10.1: + version "0.10.8" + resolved "https://registry.yarnpkg.com/commoner/-/commoner-0.10.8.tgz#34fc3672cd24393e8bb47e70caa0293811f4f2c5" + dependencies: + commander "^2.5.0" + detective "^4.3.1" + glob "^5.0.15" + graceful-fs "^4.1.2" + iconv-lite "^0.4.5" + mkdirp "^0.5.0" + private "^0.1.6" + q "^1.1.2" + recast "^0.11.17" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + +concat-stream@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + +convert-source-map@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.0.tgz#9acd70851c6d5dfdd93d9282e5edf94a03ff46b5" + +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + +core-js@^2.4.0, core-js@^2.5.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + +coveralls@2.11.4: + version "2.11.4" + resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-2.11.4.tgz#b42f4e156f6ba9419d27434a4289094f219267f7" + dependencies: + js-yaml "3.0.1" + lcov-parse "0.0.6" + log-driver "1.2.4" + request "2.40.0" + +create-ecdh@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + ripemd160 "^2.0.0" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-react-class@^15.6.0: + version "15.6.2" + resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.2.tgz#cf1ed15f12aad7f14ef5f2dfe05e6c42f91ef02a" + dependencies: + fbjs "^0.8.9" + loose-envify "^1.3.1" + object-assign "^4.1.1" + +cross-spawn@^5.0.1, cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cryptiles@0.2.x: + version "0.2.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-0.2.2.tgz#ed91ff1f17ad13d3748288594f8a48a0d26f325c" + dependencies: + boom "0.4.x" + +cryptiles@2.x.x: + version "2.0.5" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" + dependencies: + boom "2.x.x" + +cryptiles@3.x.x: + version "3.1.2" + resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe" + dependencies: + boom "5.x.x" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": + version "0.3.2" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" + +"cssstyle@>= 0.2.29 < 0.3.0": + version "0.2.37" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" + dependencies: + cssom "0.3.x" + +ctype@0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/ctype/-/ctype-0.5.3.tgz#82c18c2461f74114ef16c135224ad0b9144ca12f" + +d@1: + version "1.0.0" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" + dependencies: + es5-ext "^0.10.9" + +damerau-levenshtein@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz#03191c432cb6eea168bb77f3a55ffdccb8978514" + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + dependencies: + assert-plus "^1.0.0" + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + +debug@3.1.0, debug@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +debug@^2.2.0, debug@^2.6.8: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + dependencies: + ms "2.0.0" + +decamelize@^1.0.0, decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + +deep-eql@0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-0.1.3.tgz#ef558acab8de25206cd713906d74e56930eb69f2" + dependencies: + type-detect "0.1.1" + +deep-extend@~0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" + +deep-is@~0.1.2, deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + +define-properties@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" + dependencies: + foreach "^2.0.5" + object-keys "^1.0.8" + +defined@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + +del@^2.0.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +delayed-stream@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz#d4b1f43a93e8296dfe02694f4680bc37a313c73f" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + dependencies: + repeating "^2.0.0" + +detect-libc@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.2.tgz#71ad5d204bf17a6a6ca8f450c61454066ef461e1" + +detective@^4.3.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/detective/-/detective-4.5.0.tgz#6e5a8c6b26e6c7a254b1c6b6d7490d98ec91edd1" + dependencies: + acorn "^4.0.3" + defined "^1.0.0" + +diff@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" + +diffie-hellman@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63" + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +dom-serializer@0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" + dependencies: + domelementtype "~1.1.1" + entities "~1.1.1" + +domain-browser@^1.1.1: + version "1.1.7" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" + +domelementtype@1, domelementtype@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2" + +domelementtype@~1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" + +domhandler@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.1.tgz#892e47000a99be55bbf3774ffea0561d8879c259" + dependencies: + domelementtype "1" + +domutils@^1.5.1: + version "1.6.2" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.6.2.tgz#1958cc0b4c9426e9ed367fb1c8e854891b0fa3ff" + dependencies: + dom-serializer "0" + domelementtype "1" + +ecc-jsbn@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" + dependencies: + jsbn "~0.1.0" + +electron-to-chromium@^1.3.27: + version "1.3.27" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.27.tgz#78ecb8a399066187bb374eede35d9c70565a803d" + +elliptic@^6.0.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^6.1.0: + version "6.5.1" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.5.1.tgz#9baea929b155565c11ea41c6626eaa65cef992c2" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + +encoding@^0.1.11: + version "0.1.12" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" + dependencies: + iconv-lite "~0.4.13" + +enhanced-resolve@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + object-assign "^4.0.1" + tapable "^0.2.7" + +entities@^1.1.1, entities@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" + +envify@^3.0.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/envify/-/envify-3.4.1.tgz#d7122329e8df1688ba771b12501917c9ce5cbce8" + dependencies: + jstransform "^11.0.3" + through "~2.3.4" + +errno@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" + dependencies: + prr "~0.0.0" + +error-ex@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.9.0.tgz#690829a07cae36b222e7fd9b75c0d0573eb25227" + dependencies: + es-to-primitive "^1.1.1" + function-bind "^1.1.1" + has "^1.0.1" + is-callable "^1.1.3" + is-regex "^1.0.4" + +es-symbol@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/es-symbol/-/es-symbol-1.1.2.tgz#dc346fbbf5ed1c52ad69b4ba5cb26008ae218ff5" + +es-to-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" + dependencies: + is-callable "^1.1.1" + is-date-object "^1.0.1" + is-symbol "^1.0.1" + +es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: + version "0.10.35" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.35.tgz#18ee858ce6a3c45c7d79e91c15fcca9ec568494f" + dependencies: + es6-iterator "~2.0.1" + es6-symbol "~3.1.1" + +es6-iterator@^2.0.1, es6-iterator@~2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-map@^0.1.3: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-set "~0.1.5" + es6-symbol "~3.1.1" + event-emitter "~0.3.5" + +es6-promise@^2.0.1, es6-promise@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-2.3.0.tgz#96edb9f2fdb01995822b263dd8aadab6748181bc" + +es6-set@~0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" + dependencies: + d "1" + es5-ext "~0.10.14" + es6-iterator "~2.0.1" + es6-symbol "3.1.1" + event-emitter "~0.3.5" + +es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" + dependencies: + d "1" + es5-ext "~0.10.14" + +es6-weak-map@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" + dependencies: + d "1" + es5-ext "^0.10.14" + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +escape-html@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.2.tgz#d77d32fa98e38c2f41ae85e9278e0e0e6ba1022c" + +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + +escodegen@1.6.x: + version "1.6.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.6.1.tgz#367de17d8510540d12bc6dcb8b3f918391265815" + dependencies: + esprima "^1.2.2" + estraverse "^1.9.1" + esutils "^1.1.6" + optionator "^0.5.0" + optionalDependencies: + source-map "~0.1.40" + +escodegen@^1.6.1: + version "1.9.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.5.6" + +escope@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" + dependencies: + es6-map "^0.1.3" + es6-weak-map "^2.0.1" + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-config-airbnb-base@^11.3.0: + version "11.3.2" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.3.2.tgz#8703b11abe3c88ac7ec2b745b7fdf52e00ae680a" + dependencies: + eslint-restricted-globals "^0.1.1" + +eslint-config-airbnb@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-15.1.0.tgz#fd432965a906e30139001ba830f58f73aeddae8e" + dependencies: + eslint-config-airbnb-base "^11.3.0" + +eslint-import-resolver-node@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.1.tgz#4422574cde66a9a7b099938ee4d508a199e0e3cc" + dependencies: + debug "^2.6.8" + resolve "^1.2.0" + +eslint-loader@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/eslint-loader/-/eslint-loader-1.9.0.tgz#7e1be9feddca328d3dcfaef1ad49d5beffe83a13" + dependencies: + loader-fs-cache "^1.0.0" + loader-utils "^1.0.2" + object-assign "^4.0.1" + object-hash "^1.1.4" + rimraf "^2.6.1" + +eslint-module-utils@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz#abaec824177613b8a95b299639e1b6facf473449" + dependencies: + debug "^2.6.8" + pkg-dir "^1.0.0" + +eslint-plugin-babel@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-babel/-/eslint-plugin-babel-4.1.2.tgz#79202a0e35757dd92780919b2336f1fa2fe53c1e" + +eslint-plugin-import@^2.7.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.8.0.tgz#fa1b6ef31fcb3c501c09859c1b86f1fc5b986894" + dependencies: + builtin-modules "^1.1.1" + contains-path "^0.1.0" + debug "^2.6.8" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.1" + eslint-module-utils "^2.1.1" + has "^1.0.1" + lodash.cond "^4.3.0" + minimatch "^3.0.3" + read-pkg-up "^2.0.0" + +eslint-plugin-jsx-a11y@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.1.1.tgz#5c96bb5186ca14e94db1095ff59b3e2bd94069b1" + dependencies: + aria-query "^0.7.0" + array-includes "^3.0.3" + ast-types-flow "0.0.7" + axobject-query "^0.1.0" + damerau-levenshtein "^1.0.0" + emoji-regex "^6.1.0" + jsx-ast-utils "^1.4.0" + +eslint-plugin-react@^7.2.0: + version "7.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.4.0.tgz#300a95861b9729c087d362dd64abcc351a74364a" + dependencies: + doctrine "^2.0.0" + has "^1.0.1" + jsx-ast-utils "^2.0.0" + prop-types "^15.5.10" + +eslint-restricted-globals@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz#35f0d5cbc64c2e3ed62e93b4b1a7af05ba7ed4d7" + +eslint-scope@^3.7.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint@^4.4.1: + version "4.11.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.11.0.tgz#39a8c82bc0a3783adf5a39fa27fdd9d36fac9a34" + dependencies: + ajv "^5.3.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.0.1" + doctrine "^2.0.0" + eslint-scope "^3.7.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.17.0" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "^4.0.1" + text-table "~0.2.0" + +espree@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-3.5.2.tgz#756ada8b979e9dcfcdb30aad8d1a9304a905e1ca" + dependencies: + acorn "^5.2.1" + acorn-jsx "^3.0.0" + +esprima-fb@^15001.1.0-dev-harmony-fb: + version "15001.1.0-dev-harmony-fb" + resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz#30a947303c6b8d5e955bee2b99b1d233206a6901" + +esprima@2.5.x: + version "2.5.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.5.0.tgz#f387a46fd344c1b1a39baf8c20bfb43b6d0058cc" + +esprima@^1.2.2: + version "1.2.5" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.5.tgz#0993502feaf668138325756f30f9a51feeec11e9" + +esprima@^3.1.3, esprima@~3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + +esprima@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" + +"esprima@~ 1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.0.4.tgz#9f557e08fc3b4d26ece9dd34f8fbf476b62585ad" + +esquery@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa" + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163" + dependencies: + estraverse "^4.1.0" + object-assign "^4.0.1" + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + +esutils@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" + +esutils@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + +event-emitter@~0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + dependencies: + d "1" + es5-ext "~0.10.14" + +eventemitter3@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-0.1.6.tgz#8c7ac44b87baab55cd50c828dc38778eac052ea5" + +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + dependencies: + is-posix-bracket "^0.1.0" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + dependencies: + fill-range "^2.1.0" + +extend@~3.0.0, extend@~3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" + +external-editor@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.5.tgz#52c249a3981b9ba187c7cacf5beb50bf1d91a6bc" + dependencies: + iconv-lite "^0.4.17" + jschardet "^1.4.2" + tmp "^0.0.33" + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + dependencies: + is-extglob "^1.0.0" + +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + +fast-deep-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + +fast-levenshtein@~1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-1.0.7.tgz#0178dcdee023b92905193af0959e8a7639cfdcb9" + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + +fbemitter@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fbemitter/-/fbemitter-2.1.1.tgz#523e14fdaf5248805bb02f62efc33be703f51865" + dependencies: + fbjs "^0.8.4" + +fbjs@^0.8.0, fbjs@^0.8.16, fbjs@^0.8.4, fbjs@^0.8.9: + version "0.8.16" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.16.tgz#5e67432f550dc41b572bf55847b8aca64e5337db" + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.9" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + +fileset@0.2.x: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fileset/-/fileset-0.2.1.tgz#588ef8973c6623b2a76df465105696b96aac8067" + dependencies: + glob "5.x" + minimatch "2.x" + +fill-range@^2.1.0: + version "2.2.3" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^1.1.3" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + dependencies: + locate-path "^2.0.0" + +flat-cache@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" + dependencies: + circular-json "^0.3.1" + del "^2.0.2" + graceful-fs "^4.1.2" + write "^0.2.1" + +flux@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/flux/-/flux-2.0.3.tgz#787e1aedffb34a322a60b49c57a2d23856a6de27" + +flux@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/flux/-/flux-3.1.3.tgz#d23bed515a79a22d933ab53ab4ada19d05b2f08a" + dependencies: + fbemitter "^2.0.0" + fbjs "^0.8.0" + +for-in@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + +for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + dependencies: + for-in "^1.0.1" + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + +forever-agent@~0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.5.2.tgz#6d0e09c4921f94a27f63d3b49c5feff1ea4c5130" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + +form-data@~0.1.0: + version "0.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-0.1.4.tgz#91abd788aba9702b1aabfa8bc01031a2ac9e3b12" + dependencies: + async "~0.9.0" + combined-stream "~0.0.4" + mime "~1.2.11" + +form-data@~2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +form-data@~2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.1.tgz#6fb94fbd71885306d73d15cc497fe4cc4ecd44bf" + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.5" + mime-types "^2.1.12" + +formatio@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/formatio/-/formatio-1.1.1.tgz#5ed3ccd636551097383465d996199100e86161e9" + dependencies: + samsam "~1.1" + +fs-readdir-recursive@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + +fsevents@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.2.tgz#3282b713fb3ad80ede0e9fcf4611b5aa6fc033f4" + dependencies: + nan "^2.3.0" + node-pre-gyp "^0.6.36" + +fstream-ignore@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" + dependencies: + fstream "^1.0.0" + inherits "2" + minimatch "^3.0.0" + +fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-caller-file@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + dependencies: + assert-plus "^1.0.0" + +ghooks@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ghooks/-/ghooks-0.3.2.tgz#a1fa85dede71eecc19faca9ee163c3cdfc1b94d0" + dependencies: + spawn-command "^0.0.2" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + dependencies: + is-glob "^2.0.0" + +glob@5.x, glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^9.17.0, globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.4: + version "4.1.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" + +growl@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" + +handlebars@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-3.0.0.tgz#7f4e537f4dd6992869d66c01b7505eba3561a5d5" + dependencies: + optimist "^0.6.1" + source-map "^0.1.40" + optionalDependencies: + uglify-js "~2.3" + +har-schema@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + +har-validator@~4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" + dependencies: + ajv "^4.9.1" + har-schema "^1.0.5" + +har-validator@~5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" + dependencies: + ajv "^5.1.0" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + dependencies: + ansi-regex "^2.0.0" + +has-flag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + +has@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" + dependencies: + function-bind "^1.0.2" + +hash-base@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-2.0.2.tgz#66ea1d856db4e8a5470cadf6fce23ae5244ef2e1" + dependencies: + inherits "^2.0.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hawk@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-1.1.1.tgz#87cd491f9b46e4e2aeaca335416766885d2d1ed9" + dependencies: + boom "0.4.x" + cryptiles "0.2.x" + hoek "0.9.x" + sntp "0.2.x" + +hawk@3.1.3, hawk@~3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" + dependencies: + boom "2.x.x" + cryptiles "2.x.x" + hoek "2.x.x" + sntp "1.x.x" + +hawk@~6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" + dependencies: + boom "4.x.x" + cryptiles "3.x.x" + hoek "4.x.x" + sntp "2.x.x" + +he@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoek@0.9.x: + version "0.9.1" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-0.9.1.tgz#3d322462badf07716ea7eb85baf88079cddce505" + +hoek@2.x.x: + version "2.16.3" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" + +hoek@4.x.x: + version "4.2.0" + resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.0.tgz#72d9d0754f7fe25ca2d01ad8f8f9a9449a89526d" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.5.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" + +"htmlparser2@>= 3.7.3 < 4.0.0": + version "3.9.2" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.9.2.tgz#1bdf87acca0f3f9e53fa4fcceb0f4b4cbb00b338" + dependencies: + domelementtype "^1.3.0" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^2.0.2" + +http-signature@~0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-0.10.1.tgz#4fbdac132559aa8323121e540779c0a012b27e66" + dependencies: + asn1 "0.1.11" + assert-plus "^0.1.5" + ctype "0.5.3" + +http-signature@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" + dependencies: + assert-plus "^0.2.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" + +iconv-lite@^0.4.17, iconv-lite@^0.4.5, iconv-lite@~0.4.13: + version "0.4.19" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" + +ieee754@^1.1.4: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" + +ignore@^3.3.3: + version "3.3.7" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" + +immutable@^3.7.2: + version "3.8.2" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.2.tgz#c2439951455bb39913daf281376f1530e104adf3" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + +ini@~1.3.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" + +inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +interpret@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" + +invariant@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.2.tgz#9e1f56ac0acdb6bf303306f338be3b204ae60360" + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + +is-builtin-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" + dependencies: + builtin-modules "^1.0.0" + +is-callable@^1.1.1, is-callable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + dependencies: + is-extglob "^1.0.0" + +is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + dependencies: + kind-of "^3.0.2" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + +is-path-in-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" + dependencies: + path-is-inside "^1.0.1" + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + dependencies: + has "^1.0.1" + +is-resolvable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" + dependencies: + tryit "^1.0.1" + +is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + +is-symbol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + +iso@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/iso/-/iso-4.2.0.tgz#528a6aad29cd4663f589e16cd1e148f38a7eecdb" + dependencies: + escape-html "1.0.2" + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + dependencies: + isarray "1.0.0" + +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + +istanbul@0.3.19: + version "0.3.19" + resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.3.19.tgz#b8e30aca58a4a4e08966d9530e706bcbba252ba2" + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.6.x" + esprima "2.5.x" + fileset "0.2.x" + handlebars "3.0.0" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "1.3.x" + which "1.0.x" + wordwrap "0.0.x" + +js-tokens@^3.0.0, js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + +js-yaml@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.0.1.tgz#76405fea5bce30fc8f405d48c6dca7f0a32c6afe" + dependencies: + argparse "~ 0.1.11" + esprima "~ 1.0.2" + +js-yaml@3.x, js-yaml@^3.9.1: + version "3.10.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + +jschardet@^1.4.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.6.0.tgz#c7d1a71edcff2839db2f9ec30fc5d5ebd3c1a678" + +jsdom@^6.3.0: + version "6.5.1" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-6.5.1.tgz#b6064d6a7651081af41d576edc56bc51e00122c0" + dependencies: + acorn "^2.4.0" + acorn-globals "^1.0.4" + browser-request ">= 0.3.1 < 0.4.0" + cssom ">= 0.3.0 < 0.4.0" + cssstyle ">= 0.2.29 < 0.3.0" + escodegen "^1.6.1" + htmlparser2 ">= 3.7.3 < 4.0.0" + nwmatcher ">= 1.3.6 < 2.0.0" + parse5 "^1.4.2" + request "^2.55.0" + symbol-tree ">= 3.1.0 < 4.0.0" + tough-cookie "^2.0.0" + whatwg-url-compat "~0.6.5" + xml-name-validator ">= 2.0.1 < 3.0.0" + xmlhttprequest ">= 1.6.0 < 2.0.0" + xtend "^4.0.0" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-loader@^0.5.4: + version "0.5.7" + resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.0, json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jstransform@^11.0.3: + version "11.0.3" + resolved "https://registry.yarnpkg.com/jstransform/-/jstransform-11.0.3.tgz#09a78993e0ae4d4ef4487f6155a91f6190cb4223" + dependencies: + base62 "^1.1.0" + commoner "^0.10.1" + esprima-fb "^15001.1.0-dev-harmony-fb" + object-assign "^2.0.0" + source-map "^0.4.2" + +jsx-ast-utils@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" + +jsx-ast-utils@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz#e801b1b39985e20fffc87b40e3748080e2dcac7f" + dependencies: + array-includes "^3.0.3" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + dependencies: + is-buffer "^1.1.5" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + dependencies: + invert-kv "^1.0.0" + +lcov-parse@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.6.tgz#819e5da8bf0791f9d3f39eea5ed1868187f11175" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +levn@~0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.2.5.tgz#ba8d339d0ca4a610e3a3f145b9caf48807155054" + dependencies: + prelude-ls "~1.1.0" + type-check "~0.3.1" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-fs-cache@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz#56e0bf08bd9708b26a765b68509840c8dec9fdbc" + dependencies: + find-cache-dir "^0.1.1" + mkdirp "0.5.1" + +loader-runner@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" + +loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash.cond@^4.3.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" + +lodash@^4.14.0, lodash@^4.17.4, lodash@^4.3.0: + version "4.17.4" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + +log-driver@1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.4.tgz#2d62d7faef45d8a71341961a04b0761eca99cfa3" + +lolex@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/lolex/-/lolex-1.3.2.tgz#7c3da62ffcb30f0f5a80a2566ca24e45d8a01f31" + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +lru-cache@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.1.tgz#622e32e82488b49279114a4f9ecf45e7cd6bba55" + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lunr@^0.5.9: + version "0.5.12" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-0.5.12.tgz#a2f6b7d7801cbe2ccb1696da67f1f7788f89e0c8" + +make-dir@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.1.0.tgz#19b4369fe48c116f53c2af95ad102c0e39e85d51" + dependencies: + pify "^3.0.0" + +marked@^0.3.3: + version "0.3.6" + resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7" + +md5.js@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + dependencies: + mimic-fn "^1.0.0" + +memory-fs@^0.4.0, memory-fs@~0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +micromatch@^2.1.5: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@~1.30.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.7: + version "2.1.17" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" + dependencies: + mime-db "~1.30.0" + +mime-types@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-1.0.2.tgz#995ae1392ab8affcbfcb2641dd054e943c0d5dce" + +mime@~1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" + +mimic-fn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" + +minimalistic-assert@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + +"minimatch@2 || 3", minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + dependencies: + brace-expansion "^1.1.7" + +minimatch@2.x: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + dependencies: + brace-expansion "^1.0.0" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + +mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + dependencies: + minimist "0.0.8" + +mocha@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.0.1.tgz#0aee5a95cf69a4618820f5e51fa31717117daf1b" + dependencies: + browser-stdout "1.3.0" + commander "2.11.0" + debug "3.1.0" + diff "3.3.1" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.3" + he "1.1.1" + mkdirp "0.5.1" + supports-color "4.4.0" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + +nan@^2.3.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.7.0.tgz#d95bf721ec877e08db276ed3fc6eb78f9083ad46" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-libs-browser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" + dependencies: + assert "^1.1.1" + browserify-zlib "^0.1.4" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "0.0.1" + os-browserify "^0.2.0" + path-browserify "0.0.0" + process "^0.11.0" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.0.5" + stream-browserify "^2.0.1" + stream-http "^2.3.1" + string_decoder "^0.10.25" + timers-browserify "^2.0.2" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + vm-browserify "0.0.4" + +node-pre-gyp@^0.6.36: + version "0.6.39" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" + dependencies: + detect-libc "^1.0.2" + hawk "3.1.3" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.0.2" + rc "^1.1.7" + request "2.81.0" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^2.2.1" + tar-pack "^3.4.0" + +node-uuid@~1.4.0: + version "1.4.8" + resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" + +nopt@3.x: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + dependencies: + abbrev "1" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" + dependencies: + hosted-git-info "^2.1.4" + is-builtin-module "^1.0.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + dependencies: + remove-trailing-separator "^1.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + dependencies: + path-key "^2.0.0" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + +"nwmatcher@>= 1.3.6 < 2.0.0": + version "1.4.3" + resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.3.tgz#64348e3b3d80f035b40ac11563d278f8b72db89c" + +oauth-sign@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.3.0.tgz#cb540f93bb2b22a7d5941691a288d60e8ea9386e" + +oauth-sign@~0.8.1, oauth-sign@~0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" + +object-assign@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + +object-hash@^1.1.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-1.2.0.tgz#e96af0e96981996a1d47f88ead8f74f1ebc4422b" + +object-keys@^1.0.8: + version "1.0.11" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" + +object.omit@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +once@1.x, once@^1.3.0, once@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + dependencies: + mimic-fn "^1.0.0" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optimist@~0.3.5: + version "0.3.7" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9" + dependencies: + wordwrap "~0.0.2" + +optionator@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.5.0.tgz#b75a8995a2d417df25b6e4e3862f50aa88651368" + dependencies: + deep-is "~0.1.2" + fast-levenshtein "~1.0.0" + levn "~0.2.5" + prelude-ls "~1.1.1" + type-check "~0.3.1" + wordwrap "~0.0.2" + +optionator@^0.8.1, optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-browserify@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + +osenv@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +output-file-sync@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76" + dependencies: + graceful-fs "^4.1.4" + mkdirp "^0.5.1" + object-assign "^4.1.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + +p-limit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + dependencies: + p-limit "^1.1.0" + +pako@~0.2.0: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + +parse-asn1@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + dependencies: + error-ex "^1.2.0" + +parse5@^1.4.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" + +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + +path-parse@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + dependencies: + pify "^2.0.0" + +pbkdf2@^3.0.3: + version "3.0.14" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.14.tgz#a35e13c64799b06ce15320f459c230e68e73bade" + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + dependencies: + find-up "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + +prelude-ls@~1.1.0, prelude-ls@~1.1.1, prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + +private@^0.1.6, private@^0.1.7, private@~0.1.5: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + +process-nextick-args@~1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" + +process@^0.11.0: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + +progress@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" + +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + dependencies: + asap "~2.0.3" + +prop-types@^15.5.10, prop-types@^15.6.0: + version "15.6.0" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" + dependencies: + fbjs "^0.8.16" + loose-envify "^1.3.1" + object-assign "^4.1.1" + +prr@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + +public-encrypt@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + +qs@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-1.0.2.tgz#50a93e2b5af6691c31bcea5dae78ee6ea1903768" + +qs@~6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" + +qs@~6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + +randomatic@^1.1.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.5.tgz#dc009a246b8d09a177b4b7a0ae77bc570f4b1b79" + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.3.tgz#b96b7df587f01dd91726c418f30553b1418e3d62" + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +rc@^1.1.7: + version "1.2.2" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" + dependencies: + deep-extend "~0.4.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +react-dom@~15.6.2: + version "15.6.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.2.tgz#41cfadf693b757faf2708443a1d1fd5a02bef730" + dependencies: + fbjs "^0.8.9" + loose-envify "^1.1.0" + object-assign "^4.1.0" + prop-types "^15.5.10" + +react-text-highlight@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/react-text-highlight/-/react-text-highlight-0.1.1.tgz#522fe0647c4409909aadde74940f6f7f2d7477d1" + dependencies: + react "^0.13.3" + +react@^0.13.3: + version "0.13.3" + resolved "https://registry.yarnpkg.com/react/-/react-0.13.3.tgz#a2dfa85335d7dc02b82b482f089582e64cc13356" + dependencies: + envify "^3.0.0" + +react@~15.6.2: + version "15.6.2" + resolved "https://registry.yarnpkg.com/react/-/react-15.6.2.tgz#dba0434ab439cfe82f108f0f511663908179aa72" + dependencies: + create-react-class "^15.6.0" + fbjs "^0.8.9" + loose-envify "^1.1.0" + object-assign "^4.1.0" + prop-types "^15.5.10" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.6: + version "2.3.3" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~1.0.6" + safe-buffer "~5.1.1" + string_decoder "~1.0.3" + util-deprecate "~1.0.1" + +readdirp@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" + dependencies: + graceful-fs "^4.1.2" + minimatch "^3.0.2" + readable-stream "^2.0.2" + set-immediate-shim "^1.0.1" + +recast@^0.11.17: + version "0.11.23" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.11.23.tgz#451fd3004ab1e4df9b4e4b66376b2a21912462d3" + dependencies: + ast-types "0.9.6" + esprima "~3.1.0" + private "~0.1.5" + source-map "~0.5.0" + +regenerate@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + +regenerator-runtime@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz#7e54fe5b5ccd5d6624ea6255c3473be090b802e1" + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + dependencies: + is-equal-shallow "^0.1.3" + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + +repeat-element@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + dependencies: + is-finite "^1.0.0" + +request@2.40.0: + version "2.40.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.40.0.tgz#4dd670f696f1e6e842e66b4b5e839301ab9beb67" + dependencies: + forever-agent "~0.5.0" + json-stringify-safe "~5.0.0" + mime-types "~1.0.1" + node-uuid "~1.4.0" + qs "~1.0.0" + optionalDependencies: + aws-sign2 "~0.5.0" + form-data "~0.1.0" + hawk "1.1.1" + http-signature "~0.10.0" + oauth-sign "~0.3.0" + stringstream "~0.0.4" + tough-cookie ">=0.12.0" + tunnel-agent "~0.4.0" + +request@2.81.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + +request@^2.55.0: + version "2.83.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" + dependencies: + 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" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + +resolve@1.1.x: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + +resolve@^1.2.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" + dependencies: + path-parse "^1.0.5" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + dependencies: + align-text "^0.1.1" + +rimraf@2, rimraf@^2.2.8, rimraf@^2.3.2, rimraf@^2.5.1, rimraf@^2.6.1: + version "2.6.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" + dependencies: + glob "^7.0.5" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" + dependencies: + hash-base "^2.0.0" + inherits "^2.0.1" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + dependencies: + is-promise "^2.1.0" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" + +samsam@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.2.tgz#bec11fdc83a9fda063401210e40176c3024d1567" + +samsam@~1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/samsam/-/samsam-1.1.3.tgz#9f5087419b4d091f232571e7fa52e90b0f552621" + +schema-utils@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.3.0.tgz#f5877222ce3e931edae039f17eb3716e7137f8cf" + dependencies: + ajv "^5.0.0" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + +setimmediate@^1.0.4, setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.9" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.9.tgz#98f64880474b74f4a38b8da9d3c0f2d104633e7d" + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + +sinon@^1.14.0: + version "1.17.7" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-1.17.7.tgz#4542a4f49ba0c45c05eb2e9dd9d203e2b8efe0bf" + dependencies: + formatio "1.1.1" + lolex "1.3.2" + samsam "1.1.2" + util ">=0.10.3 <1" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + dependencies: + is-fullwidth-code-point "^2.0.0" + +sntp@0.2.x: + version "0.2.4" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-0.2.4.tgz#fb885f18b0f3aad189f824862536bceeec750900" + dependencies: + hoek "0.9.x" + +sntp@1.x.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" + dependencies: + hoek "2.x.x" + +sntp@2.x.x: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sntp/-/sntp-2.1.0.tgz#2c6cec14fedc2222739caf9b5c3d85d1cc5a2cc8" + dependencies: + hoek "4.x.x" + +source-list-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + +source-map@^0.1.40, source-map@~0.1.40, source-map@~0.1.7: + version "0.1.43" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.0, source-map@~0.5.1, source-map@~0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + +spawn-command@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" + +spdx-correct@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" + dependencies: + spdx-license-ids "^1.0.2" + +spdx-expression-parse@~1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" + +spdx-license-ids@^1.0.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + +sshpk@^1.7.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3" + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + dashdash "^1.12.0" + getpass "^0.1.1" + optionalDependencies: + bcrypt-pbkdf "^1.0.0" + ecc-jsbn "~0.1.1" + jsbn "~0.1.0" + tweetnacl "~0.14.0" + +stream-browserify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-http@^2.3.1: + version "2.7.2" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.7.2.tgz#40a050ec8dc3b53b33d9909415c02c0bf1abfbad" + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.2.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@^0.10.25: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" + dependencies: + safe-buffer "~5.1.0" + +stringstream@~0.0.4, stringstream@~0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + dependencies: + ansi-regex "^3.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + +style-loader@^0.18.2: + version "0.18.2" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.18.2.tgz#cc31459afbcd6d80b7220ee54b291a9fd66ff5eb" + dependencies: + loader-utils "^1.0.2" + schema-utils "^0.3.0" + +supports-color@1.3.x: + version "1.3.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.3.1.tgz#15758df09d8ff3b4acc307539fabe27095e1042d" + +supports-color@4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" + dependencies: + has-flag "^2.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + +supports-color@^4.0.0, supports-color@^4.2.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" + dependencies: + has-flag "^2.0.0" + +"symbol-tree@>= 3.1.0 < 4.0.0": + version "3.2.2" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" + +table@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + dependencies: + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +tapable@^0.2.7: + version "0.2.8" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" + +tar-pack@^3.4.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" + dependencies: + debug "^2.2.0" + fstream "^1.0.10" + fstream-ignore "^1.0.5" + once "^1.3.3" + readable-stream "^2.1.4" + rimraf "^2.5.1" + tar "^2.2.1" + uid-number "^0.0.6" + +tar@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" + dependencies: + block-stream "*" + fstream "^1.0.2" + inherits "2" + +text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + +through@^2.3.6, through@~2.3.4: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + +timers-browserify@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6" + dependencies: + setimmediate "^1.0.4" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + dependencies: + os-tmpdir "~1.0.2" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + +tough-cookie@>=0.12.0, tough-cookie@^2.0.0, tough-cookie@~2.3.0, tough-cookie@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" + dependencies: + punycode "^1.4.1" + +tr46@~0.0.1: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + +transmitter@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/transmitter/-/transmitter-3.0.1.tgz#32e99e43d1321e49dc2e194fa75df4fe84a8b918" + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + +tryit@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + dependencies: + safe-buffer "^5.0.1" + +tunnel-agent@~0.4.0: + version "0.4.3" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + +type-check@~0.3.1, type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + dependencies: + prelude-ls "~1.1.2" + +type-detect@0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-0.1.1.tgz#0ba5ec2a885640e470ea4e8505971900dac58822" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + +ua-parser-js@^0.7.9: + version "0.7.17" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac" + +uglify-js@^2.8.29: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-js@~2.3: + version "2.3.6" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.3.6.tgz#fa0984770b428b7a9b2a8058f46355d14fef211a" + dependencies: + async "~0.2.6" + optimist "~0.3.5" + source-map "~0.1.7" + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + +uglifyjs-webpack-plugin@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" + dependencies: + source-map "^0.5.6" + uglify-js "^2.8.29" + webpack-sources "^1.0.1" + +uid-number@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + +underscore.string@~2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-2.4.0.tgz#8cdd8fbac4e2d2ea1e7e2e8097c42f442280f85b" + +underscore@~1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + +util@0.10.3, "util@>=0.10.3 <1", util@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + dependencies: + inherits "2.0.1" + +uuid@^3.0.0, uuid@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" + +v8flags@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + dependencies: + user-home "^1.1.1" + +validate-npm-package-license@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" + dependencies: + spdx-correct "~1.0.0" + spdx-expression-parse "~1.0.0" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vm-browserify@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" + dependencies: + indexof "0.0.1" + +watchpack@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" + dependencies: + async "^2.1.2" + chokidar "^1.7.0" + graceful-fs "^4.1.2" + +webpack-sources@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.0.2.tgz#d0148ec083b3b5ccef1035a6b3ec16442983b27a" + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.8.1.tgz#b16968a81100abe61608b0153c9159ef8bb2bd83" + dependencies: + acorn "^5.0.0" + acorn-dynamic-import "^2.0.0" + ajv "^5.1.5" + ajv-keywords "^2.0.0" + async "^2.1.2" + enhanced-resolve "^3.4.0" + escope "^3.6.0" + interpret "^1.0.0" + json-loader "^0.5.4" + json5 "^0.5.1" + loader-runner "^2.3.0" + loader-utils "^1.1.0" + memory-fs "~0.4.1" + mkdirp "~0.5.0" + node-libs-browser "^2.0.0" + source-map "^0.5.3" + supports-color "^4.2.1" + tapable "^0.2.7" + uglifyjs-webpack-plugin "^0.4.6" + watchpack "^1.4.0" + webpack-sources "^1.0.1" + yargs "^8.0.2" + +whatwg-fetch@>=0.10.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz#9c84ec2dcf68187ff00bc64e1274b442176e1c84" + +whatwg-url-compat@~0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz#00898111af689bb097541cd5a45ca6c8798445bf" + dependencies: + tr46 "~0.0.1" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + +which@1.0.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/which/-/which-1.0.9.tgz#460c1da0f810103d0321a9b633af9e575e64486f" + +which@^1.2.9: + version "1.3.0" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" + dependencies: + string-width "^1.0.2" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + +wordwrap@0.0.x, wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + dependencies: + mkdirp "^0.5.1" + +"xml-name-validator@>= 2.0.1 < 3.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" + +"xmlhttprequest@>= 1.6.0 < 2.0.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + +xtend@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + +yargs-parser@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" + dependencies: + camelcase "^4.1.0" + +yargs@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" + dependencies: + camelcase "^4.1.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^2.0.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.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^7.0.0" + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0"