diff --git a/Runner.js b/Runner.js index 2910d70..c111c3a 100644 --- a/Runner.js +++ b/Runner.js @@ -1 +1 @@ -module.exports = require('./src/runner'); +module.exports = require('./src/Runner'); diff --git a/browser/index.js b/browser/index.js new file mode 100644 index 0000000..e2a0720 --- /dev/null +++ b/browser/index.js @@ -0,0 +1,2757 @@ +"use strict"; + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + +function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof2(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +function _templateObject17() { + var data = _taggedTemplateLiteral(["'", "' is greater than ", ""]); + + _templateObject17 = function _templateObject17() { + return data; + }; + + return data; +} + +function _templateObject16() { + var data = _taggedTemplateLiteral(["'", "' is less than ", ""]); + + _templateObject16 = function _templateObject16() { + return data; + }; + + return data; +} + +function _templateObject15() { + var data = _taggedTemplateLiteral(["'", "' is not less than ", ""]); + + _templateObject15 = function _templateObject15() { + return data; + }; + + return data; +} + +function _templateObject14() { + var data = _taggedTemplateLiteral(["'", "' is not greater than ", ""]); + + _templateObject14 = function _templateObject14() { + return data; + }; + + return data; +} + +function _templateObject13() { + var data = _taggedTemplateLiteral(["'", "' is not of type '", "'"]); + + _templateObject13 = function _templateObject13() { + return data; + }; + + return data; +} + +function _templateObject12() { + var data = _taggedTemplateLiteral(["'", "' does not resolve to '", "'"]); + + _templateObject12 = function _templateObject12() { + return data; + }; + + return data; +} + +function _templateObject11() { + var data = _taggedTemplateLiteral(["", " is not a promise"]); + + _templateObject11 = function _templateObject11() { + return data; + }; + + return data; +} + +function _templateObject10() { + var data = _taggedTemplateLiteral(["", " does not exist in ", ""]); + + _templateObject10 = function _templateObject10() { + return data; + }; + + return data; +} + +function _templateObject9() { + var data = _taggedTemplateLiteral(["", " does not have property '", "'"]); + + _templateObject9 = function _templateObject9() { + return data; + }; + + return data; +} + +function _templateObject8() { + var data = _taggedTemplateLiteral(["", " is not false"]); + + _templateObject8 = function _templateObject8() { + return data; + }; + + return data; +} + +function _templateObject7() { + var data = _taggedTemplateLiteral(["", " is not true"]); + + _templateObject7 = function _templateObject7() { + return data; + }; + + return data; +} + +function _templateObject6() { + var data = _taggedTemplateLiteral(["", " does not contain ", ""]); + + _templateObject6 = function _templateObject6() { + return data; + }; + + return data; +} + +function _templateObject5() { + var data = _taggedTemplateLiteral(["", " is not deeply equal to ", ""]); + + _templateObject5 = function _templateObject5() { + return data; + }; + + return data; +} + +function _templateObject4() { + var data = _taggedTemplateLiteral(["", " is not equal to ", ""]); + + _templateObject4 = function _templateObject4() { + return data; + }; + + return data; +} + +function _templateObject3() { + var data = _taggedTemplateLiteral(["", " doesn't have length ", ""]); + + _templateObject3 = function _templateObject3() { + return data; + }; + + return data; +} + +function _templateObject2() { + var data = _taggedTemplateLiteral(["", " is not an object"]); + + _templateObject2 = function _templateObject2() { + return data; + }; + + return data; +} + +function _templateObject() { + var data = _taggedTemplateLiteral(["", " is not an array"]); + + _templateObject = function _templateObject() { + return data; + }; + + return data; +} + +function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + +function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty2(target, key, source[key]); }); } return target; } + +function _defineProperty2(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _toConsumableArray2(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + +function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + +function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); } + +(function (f) { + if ((typeof exports === "undefined" ? "undefined" : _typeof2(exports)) === "object" && typeof module !== "undefined") { + module.exports = f(); + } else if (typeof define === "function" && define.amd) { + define([], f); + } else { + var g; + + if (typeof window !== "undefined") { + g = window; + } else if (typeof global !== "undefined") { + g = global; + } else if (typeof self !== "undefined") { + g = self; + } else { + g = this; + } + + g.Gunner = f(); + } +})(function () { + var define, module, exports; + return function () { + function r(e, n, t) { + function o(i, f) { + if (!n[i]) { + if (!e[i]) { + var c = "function" == typeof require && require; + if (!f && c) return c(i, !0); + if (u) return u(i, !0); + var a = new Error("Cannot find module '" + i + "'"); + throw a.code = "MODULE_NOT_FOUND", a; + } + + var p = n[i] = { + exports: {} + }; + e[i][0].call(p.exports, function (r) { + var n = e[i][1][r]; + return o(n || r); + }, p, p.exports, r, e, n, t); + } + + return n[i].exports; + } + + for (var u = "function" == typeof require && require, i = 0; i < t.length; i++) { + o(t[i]); + } + + return o; + } + + return r; + }()({ + 1: [function (require, module, exports) { + module.exports = require('./src/Gunner'); + }, { + "./src/Gunner": 10 + }], + 2: [function (require, module, exports) { + (function (global) { + (function (f) { + if (_typeof2(exports) === "object" && typeof module !== "undefined") { + module.exports = f(); + } else if (typeof define === "function" && define.amd) { + define([], f); + } else { + var g; + + if (typeof window !== "undefined") { + g = window; + } else if (typeof global !== "undefined") { + g = global; + } else if (typeof self !== "undefined") { + g = self; + } else { + g = this; + } + + g.isEq = f(); + } + })(function () { + var define, module, exports; + return function () { + function e(t, n, r) { + function s(o, u) { + if (!n[o]) { + if (!t[o]) { + var a = typeof require == "function" && require; + if (!u && a) return a(o, !0); + if (i) return i(o, !0); + var f = new Error("Cannot find module '" + o + "'"); + throw f.code = "MODULE_NOT_FOUND", f; + } + + var l = n[o] = { + exports: {} + }; + t[o][0].call(l.exports, function (e) { + var n = t[o][1][e]; + return s(n ? n : e); + }, l, l.exports, e, t, n, r); + } + + return n[o].exports; + } + + var i = typeof require == "function" && require; + + for (var o = 0; o < r.length; o++) { + s(r[o]); + } + + return s; + } + + return e; + }()({ + 1: [function (require, module, exports) { + "use strict"; + + var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) { + return _typeof2(obj); + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); + }; + + var isEq = function isEq(item1, item2, compareKeys) { + if (item1 === item2) return true; + if ((typeof item1 === "undefined" ? "undefined" : _typeof(item1)) !== (typeof item2 === "undefined" ? "undefined" : _typeof(item2))) return false; + if (Array.isArray(item1) && !Array.isArray(item2) || Array.isArray(item2) && !Array.isArray(item1)) return false; + + if (typeof item1 === "number") { + if (isNaN(item1) && isNaN(item2)) return false;else return item1 === item2; + } + + if (typeof item1 === "string" || typeof item1 === "boolean" || item1 === null || item1 === undefined) { + return item1 === item2; + } + + if (item1 instanceof RegExp) return String(item1) === String(item2); + if ((typeof item1 === "undefined" ? "undefined" : _typeof(item1)) !== "object" || (typeof item2 === "undefined" ? "undefined" : _typeof(item2)) !== "object") return item1 === item2; + var item1Keys = Object.keys(item1); + var item2Keys = Object.keys(item2); + + if (!compareKeys) { + compareKeys = item1Keys; + + if (item1Keys.length !== item2Keys.length) { + return false; + } + } + + if (!Array.isArray(compareKeys)) throw new Error("[isEq] third parameter should be an array of keys!"); + if (compareKeys.length === 0) return true; + + for (var KeyIndex in compareKeys) { + var Key = compareKeys[KeyIndex]; + + if (Array.isArray(item1[Key]) && Array.isArray(item2[Key])) { + Key = KeyIndex; + } + + if (item1[Key] !== item2[Key]) { + if (_typeof(item1[Key] === "object") && _typeof(item2[Key] === "object") || Array.isArray(item1[Key]) && Array.isArray(item2[Key])) { + if (!isEq(item1[Key], item2[Key])) { + return false; + } + } else { + return false; + } + } + } + + return true; + }; + + module.exports = isEq; + }, {}] + }, {}, [1])(1); + }); + }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); + }, {}], + 3: [function (require, module, exports) { + (function (global) { + "use strict"; + + var _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) { + return _typeof2(obj); + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); + }; + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; + } + + function _toConsumableArray(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); + } + } + + (function (f) { + if ((typeof exports === "undefined" ? "undefined" : _typeof(exports)) === "object" && typeof module !== "undefined") { + module.exports = f(); + } else if (typeof define === "function" && define.amd) { + define([], f); + } else { + var g; + + if (typeof window !== "undefined") { + g = window; + } else if (typeof global !== "undefined") { + g = global; + } else if (typeof self !== "undefined") { + g = self; + } else { + g = this; + } + + g.promiseObject = f(); + } + })(function () { + var define, module, exports; + return function () { + function r(e, n, t) { + function o(i, f) { + if (!n[i]) { + if (!e[i]) { + var c = "function" == typeof require && require; + if (!f && c) return c(i, !0); + if (u) return u(i, !0); + var a = new Error("Cannot find module '" + i + "'"); + throw a.code = "MODULE_NOT_FOUND", a; + } + + var p = n[i] = { + exports: {} + }; + e[i][0].call(p.exports, function (r) { + var n = e[i][1][r]; + return o(n || r); + }, p, p.exports, r, e, n, t); + } + + return n[i].exports; + } + + for (var u = "function" == typeof require && require, i = 0; i < t.length; i++) { + o(t[i]); + } + + return o; + } + + return r; + }()({ + 1: [function (require, module, exports) { + module.exports = require("../index.js"); + }, { + "../index.js": 2 + }], + 2: [function (require, module, exports) { + "use strict"; + + var isObject = function isObject(x) { + return x && (typeof x === "undefined" ? "undefined" : _typeof(x)) === "object" && x.constructor === Object; + }; + + var $SELF = typeof Symbol !== "undefined" ? Symbol("SELF") : "[~~//-- SELF --//~~]"; + + var makeCyclic = function makeCyclic(object, query) { + var start = function start(obj) { + return Object.keys(obj).reduce(function (acc, key) { + var value = obj[key]; + + if (value === query) { + obj[key] = object; + return [].concat(_toConsumableArray(acc), [key]); + } + + if (isObject(value)) return [].concat(_toConsumableArray(acc), _toConsumableArray(start(value, query)));else return acc; + }, []); + }; + + return start(object); + }; + + var PromiseMap = function PromiseMap(arr, functor) { + return Promise.all(arr.map(function (x) { + return Promise.resolve(x).then(functor); + })); + }; + + var ResolveObject = function ResolveObject(obj) { + return Promise.all(Object.keys(obj).map(function (key) { + return Promise.resolve(obj[key]).then(function (val) { + return obj[key] = val; + }); + })).then(function (_) { + return obj; + }); + }; + + var PromiseObject = function PromiseObject(object) { + var shouldReplaceSelf = false; + + var ResolveDeepObject = function ResolveDeepObject(obj) { + return Promise.resolve(obj).then(function (resolvedObject) { + if (Array.isArray(resolvedObject)) { + return PromiseMap(resolvedObject, function (obj) { + return ResolveDeepObject(obj); + }); + } else if (isObject(resolvedObject)) { + return ResolveObject(Object.keys(resolvedObject).reduce(function (acc, key) { + if (resolvedObject[key] === object) { + shouldReplaceSelf = true; + return _extends({}, acc, _defineProperty({}, key, $SELF)); + } + + return _extends({}, acc, _defineProperty({}, key, ResolveDeepObject(resolvedObject[key]))); + }, {})); + } + + return resolvedObject; + }); + }; + + return ResolveDeepObject(object).then(function (obj) { + if (shouldReplaceSelf) makeCyclic(obj, $SELF); + return obj; + }); + }; + + module.exports = PromiseObject; + }, {}] + }, {}, [1])(1); + }); + }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); + }, { + "../index.js": 4 + }], + 4: [function (require, module, exports) { + "use strict"; + /** + * Returns true if x is an object, false otherwise. + * @param {any} x + * @returns {Boolean} + */ + + var isObject = function isObject(x) { + return x && _typeof2(x) === 'object' && x.constructor === Object; + }; + /* A well known Symbol. */ + + + var $SELF = typeof Symbol !== 'undefined' ? Symbol('SELF') : '[~~//-- SELF --//~~]'; + /** + * Replaces values that match the query parameter + * with a reference to the parent parameter. + * @param {Object} object Object to make cyclic. + * @param {any} query Query to match against. + * @returns {Object} + */ + + var makeCyclic = function makeCyclic(object, query) { + var start = function start(obj) { + return Object.keys(obj).reduce(function (acc, key) { + var value = obj[key]; + + if (value === query) { + obj[key] = object; + return _toConsumableArray2(acc).concat([key]); + } + + ; + if (isObject(value)) return _toConsumableArray2(acc).concat(_toConsumableArray2(start(value, query)));else return acc; + }, []); + }; + + return start(object); + }; + /** + * Promise.map polyfill. + * @param {Array.} arr Array of Promises. + * @param {Function} functor Function to call resolved values. + */ + + + var PromiseMap = function PromiseMap(arr, functor) { + return Promise.all(arr.map(function (x) { + return Promise.resolve(x).then(functor); + })); + }; + /** + * Resolve a flat object's promises. + * @param {Object} + * @returns {Object} + */ + + + var ResolveObject = function ResolveObject(obj) { + return Promise.all(Object.keys(obj).map(function (key) { + return Promise.resolve(obj[key]).then(function (val) { + return obj[key] = val; + }); + })).then(function (_) { + return obj; + }); + }; + /** + * Recursively resolves deep objects with nested promises. + * @param {Object} object Object or value to resolve. + * @returns {Object} Resolved object. + */ + + + var PromiseObject = function PromiseObject(object) { + var shouldReplaceSelf = false; + + var ResolveDeepObject = function ResolveDeepObject(obj) { + return Promise.resolve(obj).then(function (resolvedObject) { + if (Array.isArray(resolvedObject)) { + // Promise and map every item to recursively deep resolve. + return PromiseMap(resolvedObject, function (obj) { + return ResolveDeepObject(obj); + }); + } else if (isObject(resolvedObject)) { + return ResolveObject(Object.keys(resolvedObject).reduce(function (acc, key) { + if (resolvedObject[key] === object) { + shouldReplaceSelf = true; + return _objectSpread({}, acc, _defineProperty2({}, key, $SELF)); + } + + return _objectSpread({}, acc, _defineProperty2({}, key, ResolveDeepObject(resolvedObject[key]))); + }, {})); + } + + return resolvedObject; + }); + }; + + return ResolveDeepObject(object).then(function (obj) { + // Replace $SELF with reference to obj + if (shouldReplaceSelf) makeCyclic(obj, $SELF); + return obj; + }); + }; + + module.exports = PromiseObject; + }, {}], + 5: [function (require, module, exports) { + // Copyright Joyent, Inc. and other Node contributors. + // + // Permission is hereby granted, free of charge, to any person obtaining a + // copy of this software and associated documentation files (the + // "Software"), to deal in the Software without restriction, including + // without limitation the rights to use, copy, modify, merge, publish, + // distribute, sublicense, and/or sell copies of the Software, and to permit + // persons to whom the Software is furnished to do so, subject to the + // following conditions: + // + // The above copyright notice and this permission notice shall be included + // in all copies or substantial portions of the Software. + // + // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + // USE OR OTHER DEALINGS IN THE SOFTWARE. + var objectCreate = Object.create || objectCreatePolyfill; + var objectKeys = Object.keys || objectKeysPolyfill; + var bind = Function.prototype.bind || functionBindPolyfill; + + function EventEmitter() { + if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) { + this._events = objectCreate(null); + this._eventsCount = 0; + } + + this._maxListeners = this._maxListeners || undefined; + } + + module.exports = EventEmitter; // Backwards-compat with node 0.10.x + + EventEmitter.EventEmitter = EventEmitter; + EventEmitter.prototype._events = undefined; + EventEmitter.prototype._maxListeners = undefined; // By default EventEmitters will print a warning if more than 10 listeners are + // added to it. This is a useful default which helps finding memory leaks. + + var defaultMaxListeners = 10; + var hasDefineProperty; + + try { + var o = {}; + if (Object.defineProperty) Object.defineProperty(o, 'x', { + value: 0 + }); + hasDefineProperty = o.x === 0; + } catch (err) { + hasDefineProperty = false; + } + + if (hasDefineProperty) { + Object.defineProperty(EventEmitter, 'defaultMaxListeners', { + enumerable: true, + get: function get() { + return defaultMaxListeners; + }, + set: function set(arg) { + // check whether the input is a positive number (whose value is zero or + // greater and not a NaN). + if (typeof arg !== 'number' || arg < 0 || arg !== arg) throw new TypeError('"defaultMaxListeners" must be a positive number'); + defaultMaxListeners = arg; + } + }); + } else { + EventEmitter.defaultMaxListeners = defaultMaxListeners; + } // Obviously not all Emitters should be limited to 10. This function allows + // that to be increased. Set to zero for unlimited. + + + EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { + if (typeof n !== 'number' || n < 0 || isNaN(n)) throw new TypeError('"n" argument must be a positive number'); + this._maxListeners = n; + return this; + }; + + function $getMaxListeners(that) { + if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners; + return that._maxListeners; + } + + EventEmitter.prototype.getMaxListeners = function getMaxListeners() { + return $getMaxListeners(this); + }; // These standalone emit* functions are used to optimize calling of event + // handlers for fast cases because emit() itself often has a variable number of + // arguments and can be deoptimized because of that. These functions always have + // the same number of arguments and thus do not get deoptimized, so the code + // inside them can execute faster. + + + function emitNone(handler, isFn, self) { + if (isFn) handler.call(self);else { + var len = handler.length; + var listeners = arrayClone(handler, len); + + for (var i = 0; i < len; ++i) { + listeners[i].call(self); + } + } + } + + function emitOne(handler, isFn, self, arg1) { + if (isFn) handler.call(self, arg1);else { + var len = handler.length; + var listeners = arrayClone(handler, len); + + for (var i = 0; i < len; ++i) { + listeners[i].call(self, arg1); + } + } + } + + function emitTwo(handler, isFn, self, arg1, arg2) { + if (isFn) handler.call(self, arg1, arg2);else { + var len = handler.length; + var listeners = arrayClone(handler, len); + + for (var i = 0; i < len; ++i) { + listeners[i].call(self, arg1, arg2); + } + } + } + + function emitThree(handler, isFn, self, arg1, arg2, arg3) { + if (isFn) handler.call(self, arg1, arg2, arg3);else { + var len = handler.length; + var listeners = arrayClone(handler, len); + + for (var i = 0; i < len; ++i) { + listeners[i].call(self, arg1, arg2, arg3); + } + } + } + + function emitMany(handler, isFn, self, args) { + if (isFn) handler.apply(self, args);else { + var len = handler.length; + var listeners = arrayClone(handler, len); + + for (var i = 0; i < len; ++i) { + listeners[i].apply(self, args); + } + } + } + + EventEmitter.prototype.emit = function emit(type) { + var er, handler, len, args, i, events; + var doError = type === 'error'; + events = this._events; + if (events) doError = doError && events.error == null;else if (!doError) return false; // If there is no 'error' event listener then throw. + + if (doError) { + if (arguments.length > 1) er = arguments[1]; + + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + // At least give some kind of context to the user + var err = new Error('Unhandled "error" event. (' + er + ')'); + err.context = er; + throw err; + } + + return false; + } + + handler = events[type]; + if (!handler) return false; + var isFn = typeof handler === 'function'; + len = arguments.length; + + switch (len) { + // fast cases + case 1: + emitNone(handler, isFn, this); + break; + + case 2: + emitOne(handler, isFn, this, arguments[1]); + break; + + case 3: + emitTwo(handler, isFn, this, arguments[1], arguments[2]); + break; + + case 4: + emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]); + break; + // slower + + default: + args = new Array(len - 1); + + for (i = 1; i < len; i++) { + args[i - 1] = arguments[i]; + } + + emitMany(handler, isFn, this, args); + } + + return true; + }; + + function _addListener(target, type, listener, prepend) { + var m; + var events; + var existing; + if (typeof listener !== 'function') throw new TypeError('"listener" argument must be a function'); + events = target._events; + + if (!events) { + events = target._events = objectCreate(null); + target._eventsCount = 0; + } else { + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (events.newListener) { + target.emit('newListener', type, listener.listener ? listener.listener : listener); // Re-assign `events` because a newListener handler could have caused the + // this._events to be assigned to a new object + + events = target._events; + } + + existing = events[type]; + } + + if (!existing) { + // Optimize the case of one listener. Don't need the extra array object. + existing = events[type] = listener; + ++target._eventsCount; + } else { + if (typeof existing === 'function') { + // Adding the second element, need to change to array. + existing = events[type] = prepend ? [listener, existing] : [existing, listener]; + } else { + // If we've already got an array, just append. + if (prepend) { + existing.unshift(listener); + } else { + existing.push(listener); + } + } // Check for listener leak + + + if (!existing.warned) { + m = $getMaxListeners(target); + + if (m && m > 0 && existing.length > m) { + existing.warned = true; + var w = new Error('Possible EventEmitter memory leak detected. ' + existing.length + ' "' + String(type) + '" listeners ' + 'added. Use emitter.setMaxListeners() to ' + 'increase limit.'); + w.name = 'MaxListenersExceededWarning'; + w.emitter = target; + w.type = type; + w.count = existing.length; + + if ((typeof console === "undefined" ? "undefined" : _typeof2(console)) === 'object' && console.warn) { + console.warn('%s: %s', w.name, w.message); + } + } + } + } + + return target; + } + + EventEmitter.prototype.addListener = function addListener(type, listener) { + return _addListener(this, type, listener, false); + }; + + EventEmitter.prototype.on = EventEmitter.prototype.addListener; + + EventEmitter.prototype.prependListener = function prependListener(type, listener) { + return _addListener(this, type, listener, true); + }; + + function onceWrapper() { + if (!this.fired) { + this.target.removeListener(this.type, this.wrapFn); + this.fired = true; + + switch (arguments.length) { + case 0: + return this.listener.call(this.target); + + case 1: + return this.listener.call(this.target, arguments[0]); + + case 2: + return this.listener.call(this.target, arguments[0], arguments[1]); + + case 3: + return this.listener.call(this.target, arguments[0], arguments[1], arguments[2]); + + default: + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; ++i) { + args[i] = arguments[i]; + } + + this.listener.apply(this.target, args); + } + } + } + + function _onceWrap(target, type, listener) { + var state = { + fired: false, + wrapFn: undefined, + target: target, + type: type, + listener: listener + }; + var wrapped = bind.call(onceWrapper, state); + wrapped.listener = listener; + state.wrapFn = wrapped; + return wrapped; + } + + EventEmitter.prototype.once = function once(type, listener) { + if (typeof listener !== 'function') throw new TypeError('"listener" argument must be a function'); + this.on(type, _onceWrap(this, type, listener)); + return this; + }; + + EventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) { + if (typeof listener !== 'function') throw new TypeError('"listener" argument must be a function'); + this.prependListener(type, _onceWrap(this, type, listener)); + return this; + }; // Emits a 'removeListener' event if and only if the listener was removed. + + + EventEmitter.prototype.removeListener = function removeListener(type, listener) { + var list, events, position, i, originalListener; + if (typeof listener !== 'function') throw new TypeError('"listener" argument must be a function'); + events = this._events; + if (!events) return this; + list = events[type]; + if (!list) return this; + + if (list === listener || list.listener === listener) { + if (--this._eventsCount === 0) this._events = objectCreate(null);else { + delete events[type]; + if (events.removeListener) this.emit('removeListener', type, list.listener || listener); + } + } else if (typeof list !== 'function') { + position = -1; + + for (i = list.length - 1; i >= 0; i--) { + if (list[i] === listener || list[i].listener === listener) { + originalListener = list[i].listener; + position = i; + break; + } + } + + if (position < 0) return this; + if (position === 0) list.shift();else spliceOne(list, position); + if (list.length === 1) events[type] = list[0]; + if (events.removeListener) this.emit('removeListener', type, originalListener || listener); + } + + return this; + }; + + EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) { + var listeners, events, i; + events = this._events; + if (!events) return this; // not listening for removeListener, no need to emit + + if (!events.removeListener) { + if (arguments.length === 0) { + this._events = objectCreate(null); + this._eventsCount = 0; + } else if (events[type]) { + if (--this._eventsCount === 0) this._events = objectCreate(null);else delete events[type]; + } + + return this; + } // emit removeListener for all listeners on all events + + + if (arguments.length === 0) { + var keys = objectKeys(events); + var key; + + for (i = 0; i < keys.length; ++i) { + key = keys[i]; + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + + this.removeAllListeners('removeListener'); + this._events = objectCreate(null); + this._eventsCount = 0; + return this; + } + + listeners = events[type]; + + if (typeof listeners === 'function') { + this.removeListener(type, listeners); + } else if (listeners) { + // LIFO order + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } + } + + return this; + }; + + function _listeners(target, type, unwrap) { + var events = target._events; + if (!events) return []; + var evlistener = events[type]; + if (!evlistener) return []; + if (typeof evlistener === 'function') return unwrap ? [evlistener.listener || evlistener] : [evlistener]; + return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); + } + + EventEmitter.prototype.listeners = function listeners(type) { + return _listeners(this, type, true); + }; + + EventEmitter.prototype.rawListeners = function rawListeners(type) { + return _listeners(this, type, false); + }; + + EventEmitter.listenerCount = function (emitter, type) { + if (typeof emitter.listenerCount === 'function') { + return emitter.listenerCount(type); + } else { + return listenerCount.call(emitter, type); + } + }; + + EventEmitter.prototype.listenerCount = listenerCount; + + function listenerCount(type) { + var events = this._events; + + if (events) { + var evlistener = events[type]; + + if (typeof evlistener === 'function') { + return 1; + } else if (evlistener) { + return evlistener.length; + } + } + + return 0; + } + + EventEmitter.prototype.eventNames = function eventNames() { + return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : []; + }; // About 1.5x faster than the two-arg version of Array#splice(). + + + function spliceOne(list, index) { + for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) { + list[i] = list[k]; + } + + list.pop(); + } + + function arrayClone(arr, n) { + var copy = new Array(n); + + for (var i = 0; i < n; ++i) { + copy[i] = arr[i]; + } + + return copy; + } + + function unwrapListeners(arr) { + var ret = new Array(arr.length); + + for (var i = 0; i < ret.length; ++i) { + ret[i] = arr[i].listener || arr[i]; + } + + return ret; + } + + function objectCreatePolyfill(proto) { + var F = function F() {}; + + F.prototype = proto; + return new F(); + } + + function objectKeysPolyfill(obj) { + var keys = []; + + for (var k in obj) { + if (Object.prototype.hasOwnProperty.call(obj, k)) { + keys.push(k); + } + } + + return k; + } + + function functionBindPolyfill(context) { + var fn = this; + return function () { + return fn.apply(context, arguments); + }; + } + }, {}], + 6: [function (require, module, exports) { + exports = module.exports = stringify; + exports.getSerialize = serializer; + + function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); + } + + function serializer(replacer, cycleReplacer) { + var stack = [], + keys = []; + if (cycleReplacer == null) cycleReplacer = function cycleReplacer(key, value) { + if (stack[0] === value) return "[Circular ~]"; + return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]"; + }; + return function (key, value) { + if (stack.length > 0) { + var thisPos = stack.indexOf(this); + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); + if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value); + } else stack.push(value); + + return replacer == null ? value : replacer.call(this, key, value); + }; + } + }, {}], + 7: [function (require, module, exports) { + //copyright Ryan Day 2010 , Joscha Feth 2013 [MIT Licensed] + var element_start_char = "a-zA-Z_\xC0-\xD6\xD8-\xF6\xF8-\xFF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FFF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD"; + var element_non_start_char = "-.0-9\xB7\u0300-\u036F\u203F\u2040"; + var element_replace = new RegExp("^([^" + element_start_char + "])|^((x|X)(m|M)(l|L))|([^" + element_start_char + element_non_start_char + "])", "g"); + var not_safe_in_xml = /[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm; + + var process_to_xml = function process_to_xml(node_data, options) { + var makeNode = function makeNode(name, content, attributes, level, hasSubNodes) { + var indent_value = options.indent !== undefined ? options.indent : "\t"; + var indent = options.prettyPrint ? '\n' + new Array(level).join(indent_value) : ''; + + if (options.removeIllegalNameCharacters) { + name = name.replace(element_replace, '_'); + } + + var node = [indent, '<', name, attributes || '']; + + if (content && content.length > 0 || options.html) { + node.push('>'); + node.push(content); + hasSubNodes && node.push(indent); + node.push(''); + } else { + node.push('/>'); + } + + return node.join(''); + }; + + return function fn(node_data, node_descriptor, level) { + var type = _typeof2(node_data); + + if (Array.isArray ? Array.isArray(node_data) : node_data instanceof Array) { + type = 'array'; + } else if (node_data instanceof Date) { + type = 'date'; + } + + switch (type) { + //if value is an array create child nodes from values + case 'array': + var ret = []; + node_data.map(function (v) { + ret.push(fn(v, 1, level + 1)); //entries that are values of an array are the only ones that can be special node descriptors + }); + options.prettyPrint && ret.push('\n'); + return ret.join(''); + break; + + case 'date': + // cast dates to ISO 8601 date (soap likes it) + return node_data.toJSON ? node_data.toJSON() : node_data + ''; + break; + + case 'object': + if (node_descriptor == 1 && node_data.name) { + var content = [], + attributes = []; + + if (node_data.attrs) { + if (_typeof2(node_data.attrs) != 'object') { + // attrs is a string, etc. - just use it as an attribute + attributes.push(' '); + attributes.push(node_data.attrs); + } else { + for (var key in node_data.attrs) { + var value = node_data.attrs[key]; + attributes.push(' '); + attributes.push(key); + attributes.push('="'); + attributes.push(options.escape ? esc(value) : value); + attributes.push('"'); + } + } + } //later attributes can be added here + + + if (typeof node_data.value != 'undefined') { + var c = '' + node_data.value; + content.push(options.escape && !node_data.noescape ? esc(c) : c); + } else if (typeof node_data.text != 'undefined') { + var c = '' + node_data.text; + content.push(options.escape && !node_data.noescape ? esc(c) : c); + } + + if (node_data.children) { + content.push(fn(node_data.children, 0, level + 1)); + } + + return makeNode(node_data.name, content.join(''), attributes.join(''), level, !!node_data.children); + } else { + var nodes = []; + + for (var name in node_data) { + nodes.push(makeNode(name, fn(node_data[name], 0, level + 1), null, level + 1)); + } + + options.prettyPrint && nodes.length > 0 && nodes.push('\n'); + return nodes.join(''); + } + + break; + + case 'function': + return node_data(); + break; + + default: + return options.escape ? esc(node_data) : '' + node_data; + } + }(node_data, 0, 0); + }; + + var xml_header = function xml_header(standalone) { + var ret = [''); + return ret.join(''); + }; + + module.exports = function (obj, options) { + var Buffer = this.Buffer || function Buffer() {}; + + if (typeof obj == 'string' || obj instanceof Buffer) { + try { + obj = JSON.parse(obj.toString()); + } catch (e) { + return false; + } + } + + var xmlheader = ''; + var docType = ''; + + if (options) { + if (_typeof2(options) == 'object') { + // our config is an object + if (options.xmlHeader) { + // the user wants an xml header + xmlheader = xml_header(!!options.xmlHeader.standalone); + } + + if (typeof options.docType != 'undefined') { + docType = ''; + } + } else { + // our config is a boolean value, so just add xml header + xmlheader = xml_header(); + } + } + + options = options || {}; + var ret = [xmlheader, options.prettyPrint && docType ? '\n' : '', docType, process_to_xml(obj, options)]; + return ret.join(''); + }; + + module.exports.json_to_xml = module.exports.obj_to_xml = module.exports; + module.exports.escape = esc; + + function esc(str) { + return ('' + str).replace(/&/g, '&').replace(//g, '>').replace(/'/g, ''').replace(/"/g, '"').replace(not_safe_in_xml, ''); + } + + module.exports.cdata = cdata; + + function cdata(str) { + if (str) return "/g, '') + ']]>'; + return ""; + } + + ; + }, {}], + 8: [function (require, module, exports) { + exports.endianness = function () { + return 'LE'; + }; + + exports.hostname = function () { + if (typeof location !== 'undefined') { + return location.hostname; + } else return ''; + }; + + exports.loadavg = function () { + return []; + }; + + exports.uptime = function () { + return 0; + }; + + exports.freemem = function () { + return Number.MAX_VALUE; + }; + + exports.totalmem = function () { + return Number.MAX_VALUE; + }; + + exports.cpus = function () { + return []; + }; + + exports.type = function () { + return 'Browser'; + }; + + exports.release = function () { + if (typeof navigator !== 'undefined') { + return navigator.appVersion; + } + + return ''; + }; + + exports.networkInterfaces = exports.getNetworkInterfaces = function () { + return {}; + }; + + exports.arch = function () { + return 'javascript'; + }; + + exports.platform = function () { + return 'browser'; + }; + + exports.tmpdir = exports.tmpDir = function () { + return '/tmp'; + }; + + exports.EOL = '\n'; + + exports.homedir = function () { + return '/'; + }; + }, {}], + 9: [function (require, 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; + }; + }, {}], + 10: [function (require, module, exports) { + (function (process) { + 'use strict'; + + var _require = require('./util'), + arrayOrPush = _require.arrayOrPush; + + var caller = require('./lib/caller'); + + var emitter = require('./lib/emitter'); + + var reporters = require('./reporters'); + + var testrunner = require('./lib/testrunner'); + + var symbols = require('./util/symbols'); + + var Gunner = + /*#__PURE__*/ + function () { + function Gunner(name) { + var _beforeHooks, _afterHooks; + + _classCallCheck(this, Gunner); + + this.name = name; + this.__suite__ = { + tests: [], + beforeHooks: (_beforeHooks = {}, _defineProperty2(_beforeHooks, symbols.Start, []), _defineProperty2(_beforeHooks, symbols.End, []), _defineProperty2(_beforeHooks, '*', []), _beforeHooks), + afterHooks: (_afterHooks = {}, _defineProperty2(_afterHooks, symbols.Start, []), _defineProperty2(_afterHooks, symbols.End, []), _defineProperty2(_afterHooks, '*', []), _afterHooks) + }; + } + + _createClass(Gunner, [{ + key: "test", + value: function test(description, _test) { + var existing = this.__suite__.tests.find(function (x) { + return x.description === description; + }); + + if (existing) throw new Error("Test '".concat(description, "' already exists!")); + var unit = { + description: description, + type: 'test', + run: function run(state) { + return caller(_test, state); + } + }; + + this.__suite__.tests.push(unit); + + return this; + } + }, { + key: "before", + value: function before(description, _run, label) { + var unit = { + description: description, + label: label, + type: 'hook', + run: function run(state) { + return caller(_run, state); + } + }; + arrayOrPush(this.__suite__.beforeHooks, description, unit); + return this; + } + }, { + key: "after", + value: function after(description, _run2, label) { + var unit = { + description: description, + label: label, + type: 'hook', + run: function run(state) { + return caller(_run2, state); + } + }; + arrayOrPush(this.__suite__.afterHooks, description, unit); + return this; + } + }, { + key: "run", + value: function run() { + var _this = this; + + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + if (options.reporter === true) reporters.default(emitter, options);else if (typeof options.reporter === 'function') options.reporter(emitter, options);else if (reporters[options.reporter]) reporters[options.reporter](emitter, options); + emitter.emit('start'); + return testrunner(this, options).then(function (results) { + var _ref; + + results.count = results.length; + results.success = results.filter(function (r) { + return r.status === 'ok'; + }); + results.failures = results.filter(function (r) { + return r.status === 'notOk'; + }); + results.skipped = results.filter(function (r) { + return r.status === 'skip'; + }); + results.successPercent = Math.floor(results.success.length / results.length * 100); + results.name = _this.name; + if (results.successPercent !== 100 && typeof process !== 'undefined') process.exitCode = 1; + emitter.emit('test end', results); + emitter.emit('end', results); + return options.request ? (_ref = {}, _defineProperty2(_ref, options.request, reporters[options.request].convert(results)), _defineProperty2(_ref, "default", results), _ref) : results; + }); + } + }]); + + return Gunner; + }(); + + var expect = require('./lib/expect'); + + module.exports = Gunner; + module.exports.expect = expect; + module.exports.expectMany = expect.expectMany; + module.exports.Start = symbols.Start; + module.exports.End = symbols.End; + module.exports.Gunner = module.exports; + }).call(this, require('_process')); + }, { + "./lib/caller": 14, + "./lib/emitter": 15, + "./lib/expect": 16, + "./lib/testrunner": 17, + "./reporters": 19, + "./util": 24, + "./util/symbols": 26, + "_process": 9 + }], + 11: [function (require, module, exports) { + var _require2 = require('../util'), + isPromise = _require2.isPromise; + + var createRejectionStatement = function createRejectionStatement(statement) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + return Promise.reject(statement ? statement.apply(void 0, args) : ''); + }; + + var assertPromise = function assertPromise(bool, statementTuple) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + var _statementTuple = _toArray(statementTuple), + statement = _statementTuple[0], + args = _statementTuple.slice(1); + + statement = options.skipStatement ? function () { + return options.skipStatement; + } : statement; + if (isPromise(bool)) return bool.catch(function () { + return createRejectionStatement.apply(void 0, [statement].concat(_toConsumableArray2(args))); + }); + return bool ? Promise.resolve() : createRejectionStatement.apply(void 0, [statement].concat(_toConsumableArray2(args))); + }; + + module.exports = assertPromise; + }, { + "../util": 24 + }], + 12: [function (require, module, exports) { + var isEq = require('@codefeathers/iseq'); + + var U = require('../util'); + + var _ = U.taggedStringify; + module.exports.done = [function () { + return true; + }, function () { + return null; + }]; + module.exports.fail = [function () { + return false; + }, function (_, rejection) { + return rejection; + }]; + module.exports.exists = [function (val) { + return typeof val !== 'undefined'; + }, function () { + return "Value is undefined"; + }]; + module.exports.isArray = [function (val) { + return Array.isArray(val); + }, function (val) { + return _(_templateObject(), val); + }]; + module.exports.isObject = [function (val) { + return _typeof2(val) === 'object' && val !== null; + }, function (val) { + return _(_templateObject2(), val); + }]; + module.exports.hasLength = [function (val, l) { + return val.length === l; + }, function (val, l) { + return _(_templateObject3(), val, l); + }]; + module.exports.equals = [function (val, thing) { + return val === thing; + }, function (val, thing) { + return _(_templateObject4(), val, thing); + }]; + module.exports.deepEquals = [function (val, match) { + return isEq(val, match); + }, function (val, match) { + return _(_templateObject5(), val, match); + }]; + module.exports.contains = [function (val, match) { + return isEq(val, match, Object.keys(match)); + }, function (val, match) { + return _(_templateObject6(), val, match); + }]; + module.exports.isTrue = [function (val) { + return val === true; + }, function (val) { + return _(_templateObject7(), val); + }]; + module.exports.isFalse = [function (val) { + return val === false; + }, function (val) { + return _(_templateObject8(), val); + }]; + module.exports.hasProp = [function (val, prop) { + return val.hasOwnProperty(prop); + }, function (val, prop) { + return _(_templateObject9(), val, prop); + }]; + module.exports.hasPair = [function (val) { + for (var _len2 = arguments.length, pair = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + pair[_key2 - 1] = arguments[_key2]; + } + + return isEq(val[pair[0]], pair[1]); + }, function (val) { + for (var _len3 = arguments.length, pair = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { + pair[_key3 - 1] = arguments[_key3]; + } + + return _(_templateObject10(), pair, val); + }]; + module.exports.isPromise = [function (val) { + return U.isPromise(val); + }, function (val) { + return _(_templateObject11(), val); + }, { + shouldCatch: true + }]; + module.exports.resolvesTo = [function (val, thing) { + return U.isPromise(val) ? val.then(function (x) { + return x === thing ? Promise.resolve() : Promise.reject(); + }) : Promise.reject("".concat(val, " was not a Promise")); + }, function (val, thing) { + return _(_templateObject12(), val, thing); + }]; + module.exports.isType = [function (val, type) { + return type === 'nil' && (val === 'null' || val === 'undefined') || _typeof2(val) === type || Array.isArray(val) && type === "array" && val === null && type !== 'object'; + }, function (val, type) { + return _(_templateObject13(), val, type); + }]; + module.exports.greaterThan = [function (val, compare) { + return val > compare; + }, function (val, compare) { + return _(_templateObject14(), val, compare); + }]; + module.exports.lessThan = [function (val, compare) { + return val < compare; + }, function (val, compare) { + return _(_templateObject15(), val, compare); + }]; + module.exports.gte = [function (val, compare) { + return val >= compare; + }, function (val, compare) { + return _(_templateObject16(), val, compare); + }]; + module.exports.lte = [function (val, compare) { + return val <= compare; + }, function (val, compare) { + return _(_templateObject17(), val, compare); + }]; + /* Convenience aliases */ + + module.exports.success = module.exports.done; + module.exports.succeed = module.exports.done; + module.exports.failure = module.exports.fail; + module.exports.equal = module.exports.equals; + module.exports.deepEqual = module.exports.deepEquals; + module.exports.match = module.exports.deepEquals; + module.exports.greaterThanOrEqualTo = module.exports.gte; + module.exports.lessThanOrEqualTo = module.exports.lte; + }, { + "../util": 24, + "@codefeathers/iseq": 2 + }], + 13: [function (require, module, exports) { + // Only imported for JSDoc + + /* eslint-disable-next-line */ + var Gunner = require('../Gunner'); + + var symbols = require('../util/symbols'); + + var wrap = function wrap(type) { + return function (unit) { + return { + type: type, + unit: unit + }; + }; + }; + /** + * runs the test suite + * @param {Gunner} instance + */ + + + var buildTestTree = function buildTestTree(instance) { + var testQueue = []; + Array.prototype.push.apply(testQueue, instance.__suite__.beforeHooks[symbols.Start].map(wrap('@start'))); + testQueue.push.apply(instance.__suite__.afterHooks[symbols.Start].map(wrap('@start'))); + + instance.__suite__.tests.forEach(function (test) { + return Array.prototype.push.apply(testQueue, instance.__suite__.beforeHooks['*'].map(wrap('@every'))), Array.prototype.push.apply(testQueue, (instance.__suite__.beforeHooks[test.description] || []).map(wrap('@this'))), testQueue.push(wrap('@test')(test)), Array.prototype.push.apply(testQueue, (instance.__suite__.afterHooks[test.description] || []).map(wrap('@afterTest'))), Array.prototype.push.apply(testQueue, instance.__suite__.afterHooks['*'].map(wrap('@afterEvery'))); + }); + + Array.prototype.push.apply(testQueue, instance.__suite__.beforeHooks[symbols.End].map(wrap('@beforeend'))); + Array.prototype.push.apply(testQueue, instance.__suite__.afterHooks[symbols.End].map(wrap('@end'))); + return testQueue; + }; + + module.exports = buildTestTree; + }, { + "../Gunner": 10, + "../util/symbols": 26 + }], + 14: [function (require, module, exports) { + var _require3 = require('../util'), + isPromise = _require3.isPromise; + + var caller = function caller(test, state) { + var perf = { + start: 0, + end: 0 + }; + var value, error, errored; + + try { + perf.start = new Date(); + value = test(state); + perf.end = new Date(); + } catch (e) { + perf.end = new Date(); + errored = true; + error = e; + } + + var promise = isPromise(value); + + if (promise) { + return value.then(function (res) { + return { + duration: new Date() - perf.start, + status: 'ok', + resolve: res, + promise: true + }; + }).catch(function (rej) { + return { + duration: new Date() - perf.start, + status: 'notOk', + rejection: rej, + promise: true + }; + }); + } else { + return Promise.resolve(_objectSpread({ + duration: perf.end - perf.start, + status: errored ? 'notOk' : 'ok' + }, !errored && { + value: value + }, errored && { + error: error + }, { + promise: false + })); + } + }; + + module.exports = caller; + }, { + "../util": 24 + }], + 15: [function (require, module, exports) { + var EventEmitter = require('events'); + + var GunnerEmitter = + /*#__PURE__*/ + function (_EventEmitter) { + _inherits(GunnerEmitter, _EventEmitter); + + function GunnerEmitter() { + _classCallCheck(this, GunnerEmitter); + + return _possibleConstructorReturn(this, _getPrototypeOf(GunnerEmitter).apply(this, arguments)); + } + + return GunnerEmitter; + }(EventEmitter); + + module.exports = new GunnerEmitter(); + }, { + "events": 5 + }], + 16: [function (require, module, exports) { + 'use strict'; + + var _require4 = require('../util'), + liftPromise = _require4.liftPromise, + lowerCaseFirstLetter = _require4.lowerCaseFirstLetter; + + var library = require('./assertionsLibrary'); + + var assertPromise = require('./assertPromise'); + + var expectPromise = function expectPromise(pred, statement) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return function (toTest) { + return function () { + for (var _len4 = arguments.length, testValues = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { + testValues[_key4] = arguments[_key4]; + } + + return liftPromise(function (resolvedValue) { + return assertPromise(pred.apply(void 0, [toTest].concat(testValues)), [statement, resolvedValue].concat(testValues)); + }, toTest).catch(function (rejectedValue) { + return options.shouldCatch ? assertPromise(pred.apply(void 0, [toTest].concat(testValues)), [statement, rejectedValue].concat(testValues), { + skipStatement: rejectedValue + }) : Promise.reject(rejectedValue); + }); + }; + }; + }; + + var expects = Object.keys(library).reduce(function (acc, e) { + var _library$e = _slicedToArray(library[e], 3), + pred = _library$e[0], + statement = _library$e[1], + options = _library$e[2]; + + acc[e] = expectPromise(pred, statement, options); + return acc; + }, {}); + + var negateP = function negateP(prom) { + return prom.then(Promise.reject, Promise.resolve); + }; + + var expect = function expect(thing, args) { + return new Proxy({}, { + get: function get(obj, prop) { + var toCheck = args ? thing.apply(void 0, _toConsumableArray2(args)) : thing; + if (expects.hasOwnProperty(prop)) return function () { + return expects[prop](toCheck).apply(void 0, arguments); + };else if (prop.slice(0, 3) === 'not') return function () { + return negateP(expects[lowerCaseFirstLetter(prop.slice(3))](toCheck).apply(void 0, arguments)); + };else throw new Error('Unknown assertion method', prop); + } + }); + }; + + var expectMany = function expectMany() { + for (var _len5 = arguments.length, expects = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { + expects[_key5] = arguments[_key5]; + } + + return Promise.all(expects); + }; + + module.exports = expect; + module.exports.expectMany = expectMany; + }, { + "../util": 24, + "./assertPromise": 11, + "./assertionsLibrary": 12 + }], + 17: [function (require, module, exports) { + // Only imported for JSDoc + + /* eslint-disable-next-line */ + var Gunner = require('../Gunner'); + + Promise.object = require('@codefeathers/promise.object'); + + var _require5 = require('../util'), + last = _require5.last, + pipe = _require5.pipe, + pick = _require5.pick, + assignToObject = _require5.assignToObject; + + var _require6 = require('../util/constants'), + eventMap = _require6.eventMap; + + var emitter = require('./emitter'); + + var buildTestQueue = require('./buildTestQueue'); + + var findSkip = function findSkip(skip, unit) { + var startFailed = skip.findIndex(function (x) { + return x.type === '@start'; + }); + var everyFailed = skip.findIndex(function (x) { + return x.type === '@every'; + }); + var beforeFailed = skip.findIndex(function (x) { + return x.description === unit.description; + }); + return startFailed !== -1 && 'A start hook failed\n' + skip[startFailed].error || everyFailed !== -1 && 'An every hook failed\n' + skip[everyFailed].error || beforeFailed !== -1 && 'A before test hook failed\n' + skip[beforeFailed].error; + }; + + var reduceQueue = function reduceQueue(queue) { + return queue.reduce(function (acc, item) { + return Promise.resolve(acc).then(function (acc) { + return Promise.all([last(acc.results), Promise.object(acc.state)]).then(function (_ref2) { + var _ref3 = _slicedToArray(_ref2, 2), + state = _ref3[1]; + + var toSkip = findSkip(acc.skip, item.unit); + return [toSkip, state]; + }).then(function (_ref4) { + var _ref5 = _slicedToArray(_ref4, 2), + toSkip = _ref5[0], + state = _ref5[1]; + + return toSkip ? { + status: 'skip', + description: toSkip + } : item.unit.run(state); + }).then(function (result) { + var status = result.status, + duration = result.duration; + + if (item.type === '@test') { + var resultObject = _objectSpread({ + status: status, + duration: duration, + description: item.unit.description + }, (status === 'notOk' || status === 'skip') && { + reason: result.error || result.rejection || result.description + }); + + emitter.emit(eventMap[status], resultObject); + acc.results.push(resultObject); + } else { + var identifier = item.unit.label || queue.filter(function (i) { + return i.type === item.type; + }).filter(function (i) { + return i.unit.description === item.unit.description; + }).length; + var stateAddition = + /* eslint-disable-next-line */ + status === 'ok' ? result.promise ? result.resolve : result.value : null; + if (identifier && stateAddition) assignToObject(acc.state, item.type)(identifier, stateAddition); + } + + if (status === 'notOk') { + acc.skip.push({ + type: item.type, + description: item.unit.description, + error: result.promise ? result.rejection : result.error + }); + } + + return acc; + }); + }); + }, { + results: [], + state: {}, + skip: [] + }); + }; + /** + * runs the test suite + * @param {Gunner} instance + * @param {object} options + */ + + + var testrunner = function testrunner(instance) { + var perf = { + start: new Date() + }; + return Promise.object(pipe(buildTestQueue, reduceQueue, pick('results'))(instance)).then(function (results) { + perf.end = new Date(); + results.end = perf.end.toUTCString(); + results.start = perf.start.toUTCString(); + results.duration = perf.end - perf.start; + return results; + }); + }; + + module.exports = testrunner; + }, { + "../Gunner": 10, + "../util": 24, + "../util/constants": 23, + "./buildTestQueue": 13, + "./emitter": 15, + "@codefeathers/promise.object": 3 + }], + 18: [function (require, module, exports) { + var statusMap = { + 'ok': ['ok', '✅'], + 'notOk': ['notOk', '❌'], + 'skip': ['skip', '⚠️'] + }; + + var convert = function convert(x) { + return x; + }; + + var Default = function Default(runner, options) { + runner.on('start', function () { + return console.log('Started tests'); + }); + runner.on('test end', function (results) { + results.forEach(function (x) { + var s = statusMap[x.status]; + console.log('>', s[0], s[1], x.description); + options.trace && x.reason && console.log('\n---\n\n', x.reason, '\n\n---\n'); + }); + }); + runner.on('end', function (results) { + console.log(results.success.length, 'tests of', results.length, 'passed'); + console.log('Success ratio:', results.successPercent, '%'); + }); + }; + + module.exports = Default; + module.exports.convert = convert; + }, {}], + 19: [function (require, module, exports) { + var def = require('./default'); + + var tap = require('./tap'); + + var xunit = require('./xunit'); + + var min = require('./min'); + + module.exports = { + default: def, + tap: tap, + xunit: xunit, + min: min + }; + }, { + "./default": 18, + "./min": 20, + "./tap": 21, + "./xunit": 22 + }], + 20: [function (require, module, exports) { + var _require7 = require('../util/constants'), + eventMap = _require7.eventMap, + eventVerbs = _require7.eventVerbs; + + var _require8 = require('../util/nodeutils'), + clear = _require8.clear; + + var convert = function convert(x) { + return x; + }; + + var count = { + pass: 0, + fail: 0, + skip: 0, + collapse: function collapse() { + return this.pass + this.fail + this.skip; + } + }; + + var doneHandler = function doneHandler(event) { + clear(); + var mapEvent = eventMap[event.status]; + count[mapEvent]++; + console.log("".concat(count[mapEvent], " tests ").concat(eventVerbs[mapEvent][2]) + " (total: ".concat(count.collapse(), ")")); + }; + + var Min = function Min(runner) { + runner.on('start', function () { + return console.log('Started tests'); + }); + runner.on('pass', doneHandler); + runner.on('fail', doneHandler); + runner.on('skip', doneHandler); + runner.on('end', function (results) { + clear(); + console.log("Test suite ".concat(results.name, " has done running.")); + console.log('Success ratio:', results.successPercent, '%'); + }); + }; + + module.exports = Min; + module.exports.convert = convert; + }, { + "../util/constants": 23, + "../util/nodeutils": 25 + }], + 21: [function (require, module, exports) { + var statusMap = { + 'ok': 'ok', + 'notOk': 'not ok', + 'skip': 'skip' + }; + + var convert = function convert(results, options) { + return "\nTAP version 13\n".concat(results.length ? '1' : 0, "..").concat(results.length, "\n").concat(results.map(function (r, i) { + var status = statusMap[r.status]; + var message = options.trace && r.reason && (r.reason.stack ? r.reason.stack : r.reason) || ''; + return "".concat(status, " ").concat(i + 1, " - ").concat(r.description) + (message && '\n ---\n message: |\n ' + message + '\n ---\n'); + }).join('\n'), "\n"); + }; + + var TAP = function TAP(runner, options) { + runner.on('end', function (results) { + return console.log(convert(results, options)); + }); + }; + + module.exports = TAP; + module.exports.convert = convert; + }, {}], + 22: [function (require, module, exports) { + var toXML = require('jsontoxml'); + + var _require9 = require('../util/nodeutils'), + clear = _require9.clear; + + var toJSON = function toJSON(resultsArray) { + return { + testsuites: resultsArray.map(function (results) { + var name = results.name, + count = results.count, + success = results.success, + failures = results.failures, + skipped = results.skipped; + return { + name: 'testsuite', + attrs: { + name: name, + tests: count, + success: success.length, + failures: failures.length, + skipped: skipped.length, + timestamp: new Date().toUTCString(), + time: results.duration / 1000 || 0 + }, + children: results.reduce(function (acc, r) { + var content = r.status !== 'ok' && (r.status === 'skip' ? 'skipped' : { + name: 'failure', + text: r.reason ? r.reason && r.reason.stack : '' + }); + acc.push(_objectSpread({ + name: 'testcase', + attrs: { + name: r.description, + time: r.duration / 1000 || 0 + } + }, _typeof2(content) === 'object' && { + text: content && content.stack + }, _typeof2(content) === 'object' && { + children: [content] + })); + return acc; + }, []) + }; + }) + }; + }; + + var convert = function convert(results) { + return toXML(toJSON(results), { + xmlHeader: { + standalone: true + } + }); + }; + + var xunit = function xunit(runner) { + return runner.on("end", function (results) { + return clear(), console.log(convert([results])); + }); + }; + + module.exports = xunit; + module.exports.convert = convert; + }, { + "../util/nodeutils": 25, + "jsontoxml": 7 + }], + 23: [function (require, module, exports) { + var _require10 = require('os'), + EOL = _require10.EOL; + + module.exports = { + EOL: EOL, + eventMap: { + 'ok': 'pass', + 'notOk': 'fail', + 'skip': 'skip' + }, + eventVerbs: { + pass: ['pass', 'passing', 'passed'], + fail: ['fail', 'failing', 'failed'], + skip: ['skip', 'skipping', 'skipped'] + } + }; + }, { + "os": 8 + }], + 24: [function (require, module, exports) { + var _stringify = require('json-stringify-safe'); + + var isObject = function isObject(x) { + return x && _typeof2(x) === 'object'; + }; + + var stringify = function stringify(obj) { + return isObject(obj) ? obj.stack || _stringify(obj) : obj; + }; + + var deepFlatten = function deepFlatten(arr) { + var _ref6; + + return (_ref6 = []).concat.apply(_ref6, _toConsumableArray2(arr.map(function (v) { + return Array.isArray(v) ? deepFlatten(v) : v; + }))); + }; + /* Returns true if a promise is passed */ + + + var isPromise = function isPromise(prom) { + return prom && typeof prom.then === 'function'; + }; + /* Lift a value or promise into a function */ + + + var liftPromise = function liftPromise(fn, thing) { + return isPromise(thing) ? thing.then(fn) : fn(thing); + }; + + module.exports = { + /* Returns true if an object is passed */ + isObject: isObject, + + /* Returns true if a promise is passed */ + isPromise: isPromise, + + /* Lift a value or promise into a function */ + liftPromise: liftPromise, + + /* Returns the element found at the given path or undefined */ + path: function path(obj) { + return function (path) { + return path.reduce(function (result, segment) { + return result && result[segment]; + }, obj); + }; + }, + + /* Picks a key from an object */ + pick: function pick(key) { + return function (obj) { + return obj[key]; + }; + }, + + /* Pipe a value or promise through any number of unary functions */ + pipe: function pipe() { + for (var _len6 = arguments.length, fns = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { + fns[_key6] = arguments[_key6]; + } + + return function (arg) { + return fns.reduce(function (acc, fn) { + return liftPromise(fn, acc); + }, arg); + }; + }, + + /* Reduces an array */ + reduce: function reduce(fn, def) { + return function (arr) { + return arr.reduce(fn, def); + }; + }, + + /* Flattens an array of arrays to an array */ + flatten: function flatten(arrData) { + return [].concat.apply([], arrData); + }, + + /* Deep flattens arrays */ + deepFlatten: deepFlatten, + + /* Maps a function over an array */ + map: function map(fn) { + return function (x) { + return x.map(fn); + }; + }, + + /* Filter an array using provided function */ + filter: function filter(fn) { + return function (x) { + return x.filter(fn); + }; + }, + + /* Returns identity */ + identity: function identity(x) { + return x; + }, + + /* Wraps a value in an object with given key */ + wrapWith: function wrapWith(x) { + return function (y) { + return _defineProperty2({}, x, y); + }; + }, + + /* Unwraps a value from an object with given key */ + unwrapFrom: function unwrapFrom(x) { + return function (y) { + return y[x]; + }; + }, + + /* Resolves an array of Promises */ + promiseAll: function promiseAll(x) { + return Promise.all(x); + }, + + /* Pass partial arguments and return a function that accepts the rest */ + partial: function partial(fn) { + for (var _len7 = arguments.length, args = new Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) { + args[_key7 - 1] = arguments[_key7]; + } + + return function () { + for (var _len8 = arguments.length, rest = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { + rest[_key8] = arguments[_key8]; + } + + return fn.apply(void 0, args.concat(rest)); + }; + }, + + /* Item is in collection */ + isIn: function isIn(collection, item) { + return collection.indexOf(item) !== -1; + }, + + /* Collection contains given path */ + containsPath: function containsPath(collection, path) { + return collection.some(function (x) { + return path.match(new RegExp("/".concat(x, "/?$"))); + }); + }, + + /* Stringifies object or coerces to string */ + stringify: stringify, + + /* Tagged Stringify */ + taggedStringify: function taggedStringify(strings) { + for (var _len9 = arguments.length, expr = new Array(_len9 > 1 ? _len9 - 1 : 0), _key9 = 1; _key9 < _len9; _key9++) { + expr[_key9 - 1] = arguments[_key9]; + } + + return strings.reduce(function (acc, curr, i) { + return acc + curr + (stringify(expr[i]) || ''); + }, ''); + }, + + /* Short circuits with given value on pred. Else calls function */ + short: function short(pred, shorter) { + return function (fn) { + return function (value) { + return pred(value) ? shorter(value) : fn(value); + }; + }; + }, + + /* Check if object has given property */ + hasProp: function hasProp(obj) { + return function (prop) { + return prop in obj; + }; + }, + + /* Fetches last element from list */ + last: function last(arr) { + return arr[arr.length - 1]; + }, + + /* Uppercases first letter of word */ + upperCaseFirstLetter: function upperCaseFirstLetter(word) { + return word[0].toUpperCase() + word.slice(1); + }, + + /* Lowercases first letter of word */ + lowerCaseFirstLetter: function lowerCaseFirstLetter(word) { + return word[0].toLowerCase() + word.slice(1); + }, + + /* Creates an array or pushes to an existing one */ + arrayOrPush: function arrayOrPush(obj, key, item) { + return Array.isArray(obj[key]) ? obj[key].push(item) : obj[key] = [item]; + }, + + /* Assigns to key or creates a new object */ + assignToObject: function assignToObject(obj, path) { + return function (key, value) { + return isObject(obj[path]) ? obj[path][key] = value : obj[path] = _defineProperty2({}, key, value); + }; + } + }; + }, { + "json-stringify-safe": 6 + }], + 25: [function (require, module, exports) { + (function (global) { + module.exports = { + clear: function clear() { + if (typeof global === 'undefined' || typeof global.process === 'undefined' || typeof global.process.stdout === 'undefined') return; + var process = global.process; // clear screen + + process.stdout.write("\x1B[2J"); // set cursor position to top + + process.stdout.write("\x1B[1;1H"); + } + }; + }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); + }, {}], + 26: [function (require, module, exports) { + module.exports = { + Start: Symbol('Start'), + End: Symbol('End'), + expect: Symbol('expect'), + pass: 'pass', + fail: 'fail' + }; + }, {}] + }, {}, [1])(1); +}); diff --git a/es5/Gunner.js b/es5/Gunner.js new file mode 100644 index 0000000..6b28294 --- /dev/null +++ b/es5/Gunner.js @@ -0,0 +1,129 @@ +'use strict'; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var _require = require('./util'), + arrayOrPush = _require.arrayOrPush; + +var caller = require('./lib/caller'); + +var emitter = require('./lib/emitter'); + +var reporters = require('./reporters'); + +var testrunner = require('./lib/testrunner'); + +var symbols = require('./util/symbols'); + +var Gunner = +/*#__PURE__*/ +function () { + function Gunner(name) { + var _beforeHooks, _afterHooks; + + _classCallCheck(this, Gunner); + + this.name = name; + this.__suite__ = { + tests: [], + beforeHooks: (_beforeHooks = {}, _defineProperty(_beforeHooks, symbols.Start, []), _defineProperty(_beforeHooks, symbols.End, []), _defineProperty(_beforeHooks, '*', []), _beforeHooks), + afterHooks: (_afterHooks = {}, _defineProperty(_afterHooks, symbols.Start, []), _defineProperty(_afterHooks, symbols.End, []), _defineProperty(_afterHooks, '*', []), _afterHooks) + }; + } + + _createClass(Gunner, [{ + key: "test", + value: function test(description, _test) { + var existing = this.__suite__.tests.find(function (x) { + return x.description === description; + }); + + if (existing) throw new Error("Test '".concat(description, "' already exists!")); + var unit = { + description: description, + type: 'test', + run: function run(state) { + return caller(_test, state); + } + }; + + this.__suite__.tests.push(unit); + + return this; + } + }, { + key: "before", + value: function before(description, _run, label) { + var unit = { + description: description, + label: label, + type: 'hook', + run: function run(state) { + return caller(_run, state); + } + }; + arrayOrPush(this.__suite__.beforeHooks, description, unit); + return this; + } + }, { + key: "after", + value: function after(description, _run2, label) { + var unit = { + description: description, + label: label, + type: 'hook', + run: function run(state) { + return caller(_run2, state); + } + }; + arrayOrPush(this.__suite__.afterHooks, description, unit); + return this; + } + }, { + key: "run", + value: function run() { + var _this = this; + + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + if (options.reporter === true) reporters.default(emitter, options);else if (typeof options.reporter === 'function') options.reporter(emitter, options);else if (reporters[options.reporter]) reporters[options.reporter](emitter, options); + emitter.emit('start'); + return testrunner(this, options).then(function (results) { + var _ref; + + results.count = results.length; + results.success = results.filter(function (r) { + return r.status === 'ok'; + }); + results.failures = results.filter(function (r) { + return r.status === 'notOk'; + }); + results.skipped = results.filter(function (r) { + return r.status === 'skip'; + }); + results.successPercent = Math.floor(results.success.length / results.length * 100); + results.name = _this.name; + if (results.successPercent !== 100 && typeof process !== 'undefined') process.exitCode = 1; + emitter.emit('test end', results); + emitter.emit('end', results); + return options.request ? (_ref = {}, _defineProperty(_ref, options.request, reporters[options.request].convert(results)), _defineProperty(_ref, "default", results), _ref) : results; + }); + } + }]); + + return Gunner; +}(); + +var expect = require('./lib/expect'); + +module.exports = Gunner; +module.exports.expect = expect; +module.exports.expectMany = expect.expectMany; +module.exports.Start = symbols.Start; +module.exports.End = symbols.End; +module.exports.Gunner = module.exports; \ No newline at end of file diff --git a/es5/Runner.js b/es5/Runner.js index 26b26dd..2c4a204 100644 --- a/es5/Runner.js +++ b/es5/Runner.js @@ -1,548 +1,40 @@ "use strict"; -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } -(function (f) { - if ((typeof exports === "undefined" ? "undefined" : _typeof(exports)) === "object" && typeof module !== "undefined") { - module.exports = f(); - } else if (typeof define === "function" && define.amd) { - define([], f); - } else { - var g;if (typeof window !== "undefined") { - g = window; - } else if (typeof global !== "undefined") { - g = global; - } else if (typeof self !== "undefined") { - g = self; - } else { - g = this; - }g.Runner = f(); - } -})(function () { - var define, module, exports;return function () { - function r(e, n, t) { - function o(i, f) { - if (!n[i]) { - if (!e[i]) { - var c = "function" == typeof require && require;if (!f && c) return c(i, !0);if (u) return u(i, !0);var a = new Error("Cannot find module '" + i + "'");throw a.code = "MODULE_NOT_FOUND", a; - }var p = n[i] = { exports: {} };e[i][0].call(p.exports, function (r) { - var n = e[i][1][r];return o(n || r); - }, p, p.exports, r, e, n, t); - }return n[i].exports; - }for (var u = "function" == typeof require && require, i = 0; i < t.length; i++) { - o(t[i]); - }return o; - }return r; - }()({ 1: [function (require, module, exports) { - module.exports = require('./src/runner'); - }, { "./src/runner": 9 }], 2: [function (require, module, exports) { - //copyright Ryan Day 2010 , Joscha Feth 2013 [MIT Licensed] - - var element_start_char = "a-zA-Z_\xC0-\xD6\xD8-\xF6\xF8-\xFF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FFF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD"; - var element_non_start_char = "-.0-9\xB7\u0300-\u036F\u203F\u2040"; - var element_replace = new RegExp("^([^" + element_start_char + "])|^((x|X)(m|M)(l|L))|([^" + element_start_char + element_non_start_char + "])", "g"); - var not_safe_in_xml = /[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm; - - var process_to_xml = function process_to_xml(node_data, options) { - - var makeNode = function makeNode(name, content, attributes, level, hasSubNodes) { - - var indent_value = options.indent !== undefined ? options.indent : "\t"; - var indent = options.prettyPrint ? '\n' + new Array(level).join(indent_value) : ''; - if (options.removeIllegalNameCharacters) { - name = name.replace(element_replace, '_'); - } - - var node = [indent, '<', name, attributes || '']; - if (content && content.length > 0 || options.html) { - node.push('>'); - node.push(content); - hasSubNodes && node.push(indent); - node.push(''); - } else { - node.push('/>'); - } - return node.join(''); - }; - - return function fn(node_data, node_descriptor, level) { - var type = typeof node_data === "undefined" ? "undefined" : _typeof(node_data); - if (Array.isArray ? Array.isArray(node_data) : node_data instanceof Array) { - type = 'array'; - } else if (node_data instanceof Date) { - type = 'date'; - } - - switch (type) { - //if value is an array create child nodes from values - case 'array': - var ret = []; - node_data.map(function (v) { - ret.push(fn(v, 1, level + 1)); - //entries that are values of an array are the only ones that can be special node descriptors - }); - options.prettyPrint && ret.push('\n'); - return ret.join(''); - break; - - case 'date': - // cast dates to ISO 8601 date (soap likes it) - return node_data.toJSON ? node_data.toJSON() : node_data + ''; - break; - - case 'object': - if (node_descriptor == 1 && node_data.name) { - var content = [], - attributes = []; - - if (node_data.attrs) { - if (_typeof(node_data.attrs) != 'object') { - // attrs is a string, etc. - just use it as an attribute - attributes.push(' '); - attributes.push(node_data.attrs); - } else { - for (var key in node_data.attrs) { - var value = node_data.attrs[key]; - attributes.push(' '); - attributes.push(key); - attributes.push('="'); - attributes.push(options.escape ? esc(value) : value); - attributes.push('"'); - } - } - } - - //later attributes can be added here - if (typeof node_data.value != 'undefined') { - var c = '' + node_data.value; - content.push(options.escape && !node_data.noescape ? esc(c) : c); - } else if (typeof node_data.text != 'undefined') { - var c = '' + node_data.text; - content.push(options.escape && !node_data.noescape ? esc(c) : c); - } - - if (node_data.children) { - content.push(fn(node_data.children, 0, level + 1)); - } - - return makeNode(node_data.name, content.join(''), attributes.join(''), level, !!node_data.children); - } else { - var nodes = []; - for (var name in node_data) { - nodes.push(makeNode(name, fn(node_data[name], 0, level + 1), null, level + 1)); - } - options.prettyPrint && nodes.length > 0 && nodes.push('\n'); - return nodes.join(''); - } - break; - - case 'function': - return node_data(); - break; - - default: - return options.escape ? esc(node_data) : '' + node_data; - } - }(node_data, 0, 0); - }; - - var xml_header = function xml_header(standalone) { - var ret = [''); - - return ret.join(''); - }; - - module.exports = function (obj, options) { - - var Buffer = this.Buffer || function Buffer() {}; - - if (typeof obj == 'string' || obj instanceof Buffer) { - try { - obj = JSON.parse(obj.toString()); - } catch (e) { - return false; - } - } - - var xmlheader = ''; - var docType = ''; - if (options) { - if ((typeof options === "undefined" ? "undefined" : _typeof(options)) == 'object') { - // our config is an object - - if (options.xmlHeader) { - // the user wants an xml header - xmlheader = xml_header(!!options.xmlHeader.standalone); - } - - if (typeof options.docType != 'undefined') { - docType = ''; - } - } else { - // our config is a boolean value, so just add xml header - xmlheader = xml_header(); - } - } - options = options || {}; - - var ret = [xmlheader, options.prettyPrint && docType ? '\n' : '', docType, process_to_xml(obj, options)]; - - return ret.join(''); - }; - - module.exports.json_to_xml = module.exports.obj_to_xml = module.exports; - - module.exports.escape = esc; - - function esc(str) { - return ('' + str).replace(/&/g, '&').replace(//g, '>').replace(/'/g, ''').replace(/"/g, '"').replace(not_safe_in_xml, ''); - } - - module.exports.cdata = cdata; - - function cdata(str) { - if (str) return "/g, '') + ']]>'; - return ""; - }; - }, {}], 3: [function (require, module, exports) { - exports.endianness = function () { - return 'LE'; - }; - - exports.hostname = function () { - if (typeof location !== 'undefined') { - return location.hostname; - } else return ''; - }; - - exports.loadavg = function () { - return []; - }; - - exports.uptime = function () { - return 0; - }; - - exports.freemem = function () { - return Number.MAX_VALUE; - }; - - exports.totalmem = function () { - return Number.MAX_VALUE; - }; - - exports.cpus = function () { - return []; - }; - - exports.type = function () { - return 'Browser'; - }; - - exports.release = function () { - if (typeof navigator !== 'undefined') { - return navigator.appVersion; - } - return ''; - }; - - exports.networkInterfaces = exports.getNetworkInterfaces = function () { - return {}; - }; - - exports.arch = function () { - return 'javascript'; - }; - - exports.platform = function () { - return 'browser'; - }; - - exports.tmpdir = exports.tmpDir = function () { - return '/tmp'; - }; - - exports.EOL = '\n'; - - exports.homedir = function () { - return '/'; - }; - }, {}], 4: [function (require, module, exports) { - var statusMap = { - - 'ok': ['ok', '✅'], - 'notOk': ['notOk', '❌'], - 'skip': ['skip', '⚠️'] - - }; - - var convert = function convert(x) { - return x; - }; - - var Default = function Default(runner, options) { - - runner.on('start', function () { - return console.log('Started tests'); - }); - - runner.on('test end', function (results) { - - results.forEach(function (x) { - - var s = statusMap[x.status]; - - console.log('>', s[0], s[1], x.description); - options.trace && x.reason && console.log('\n---\n\n', x.reason, '\n\n---\n'); - }); - }); - - runner.on('end', function (results) { - - console.log(results.success.length, 'tests of', results.length, 'passed'); - console.log('Success ratio:', results.successPercent, '%'); - }); - }; - - module.exports = Default; - module.exports.convert = convert; - }, {}], 5: [function (require, module, exports) { - var def = require('./default'); - var tap = require('./tap'); - var xunit = require('./xunit'); - var min = require('./min'); - - module.exports = { - default: def, - tap: tap, - xunit: xunit, - min: min - }; - }, { "./default": 4, "./min": 6, "./tap": 7, "./xunit": 8 }], 6: [function (require, module, exports) { - var _require = require('../util/constants'), - eventMap = _require.eventMap, - eventVerbs = _require.eventVerbs; - - var _require2 = require('../util/nodeutils'), - clear = _require2.clear; - - var convert = function convert(x) { - return x; - }; - - var count = { - pass: 0, - fail: 0, - skip: 0, - collapse: function collapse() { - return this.pass + this.fail + this.skip; - } - }; - - var doneHandler = function doneHandler(event) { - - clear(); - var mapEvent = eventMap[event.status]; - count[mapEvent]++; - console.log(count[mapEvent] + " tests " + eventVerbs[mapEvent][2] + (" (total: " + count.collapse() + ")")); - }; - - var Min = function Min(runner) { - - runner.on('start', function () { - return console.log('Started tests'); - }); - - runner.on('pass', doneHandler); - runner.on('fail', doneHandler); - runner.on('skip', doneHandler); - - runner.on('end', function (results) { - - clear(); - console.log("Test suite " + results.name + " has done running."); - console.log('Success ratio:', results.successPercent, '%'); - }); - }; - - module.exports = Min; - module.exports.convert = convert; - }, { "../util/constants": 10, "../util/nodeutils": 11 }], 7: [function (require, module, exports) { - var statusMap = { - - 'ok': 'ok', - 'notOk': 'not ok', - 'skip': 'skip' - - }; - - var convert = function convert(results, options) { - return "\nTAP version 13\n" + (results.length ? '1' : 0) + ".." + results.length + "\n" + results.map(function (r, i) { - - var status = statusMap[r.status]; - var message = options.trace && r.reason && (r.reason.stack ? r.reason.stack : r.reason) || ''; - return status + " " + (i + 1) + " - " + r.description + (message && '\n ---\n message: |\n ' + message + '\n ---\n'); - }).join('\n') + "\n"; - }; - - var TAP = function TAP(runner, options) { - - runner.on('end', function (results) { - return console.log(convert(results, options)); - }); - }; - - module.exports = TAP; - module.exports.convert = convert; - }, {}], 8: [function (require, module, exports) { - var toXML = require('jsontoxml'); - - var _require3 = require('../util/nodeutils'), - clear = _require3.clear; - - var toJSON = function toJSON(resultsArray) { - - return { - testsuites: resultsArray.map(function (results) { - var name = results.name, - count = results.count, - success = results.success, - failures = results.failures, - skipped = results.skipped; - - - return { - name: 'testsuite', - attrs: { - name: name, - tests: count, - success: success.length, - failures: failures.length, - skipped: skipped.length, - timestamp: new Date().toUTCString(), - time: results.duration / 1000 || 0 - }, - children: results.reduce(function (acc, r) { - var content = r.status !== 'ok' && (r.status === 'skip' ? 'skipped' : { - name: 'failure', - text: r.reason ? r.reason && r.reason.stack : '' - }); - acc.push(_extends({ - name: 'testcase', - attrs: { - name: r.description, - time: r.duration / 1000 || 0 - } - }, (typeof content === "undefined" ? "undefined" : _typeof(content)) === 'object' && { text: content && content.stack }, (typeof content === "undefined" ? "undefined" : _typeof(content)) === 'object' && { children: [content] })); - return acc; - }, []) - }; - }) - }; - }; - - var convert = function convert(results) { - return toXML(toJSON(results), { xmlHeader: { standalone: true } }); - }; - - var xunit = function xunit(runner) { - return runner.on("end", function (results) { - return clear(), console.log(convert([results])); - }); - }; - - module.exports = xunit; - module.exports.convert = convert; - }, { "../util/nodeutils": 11, "jsontoxml": 2 }], 9: [function (require, module, exports) { - var reporters = require('../reporters'); - - var isBrowser = new Function("try { return this === window } catch (e) { return false }"); - - var runner = function runner(instances) { - return function () { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - - if (isBrowser()) throw new Error('Runner is not adapted for browsers yet.' + ' Use regular Gunner'); - - instances = Array.isArray(instances) ? instances : [instances]; - - if (!instances.length) throw new Error("No instances were passed to Gunner Runner"); - - var type = instances[0].__proto__.constructor.name; - - if (type !== "Gunner" && type !== "Strategy") throw new Error("Runner " + type + " is not one of Gunner or Strategy"); - - var RunInstances = instances.filter(function (i) { - return i.__proto__.constructor.name === type; - }); - - if (RunInstances.length !== instances.length) throw new Error("Not all instances were of type " + type); - - var perf = { start: new Date() }; - - return Promise.all(RunInstances.map(function (instance) { - return instance.run({ reporter: 'min' }); - })).then(function (results) { - perf.end = new Date(); - results.start = perf.start.toUTCString(); - results.end = perf.end.toUTCString(); - results.duration = perf.end - perf.start; - - return options.request ? _defineProperty({ - default: results - }, options.request, reporters[options.request].convert(results)) : results; - }); - }; - }; - - module.exports = runner; - }, { "../reporters": 5 }], 10: [function (require, module, exports) { - var _require4 = require('os'), - EOL = _require4.EOL; - - module.exports = { - EOL: EOL, - eventMap: { - 'ok': 'pass', - 'notOk': 'fail', - 'skip': 'skip' - }, - eventVerbs: { - pass: ['pass', 'passing', 'passed'], - fail: ['fail', 'failing', 'failed'], - skip: ['skip', 'skipping', 'skipped'] - } - }; - }, { "os": 3 }], 11: [function (require, module, exports) { - (function (global) { - module.exports = { - - clear: function clear() { - - if (typeof global === 'undefined' || typeof global.process === 'undefined' || typeof global.process.stdout === 'undefined') return; - - var process = global.process; - - // clear screen - process.stdout.write("\x1B[2J"); - // set cursor position to top - process.stdout.write("\x1B[1;1H"); - } - - }; - }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); - }, {}] }, {}, [1])(1); -}); +var reporters = require('./reporters'); + +var isBrowser = new Function("try { return this === window } catch (e) { return false }"); + +var Runner = function Runner(instances) { + return function () { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + if (isBrowser()) throw new Error('Runner is not adapted for browsers yet.' + ' Use regular Gunner'); + instances = Array.isArray(instances) ? instances : [instances]; + if (!instances.length) throw new Error("No instances were passed to Gunner Runner"); + var type = instances[0].__proto__.constructor.name; + if (type !== "Gunner" && type !== "Strategy") throw new Error("Runner ".concat(type, " is not one of Gunner or Strategy")); + var RunInstances = instances.filter(function (i) { + return i.__proto__.constructor.name === type; + }); + if (RunInstances.length !== instances.length) throw new Error("Not all instances were of type ".concat(type)); + var perf = { + start: new Date() + }; + return Promise.all(RunInstances.map(function (instance) { + return instance.run({ + reporter: 'min' + }); + })).then(function (results) { + perf.end = new Date(); + results.start = perf.start.toUTCString(); + results.end = perf.end.toUTCString(); + results.duration = perf.end - perf.start; + return options.request ? _defineProperty({ + default: results + }, options.request, reporters[options.request].convert(results)) : results; + }); + }; +}; + +module.exports = Runner; \ No newline at end of file diff --git a/es5/index.js b/es5/index.js deleted file mode 100644 index b6fc6e0..0000000 --- a/es5/index.js +++ /dev/null @@ -1,2361 +0,0 @@ -"use strict"; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _extends2 = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _templateObject = _taggedTemplateLiteral(["", " is not an array"], ["", " is not an array"]), - _templateObject2 = _taggedTemplateLiteral(["", " is not an object"], ["", " is not an object"]), - _templateObject3 = _taggedTemplateLiteral(["", " doesn't have length ", ""], ["", " doesn't have length ", ""]), - _templateObject4 = _taggedTemplateLiteral(["", " is not equal to ", ""], ["", " is not equal to ", ""]), - _templateObject5 = _taggedTemplateLiteral(["", " is not deeply equal to ", ""], ["", " is not deeply equal to ", ""]), - _templateObject6 = _taggedTemplateLiteral(["", " does not contain ", ""], ["", " does not contain ", ""]), - _templateObject7 = _taggedTemplateLiteral(["", " is not true"], ["", " is not true"]), - _templateObject8 = _taggedTemplateLiteral(["", " is not false"], ["", " is not false"]), - _templateObject9 = _taggedTemplateLiteral(["", " does not have property '", "'"], ["", " does not have property '", "'"]), - _templateObject10 = _taggedTemplateLiteral(["", " does not exist in ", ""], ["", " does not exist in ", ""]), - _templateObject11 = _taggedTemplateLiteral(["", " is not a promise"], ["", " is not a promise"]), - _templateObject12 = _taggedTemplateLiteral(["'", "' does not resolve to '", "'"], ["'", "' does not resolve to '", "'"]), - _templateObject13 = _taggedTemplateLiteral(["'", "' is not of type '", "'"], ["'", "' is not of type '", "'"]), - _templateObject14 = _taggedTemplateLiteral(["'", "' is not greater than ", ""], ["'", "' is not greater than ", ""]), - _templateObject15 = _taggedTemplateLiteral(["'", "' is not less than ", ""], ["'", "' is not less than ", ""]), - _templateObject16 = _taggedTemplateLiteral(["'", "' is less than ", ""], ["'", "' is less than ", ""]), - _templateObject17 = _taggedTemplateLiteral(["'", "' is greater than ", ""], ["'", "' is greater than ", ""]); - -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 _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } - -function _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperty2(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _toConsumableArray2(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); } } - -(function (f) { - if ((typeof exports === "undefined" ? "undefined" : _typeof2(exports)) === "object" && typeof module !== "undefined") { - module.exports = f(); - } else if (typeof define === "function" && define.amd) { - define([], f); - } else { - var g;if (typeof window !== "undefined") { - g = window; - } else if (typeof global !== "undefined") { - g = global; - } else if (typeof self !== "undefined") { - g = self; - } else { - g = this; - }g.Gunner = f(); - } -})(function () { - var define, module, exports;return function () { - function r(e, n, t) { - function o(i, f) { - if (!n[i]) { - if (!e[i]) { - var c = "function" == typeof require && require;if (!f && c) return c(i, !0);if (u) return u(i, !0);var a = new Error("Cannot find module '" + i + "'");throw a.code = "MODULE_NOT_FOUND", a; - }var p = n[i] = { exports: {} };e[i][0].call(p.exports, function (r) { - var n = e[i][1][r];return o(n || r); - }, p, p.exports, r, e, n, t); - }return n[i].exports; - }for (var u = "function" == typeof require && require, i = 0; i < t.length; i++) { - o(t[i]); - }return o; - }return r; - }()({ 1: [function (require, module, exports) { - module.exports = require('./src/gunner'); - }, { "./src/gunner": 10 }], 2: [function (require, module, exports) { - (function (global) { - (function (f) { - if ((typeof exports === "undefined" ? "undefined" : _typeof2(exports)) === "object" && typeof module !== "undefined") { - module.exports = f(); - } else if (typeof define === "function" && define.amd) { - define([], f); - } else { - var g; - if (typeof window !== "undefined") { - g = window; - } else if (typeof global !== "undefined") { - g = global; - } else if (typeof self !== "undefined") { - g = self; - } else { - g = this; - } - g.isEq = f(); - } - })(function () { - var define, module, exports; - return function () { - function e(t, n, r) { - function s(o, u) { - if (!n[o]) { - if (!t[o]) { - var a = typeof require == "function" && require; - if (!u && a) return a(o, !0); - if (i) return i(o, !0); - var f = new Error("Cannot find module '" + o + "'"); - throw f.code = "MODULE_NOT_FOUND", f; - } - var l = n[o] = { exports: {} }; - t[o][0].call(l.exports, function (e) { - var n = t[o][1][e]; - return s(n ? n : e); - }, l, l.exports, e, t, n, r); - } - return n[o].exports; - } - var i = typeof require == "function" && require; - for (var o = 0; o < r.length; o++) { - s(r[o]); - }return s; - } - return e; - }()({ - 1: [function (require, module, exports) { - "use strict"; - - var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) { - return typeof obj === "undefined" ? "undefined" : _typeof2(obj); - } : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof2(obj); - }; - var isEq = function isEq(item1, item2, compareKeys) { - if (item1 === item2) return true; - if ((typeof item1 === "undefined" ? "undefined" : _typeof(item1)) !== (typeof item2 === "undefined" ? "undefined" : _typeof(item2))) return false; - if (Array.isArray(item1) && !Array.isArray(item2) || Array.isArray(item2) && !Array.isArray(item1)) return false; - if (typeof item1 === "number") { - if (isNaN(item1) && isNaN(item2)) return false;else return item1 === item2; - } - if (typeof item1 === "string" || typeof item1 === "boolean" || item1 === null || item1 === undefined) { - return item1 === item2; - } - if (item1 instanceof RegExp) return String(item1) === String(item2); - if ((typeof item1 === "undefined" ? "undefined" : _typeof(item1)) !== "object" || (typeof item2 === "undefined" ? "undefined" : _typeof(item2)) !== "object") return item1 === item2; - var item1Keys = Object.keys(item1); - var item2Keys = Object.keys(item2); - if (!compareKeys) { - compareKeys = item1Keys; - if (item1Keys.length !== item2Keys.length) { - return false; - } - } - if (!Array.isArray(compareKeys)) throw new Error("[isEq] third parameter should be an array of keys!"); - if (compareKeys.length === 0) return true; - for (var KeyIndex in compareKeys) { - var Key = compareKeys[KeyIndex]; - if (Array.isArray(item1[Key]) && Array.isArray(item2[Key])) { - Key = KeyIndex; - } - if (item1[Key] !== item2[Key]) { - if (_typeof(item1[Key] === "object") && _typeof(item2[Key] === "object") || Array.isArray(item1[Key]) && Array.isArray(item2[Key])) { - if (!isEq(item1[Key], item2[Key])) { - return false; - } - } else { - return false; - } - } - } - return true; - }; - module.exports = isEq; - }, {}] - }, {}, [1])(1); - }); - }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); - }, {}], 3: [function (require, module, exports) { - (function (global) { - "use strict"; - var _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i];for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - }return target; - };var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) { - return typeof obj === "undefined" ? "undefined" : _typeof2(obj); - } : function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof2(obj); - };function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); - } else { - obj[key] = value; - }return obj; - }function _toConsumableArray(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); - } - }(function (f) { - if ((typeof exports === "undefined" ? "undefined" : _typeof(exports)) === "object" && typeof module !== "undefined") { - module.exports = f(); - } else if (typeof define === "function" && define.amd) { - define([], f); - } else { - var g;if (typeof window !== "undefined") { - g = window; - } else if (typeof global !== "undefined") { - g = global; - } else if (typeof self !== "undefined") { - g = self; - } else { - g = this; - }g.promiseObject = f(); - } - })(function () { - var define, module, exports;return function () { - function r(e, n, t) { - function o(i, f) { - if (!n[i]) { - if (!e[i]) { - var c = "function" == typeof require && require;if (!f && c) return c(i, !0);if (u) return u(i, !0);var a = new Error("Cannot find module '" + i + "'");throw a.code = "MODULE_NOT_FOUND", a; - }var p = n[i] = { exports: {} };e[i][0].call(p.exports, function (r) { - var n = e[i][1][r];return o(n || r); - }, p, p.exports, r, e, n, t); - }return n[i].exports; - }for (var u = "function" == typeof require && require, i = 0; i < t.length; i++) { - o(t[i]); - }return o; - }return r; - }()({ 1: [function (require, module, exports) { - module.exports = require("../index.js"); - }, { "../index.js": 2 }], 2: [function (require, module, exports) { - "use strict"; - var isObject = function isObject(x) { - return x && (typeof x === "undefined" ? "undefined" : _typeof(x)) === "object" && x.constructor === Object; - };var $SELF = typeof Symbol !== "undefined" ? Symbol("SELF") : "[~~//-- SELF --//~~]";var makeCyclic = function makeCyclic(object, query) { - var start = function start(obj) { - return Object.keys(obj).reduce(function (acc, key) { - var value = obj[key];if (value === query) { - obj[key] = object;return [].concat(_toConsumableArray(acc), [key]); - }if (isObject(value)) return [].concat(_toConsumableArray(acc), _toConsumableArray(start(value, query)));else return acc; - }, []); - };return start(object); - };var PromiseMap = function PromiseMap(arr, functor) { - return Promise.all(arr.map(function (x) { - return Promise.resolve(x).then(functor); - })); - };var ResolveObject = function ResolveObject(obj) { - return Promise.all(Object.keys(obj).map(function (key) { - return Promise.resolve(obj[key]).then(function (val) { - return obj[key] = val; - }); - })).then(function (_) { - return obj; - }); - };var PromiseObject = function PromiseObject(object) { - var shouldReplaceSelf = false;var ResolveDeepObject = function ResolveDeepObject(obj) { - return Promise.resolve(obj).then(function (resolvedObject) { - if (Array.isArray(resolvedObject)) { - return PromiseMap(resolvedObject, function (obj) { - return ResolveDeepObject(obj); - }); - } else if (isObject(resolvedObject)) { - return ResolveObject(Object.keys(resolvedObject).reduce(function (acc, key) { - if (resolvedObject[key] === object) { - shouldReplaceSelf = true;return _extends({}, acc, _defineProperty({}, key, $SELF)); - }return _extends({}, acc, _defineProperty({}, key, ResolveDeepObject(resolvedObject[key]))); - }, {})); - }return resolvedObject; - }); - };return ResolveDeepObject(object).then(function (obj) { - if (shouldReplaceSelf) makeCyclic(obj, $SELF);return obj; - }); - };module.exports = PromiseObject; - }, {}] }, {}, [1])(1); - }); - }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); - }, { "../index.js": 4 }], 4: [function (require, module, exports) { - "use strict"; - - /** - * Returns true if x is an object, false otherwise. - * @param {any} x - * @returns {Boolean} - */ - - var isObject = function isObject(x) { - return x && (typeof x === "undefined" ? "undefined" : _typeof2(x)) === 'object' && x.constructor === Object; - }; - - /* A well known Symbol. */ - var $SELF = typeof Symbol !== 'undefined' ? Symbol('SELF') : '[~~//-- SELF --//~~]'; - - /** - * Replaces values that match the query parameter - * with a reference to the parent parameter. - * @param {Object} object Object to make cyclic. - * @param {any} query Query to match against. - * @returns {Object} - */ - var makeCyclic = function makeCyclic(object, query) { - var start = function start(obj) { - return Object.keys(obj).reduce(function (acc, key) { - var value = obj[key]; - if (value === query) { - obj[key] = object; - return [].concat(_toConsumableArray2(acc), [key]); - }; - if (isObject(value)) return [].concat(_toConsumableArray2(acc), _toConsumableArray2(start(value, query)));else return acc; - }, []); - }; - return start(object); - }; - - /** - * Promise.map polyfill. - * @param {Array.} arr Array of Promises. - * @param {Function} functor Function to call resolved values. - */ - var PromiseMap = function PromiseMap(arr, functor) { - return Promise.all(arr.map(function (x) { - return Promise.resolve(x).then(functor); - })); - }; - - /** - * Resolve a flat object's promises. - * @param {Object} - * @returns {Object} - */ - var ResolveObject = function ResolveObject(obj) { - return Promise.all(Object.keys(obj).map(function (key) { - return Promise.resolve(obj[key]).then(function (val) { - return obj[key] = val; - }); - })).then(function (_) { - return obj; - }); - }; - - /** - * Recursively resolves deep objects with nested promises. - * @param {Object} object Object or value to resolve. - * @returns {Object} Resolved object. - */ - var PromiseObject = function PromiseObject(object) { - var shouldReplaceSelf = false; - var ResolveDeepObject = function ResolveDeepObject(obj) { - return Promise.resolve(obj).then(function (resolvedObject) { - if (Array.isArray(resolvedObject)) { - // Promise and map every item to recursively deep resolve. - return PromiseMap(resolvedObject, function (obj) { - return ResolveDeepObject(obj); - }); - } else if (isObject(resolvedObject)) { - return ResolveObject(Object.keys(resolvedObject).reduce(function (acc, key) { - if (resolvedObject[key] === object) { - shouldReplaceSelf = true; - return _extends2({}, acc, _defineProperty2({}, key, $SELF)); - } - return _extends2({}, acc, _defineProperty2({}, key, ResolveDeepObject(resolvedObject[key]))); - }, {})); - } - return resolvedObject; - }); - }; - return ResolveDeepObject(object).then(function (obj) { - // Replace $SELF with reference to obj - if (shouldReplaceSelf) makeCyclic(obj, $SELF); - return obj; - }); - }; - - module.exports = PromiseObject; - }, {}], 5: [function (require, module, exports) { - // Copyright Joyent, Inc. and other Node contributors. - // - // Permission is hereby granted, free of charge, to any person obtaining a - // copy of this software and associated documentation files (the - // "Software"), to deal in the Software without restriction, including - // without limitation the rights to use, copy, modify, merge, publish, - // distribute, sublicense, and/or sell copies of the Software, and to permit - // persons to whom the Software is furnished to do so, subject to the - // following conditions: - // - // The above copyright notice and this permission notice shall be included - // in all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - // USE OR OTHER DEALINGS IN THE SOFTWARE. - - var objectCreate = Object.create || objectCreatePolyfill; - var objectKeys = Object.keys || objectKeysPolyfill; - var bind = Function.prototype.bind || functionBindPolyfill; - - function EventEmitter() { - if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) { - this._events = objectCreate(null); - this._eventsCount = 0; - } - - this._maxListeners = this._maxListeners || undefined; - } - module.exports = EventEmitter; - - // Backwards-compat with node 0.10.x - EventEmitter.EventEmitter = EventEmitter; - - EventEmitter.prototype._events = undefined; - EventEmitter.prototype._maxListeners = undefined; - - // By default EventEmitters will print a warning if more than 10 listeners are - // added to it. This is a useful default which helps finding memory leaks. - var defaultMaxListeners = 10; - - var hasDefineProperty; - try { - var o = {}; - if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 }); - hasDefineProperty = o.x === 0; - } catch (err) { - hasDefineProperty = false; - } - if (hasDefineProperty) { - Object.defineProperty(EventEmitter, 'defaultMaxListeners', { - enumerable: true, - get: function get() { - return defaultMaxListeners; - }, - set: function set(arg) { - // check whether the input is a positive number (whose value is zero or - // greater and not a NaN). - if (typeof arg !== 'number' || arg < 0 || arg !== arg) throw new TypeError('"defaultMaxListeners" must be a positive number'); - defaultMaxListeners = arg; - } - }); - } else { - EventEmitter.defaultMaxListeners = defaultMaxListeners; - } - - // Obviously not all Emitters should be limited to 10. This function allows - // that to be increased. Set to zero for unlimited. - EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) { - if (typeof n !== 'number' || n < 0 || isNaN(n)) throw new TypeError('"n" argument must be a positive number'); - this._maxListeners = n; - return this; - }; - - function $getMaxListeners(that) { - if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners; - return that._maxListeners; - } - - EventEmitter.prototype.getMaxListeners = function getMaxListeners() { - return $getMaxListeners(this); - }; - - // These standalone emit* functions are used to optimize calling of event - // handlers for fast cases because emit() itself often has a variable number of - // arguments and can be deoptimized because of that. These functions always have - // the same number of arguments and thus do not get deoptimized, so the code - // inside them can execute faster. - function emitNone(handler, isFn, self) { - if (isFn) handler.call(self);else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) { - listeners[i].call(self); - } - } - } - function emitOne(handler, isFn, self, arg1) { - if (isFn) handler.call(self, arg1);else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) { - listeners[i].call(self, arg1); - } - } - } - function emitTwo(handler, isFn, self, arg1, arg2) { - if (isFn) handler.call(self, arg1, arg2);else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) { - listeners[i].call(self, arg1, arg2); - } - } - } - function emitThree(handler, isFn, self, arg1, arg2, arg3) { - if (isFn) handler.call(self, arg1, arg2, arg3);else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) { - listeners[i].call(self, arg1, arg2, arg3); - } - } - } - - function emitMany(handler, isFn, self, args) { - if (isFn) handler.apply(self, args);else { - var len = handler.length; - var listeners = arrayClone(handler, len); - for (var i = 0; i < len; ++i) { - listeners[i].apply(self, args); - } - } - } - - EventEmitter.prototype.emit = function emit(type) { - var er, handler, len, args, i, events; - var doError = type === 'error'; - - events = this._events; - if (events) doError = doError && events.error == null;else if (!doError) return false; - - // If there is no 'error' event listener then throw. - if (doError) { - if (arguments.length > 1) er = arguments[1]; - if (er instanceof Error) { - throw er; // Unhandled 'error' event - } else { - // At least give some kind of context to the user - var err = new Error('Unhandled "error" event. (' + er + ')'); - err.context = er; - throw err; - } - return false; - } - - handler = events[type]; - - if (!handler) return false; - - var isFn = typeof handler === 'function'; - len = arguments.length; - switch (len) { - // fast cases - case 1: - emitNone(handler, isFn, this); - break; - case 2: - emitOne(handler, isFn, this, arguments[1]); - break; - case 3: - emitTwo(handler, isFn, this, arguments[1], arguments[2]); - break; - case 4: - emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]); - break; - // slower - default: - args = new Array(len - 1); - for (i = 1; i < len; i++) { - args[i - 1] = arguments[i]; - }emitMany(handler, isFn, this, args); - } - - return true; - }; - - function _addListener(target, type, listener, prepend) { - var m; - var events; - var existing; - - if (typeof listener !== 'function') throw new TypeError('"listener" argument must be a function'); - - events = target._events; - if (!events) { - events = target._events = objectCreate(null); - target._eventsCount = 0; - } else { - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (events.newListener) { - target.emit('newListener', type, listener.listener ? listener.listener : listener); - - // Re-assign `events` because a newListener handler could have caused the - // this._events to be assigned to a new object - events = target._events; - } - existing = events[type]; - } - - if (!existing) { - // Optimize the case of one listener. Don't need the extra array object. - existing = events[type] = listener; - ++target._eventsCount; - } else { - if (typeof existing === 'function') { - // Adding the second element, need to change to array. - existing = events[type] = prepend ? [listener, existing] : [existing, listener]; - } else { - // If we've already got an array, just append. - if (prepend) { - existing.unshift(listener); - } else { - existing.push(listener); - } - } - - // Check for listener leak - if (!existing.warned) { - m = $getMaxListeners(target); - if (m && m > 0 && existing.length > m) { - existing.warned = true; - var w = new Error('Possible EventEmitter memory leak detected. ' + existing.length + ' "' + String(type) + '" listeners ' + 'added. Use emitter.setMaxListeners() to ' + 'increase limit.'); - w.name = 'MaxListenersExceededWarning'; - w.emitter = target; - w.type = type; - w.count = existing.length; - if ((typeof console === "undefined" ? "undefined" : _typeof2(console)) === 'object' && console.warn) { - console.warn('%s: %s', w.name, w.message); - } - } - } - } - - return target; - } - - EventEmitter.prototype.addListener = function addListener(type, listener) { - return _addListener(this, type, listener, false); - }; - - EventEmitter.prototype.on = EventEmitter.prototype.addListener; - - EventEmitter.prototype.prependListener = function prependListener(type, listener) { - return _addListener(this, type, listener, true); - }; - - function onceWrapper() { - if (!this.fired) { - this.target.removeListener(this.type, this.wrapFn); - this.fired = true; - switch (arguments.length) { - case 0: - return this.listener.call(this.target); - case 1: - return this.listener.call(this.target, arguments[0]); - case 2: - return this.listener.call(this.target, arguments[0], arguments[1]); - case 3: - return this.listener.call(this.target, arguments[0], arguments[1], arguments[2]); - default: - var args = new Array(arguments.length); - for (var i = 0; i < args.length; ++i) { - args[i] = arguments[i]; - }this.listener.apply(this.target, args); - } - } - } - - function _onceWrap(target, type, listener) { - var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener }; - var wrapped = bind.call(onceWrapper, state); - wrapped.listener = listener; - state.wrapFn = wrapped; - return wrapped; - } - - EventEmitter.prototype.once = function once(type, listener) { - if (typeof listener !== 'function') throw new TypeError('"listener" argument must be a function'); - this.on(type, _onceWrap(this, type, listener)); - return this; - }; - - EventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) { - if (typeof listener !== 'function') throw new TypeError('"listener" argument must be a function'); - this.prependListener(type, _onceWrap(this, type, listener)); - return this; - }; - - // Emits a 'removeListener' event if and only if the listener was removed. - EventEmitter.prototype.removeListener = function removeListener(type, listener) { - var list, events, position, i, originalListener; - - if (typeof listener !== 'function') throw new TypeError('"listener" argument must be a function'); - - events = this._events; - if (!events) return this; - - list = events[type]; - if (!list) return this; - - if (list === listener || list.listener === listener) { - if (--this._eventsCount === 0) this._events = objectCreate(null);else { - delete events[type]; - if (events.removeListener) this.emit('removeListener', type, list.listener || listener); - } - } else if (typeof list !== 'function') { - position = -1; - - for (i = list.length - 1; i >= 0; i--) { - if (list[i] === listener || list[i].listener === listener) { - originalListener = list[i].listener; - position = i; - break; - } - } - - if (position < 0) return this; - - if (position === 0) list.shift();else spliceOne(list, position); - - if (list.length === 1) events[type] = list[0]; - - if (events.removeListener) this.emit('removeListener', type, originalListener || listener); - } - - return this; - }; - - EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) { - var listeners, events, i; - - events = this._events; - if (!events) return this; - - // not listening for removeListener, no need to emit - if (!events.removeListener) { - if (arguments.length === 0) { - this._events = objectCreate(null); - this._eventsCount = 0; - } else if (events[type]) { - if (--this._eventsCount === 0) this._events = objectCreate(null);else delete events[type]; - } - return this; - } - - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - var keys = objectKeys(events); - var key; - for (i = 0; i < keys.length; ++i) { - key = keys[i]; - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = objectCreate(null); - this._eventsCount = 0; - return this; - } - - listeners = events[type]; - - if (typeof listeners === 'function') { - this.removeListener(type, listeners); - } else if (listeners) { - // LIFO order - for (i = listeners.length - 1; i >= 0; i--) { - this.removeListener(type, listeners[i]); - } - } - - return this; - }; - - function _listeners(target, type, unwrap) { - var events = target._events; - - if (!events) return []; - - var evlistener = events[type]; - if (!evlistener) return []; - - if (typeof evlistener === 'function') return unwrap ? [evlistener.listener || evlistener] : [evlistener]; - - return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length); - } - - EventEmitter.prototype.listeners = function listeners(type) { - return _listeners(this, type, true); - }; - - EventEmitter.prototype.rawListeners = function rawListeners(type) { - return _listeners(this, type, false); - }; - - EventEmitter.listenerCount = function (emitter, type) { - if (typeof emitter.listenerCount === 'function') { - return emitter.listenerCount(type); - } else { - return listenerCount.call(emitter, type); - } - }; - - EventEmitter.prototype.listenerCount = listenerCount; - function listenerCount(type) { - var events = this._events; - - if (events) { - var evlistener = events[type]; - - if (typeof evlistener === 'function') { - return 1; - } else if (evlistener) { - return evlistener.length; - } - } - - return 0; - } - - EventEmitter.prototype.eventNames = function eventNames() { - return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : []; - }; - - // About 1.5x faster than the two-arg version of Array#splice(). - function spliceOne(list, index) { - for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) { - list[i] = list[k]; - }list.pop(); - } - - function arrayClone(arr, n) { - var copy = new Array(n); - for (var i = 0; i < n; ++i) { - copy[i] = arr[i]; - }return copy; - } - - function unwrapListeners(arr) { - var ret = new Array(arr.length); - for (var i = 0; i < ret.length; ++i) { - ret[i] = arr[i].listener || arr[i]; - } - return ret; - } - - function objectCreatePolyfill(proto) { - var F = function F() {}; - F.prototype = proto; - return new F(); - } - function objectKeysPolyfill(obj) { - var keys = []; - for (var k in obj) { - if (Object.prototype.hasOwnProperty.call(obj, k)) { - keys.push(k); - } - }return k; - } - function functionBindPolyfill(context) { - var fn = this; - return function () { - return fn.apply(context, arguments); - }; - } - }, {}], 6: [function (require, module, exports) { - exports = module.exports = stringify; - exports.getSerialize = serializer; - - function stringify(obj, replacer, spaces, cycleReplacer) { - return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces); - } - - function serializer(replacer, cycleReplacer) { - var stack = [], - keys = []; - - if (cycleReplacer == null) cycleReplacer = function cycleReplacer(key, value) { - if (stack[0] === value) return "[Circular ~]"; - return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]"; - }; - - return function (key, value) { - if (stack.length > 0) { - var thisPos = stack.indexOf(this); - ~thisPos ? stack.splice(thisPos + 1) : stack.push(this); - ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key); - if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value); - } else stack.push(value); - - return replacer == null ? value : replacer.call(this, key, value); - }; - } - }, {}], 7: [function (require, module, exports) { - //copyright Ryan Day 2010 , Joscha Feth 2013 [MIT Licensed] - - var element_start_char = "a-zA-Z_\xC0-\xD6\xD8-\xF6\xF8-\xFF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FFF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD"; - var element_non_start_char = "-.0-9\xB7\u0300-\u036F\u203F\u2040"; - var element_replace = new RegExp("^([^" + element_start_char + "])|^((x|X)(m|M)(l|L))|([^" + element_start_char + element_non_start_char + "])", "g"); - var not_safe_in_xml = /[^\x09\x0A\x0D\x20-\xFF\x85\xA0-\uD7FF\uE000-\uFDCF\uFDE0-\uFFFD]/gm; - - var process_to_xml = function process_to_xml(node_data, options) { - - var makeNode = function makeNode(name, content, attributes, level, hasSubNodes) { - - var indent_value = options.indent !== undefined ? options.indent : "\t"; - var indent = options.prettyPrint ? '\n' + new Array(level).join(indent_value) : ''; - if (options.removeIllegalNameCharacters) { - name = name.replace(element_replace, '_'); - } - - var node = [indent, '<', name, attributes || '']; - if (content && content.length > 0 || options.html) { - node.push('>'); - node.push(content); - hasSubNodes && node.push(indent); - node.push(''); - } else { - node.push('/>'); - } - return node.join(''); - }; - - return function fn(node_data, node_descriptor, level) { - var type = typeof node_data === "undefined" ? "undefined" : _typeof2(node_data); - if (Array.isArray ? Array.isArray(node_data) : node_data instanceof Array) { - type = 'array'; - } else if (node_data instanceof Date) { - type = 'date'; - } - - switch (type) { - //if value is an array create child nodes from values - case 'array': - var ret = []; - node_data.map(function (v) { - ret.push(fn(v, 1, level + 1)); - //entries that are values of an array are the only ones that can be special node descriptors - }); - options.prettyPrint && ret.push('\n'); - return ret.join(''); - break; - - case 'date': - // cast dates to ISO 8601 date (soap likes it) - return node_data.toJSON ? node_data.toJSON() : node_data + ''; - break; - - case 'object': - if (node_descriptor == 1 && node_data.name) { - var content = [], - attributes = []; - - if (node_data.attrs) { - if (_typeof2(node_data.attrs) != 'object') { - // attrs is a string, etc. - just use it as an attribute - attributes.push(' '); - attributes.push(node_data.attrs); - } else { - for (var key in node_data.attrs) { - var value = node_data.attrs[key]; - attributes.push(' '); - attributes.push(key); - attributes.push('="'); - attributes.push(options.escape ? esc(value) : value); - attributes.push('"'); - } - } - } - - //later attributes can be added here - if (typeof node_data.value != 'undefined') { - var c = '' + node_data.value; - content.push(options.escape && !node_data.noescape ? esc(c) : c); - } else if (typeof node_data.text != 'undefined') { - var c = '' + node_data.text; - content.push(options.escape && !node_data.noescape ? esc(c) : c); - } - - if (node_data.children) { - content.push(fn(node_data.children, 0, level + 1)); - } - - return makeNode(node_data.name, content.join(''), attributes.join(''), level, !!node_data.children); - } else { - var nodes = []; - for (var name in node_data) { - nodes.push(makeNode(name, fn(node_data[name], 0, level + 1), null, level + 1)); - } - options.prettyPrint && nodes.length > 0 && nodes.push('\n'); - return nodes.join(''); - } - break; - - case 'function': - return node_data(); - break; - - default: - return options.escape ? esc(node_data) : '' + node_data; - } - }(node_data, 0, 0); - }; - - var xml_header = function xml_header(standalone) { - var ret = [''); - - return ret.join(''); - }; - - module.exports = function (obj, options) { - - var Buffer = this.Buffer || function Buffer() {}; - - if (typeof obj == 'string' || obj instanceof Buffer) { - try { - obj = JSON.parse(obj.toString()); - } catch (e) { - return false; - } - } - - var xmlheader = ''; - var docType = ''; - if (options) { - if ((typeof options === "undefined" ? "undefined" : _typeof2(options)) == 'object') { - // our config is an object - - if (options.xmlHeader) { - // the user wants an xml header - xmlheader = xml_header(!!options.xmlHeader.standalone); - } - - if (typeof options.docType != 'undefined') { - docType = ''; - } - } else { - // our config is a boolean value, so just add xml header - xmlheader = xml_header(); - } - } - options = options || {}; - - var ret = [xmlheader, options.prettyPrint && docType ? '\n' : '', docType, process_to_xml(obj, options)]; - - return ret.join(''); - }; - - module.exports.json_to_xml = module.exports.obj_to_xml = module.exports; - - module.exports.escape = esc; - - function esc(str) { - return ('' + str).replace(/&/g, '&').replace(//g, '>').replace(/'/g, ''').replace(/"/g, '"').replace(not_safe_in_xml, ''); - } - - module.exports.cdata = cdata; - - function cdata(str) { - if (str) return "/g, '') + ']]>'; - return ""; - }; - }, {}], 8: [function (require, module, exports) { - exports.endianness = function () { - return 'LE'; - }; - - exports.hostname = function () { - if (typeof location !== 'undefined') { - return location.hostname; - } else return ''; - }; - - exports.loadavg = function () { - return []; - }; - - exports.uptime = function () { - return 0; - }; - - exports.freemem = function () { - return Number.MAX_VALUE; - }; - - exports.totalmem = function () { - return Number.MAX_VALUE; - }; - - exports.cpus = function () { - return []; - }; - - exports.type = function () { - return 'Browser'; - }; - - exports.release = function () { - if (typeof navigator !== 'undefined') { - return navigator.appVersion; - } - return ''; - }; - - exports.networkInterfaces = exports.getNetworkInterfaces = function () { - return {}; - }; - - exports.arch = function () { - return 'javascript'; - }; - - exports.platform = function () { - return 'browser'; - }; - - exports.tmpdir = exports.tmpDir = function () { - return '/tmp'; - }; - - exports.EOL = '\n'; - - exports.homedir = function () { - return '/'; - }; - }, {}], 9: [function (require, 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; - }; - }, {}], 10: [function (require, module, exports) { - (function (process) { - 'use strict'; - - var _require = require('./util'), - arrayOrPush = _require.arrayOrPush; - - var caller = require('./lib/caller'); - var emitter = require('./lib/emitter'); - var reporters = require('./reporters'); - var testrunner = require('./lib/testrunner'); - - var symbols = require('./util/symbols'); - - var Gunner = function () { - function Gunner(name) { - var _beforeHooks, _afterHooks; - - _classCallCheck(this, Gunner); - - this.name = name; - this.__suite__ = { - tests: [], - beforeHooks: (_beforeHooks = {}, _defineProperty2(_beforeHooks, symbols.Start, []), _defineProperty2(_beforeHooks, symbols.End, []), _defineProperty2(_beforeHooks, '*', []), _beforeHooks), - afterHooks: (_afterHooks = {}, _defineProperty2(_afterHooks, symbols.Start, []), _defineProperty2(_afterHooks, symbols.End, []), _defineProperty2(_afterHooks, '*', []), _afterHooks) - }; - } - - _createClass(Gunner, [{ - key: "test", - value: function test(description, _test) { - var existing = this.__suite__.tests.find(function (x) { - return x.description === description; - }); - if (existing) throw new Error("Test '" + description + "' already exists!"); - - var unit = { - description: description, - type: 'test', - run: function run(state) { - return caller(_test, state); - } - }; - this.__suite__.tests.push(unit); - return this; - } - }, { - key: "before", - value: function before(description, _run, label) { - var unit = { - description: description, - label: label, - type: 'hook', - run: function run(state) { - return caller(_run, state); - } - }; - arrayOrPush(this.__suite__.beforeHooks, description, unit); - return this; - } - }, { - key: "after", - value: function after(description, _run2, label) { - var unit = { - description: description, - label: label, - type: 'hook', - run: function run(state) { - return caller(_run2, state); - } - }; - arrayOrPush(this.__suite__.afterHooks, description, unit); - return this; - } - }, { - key: "run", - value: function run() { - var _this = this; - - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - - if (options.reporter === true) reporters.default(emitter, options);else if (typeof options.reporter === 'function') options.reporter(emitter, options);else if (reporters[options.reporter]) reporters[options.reporter](emitter, options); - - emitter.emit('start'); - return testrunner(this, options).then(function (results) { - var _ref; - - results.count = results.length; - results.success = results.filter(function (r) { - return r.status === 'ok'; - }); - results.failures = results.filter(function (r) { - return r.status === 'notOk'; - }); - results.skipped = results.filter(function (r) { - return r.status === 'skip'; - }); - results.successPercent = Math.floor(results.success.length / results.length * 100); - - results.name = _this.name; - - if (results.successPercent !== 100 && typeof process !== 'undefined') process.exitCode = 1; - emitter.emit('test end', results); - emitter.emit('end', results); - - return options.request ? (_ref = {}, _defineProperty2(_ref, options.request, reporters[options.request].convert(results)), _defineProperty2(_ref, "default", results), _ref) : results; - }); - } - }]); - - return Gunner; - }(); - - var expect = require('./lib/expect'); - - module.exports = Gunner; - module.exports.Runner = require('./runner'); - module.exports.expect = expect; - module.exports.expectMany = expect.expectMany; - module.exports.Start = symbols.Start; - module.exports.End = symbols.End; - module.exports.Gunner = module.exports; - }).call(this, require('_process')); - }, { "./lib/caller": 14, "./lib/emitter": 15, "./lib/expect": 16, "./lib/testrunner": 17, "./reporters": 19, "./runner": 23, "./util": 25, "./util/symbols": 27, "_process": 9 }], 11: [function (require, module, exports) { - var _require2 = require('../util'), - isPromise = _require2.isPromise; - - var createRejectionStatement = function createRejectionStatement(statement) { - for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - return Promise.reject(statement ? statement.apply(undefined, args) : ''); - }; - - var assertPromise = function assertPromise(bool, statementTuple) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - - var _statementTuple = _toArray(statementTuple), - statement = _statementTuple[0], - args = _statementTuple.slice(1); - - statement = options.skipStatement ? function () { - return options.skipStatement; - } : statement; - - if (isPromise(bool)) return bool.catch(function () { - return createRejectionStatement.apply(undefined, [statement].concat(_toConsumableArray2(args))); - }); - - return bool ? Promise.resolve() : createRejectionStatement.apply(undefined, [statement].concat(_toConsumableArray2(args))); - }; - - module.exports = assertPromise; - }, { "../util": 25 }], 12: [function (require, module, exports) { - var isEq = require('@codefeathers/iseq'); - var U = require('../util'); - var _ = U.taggedStringify; - - module.exports.done = [function () { - return true; - }, function () { - return null; - }]; - module.exports.fail = [function () { - return false; - }, function (_, rejection) { - return rejection; - }]; - module.exports.exists = [function (val) { - return typeof val !== 'undefined'; - }, function () { - return "Value is undefined"; - }]; - module.exports.isArray = [function (val) { - return Array.isArray(val); - }, function (val) { - return _(_templateObject, val); - }]; - module.exports.isObject = [function (val) { - return (typeof val === "undefined" ? "undefined" : _typeof2(val)) === 'object' && val !== null; - }, function (val) { - return _(_templateObject2, val); - }]; - module.exports.hasLength = [function (val, l) { - return val.length === l; - }, function (val, l) { - return _(_templateObject3, val, l); - }]; - module.exports.equals = [function (val, thing) { - return val === thing; - }, function (val, thing) { - return _(_templateObject4, val, thing); - }]; - module.exports.deepEquals = [function (val, match) { - return isEq(val, match); - }, function (val, match) { - return _(_templateObject5, val, match); - }]; - module.exports.contains = [function (val, match) { - return isEq(val, match, Object.keys(match)); - }, function (val, match) { - return _(_templateObject6, val, match); - }]; - module.exports.isTrue = [function (val) { - return val === true; - }, function (val) { - return _(_templateObject7, val); - }]; - module.exports.isFalse = [function (val) { - return val === false; - }, function (val) { - return _(_templateObject8, val); - }]; - module.exports.hasProp = [function (val, prop) { - return val.hasOwnProperty(prop); - }, function (val, prop) { - return _(_templateObject9, val, prop); - }]; - module.exports.hasPair = [function (val) { - for (var _len2 = arguments.length, pair = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - pair[_key2 - 1] = arguments[_key2]; - } - - return isEq(val[pair[0]], pair[1]); - }, function (val) { - for (var _len3 = arguments.length, pair = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) { - pair[_key3 - 1] = arguments[_key3]; - } - - return _(_templateObject10, pair, val); - }]; - module.exports.isPromise = [function (val) { - return U.isPromise(val); - }, function (val) { - return _(_templateObject11, val); - }, { shouldCatch: true }]; - module.exports.resolvesTo = [function (val, thing) { - return U.isPromise(val) ? val.then(function (x) { - return x === thing ? Promise.resolve() : Promise.reject(); - }) : Promise.reject(val + " was not a Promise"); - }, function (val, thing) { - return _(_templateObject12, val, thing); - }]; - module.exports.isType = [function (val, type) { - return type === 'nil' && (val === 'null' || val === 'undefined') || (typeof val === "undefined" ? "undefined" : _typeof2(val)) === type || Array.isArray(val) && type === "array" && val === null && type !== 'object'; - }, function (val, type) { - return _(_templateObject13, val, type); - }]; - module.exports.greaterThan = [function (val, compare) { - return val > compare; - }, function (val, compare) { - return _(_templateObject14, val, compare); - }]; - module.exports.lessThan = [function (val, compare) { - return val < compare; - }, function (val, compare) { - return _(_templateObject15, val, compare); - }]; - module.exports.gte = [function (val, compare) { - return val >= compare; - }, function (val, compare) { - return _(_templateObject16, val, compare); - }]; - module.exports.lte = [function (val, compare) { - return val <= compare; - }, function (val, compare) { - return _(_templateObject17, val, compare); - }]; - - /* Convenience aliases */ - module.exports.success = module.exports.done; - module.exports.succeed = module.exports.done; - module.exports.failure = module.exports.fail; - module.exports.equal = module.exports.equals; - module.exports.deepEqual = module.exports.deepEquals; - module.exports.match = module.exports.deepEquals; - module.exports.greaterThanOrEqualTo = module.exports.gte; - module.exports.lessThanOrEqualTo = module.exports.lte; - }, { "../util": 25, "@codefeathers/iseq": 2 }], 13: [function (require, module, exports) { - // Only imported for JSDoc - /* eslint-disable-next-line */ - var Gunner = require('../gunner'); - var symbols = require('../util/symbols'); - - var wrap = function wrap(type) { - return function (unit) { - return { type: type, unit: unit }; - }; - }; - - /** - * runs the test suite - * @param {Gunner} instance - */ - var buildTestTree = function buildTestTree(instance) { - - var testQueue = []; - - Array.prototype.push.apply(testQueue, instance.__suite__.beforeHooks[symbols.Start].map(wrap('@start'))); - testQueue.push.apply(instance.__suite__.afterHooks[symbols.Start].map(wrap('@start'))); - - instance.__suite__.tests.forEach(function (test) { - return Array.prototype.push.apply(testQueue, instance.__suite__.beforeHooks['*'].map(wrap('@every'))), Array.prototype.push.apply(testQueue, (instance.__suite__.beforeHooks[test.description] || []).map(wrap('@this'))), testQueue.push(wrap('@test')(test)), Array.prototype.push.apply(testQueue, (instance.__suite__.afterHooks[test.description] || []).map(wrap('@afterTest'))), Array.prototype.push.apply(testQueue, instance.__suite__.afterHooks['*'].map(wrap('@afterEvery'))); - }); - - Array.prototype.push.apply(testQueue, instance.__suite__.beforeHooks[symbols.End].map(wrap('@beforeend'))); - Array.prototype.push.apply(testQueue, instance.__suite__.afterHooks[symbols.End].map(wrap('@end'))); - - return testQueue; - }; - - module.exports = buildTestTree; - }, { "../gunner": 10, "../util/symbols": 27 }], 14: [function (require, module, exports) { - var _require3 = require('../util'), - isPromise = _require3.isPromise; - - var caller = function caller(test, state) { - - var perf = { start: 0, end: 0 }; - - var value = void 0, - error = void 0, - errored = void 0; - try { - perf.start = new Date(); - value = test(state); - perf.end = new Date(); - } catch (e) { - perf.end = new Date(); - errored = true; - error = e; - } - - var promise = isPromise(value); - - if (promise) { - return value.then(function (res) { - return { - duration: new Date() - perf.start, - status: 'ok', - resolve: res, - promise: true - }; - }).catch(function (rej) { - return { - duration: new Date() - perf.start, - status: 'notOk', - rejection: rej, - promise: true - }; - }); - } else { - return Promise.resolve(_extends2({ - duration: perf.end - perf.start, - status: errored ? 'notOk' : 'ok' - }, !errored && { value: value }, errored && { error: error }, { - promise: false - })); - } - }; - - module.exports = caller; - }, { "../util": 25 }], 15: [function (require, module, exports) { - var EventEmitter = require('events'); - - var GunnerEmitter = function (_EventEmitter) { - _inherits(GunnerEmitter, _EventEmitter); - - function GunnerEmitter() { - _classCallCheck(this, GunnerEmitter); - - return _possibleConstructorReturn(this, (GunnerEmitter.__proto__ || Object.getPrototypeOf(GunnerEmitter)).apply(this, arguments)); - } - - return GunnerEmitter; - }(EventEmitter); - - module.exports = new GunnerEmitter(); - }, { "events": 5 }], 16: [function (require, module, exports) { - 'use strict'; - - var _require4 = require('../util'), - liftPromise = _require4.liftPromise, - lowerCaseFirstLetter = _require4.lowerCaseFirstLetter; - - var library = require('./assertionsLibrary'); - var assertPromise = require('./assertPromise'); - - var expectPromise = function expectPromise(pred, statement) { - var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; - return function (toTest) { - return function () { - for (var _len4 = arguments.length, testValues = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { - testValues[_key4] = arguments[_key4]; - } - - return liftPromise(function (resolvedValue) { - return assertPromise(pred.apply(undefined, [toTest].concat(testValues)), [statement, resolvedValue].concat(testValues)); - }, toTest).catch(function (rejectedValue) { - return options.shouldCatch ? assertPromise(pred.apply(undefined, [toTest].concat(testValues)), [statement, rejectedValue].concat(testValues), { skipStatement: rejectedValue }) : Promise.reject(rejectedValue); - }); - }; - }; - }; - - var expects = Object.keys(library).reduce(function (acc, e) { - var _library$e = _slicedToArray(library[e], 3), - pred = _library$e[0], - statement = _library$e[1], - options = _library$e[2]; - - acc[e] = expectPromise(pred, statement, options); - - return acc; - }, {}); - - var negateP = function negateP(prom) { - return prom.then(Promise.reject, Promise.resolve); - }; - - var expect = function expect(thing, args) { - return new Proxy({}, { - get: function get(obj, prop) { - var toCheck = args ? thing.apply(undefined, _toConsumableArray2(args)) : thing; - if (expects.hasOwnProperty(prop)) return function () { - return expects[prop](toCheck).apply(undefined, arguments); - };else if (prop.slice(0, 3) === 'not') return function () { - return negateP(expects[lowerCaseFirstLetter(prop.slice(3))](toCheck).apply(undefined, arguments)); - };else throw new Error('Unknown assertion method', prop); - } - }); - }; - - var expectMany = function expectMany() { - for (var _len5 = arguments.length, expects = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) { - expects[_key5] = arguments[_key5]; - } - - return Promise.all(expects); - }; - - module.exports = expect; - module.exports.expectMany = expectMany; - }, { "../util": 25, "./assertPromise": 11, "./assertionsLibrary": 12 }], 17: [function (require, module, exports) { - // Only imported for JSDoc - /* eslint-disable-next-line */ - var Gunner = require('../gunner'); - Promise.object = require('@codefeathers/promise.object'); - - var _require5 = require('../util'), - last = _require5.last, - pipe = _require5.pipe, - pick = _require5.pick, - assignToObject = _require5.assignToObject; - - var _require6 = require('../util/constants'), - eventMap = _require6.eventMap; - - var emitter = require('./emitter'); - var buildTestQueue = require('./buildTestQueue'); - - var findSkip = function findSkip(skip, unit) { - - var startFailed = skip.findIndex(function (x) { - return x.type === '@start'; - }); - var everyFailed = skip.findIndex(function (x) { - return x.type === '@every'; - }); - var beforeFailed = skip.findIndex(function (x) { - return x.description === unit.description; - }); - - return startFailed !== -1 && 'A start hook failed\n' + skip[startFailed].error || everyFailed !== -1 && 'An every hook failed\n' + skip[everyFailed].error || beforeFailed !== -1 && 'A before test hook failed\n' + skip[beforeFailed].error; - }; - - var reduceQueue = function reduceQueue(queue) { - return queue.reduce(function (acc, item) { - return Promise.resolve(acc).then(function (acc) { - - return Promise.all([last(acc.results), Promise.object(acc.state)]).then(function (_ref2) { - var _ref3 = _slicedToArray(_ref2, 2), - state = _ref3[1]; - - var toSkip = findSkip(acc.skip, item.unit); - return [toSkip, state]; - }).then(function (_ref4) { - var _ref5 = _slicedToArray(_ref4, 2), - toSkip = _ref5[0], - state = _ref5[1]; - - return toSkip ? { status: 'skip', description: toSkip } : item.unit.run(state); - }).then(function (result) { - var status = result.status, - duration = result.duration; - - - if (item.type === '@test') { - - var resultObject = _extends2({ - status: status, - duration: duration, - description: item.unit.description - }, (status === 'notOk' || status === 'skip') && { reason: result.error || result.rejection || result.description }); - - emitter.emit(eventMap[status], resultObject); - - acc.results.push(resultObject); - } else { - - var identifier = item.unit.label || queue.filter(function (i) { - return i.type === item.type; - }).filter(function (i) { - return i.unit.description === item.unit.description; - }).length; - - var stateAddition = - /* eslint-disable-next-line */ - status === 'ok' ? result.promise ? result.resolve : result.value : null; - - if (identifier && stateAddition) assignToObject(acc.state, item.type)(identifier, stateAddition); - } - - if (status === 'notOk') { - - acc.skip.push({ - type: item.type, - description: item.unit.description, - error: result.promise ? result.rejection : result.error - }); - } - - return acc; - }); - }); - }, { results: [], state: {}, skip: [] }); - }; - - /** - * runs the test suite - * @param {Gunner} instance - * @param {object} options - */ - var testrunner = function testrunner(instance) { - - var perf = { start: new Date() }; - - return Promise.object(pipe(buildTestQueue, reduceQueue, pick('results'))(instance)).then(function (results) { - perf.end = new Date(); - results.end = perf.end.toUTCString(); - results.start = perf.start.toUTCString(); - results.duration = perf.end - perf.start; - return results; - }); - }; - - module.exports = testrunner; - }, { "../gunner": 10, "../util": 25, "../util/constants": 24, "./buildTestQueue": 13, "./emitter": 15, "@codefeathers/promise.object": 3 }], 18: [function (require, module, exports) { - var statusMap = { - - 'ok': ['ok', '✅'], - 'notOk': ['notOk', '❌'], - 'skip': ['skip', '⚠️'] - - }; - - var convert = function convert(x) { - return x; - }; - - var Default = function Default(runner, options) { - - runner.on('start', function () { - return console.log('Started tests'); - }); - - runner.on('test end', function (results) { - - results.forEach(function (x) { - - var s = statusMap[x.status]; - - console.log('>', s[0], s[1], x.description); - options.trace && x.reason && console.log('\n---\n\n', x.reason, '\n\n---\n'); - }); - }); - - runner.on('end', function (results) { - - console.log(results.success.length, 'tests of', results.length, 'passed'); - console.log('Success ratio:', results.successPercent, '%'); - }); - }; - - module.exports = Default; - module.exports.convert = convert; - }, {}], 19: [function (require, module, exports) { - var def = require('./default'); - var tap = require('./tap'); - var xunit = require('./xunit'); - var min = require('./min'); - - module.exports = { - default: def, - tap: tap, - xunit: xunit, - min: min - }; - }, { "./default": 18, "./min": 20, "./tap": 21, "./xunit": 22 }], 20: [function (require, module, exports) { - var _require7 = require('../util/constants'), - eventMap = _require7.eventMap, - eventVerbs = _require7.eventVerbs; - - var _require8 = require('../util/nodeutils'), - clear = _require8.clear; - - var convert = function convert(x) { - return x; - }; - - var count = { - pass: 0, - fail: 0, - skip: 0, - collapse: function collapse() { - return this.pass + this.fail + this.skip; - } - }; - - var doneHandler = function doneHandler(event) { - - clear(); - var mapEvent = eventMap[event.status]; - count[mapEvent]++; - console.log(count[mapEvent] + " tests " + eventVerbs[mapEvent][2] + (" (total: " + count.collapse() + ")")); - }; - - var Min = function Min(runner) { - - runner.on('start', function () { - return console.log('Started tests'); - }); - - runner.on('pass', doneHandler); - runner.on('fail', doneHandler); - runner.on('skip', doneHandler); - - runner.on('end', function (results) { - - clear(); - console.log("Test suite " + results.name + " has done running."); - console.log('Success ratio:', results.successPercent, '%'); - }); - }; - - module.exports = Min; - module.exports.convert = convert; - }, { "../util/constants": 24, "../util/nodeutils": 26 }], 21: [function (require, module, exports) { - var statusMap = { - - 'ok': 'ok', - 'notOk': 'not ok', - 'skip': 'skip' - - }; - - var convert = function convert(results, options) { - return "\nTAP version 13\n" + (results.length ? '1' : 0) + ".." + results.length + "\n" + results.map(function (r, i) { - - var status = statusMap[r.status]; - var message = options.trace && r.reason && (r.reason.stack ? r.reason.stack : r.reason) || ''; - return status + " " + (i + 1) + " - " + r.description + (message && '\n ---\n message: |\n ' + message + '\n ---\n'); - }).join('\n') + "\n"; - }; - - var TAP = function TAP(runner, options) { - - runner.on('end', function (results) { - return console.log(convert(results, options)); - }); - }; - - module.exports = TAP; - module.exports.convert = convert; - }, {}], 22: [function (require, module, exports) { - var toXML = require('jsontoxml'); - - var _require9 = require('../util/nodeutils'), - clear = _require9.clear; - - var toJSON = function toJSON(resultsArray) { - - return { - testsuites: resultsArray.map(function (results) { - var name = results.name, - count = results.count, - success = results.success, - failures = results.failures, - skipped = results.skipped; - - - return { - name: 'testsuite', - attrs: { - name: name, - tests: count, - success: success.length, - failures: failures.length, - skipped: skipped.length, - timestamp: new Date().toUTCString(), - time: results.duration / 1000 || 0 - }, - children: results.reduce(function (acc, r) { - var content = r.status !== 'ok' && (r.status === 'skip' ? 'skipped' : { - name: 'failure', - text: r.reason ? r.reason && r.reason.stack : '' - }); - acc.push(_extends2({ - name: 'testcase', - attrs: { - name: r.description, - time: r.duration / 1000 || 0 - } - }, (typeof content === "undefined" ? "undefined" : _typeof2(content)) === 'object' && { text: content && content.stack }, (typeof content === "undefined" ? "undefined" : _typeof2(content)) === 'object' && { children: [content] })); - return acc; - }, []) - }; - }) - }; - }; - - var convert = function convert(results) { - return toXML(toJSON(results), { xmlHeader: { standalone: true } }); - }; - - var xunit = function xunit(runner) { - return runner.on("end", function (results) { - return clear(), console.log(convert([results])); - }); - }; - - module.exports = xunit; - module.exports.convert = convert; - }, { "../util/nodeutils": 26, "jsontoxml": 7 }], 23: [function (require, module, exports) { - var reporters = require('../reporters'); - - var isBrowser = new Function("try { return this === window } catch (e) { return false }"); - - var runner = function runner(instances) { - return function () { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - - - if (isBrowser()) throw new Error('Runner is not adapted for browsers yet.' + ' Use regular Gunner'); - - instances = Array.isArray(instances) ? instances : [instances]; - - if (!instances.length) throw new Error("No instances were passed to Gunner Runner"); - - var type = instances[0].__proto__.constructor.name; - - if (type !== "Gunner" && type !== "Strategy") throw new Error("Runner " + type + " is not one of Gunner or Strategy"); - - var RunInstances = instances.filter(function (i) { - return i.__proto__.constructor.name === type; - }); - - if (RunInstances.length !== instances.length) throw new Error("Not all instances were of type " + type); - - var perf = { start: new Date() }; - - return Promise.all(RunInstances.map(function (instance) { - return instance.run({ reporter: 'min' }); - })).then(function (results) { - perf.end = new Date(); - results.start = perf.start.toUTCString(); - results.end = perf.end.toUTCString(); - results.duration = perf.end - perf.start; - - return options.request ? _defineProperty2({ - default: results - }, options.request, reporters[options.request].convert(results)) : results; - }); - }; - }; - - module.exports = runner; - }, { "../reporters": 19 }], 24: [function (require, module, exports) { - var _require10 = require('os'), - EOL = _require10.EOL; - - module.exports = { - EOL: EOL, - eventMap: { - 'ok': 'pass', - 'notOk': 'fail', - 'skip': 'skip' - }, - eventVerbs: { - pass: ['pass', 'passing', 'passed'], - fail: ['fail', 'failing', 'failed'], - skip: ['skip', 'skipping', 'skipped'] - } - }; - }, { "os": 8 }], 25: [function (require, module, exports) { - var _stringify = require('json-stringify-safe'); - - var isObject = function isObject(x) { - return x && (typeof x === "undefined" ? "undefined" : _typeof2(x)) === 'object'; - }; - - var stringify = function stringify(obj) { - return isObject(obj) ? obj.stack || _stringify(obj) : obj; - }; - - var deepFlatten = function deepFlatten(arr) { - var _ref7; - - return (_ref7 = []).concat.apply(_ref7, _toConsumableArray2(arr.map(function (v) { - return Array.isArray(v) ? deepFlatten(v) : v; - }))); - }; - - /* Returns true if a promise is passed */ - var isPromise = function isPromise(prom) { - return prom && typeof prom.then === 'function'; - }; - - /* Lift a value or promise into a function */ - var liftPromise = function liftPromise(fn, thing) { - return isPromise(thing) ? thing.then(fn) : fn(thing); - }; - - module.exports = { - - /* Returns true if an object is passed */ - isObject: isObject, - - /* Returns true if a promise is passed */ - isPromise: isPromise, - - /* Lift a value or promise into a function */ - liftPromise: liftPromise, - - /* Returns the element found at the given path or undefined */ - path: function path(obj) { - return function (path) { - return path.reduce(function (result, segment) { - return result && result[segment]; - }, obj); - }; - }, - - /* Picks a key from an object */ - pick: function pick(key) { - return function (obj) { - return obj[key]; - }; - }, - - /* Pipe a value or promise through any number of unary functions */ - pipe: function pipe() { - for (var _len6 = arguments.length, fns = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) { - fns[_key6] = arguments[_key6]; - } - - return function (arg) { - return fns.reduce(function (acc, fn) { - return liftPromise(fn, acc); - }, arg); - }; - }, - - /* Reduces an array */ - reduce: function reduce(fn, def) { - return function (arr) { - return arr.reduce(fn, def); - }; - }, - - /* Flattens an array of arrays to an array */ - flatten: function flatten(arrData) { - return [].concat.apply([], arrData); - }, - - /* Deep flattens arrays */ - deepFlatten: deepFlatten, - - /* Maps a function over an array */ - map: function map(fn) { - return function (x) { - return x.map(fn); - }; - }, - - /* Filter an array using provided function */ - filter: function filter(fn) { - return function (x) { - return x.filter(fn); - }; - }, - - /* Returns identity */ - identity: function identity(x) { - return x; - }, - - /* Wraps a value in an object with given key */ - wrapWith: function wrapWith(x) { - return function (y) { - return _defineProperty2({}, x, y); - }; - }, - - /* Unwraps a value from an object with given key */ - unwrapFrom: function unwrapFrom(x) { - return function (y) { - return y[x]; - }; - }, - - /* Resolves an array of Promises */ - promiseAll: function promiseAll(x) { - return Promise.all(x); - }, - - /* Pass partial arguments and return a function that accepts the rest */ - partial: function partial(fn) { - for (var _len7 = arguments.length, args = Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) { - args[_key7 - 1] = arguments[_key7]; - } - - return function () { - for (var _len8 = arguments.length, rest = Array(_len8), _key8 = 0; _key8 < _len8; _key8++) { - rest[_key8] = arguments[_key8]; - } - - return fn.apply(undefined, args.concat(rest)); - }; - }, - - /* Item is in collection */ - isIn: function isIn(collection, item) { - return collection.indexOf(item) !== -1; - }, - - /* Collection contains given path */ - containsPath: function containsPath(collection, path) { - return collection.some(function (x) { - return path.match(new RegExp("/" + x + "/?$")); - }); - }, - - /* Stringifies object or coerces to string */ - stringify: stringify, - - /* Tagged Stringify */ - taggedStringify: function taggedStringify(strings) { - for (var _len9 = arguments.length, expr = Array(_len9 > 1 ? _len9 - 1 : 0), _key9 = 1; _key9 < _len9; _key9++) { - expr[_key9 - 1] = arguments[_key9]; - } - - return strings.reduce(function (acc, curr, i) { - return acc + curr + (stringify(expr[i]) || ''); - }, ''); - }, - - /* Short circuits with given value on pred. Else calls function */ - short: function short(pred, shorter) { - return function (fn) { - return function (value) { - return pred(value) ? shorter(value) : fn(value); - }; - }; - }, - - /* Check if object has given property */ - hasProp: function hasProp(obj) { - return function (prop) { - return prop in obj; - }; - }, - - /* Fetches last element from list */ - last: function last(arr) { - return arr[arr.length - 1]; - }, - - /* Uppercases first letter of word */ - upperCaseFirstLetter: function upperCaseFirstLetter(word) { - return word[0].toUpperCase() + word.slice(1); - }, - - /* Lowercases first letter of word */ - lowerCaseFirstLetter: function lowerCaseFirstLetter(word) { - return word[0].toLowerCase() + word.slice(1); - }, - - /* Creates an array or pushes to an existing one */ - arrayOrPush: function arrayOrPush(obj, key, item) { - return Array.isArray(obj[key]) ? obj[key].push(item) : obj[key] = [item]; - }, - - /* Assigns to key or creates a new object */ - assignToObject: function assignToObject(obj, path) { - return function (key, value) { - return isObject(obj[path]) ? obj[path][key] = value : obj[path] = _defineProperty2({}, key, value); - }; - } - - }; - }, { "json-stringify-safe": 6 }], 26: [function (require, module, exports) { - (function (global) { - module.exports = { - - clear: function clear() { - - if (typeof global === 'undefined' || typeof global.process === 'undefined' || typeof global.process.stdout === 'undefined') return; - - var process = global.process; - - // clear screen - process.stdout.write("\x1B[2J"); - // set cursor position to top - process.stdout.write("\x1B[1;1H"); - } - - }; - }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); - }, {}], 27: [function (require, module, exports) { - module.exports = { - - Start: Symbol('Start'), - End: Symbol('End'), - - expect: Symbol('expect'), - - pass: 'pass', - fail: 'fail' - - }; - }, {}] }, {}, [1])(1); -}); diff --git a/es5/lib/assertPromise.js b/es5/lib/assertPromise.js new file mode 100644 index 0000000..8a2c976 --- /dev/null +++ b/es5/lib/assertPromise.js @@ -0,0 +1,44 @@ +"use strict"; + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + +function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + +function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +var _require = require('../util'), + isPromise = _require.isPromise; + +var createRejectionStatement = function createRejectionStatement(statement) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + return Promise.reject(statement ? statement.apply(void 0, args) : ''); +}; + +var assertPromise = function assertPromise(bool, statementTuple) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + var _statementTuple = _toArray(statementTuple), + statement = _statementTuple[0], + args = _statementTuple.slice(1); + + statement = options.skipStatement ? function () { + return options.skipStatement; + } : statement; + if (isPromise(bool)) return bool.catch(function () { + return createRejectionStatement.apply(void 0, [statement].concat(_toConsumableArray(args))); + }); + return bool ? Promise.resolve() : createRejectionStatement.apply(void 0, [statement].concat(_toConsumableArray(args))); +}; + +module.exports = assertPromise; \ No newline at end of file diff --git a/es5/lib/assertionsLibrary.js b/es5/lib/assertionsLibrary.js new file mode 100644 index 0000000..bdaf555 --- /dev/null +++ b/es5/lib/assertionsLibrary.js @@ -0,0 +1,303 @@ +"use strict"; + +function _templateObject17() { + var data = _taggedTemplateLiteral(["'", "' is greater than ", ""]); + + _templateObject17 = function _templateObject17() { + return data; + }; + + return data; +} + +function _templateObject16() { + var data = _taggedTemplateLiteral(["'", "' is less than ", ""]); + + _templateObject16 = function _templateObject16() { + return data; + }; + + return data; +} + +function _templateObject15() { + var data = _taggedTemplateLiteral(["'", "' is not less than ", ""]); + + _templateObject15 = function _templateObject15() { + return data; + }; + + return data; +} + +function _templateObject14() { + var data = _taggedTemplateLiteral(["'", "' is not greater than ", ""]); + + _templateObject14 = function _templateObject14() { + return data; + }; + + return data; +} + +function _templateObject13() { + var data = _taggedTemplateLiteral(["'", "' is not of type '", "'"]); + + _templateObject13 = function _templateObject13() { + return data; + }; + + return data; +} + +function _templateObject12() { + var data = _taggedTemplateLiteral(["'", "' does not resolve to '", "'"]); + + _templateObject12 = function _templateObject12() { + return data; + }; + + return data; +} + +function _templateObject11() { + var data = _taggedTemplateLiteral(["", " is not a promise"]); + + _templateObject11 = function _templateObject11() { + return data; + }; + + return data; +} + +function _templateObject10() { + var data = _taggedTemplateLiteral(["", " does not exist in ", ""]); + + _templateObject10 = function _templateObject10() { + return data; + }; + + return data; +} + +function _templateObject9() { + var data = _taggedTemplateLiteral(["", " does not have property '", "'"]); + + _templateObject9 = function _templateObject9() { + return data; + }; + + return data; +} + +function _templateObject8() { + var data = _taggedTemplateLiteral(["", " is not false"]); + + _templateObject8 = function _templateObject8() { + return data; + }; + + return data; +} + +function _templateObject7() { + var data = _taggedTemplateLiteral(["", " is not true"]); + + _templateObject7 = function _templateObject7() { + return data; + }; + + return data; +} + +function _templateObject6() { + var data = _taggedTemplateLiteral(["", " does not contain ", ""]); + + _templateObject6 = function _templateObject6() { + return data; + }; + + return data; +} + +function _templateObject5() { + var data = _taggedTemplateLiteral(["", " is not deeply equal to ", ""]); + + _templateObject5 = function _templateObject5() { + return data; + }; + + return data; +} + +function _templateObject4() { + var data = _taggedTemplateLiteral(["", " is not equal to ", ""]); + + _templateObject4 = function _templateObject4() { + return data; + }; + + return data; +} + +function _templateObject3() { + var data = _taggedTemplateLiteral(["", " doesn't have length ", ""]); + + _templateObject3 = function _templateObject3() { + return data; + }; + + return data; +} + +function _templateObject2() { + var data = _taggedTemplateLiteral(["", " is not an object"]); + + _templateObject2 = function _templateObject2() { + return data; + }; + + return data; +} + +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _templateObject() { + var data = _taggedTemplateLiteral(["", " is not an array"]); + + _templateObject = function _templateObject() { + return data; + }; + + return data; +} + +function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } + +var isEq = require('@codefeathers/iseq'); + +var U = require('../util'); + +var _ = U.taggedStringify; +module.exports.done = [function () { + return true; +}, function () { + return null; +}]; +module.exports.fail = [function () { + return false; +}, function (_, rejection) { + return rejection; +}]; +module.exports.exists = [function (val) { + return typeof val !== 'undefined'; +}, function () { + return "Value is undefined"; +}]; +module.exports.isArray = [function (val) { + return Array.isArray(val); +}, function (val) { + return _(_templateObject(), val); +}]; +module.exports.isObject = [function (val) { + return _typeof(val) === 'object' && val !== null; +}, function (val) { + return _(_templateObject2(), val); +}]; +module.exports.hasLength = [function (val, l) { + return val.length === l; +}, function (val, l) { + return _(_templateObject3(), val, l); +}]; +module.exports.equals = [function (val, thing) { + return val === thing; +}, function (val, thing) { + return _(_templateObject4(), val, thing); +}]; +module.exports.deepEquals = [function (val, match) { + return isEq(val, match); +}, function (val, match) { + return _(_templateObject5(), val, match); +}]; +module.exports.contains = [function (val, match) { + return isEq(val, match, Object.keys(match)); +}, function (val, match) { + return _(_templateObject6(), val, match); +}]; +module.exports.isTrue = [function (val) { + return val === true; +}, function (val) { + return _(_templateObject7(), val); +}]; +module.exports.isFalse = [function (val) { + return val === false; +}, function (val) { + return _(_templateObject8(), val); +}]; +module.exports.hasProp = [function (val, prop) { + return val.hasOwnProperty(prop); +}, function (val, prop) { + return _(_templateObject9(), val, prop); +}]; +module.exports.hasPair = [function (val) { + for (var _len = arguments.length, pair = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + pair[_key - 1] = arguments[_key]; + } + + return isEq(val[pair[0]], pair[1]); +}, function (val) { + for (var _len2 = arguments.length, pair = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + pair[_key2 - 1] = arguments[_key2]; + } + + return _(_templateObject10(), pair, val); +}]; +module.exports.isPromise = [function (val) { + return U.isPromise(val); +}, function (val) { + return _(_templateObject11(), val); +}, { + shouldCatch: true +}]; +module.exports.resolvesTo = [function (val, thing) { + return U.isPromise(val) ? val.then(function (x) { + return x === thing ? Promise.resolve() : Promise.reject(); + }) : Promise.reject("".concat(val, " was not a Promise")); +}, function (val, thing) { + return _(_templateObject12(), val, thing); +}]; +module.exports.isType = [function (val, type) { + return type === 'nil' && (val === 'null' || val === 'undefined') || _typeof(val) === type || Array.isArray(val) && type === "array" && val === null && type !== 'object'; +}, function (val, type) { + return _(_templateObject13(), val, type); +}]; +module.exports.greaterThan = [function (val, compare) { + return val > compare; +}, function (val, compare) { + return _(_templateObject14(), val, compare); +}]; +module.exports.lessThan = [function (val, compare) { + return val < compare; +}, function (val, compare) { + return _(_templateObject15(), val, compare); +}]; +module.exports.gte = [function (val, compare) { + return val >= compare; +}, function (val, compare) { + return _(_templateObject16(), val, compare); +}]; +module.exports.lte = [function (val, compare) { + return val <= compare; +}, function (val, compare) { + return _(_templateObject17(), val, compare); +}]; +/* Convenience aliases */ + +module.exports.success = module.exports.done; +module.exports.succeed = module.exports.done; +module.exports.failure = module.exports.fail; +module.exports.equal = module.exports.equals; +module.exports.deepEqual = module.exports.deepEquals; +module.exports.match = module.exports.deepEquals; +module.exports.greaterThanOrEqualTo = module.exports.gte; +module.exports.lessThanOrEqualTo = module.exports.lte; \ No newline at end of file diff --git a/es5/lib/buildTestQueue.js b/es5/lib/buildTestQueue.js new file mode 100644 index 0000000..1cc78b9 --- /dev/null +++ b/es5/lib/buildTestQueue.js @@ -0,0 +1,38 @@ +"use strict"; + +// Only imported for JSDoc + +/* eslint-disable-next-line */ +var Gunner = require('../Gunner'); + +var symbols = require('../util/symbols'); + +var wrap = function wrap(type) { + return function (unit) { + return { + type: type, + unit: unit + }; + }; +}; +/** + * runs the test suite + * @param {Gunner} instance + */ + + +var buildTestTree = function buildTestTree(instance) { + var testQueue = []; + Array.prototype.push.apply(testQueue, instance.__suite__.beforeHooks[symbols.Start].map(wrap('@start'))); + testQueue.push.apply(instance.__suite__.afterHooks[symbols.Start].map(wrap('@start'))); + + instance.__suite__.tests.forEach(function (test) { + return Array.prototype.push.apply(testQueue, instance.__suite__.beforeHooks['*'].map(wrap('@every'))), Array.prototype.push.apply(testQueue, (instance.__suite__.beforeHooks[test.description] || []).map(wrap('@this'))), testQueue.push(wrap('@test')(test)), Array.prototype.push.apply(testQueue, (instance.__suite__.afterHooks[test.description] || []).map(wrap('@afterTest'))), Array.prototype.push.apply(testQueue, instance.__suite__.afterHooks['*'].map(wrap('@afterEvery'))); + }); + + Array.prototype.push.apply(testQueue, instance.__suite__.beforeHooks[symbols.End].map(wrap('@beforeend'))); + Array.prototype.push.apply(testQueue, instance.__suite__.afterHooks[symbols.End].map(wrap('@end'))); + return testQueue; +}; + +module.exports = buildTestTree; \ No newline at end of file diff --git a/es5/lib/caller.js b/es5/lib/caller.js new file mode 100644 index 0000000..49fb3ca --- /dev/null +++ b/es5/lib/caller.js @@ -0,0 +1,59 @@ +"use strict"; + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var _require = require('../util'), + isPromise = _require.isPromise; + +var caller = function caller(test, state) { + var perf = { + start: 0, + end: 0 + }; + var value, error, errored; + + try { + perf.start = new Date(); + value = test(state); + perf.end = new Date(); + } catch (e) { + perf.end = new Date(); + errored = true; + error = e; + } + + var promise = isPromise(value); + + if (promise) { + return value.then(function (res) { + return { + duration: new Date() - perf.start, + status: 'ok', + resolve: res, + promise: true + }; + }).catch(function (rej) { + return { + duration: new Date() - perf.start, + status: 'notOk', + rejection: rej, + promise: true + }; + }); + } else { + return Promise.resolve(_objectSpread({ + duration: perf.end - perf.start, + status: errored ? 'notOk' : 'ok' + }, !errored && { + value: value + }, errored && { + error: error + }, { + promise: false + })); + } +}; + +module.exports = caller; \ No newline at end of file diff --git a/es5/lib/emitter.js b/es5/lib/emitter.js new file mode 100644 index 0000000..c7a74cf --- /dev/null +++ b/es5/lib/emitter.js @@ -0,0 +1,33 @@ +"use strict"; + +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } + +function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } + +function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } + +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } + +var EventEmitter = require('events'); + +var GunnerEmitter = +/*#__PURE__*/ +function (_EventEmitter) { + _inherits(GunnerEmitter, _EventEmitter); + + function GunnerEmitter() { + _classCallCheck(this, GunnerEmitter); + + return _possibleConstructorReturn(this, _getPrototypeOf(GunnerEmitter).apply(this, arguments)); + } + + return GunnerEmitter; +}(EventEmitter); + +module.exports = new GunnerEmitter(); \ No newline at end of file diff --git a/es5/lib/expect.js b/es5/lib/expect.js new file mode 100644 index 0000000..b6bd9d0 --- /dev/null +++ b/es5/lib/expect.js @@ -0,0 +1,82 @@ +'use strict'; + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + +function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + +function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +var _require = require('../util'), + liftPromise = _require.liftPromise, + lowerCaseFirstLetter = _require.lowerCaseFirstLetter; + +var library = require('./assertionsLibrary'); + +var assertPromise = require('./assertPromise'); + +var expectPromise = function expectPromise(pred, statement) { + var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + return function (toTest) { + return function () { + for (var _len = arguments.length, testValues = new Array(_len), _key = 0; _key < _len; _key++) { + testValues[_key] = arguments[_key]; + } + + return liftPromise(function (resolvedValue) { + return assertPromise(pred.apply(void 0, [toTest].concat(testValues)), [statement, resolvedValue].concat(testValues)); + }, toTest).catch(function (rejectedValue) { + return options.shouldCatch ? assertPromise(pred.apply(void 0, [toTest].concat(testValues)), [statement, rejectedValue].concat(testValues), { + skipStatement: rejectedValue + }) : Promise.reject(rejectedValue); + }); + }; + }; +}; + +var expects = Object.keys(library).reduce(function (acc, e) { + var _library$e = _slicedToArray(library[e], 3), + pred = _library$e[0], + statement = _library$e[1], + options = _library$e[2]; + + acc[e] = expectPromise(pred, statement, options); + return acc; +}, {}); + +var negateP = function negateP(prom) { + return prom.then(Promise.reject, Promise.resolve); +}; + +var expect = function expect(thing, args) { + return new Proxy({}, { + get: function get(obj, prop) { + var toCheck = args ? thing.apply(void 0, _toConsumableArray(args)) : thing; + if (expects.hasOwnProperty(prop)) return function () { + return expects[prop](toCheck).apply(void 0, arguments); + };else if (prop.slice(0, 3) === 'not') return function () { + return negateP(expects[lowerCaseFirstLetter(prop.slice(3))](toCheck).apply(void 0, arguments)); + };else throw new Error('Unknown assertion method', prop); + } + }); +}; + +var expectMany = function expectMany() { + for (var _len2 = arguments.length, expects = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + expects[_key2] = arguments[_key2]; + } + + return Promise.all(expects); +}; + +module.exports = expect; +module.exports.expectMany = expectMany; \ No newline at end of file diff --git a/es5/lib/snipStack.js b/es5/lib/snipStack.js new file mode 100644 index 0000000..9b3be71 --- /dev/null +++ b/es5/lib/snipStack.js @@ -0,0 +1,20 @@ +"use strict"; + +var snipStack = function snipStack(e) { + if (e.stack) e.stack = e.stack.split('\n').reduceRight(function (acc, x) { + return ( + /* eslint-disable-next-line */ + acc.done ? acc.cur : x.match(/at Object\.test.*\/src\/gunner\.js/) ? { + cur: x, + done: true + } : { + cur: [x, acc.cur].join('\n') + } + ); + }, { + cur: '' + }).cur.trim(); + return e; +}; + +module.exports = snipStack; \ No newline at end of file diff --git a/es5/lib/testrunner.js b/es5/lib/testrunner.js new file mode 100644 index 0000000..9b4cf8a --- /dev/null +++ b/es5/lib/testrunner.js @@ -0,0 +1,130 @@ +"use strict"; + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } + +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } + +function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } + +function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } + +// Only imported for JSDoc + +/* eslint-disable-next-line */ +var Gunner = require('../Gunner'); + +Promise.object = require('@codefeathers/promise.object'); + +var _require = require('../util'), + last = _require.last, + pipe = _require.pipe, + pick = _require.pick, + assignToObject = _require.assignToObject; + +var _require2 = require('../util/constants'), + eventMap = _require2.eventMap; + +var emitter = require('./emitter'); + +var buildTestQueue = require('./buildTestQueue'); + +var findSkip = function findSkip(skip, unit) { + var startFailed = skip.findIndex(function (x) { + return x.type === '@start'; + }); + var everyFailed = skip.findIndex(function (x) { + return x.type === '@every'; + }); + var beforeFailed = skip.findIndex(function (x) { + return x.description === unit.description; + }); + return startFailed !== -1 && 'A start hook failed\n' + skip[startFailed].error || everyFailed !== -1 && 'An every hook failed\n' + skip[everyFailed].error || beforeFailed !== -1 && 'A before test hook failed\n' + skip[beforeFailed].error; +}; + +var reduceQueue = function reduceQueue(queue) { + return queue.reduce(function (acc, item) { + return Promise.resolve(acc).then(function (acc) { + return Promise.all([last(acc.results), Promise.object(acc.state)]).then(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + state = _ref2[1]; + + var toSkip = findSkip(acc.skip, item.unit); + return [toSkip, state]; + }).then(function (_ref3) { + var _ref4 = _slicedToArray(_ref3, 2), + toSkip = _ref4[0], + state = _ref4[1]; + + return toSkip ? { + status: 'skip', + description: toSkip + } : item.unit.run(state); + }).then(function (result) { + var status = result.status, + duration = result.duration; + + if (item.type === '@test') { + var resultObject = _objectSpread({ + status: status, + duration: duration, + description: item.unit.description + }, (status === 'notOk' || status === 'skip') && { + reason: result.error || result.rejection || result.description + }); + + emitter.emit(eventMap[status], resultObject); + acc.results.push(resultObject); + } else { + var identifier = item.unit.label || queue.filter(function (i) { + return i.type === item.type; + }).filter(function (i) { + return i.unit.description === item.unit.description; + }).length; + var stateAddition = + /* eslint-disable-next-line */ + status === 'ok' ? result.promise ? result.resolve : result.value : null; + if (identifier && stateAddition) assignToObject(acc.state, item.type)(identifier, stateAddition); + } + + if (status === 'notOk') { + acc.skip.push({ + type: item.type, + description: item.unit.description, + error: result.promise ? result.rejection : result.error + }); + } + + return acc; + }); + }); + }, { + results: [], + state: {}, + skip: [] + }); +}; +/** + * runs the test suite + * @param {Gunner} instance + * @param {object} options + */ + + +var testrunner = function testrunner(instance) { + var perf = { + start: new Date() + }; + return Promise.object(pipe(buildTestQueue, reduceQueue, pick('results'))(instance)).then(function (results) { + perf.end = new Date(); + results.end = perf.end.toUTCString(); + results.start = perf.start.toUTCString(); + results.duration = perf.end - perf.start; + return results; + }); +}; + +module.exports = testrunner; \ No newline at end of file diff --git a/es5/reporters/default.js b/es5/reporters/default.js new file mode 100644 index 0000000..346adfe --- /dev/null +++ b/es5/reporters/default.js @@ -0,0 +1,31 @@ +"use strict"; + +var statusMap = { + 'ok': ['ok', '✅'], + 'notOk': ['notOk', '❌'], + 'skip': ['skip', '⚠️'] +}; + +var convert = function convert(x) { + return x; +}; + +var Default = function Default(runner, options) { + runner.on('start', function () { + return console.log('Started tests'); + }); + runner.on('test end', function (results) { + results.forEach(function (x) { + var s = statusMap[x.status]; + console.log('>', s[0], s[1], x.description); + options.trace && x.reason && console.log('\n---\n\n', x.reason, '\n\n---\n'); + }); + }); + runner.on('end', function (results) { + console.log(results.success.length, 'tests of', results.length, 'passed'); + console.log('Success ratio:', results.successPercent, '%'); + }); +}; + +module.exports = Default; +module.exports.convert = convert; \ No newline at end of file diff --git a/es5/reporters/index.js b/es5/reporters/index.js new file mode 100644 index 0000000..a9d29a1 --- /dev/null +++ b/es5/reporters/index.js @@ -0,0 +1,16 @@ +"use strict"; + +var def = require('./default'); + +var tap = require('./tap'); + +var xunit = require('./xunit'); + +var min = require('./min'); + +module.exports = { + default: def, + tap: tap, + xunit: xunit, + min: min +}; \ No newline at end of file diff --git a/es5/reporters/min.js b/es5/reporters/min.js new file mode 100644 index 0000000..6da4640 --- /dev/null +++ b/es5/reporters/min.js @@ -0,0 +1,45 @@ +"use strict"; + +var _require = require('../util/constants'), + eventMap = _require.eventMap, + eventVerbs = _require.eventVerbs; + +var _require2 = require('../util/nodeutils'), + clear = _require2.clear; + +var convert = function convert(x) { + return x; +}; + +var count = { + pass: 0, + fail: 0, + skip: 0, + collapse: function collapse() { + return this.pass + this.fail + this.skip; + } +}; + +var doneHandler = function doneHandler(event) { + clear(); + var mapEvent = eventMap[event.status]; + count[mapEvent]++; + console.log("".concat(count[mapEvent], " tests ").concat(eventVerbs[mapEvent][2]) + " (total: ".concat(count.collapse(), ")")); +}; + +var Min = function Min(runner) { + runner.on('start', function () { + return console.log('Started tests'); + }); + runner.on('pass', doneHandler); + runner.on('fail', doneHandler); + runner.on('skip', doneHandler); + runner.on('end', function (results) { + clear(); + console.log("Test suite ".concat(results.name, " has done running.")); + console.log('Success ratio:', results.successPercent, '%'); + }); +}; + +module.exports = Min; +module.exports.convert = convert; \ No newline at end of file diff --git a/es5/reporters/tap.js b/es5/reporters/tap.js new file mode 100644 index 0000000..50edac5 --- /dev/null +++ b/es5/reporters/tap.js @@ -0,0 +1,24 @@ +"use strict"; + +var statusMap = { + 'ok': 'ok', + 'notOk': 'not ok', + 'skip': 'skip' +}; + +var convert = function convert(results, options) { + return "\nTAP version 13\n".concat(results.length ? '1' : 0, "..").concat(results.length, "\n").concat(results.map(function (r, i) { + var status = statusMap[r.status]; + var message = options.trace && r.reason && (r.reason.stack ? r.reason.stack : r.reason) || ''; + return "".concat(status, " ").concat(i + 1, " - ").concat(r.description) + (message && '\n ---\n message: |\n ' + message + '\n ---\n'); + }).join('\n'), "\n"); +}; + +var TAP = function TAP(runner, options) { + runner.on('end', function (results) { + return console.log(convert(results, options)); + }); +}; + +module.exports = TAP; +module.exports.convert = convert; \ No newline at end of file diff --git a/es5/reporters/xunit.js b/es5/reporters/xunit.js new file mode 100644 index 0000000..4bbb455 --- /dev/null +++ b/es5/reporters/xunit.js @@ -0,0 +1,71 @@ +"use strict"; + +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +var toXML = require('jsontoxml'); + +var _require = require('../util/nodeutils'), + clear = _require.clear; + +var toJSON = function toJSON(resultsArray) { + return { + testsuites: resultsArray.map(function (results) { + var name = results.name, + count = results.count, + success = results.success, + failures = results.failures, + skipped = results.skipped; + return { + name: 'testsuite', + attrs: { + name: name, + tests: count, + success: success.length, + failures: failures.length, + skipped: skipped.length, + timestamp: new Date().toUTCString(), + time: results.duration / 1000 || 0 + }, + children: results.reduce(function (acc, r) { + var content = r.status !== 'ok' && (r.status === 'skip' ? 'skipped' : { + name: 'failure', + text: r.reason ? r.reason && r.reason.stack : '' + }); + acc.push(_objectSpread({ + name: 'testcase', + attrs: { + name: r.description, + time: r.duration / 1000 || 0 + } + }, _typeof(content) === 'object' && { + text: content && content.stack + }, _typeof(content) === 'object' && { + children: [content] + })); + return acc; + }, []) + }; + }) + }; +}; + +var convert = function convert(results) { + return toXML(toJSON(results), { + xmlHeader: { + standalone: true + } + }); +}; + +var xunit = function xunit(runner) { + return runner.on("end", function (results) { + return clear(), console.log(convert([results])); + }); +}; + +module.exports = xunit; +module.exports.convert = convert; \ No newline at end of file diff --git a/es5/strategy/index.js b/es5/strategy/index.js new file mode 100644 index 0000000..bf955b0 --- /dev/null +++ b/es5/strategy/index.js @@ -0,0 +1,97 @@ +"use strict"; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } } + +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } + +var requireDeep = require('../util/requireDeep'); + +var Strategy = +/*#__PURE__*/ +function () { + /** + * @param {string} name name for the Strategy + * @param {Array} resources array of resource creators + * @param {Function} compiler spec compiler for this Strategy + * @param {Object} runTimeOptions options to use when running Gunner + */ + function Strategy(name, resources, compiler, runTimeOptions) { + _classCallCheck(this, Strategy); + + this.name = name; + this.__resourceCreators = resources; + this.__runTimeOptions = runTimeOptions; + this.compiler = compiler; + this.__await__ = []; + this.__gunnerInstances = []; + this.resources = {}; + this.specs = []; + } + /** + * Creates a single resource + * @param {string} name + * @param {Object} resource + */ + + + _createClass(Strategy, [{ + key: "createResource", + value: function createResource(name, resource) { + return this.__resourceCreators[name](resource); + } + /** + * Fetches all specs that match provided options + * @param {Object} options + * @param {string} options.plans + * @param {Array=} options.exclude + * @param {string|Array=} options.pattern + */ + + }, { + key: "fetchSpecs", + value: function fetchSpecs(options) { + var _this = this; + + this.__await__.push(requireDeep(options).then(function (required) { + return required.map(function (each) { + return _this.__gunnerInstances = _this.compiler(_this)(each); + }); + })); + + return this; + } + /** + * Adds a single spec to the strategy instance + * @param {Object} spec spec to add + */ + + }, { + key: "addSpec", + value: function addSpec(spec) { + this.__gunnerInstances.push(this.compiler(this)(spec)); + + return this; + } + /** + * Starts running the gunner instances with the given options + * @param {Object=} options + */ + + }, { + key: "run", + value: function run(options) { + var _this2 = this; + + var runOptions = options || this.__runTimeOptions; + return Promise.all(this.__await__).then(function () { + return _this2.__gunnerInstances.run(runOptions); + }); + } + }]); + + return Strategy; +}(); + +module.exports = Strategy; \ No newline at end of file diff --git a/es5/util/constants.js b/es5/util/constants.js new file mode 100644 index 0000000..680d636 --- /dev/null +++ b/es5/util/constants.js @@ -0,0 +1,18 @@ +"use strict"; + +var _require = require('os'), + EOL = _require.EOL; + +module.exports = { + EOL: EOL, + eventMap: { + 'ok': 'pass', + 'notOk': 'fail', + 'skip': 'skip' + }, + eventVerbs: { + pass: ['pass', 'passing', 'passed'], + fail: ['fail', 'failing', 'failed'], + skip: ['skip', 'skipping', 'skipped'] + } +}; \ No newline at end of file diff --git a/es5/util/index.js b/es5/util/index.js new file mode 100644 index 0000000..d3f057d --- /dev/null +++ b/es5/util/index.js @@ -0,0 +1,220 @@ +"use strict"; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } + +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } + +function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } + +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } + +function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +var _stringify = require('json-stringify-safe'); + +var isObject = function isObject(x) { + return x && _typeof(x) === 'object'; +}; + +var stringify = function stringify(obj) { + return isObject(obj) ? obj.stack || _stringify(obj) : obj; +}; + +var deepFlatten = function deepFlatten(arr) { + var _ref; + + return (_ref = []).concat.apply(_ref, _toConsumableArray(arr.map(function (v) { + return Array.isArray(v) ? deepFlatten(v) : v; + }))); +}; +/* Returns true if a promise is passed */ + + +var isPromise = function isPromise(prom) { + return prom && typeof prom.then === 'function'; +}; +/* Lift a value or promise into a function */ + + +var liftPromise = function liftPromise(fn, thing) { + return isPromise(thing) ? thing.then(fn) : fn(thing); +}; + +module.exports = { + /* Returns true if an object is passed */ + isObject: isObject, + + /* Returns true if a promise is passed */ + isPromise: isPromise, + + /* Lift a value or promise into a function */ + liftPromise: liftPromise, + + /* Returns the element found at the given path or undefined */ + path: function path(obj) { + return function (path) { + return path.reduce(function (result, segment) { + return result && result[segment]; + }, obj); + }; + }, + + /* Picks a key from an object */ + pick: function pick(key) { + return function (obj) { + return obj[key]; + }; + }, + + /* Pipe a value or promise through any number of unary functions */ + pipe: function pipe() { + for (var _len = arguments.length, fns = new Array(_len), _key = 0; _key < _len; _key++) { + fns[_key] = arguments[_key]; + } + + return function (arg) { + return fns.reduce(function (acc, fn) { + return liftPromise(fn, acc); + }, arg); + }; + }, + + /* Reduces an array */ + reduce: function reduce(fn, def) { + return function (arr) { + return arr.reduce(fn, def); + }; + }, + + /* Flattens an array of arrays to an array */ + flatten: function flatten(arrData) { + return [].concat.apply([], arrData); + }, + + /* Deep flattens arrays */ + deepFlatten: deepFlatten, + + /* Maps a function over an array */ + map: function map(fn) { + return function (x) { + return x.map(fn); + }; + }, + + /* Filter an array using provided function */ + filter: function filter(fn) { + return function (x) { + return x.filter(fn); + }; + }, + + /* Returns identity */ + identity: function identity(x) { + return x; + }, + + /* Wraps a value in an object with given key */ + wrapWith: function wrapWith(x) { + return function (y) { + return _defineProperty({}, x, y); + }; + }, + + /* Unwraps a value from an object with given key */ + unwrapFrom: function unwrapFrom(x) { + return function (y) { + return y[x]; + }; + }, + + /* Resolves an array of Promises */ + promiseAll: function promiseAll(x) { + return Promise.all(x); + }, + + /* Pass partial arguments and return a function that accepts the rest */ + partial: function partial(fn) { + for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + args[_key2 - 1] = arguments[_key2]; + } + + return function () { + for (var _len3 = arguments.length, rest = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { + rest[_key3] = arguments[_key3]; + } + + return fn.apply(void 0, args.concat(rest)); + }; + }, + + /* Item is in collection */ + isIn: function isIn(collection, item) { + return collection.indexOf(item) !== -1; + }, + + /* Collection contains given path */ + containsPath: function containsPath(collection, path) { + return collection.some(function (x) { + return path.match(new RegExp("/".concat(x, "/?$"))); + }); + }, + + /* Stringifies object or coerces to string */ + stringify: stringify, + + /* Tagged Stringify */ + taggedStringify: function taggedStringify(strings) { + for (var _len4 = arguments.length, expr = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { + expr[_key4 - 1] = arguments[_key4]; + } + + return strings.reduce(function (acc, curr, i) { + return acc + curr + (stringify(expr[i]) || ''); + }, ''); + }, + + /* Short circuits with given value on pred. Else calls function */ + short: function short(pred, shorter) { + return function (fn) { + return function (value) { + return pred(value) ? shorter(value) : fn(value); + }; + }; + }, + + /* Check if object has given property */ + hasProp: function hasProp(obj) { + return function (prop) { + return prop in obj; + }; + }, + + /* Fetches last element from list */ + last: function last(arr) { + return arr[arr.length - 1]; + }, + + /* Uppercases first letter of word */ + upperCaseFirstLetter: function upperCaseFirstLetter(word) { + return word[0].toUpperCase() + word.slice(1); + }, + + /* Lowercases first letter of word */ + lowerCaseFirstLetter: function lowerCaseFirstLetter(word) { + return word[0].toLowerCase() + word.slice(1); + }, + + /* Creates an array or pushes to an existing one */ + arrayOrPush: function arrayOrPush(obj, key, item) { + return Array.isArray(obj[key]) ? obj[key].push(item) : obj[key] = [item]; + }, + + /* Assigns to key or creates a new object */ + assignToObject: function assignToObject(obj, path) { + return function (key, value) { + return isObject(obj[path]) ? obj[path][key] = value : obj[path] = _defineProperty({}, key, value); + }; + } +}; \ No newline at end of file diff --git a/es5/util/nodeutils.js b/es5/util/nodeutils.js new file mode 100644 index 0000000..94fb1e6 --- /dev/null +++ b/es5/util/nodeutils.js @@ -0,0 +1,12 @@ +"use strict"; + +module.exports = { + clear: function clear() { + if (typeof global === 'undefined' || typeof global.process === 'undefined' || typeof global.process.stdout === 'undefined') return; + var process = global.process; // clear screen + + process.stdout.write("\x1B[2J"); // set cursor position to top + + process.stdout.write("\x1B[1;1H"); + } +}; \ No newline at end of file diff --git a/es5/util/requireDeep.js b/es5/util/requireDeep.js new file mode 100644 index 0000000..b5d2677 --- /dev/null +++ b/es5/util/requireDeep.js @@ -0,0 +1,78 @@ +"use strict"; + +var fs = require("fs").promises; + +var _require = require('../util'), + map = _require.map, + pipe = _require.pipe, + filter = _require.filter, + flatten = _require.flatten, + wrapWith = _require.wrapWith, + promiseAll = _require.promiseAll, + containsPath = _require.containsPath; // const { warn } = console; +// const validate = config => { +// if(!config) throw new Error(`Create a config file to proceed.`); +// if(!config.testData) throw new Error(`"testData" property not found in config.js`); +// if(!config.plans) throw new Error(`"planDir" property not found in config.js`); +// if(!config.pattern) warn(`> "pattern" property not found in config.js.` +// + ` All json files in the target directory will be loaded.`); +// }; + + +var isFileOrDir = function isFileOrDir(path) { + return fs.stat(path).then(function (stat) { + return stat.isDirectory() ? { + path: path, + type: "dir" + } : { + path: path, + type: "file" + }; + }); +}; + +var _matchOnePattern = function _matchOnePattern(pattern, path) { + var tests = Array.isArray(pattern) ? pattern : [pattern]; + return tests.some(function (test) { + return new RegExp(test).test(path); + }); +}; + +var _getEachFile = function _getEachFile(_ref) { + var path = _ref.path, + exclude = _ref.exclude, + pattern = _ref.pattern; + return function (item) { + return isFileOrDir(path + "/" + item).then(function (y) { + if (exclude && containsPath(exclude, y.path)) return []; + /* eslint-disable-next-line */ + + return y.type === "dir" ? requireDeep({ + plans: y.path, + exclude: exclude, + pattern: pattern + }) : _matchOnePattern(pattern || '.json', y.path) // Wrapping in object to prevent accidental flattening + ? wrapWith("module")(require(y.path)) : []; + }); + }; +}; + +var requireDeep = function requireDeep(_ref2) { + var path = _ref2.plans, + exclude = _ref2.exclude, + _ref2$pattern = _ref2.pattern, + pattern = _ref2$pattern === void 0 ? '.json' : _ref2$pattern; + return isFileOrDir(path).then(function (o) { + return o.type === "dir" ? pipe(fs.readdir, map(_getEachFile({ + path: path, + exclude: exclude, + pattern: pattern + })), promiseAll, flatten, filter(Boolean), // Filter out undefined values + map(function (y) { + return y.module || y; + }) // Unwrap objects from their wrappers + )(o.path) : Promise.reject("".concat(path, " is not a directory")); + }); +}; + +module.exports = requireDeep; \ No newline at end of file diff --git a/es5/util/symbols.js b/es5/util/symbols.js new file mode 100644 index 0000000..8b3d8ea --- /dev/null +++ b/es5/util/symbols.js @@ -0,0 +1,9 @@ +"use strict"; + +module.exports = { + Start: Symbol('Start'), + End: Symbol('End'), + expect: Symbol('expect'), + pass: 'pass', + fail: 'fail' +}; \ No newline at end of file diff --git a/es6/index.js b/es6/index.js deleted file mode 100644 index e7d76fb..0000000 --- a/es6/index.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../src/gunner'); diff --git a/index.js b/index.js index 1192c07..b594450 100644 --- a/index.js +++ b/index.js @@ -1 +1 @@ -module.exports = require('./src/gunner'); \ No newline at end of file +module.exports = require('./src/Gunner'); \ No newline at end of file diff --git a/package.json b/package.json index 32085f7..6471057 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "@klenty/gunner", - "version": "0.11.5", + "version": "0.11.6", "description": "Zero magic, fast test-runner and assertion framework. No magic globals.", - "main": "es6/index.js", + "main": "index.js", "repository": { "type": "git", "url": "git+https://github.com/klenty/gunner.git" @@ -30,9 +30,10 @@ "jsontoxml": "^1.0.0" }, "devDependencies": { - "babel-cli": "^6.26.0", - "babel-plugin-transform-object-rest-spread": "^6.26.0", - "babel-preset-env": "^1.7.0", + "@babel/cli": "^7.1.0", + "@babel/core": "^7.1.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/preset-env": "^7.1.0", "browserify": "^16.2.2", "eslint": "^5.2.0" } diff --git a/sample/sample2.test.js b/sample/sample2.test.js index ee5d1af..ae82a24 100644 --- a/sample/sample2.test.js +++ b/sample/sample2.test.js @@ -3,7 +3,7 @@ * used during development */ -const { Gunner, expect, expectMany } = require('..'); +const { Gunner, expect, expectMany } = require('../es5/Gunner'); const gunner = new Gunner({ name: 'state tests' }); gunner.before(Gunner.Start, () => 'world', 'hello'); diff --git a/sample/sample7.test.js b/sample/sample7.test.js index 0066e11..23e1505 100644 --- a/sample/sample7.test.js +++ b/sample/sample7.test.js @@ -3,7 +3,7 @@ * used during development */ -const Gunner = require('../es6'); +const Gunner = require('../es5/Gunner'); const expect = Gunner.expect; const expectMany = Gunner.expectMany; const gunner = new Gunner('sample tests'); diff --git a/scripts/build.sh b/scripts/build.sh index a50fdc1..b01adf5 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,20 +1,32 @@ #!/bin/bash rm -rf ./es5 +rm -rf ./browser mkdir ./es5 +mkdir ./browser + +echo "----> :: Building Gunner for browser ::" -echo "----> :: Gunner ::" echo "----> Browserifying..." -./node_modules/.bin/browserify ./index.js -s Gunner > ./es5/index.js +./node_modules/.bin/browserify ./index.js -s Gunner > ./browser/index.js + echo "----> Babelifying..." -./node_modules/.bin/babel --presets env --plugins transform-object-rest-spread ./es5/index.js -o ./es5/index.js -echo "> Done" +./node_modules/.bin/babel \ + --presets @babel/preset-env \ + --plugins @babel/plugin-syntax-object-rest-spread \ + ./browser/index.js \ + -o ./browser/index.js + +echo "> Done ./browser/index.js" echo "" -echo "----> :: Runner ::" -echo "----> Browserifying..." -./node_modules/.bin/browserify ./Runner.js -s Runner > ./es5/Runner.js +echo "----> :: Babelifying Gunner source ::" + echo "----> Babelifying..." -./node_modules/.bin/babel --presets env --plugins transform-object-rest-spread ./es5/Runner.js -o ./es5/Runner.js +./node_modules/.bin/babel \ + --presets @babel/preset-env \ + --plugins @babel/plugin-syntax-object-rest-spread \ + ./src \ + --out-dir ./es5 -echo "> Done" +echo "> Done ./es5" diff --git a/shrinkwrap.yaml b/shrinkwrap.yaml index d8d4d2e..1d2d2f2 100644 --- a/shrinkwrap.yaml +++ b/shrinkwrap.yaml @@ -4,739 +4,847 @@ dependencies: json-stringify-safe: 5.0.1 jsontoxml: 1.0.0 devDependencies: - babel-cli: 6.26.0 - babel-plugin-transform-object-rest-spread: 6.26.0 - babel-preset-env: 1.7.0 + '@babel/cli': 7.1.0 + '@babel/core': 7.1.0 + '@babel/plugin-syntax-object-rest-spread': 7.0.0 + '@babel/preset-env': 7.1.0 browserify: 16.2.2 eslint: 5.2.0 packages: - /@codefeathers/iseq/1.2.1: - dev: false - resolution: - integrity: sha1-zUHiKGdKZQlWBfKVacbdVtlodsw= - /@codefeathers/promise.object/0.9.5: - dev: false - resolution: - integrity: sha1-YBDLXpC4vhz12WrDHJKr/F8K/zA= - /JSONStream/1.3.4: + /@babel/cli/7.1.0: dependencies: - jsonparse: 1.3.1 - through: 2.3.8 + commander: 2.18.0 + convert-source-map: 1.6.0 + fs-readdir-recursive: 1.1.0 + glob: 7.1.3 + lodash: 4.17.11 + mkdirp: 0.5.1 + output-file-sync: 2.0.1 + slash: 2.0.0 + source-map: 0.5.7 dev: true hasBin: true + optionalDependencies: + chokidar: 2.0.4 + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha512-Y7vfi3I5oMOYIr+WxV8NZxDSwcbNgzdKYsTNInmycOq9bUYwGg9ryu57Wg5NLmCjqdFPNUmpMBo3kSJN9tCbXg== - /acorn-dynamic-import/3.0.0: + integrity: sha512-+OdtGZcJNH92CnDqwaPxh7P7gddFyhoiHV3GBzgKpYbxIJlQ4WDEiC8m+AMcueYzlI+bXqrYlIU/Pp17NaC0hg== + /@babel/code-frame/7.0.0: dependencies: - acorn: 5.7.3 + '@babel/highlight': 7.0.0 dev: true resolution: - integrity: sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg== - /acorn-jsx/4.1.1: + integrity: sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== + /@babel/core/7.1.0: dependencies: - acorn: 5.7.1 + '@babel/code-frame': 7.0.0 + '@babel/generator': 7.0.0 + '@babel/helpers': 7.1.0 + '@babel/parser': 7.1.0 + '@babel/template': 7.1.0 + '@babel/traverse': 7.1.0 + '@babel/types': 7.0.0 + convert-source-map: 1.6.0 + debug: 3.2.5 + json5: 0.5.1 + lodash: 4.17.11 + resolve: 1.8.1 + semver: 5.5.1 + source-map: 0.5.7 dev: true + engines: + node: '>=6.9.0' resolution: - integrity: sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw== - /acorn-node/1.5.2: + integrity: sha512-9EWmD0cQAbcXSc+31RIoYgEHx3KQ2CCSMDBhnXrShWvo45TMw+3/55KVxlhkG53kw9tl87DqINgHDgFVhZJV/Q== + /@babel/generator/7.0.0: dependencies: - acorn: 5.7.3 - acorn-dynamic-import: 3.0.0 - xtend: 4.0.1 + '@babel/types': 7.0.0 + jsesc: 2.5.1 + lodash: 4.17.11 + source-map: 0.5.7 + trim-right: 1.0.1 dev: true resolution: - integrity: sha512-krFKvw/d1F17AN3XZbybIUzEY4YEPNiGo05AfP3dBlfVKrMHETKpgjpuZkSF8qDNt9UkQcqj7am8yJLseklCMg== - /acorn/5.7.1: + integrity: sha512-/BM2vupkpbZXq22l1ALO7MqXJZH2k8bKVv8Y+pABFnzWdztDB/ZLveP5At21vLz5c2YtSE6p7j2FZEsqafMz5Q== + /@babel/helper-annotate-as-pure/7.0.0: + dependencies: + '@babel/types': 7.0.0 dev: true - engines: - node: '>=0.4.0' - hasBin: true resolution: - integrity: sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ== - /acorn/5.7.3: + integrity: sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q== + /@babel/helper-builder-binary-assignment-operator-visitor/7.1.0: + dependencies: + '@babel/helper-explode-assignable-expression': 7.1.0 + '@babel/types': 7.0.0 dev: true - engines: - node: '>=0.4.0' - hasBin: true resolution: - integrity: sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== - /ajv-keywords/3.2.0/ajv@6.5.2: + integrity: sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w== + /@babel/helper-call-delegate/7.1.0: dependencies: - ajv: 6.5.2 + '@babel/helper-hoist-variables': 7.0.0 + '@babel/traverse': 7.1.0 + '@babel/types': 7.0.0 dev: true - id: registry.npmjs.org/ajv-keywords/3.2.0 - peerDependencies: - ajv: ^6.0.0 resolution: - integrity: sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= - /ajv/6.5.2: + integrity: sha512-YEtYZrw3GUK6emQHKthltKNZwszBcHK58Ygcis+gVUrF4/FmTVr5CCqQNSfmvg2y+YDEANyYoaLz/SHsnusCwQ== + /@babel/helper-define-map/7.1.0: dependencies: - fast-deep-equal: 2.0.1 - fast-json-stable-stringify: 2.0.0 - json-schema-traverse: 0.4.1 - uri-js: 4.2.2 + '@babel/helper-function-name': 7.1.0 + '@babel/types': 7.0.0 + lodash: 4.17.11 dev: true resolution: - integrity: sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA== - /ansi-escapes/3.1.0: + integrity: sha512-yPPcW8dc3gZLN+U1mhYV91QU3n5uTbx7DUdf8NnPbjS0RMwBuHi9Xt2MUgppmNz7CJxTBWsGczTiEp1CSOTPRg== + /@babel/helper-explode-assignable-expression/7.1.0: + dependencies: + '@babel/traverse': 7.1.0 + '@babel/types': 7.0.0 dev: true - engines: - node: '>=4' resolution: - integrity: sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== - /ansi-regex/2.1.1: + integrity: sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA== + /@babel/helper-function-name/7.1.0: + dependencies: + '@babel/helper-get-function-arity': 7.0.0 + '@babel/template': 7.1.0 + '@babel/types': 7.0.0 dev: true - engines: - node: '>=0.10.0' resolution: - integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - /ansi-regex/3.0.0: + integrity: sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw== + /@babel/helper-get-function-arity/7.0.0: + dependencies: + '@babel/types': 7.0.0 dev: true - engines: - node: '>=4' resolution: - integrity: sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - /ansi-styles/2.2.1: + integrity: sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ== + /@babel/helper-hoist-variables/7.0.0: + dependencies: + '@babel/types': 7.0.0 dev: true - engines: - node: '>=0.10.0' resolution: - integrity: sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - /ansi-styles/3.2.1: + integrity: sha512-Ggv5sldXUeSKsuzLkddtyhyHe2YantsxWKNi7A+7LeD12ExRDWTRk29JCXpaHPAbMaIPZSil7n+lq78WY2VY7w== + /@babel/helper-member-expression-to-functions/7.0.0: dependencies: - color-convert: 1.9.2 + '@babel/types': 7.0.0 dev: true - engines: - node: '>=4' resolution: - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - /anymatch/1.3.2: + integrity: sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg== + /@babel/helper-module-imports/7.0.0: dependencies: - micromatch: 2.3.11 - normalize-path: 2.1.1 + '@babel/types': 7.0.0 dev: true - optional: true resolution: - integrity: sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== - /argparse/1.0.10: + integrity: sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A== + /@babel/helper-module-transforms/7.1.0: dependencies: - sprintf-js: 1.0.3 + '@babel/helper-module-imports': 7.0.0 + '@babel/helper-simple-access': 7.1.0 + '@babel/helper-split-export-declaration': 7.0.0 + '@babel/template': 7.1.0 + '@babel/types': 7.0.0 + lodash: 4.17.11 dev: true resolution: - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - /arr-diff/2.0.0: + integrity: sha512-0JZRd2yhawo79Rcm4w0LwSMILFmFXjugG3yqf+P/UsKsRS1mJCmMwwlHDlMg7Avr9LrvSpp4ZSULO9r8jpCzcw== + /@babel/helper-optimise-call-expression/7.0.0: dependencies: - arr-flatten: 1.1.0 + '@babel/types': 7.0.0 dev: true - engines: - node: '>=0.10.0' - optional: true resolution: - integrity: sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= - /arr-diff/4.0.0: + integrity: sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g== + /@babel/helper-plugin-utils/7.0.0: dev: true - engines: - node: '>=0.10.0' - optional: true resolution: - integrity: sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - /arr-flatten/1.1.0: + integrity: sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== + /@babel/helper-regex/7.0.0: + dependencies: + lodash: 4.17.11 dev: true - engines: - node: '>=0.10.0' - optional: true resolution: - integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - /arr-union/3.1.0: + integrity: sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg== + /@babel/helper-remap-async-to-generator/7.1.0: + dependencies: + '@babel/helper-annotate-as-pure': 7.0.0 + '@babel/helper-wrap-function': 7.1.0 + '@babel/template': 7.1.0 + '@babel/traverse': 7.1.0 + '@babel/types': 7.0.0 dev: true - engines: - node: '>=0.10.0' - optional: true resolution: - integrity: sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - /array-filter/0.0.1: + integrity: sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg== + /@babel/helper-replace-supers/7.1.0: + dependencies: + '@babel/helper-member-expression-to-functions': 7.0.0 + '@babel/helper-optimise-call-expression': 7.0.0 + '@babel/traverse': 7.1.0 + '@babel/types': 7.0.0 dev: true resolution: - integrity: sha1-fajPLiZijtcygDWB/SH2fKzS7uw= - /array-map/0.0.0: + integrity: sha512-BvcDWYZRWVuDeXTYZWxekQNO5D4kO55aArwZOTFXw6rlLQA8ZaDicJR1sO47h+HrnCiDFiww0fSPV0d713KBGQ== + /@babel/helper-simple-access/7.1.0: + dependencies: + '@babel/template': 7.1.0 + '@babel/types': 7.0.0 dev: true resolution: - integrity: sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= - /array-reduce/0.0.0: + integrity: sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w== + /@babel/helper-split-export-declaration/7.0.0: + dependencies: + '@babel/types': 7.0.0 dev: true resolution: - integrity: sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= - /array-union/1.0.2: + integrity: sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag== + /@babel/helper-wrap-function/7.1.0: dependencies: - array-uniq: 1.0.3 + '@babel/helper-function-name': 7.1.0 + '@babel/template': 7.1.0 + '@babel/traverse': 7.1.0 + '@babel/types': 7.0.0 dev: true - engines: - node: '>=0.10.0' resolution: - integrity: sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - /array-uniq/1.0.3: + integrity: sha512-R6HU3dete+rwsdAfrOzTlE9Mcpk4RjU3aX3gi9grtmugQY0u79X7eogUvfXA5sI81Mfq1cn6AgxihfN33STjJA== + /@babel/helpers/7.1.0: + dependencies: + '@babel/template': 7.1.0 + '@babel/traverse': 7.1.0 + '@babel/types': 7.0.0 dev: true - engines: - node: '>=0.10.0' resolution: - integrity: sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - /array-unique/0.2.1: + integrity: sha512-V1jXUTNdTpBn37wqqN73U+eBpzlLHmxA4aDaghJBggmzly/FpIJMHXse9lgdzQQT4gs5jZ5NmYxOL8G3ROc29g== + /@babel/highlight/7.0.0: + dependencies: + chalk: 2.4.1 + esutils: 2.0.2 + js-tokens: 4.0.0 dev: true - engines: - node: '>=0.10.0' - optional: true resolution: - integrity: sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= - /array-unique/0.3.2: + integrity: sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== + /@babel/parser/7.1.0: dev: true engines: - node: '>=0.10.0' - optional: true + node: '>=6.0.0' + hasBin: true resolution: - integrity: sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - /arrify/1.0.1: + integrity: sha512-SmjnXCuPAlai75AFtzv+KCBcJ3sDDWbIn+WytKw1k+wAtEy6phqI2RqKh/zAnw53i1NR8su3Ep/UoqaKcimuLg== + /@babel/plugin-proposal-async-generator-functions/7.1.0: + dependencies: + '@babel/helper-plugin-utils': 7.0.0 + '@babel/helper-remap-async-to-generator': 7.1.0 + '@babel/plugin-syntax-async-generators': 7.0.0 dev: true - engines: - node: '>=0.10.0' + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - /asn1.js/4.10.1: + integrity: sha512-Fq803F3Jcxo20MXUSDdmZZXrPe6BWyGcWBPPNB/M7WaUYESKDeKMOGIxEzQOjGSmW/NWb6UaPZrtTB2ekhB/ew== + /@babel/plugin-proposal-json-strings/7.0.0: dependencies: - bn.js: 4.11.8 - inherits: 2.0.3 - minimalistic-assert: 1.0.1 + '@babel/helper-plugin-utils': 7.0.0 + '@babel/plugin-syntax-json-strings': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== - /assert/1.4.1: + integrity: sha512-kfVdUkIAGJIVmHmtS/40i/fg/AGnw/rsZBCaapY5yjeO5RA9m165Xbw9KMOu2nqXP5dTFjEjHdfNdoVcHv133Q== + /@babel/plugin-proposal-object-rest-spread/7.0.0: dependencies: - util: 0.10.3 + '@babel/helper-plugin-utils': 7.0.0 + '@babel/plugin-syntax-object-rest-spread': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= - /assign-symbols/1.0.0: + integrity: sha512-14fhfoPcNu7itSen7Py1iGN0gEm87hX/B+8nZPqkdmANyyYWYMY2pjA3r8WXbWVKMzfnSNS0xY8GVS0IjXi/iw== + /@babel/plugin-proposal-optional-catch-binding/7.0.0: + dependencies: + '@babel/helper-plugin-utils': 7.0.0 + '@babel/plugin-syntax-optional-catch-binding': 7.0.0 dev: true - engines: - node: '>=0.10.0' - optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - /async-each/1.0.1: + integrity: sha512-JPqAvLG1s13B/AuoBjdBYvn38RqW6n1TzrQO839/sIpqLpbnXKacsAgpZHzLD83Sm8SDXMkkrAvEnJ25+0yIpw== + /@babel/plugin-proposal-unicode-property-regex/7.0.0: + dependencies: + '@babel/helper-plugin-utils': 7.0.0 + '@babel/helper-regex': 7.0.0 + regexpu-core: 4.2.0 dev: true - optional: true + engines: + node: '>=4' + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-GdOGodntxufByF04iu28xW0zYC0= - /atob/2.1.2: + integrity: sha512-tM3icA6GhC3ch2SkmSxv7J/hCWKISzwycub6eGsDrFDgukD4dZ/I+x81XgW0YslS6mzNuQ1Cbzh5osjIMgepPQ== + /@babel/plugin-syntax-async-generators/7.0.0: + dependencies: + '@babel/helper-plugin-utils': 7.0.0 dev: true - engines: - node: '>= 4.5.0' - hasBin: true - optional: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - /babel-cli/6.26.0: + integrity: sha512-im7ged00ddGKAjcZgewXmp1vxSZQQywuQXe2B1A7kajjZmDeY/ekMPmWr9zJgveSaQH0k7BcGrojQhcK06l0zA== + /@babel/plugin-syntax-json-strings/7.0.0: dependencies: - babel-core: 6.26.3 - babel-polyfill: 6.26.0 - babel-register: 6.26.0 - babel-runtime: 6.26.0 - commander: 2.18.0 - convert-source-map: 1.6.0 - fs-readdir-recursive: 1.1.0 - glob: 7.1.3 - lodash: 4.17.11 - output-file-sync: 1.1.2 - path-is-absolute: 1.0.1 - slash: 1.0.0 - source-map: 0.5.7 - v8flags: 2.1.1 + '@babel/helper-plugin-utils': 7.0.0 dev: true - hasBin: true - optionalDependencies: - chokidar: 1.7.0 + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-UCq1SHTX24itALiHoGODzgPQAvE= - /babel-code-frame/6.26.0: + integrity: sha512-UlSfNydC+XLj4bw7ijpldc1uZ/HB84vw+U6BTuqMdIEmz/LDe63w/GHtpQMdXWdqQZFeAI9PjnHe/vDhwirhKA== + /@babel/plugin-syntax-object-rest-spread/7.0.0: dependencies: - chalk: 1.1.3 - esutils: 2.0.2 - js-tokens: 3.0.2 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - /babel-core/6.26.3: + integrity: sha512-5A0n4p6bIiVe5OvQPxBnesezsgFJdHhSs3uFSvaPdMqtsovajLZ+G2vZyvNe10EzJBWWo3AcHGKhAFUxqwp2dw== + /@babel/plugin-syntax-optional-catch-binding/7.0.0: dependencies: - babel-code-frame: 6.26.0 - babel-generator: 6.26.1 - 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.6.0 - debug: 2.6.9 - json5: 0.5.1 - lodash: 4.17.11 - minimatch: 3.0.4 - path-is-absolute: 1.0.1 - private: 0.1.8 - slash: 1.0.0 - source-map: 0.5.7 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - /babel-generator/6.26.1: + integrity: sha512-Wc+HVvwjcq5qBg1w5RG9o9RVzmCaAg/Vp0erHCKpAYV8La6I94o4GQAmFYNmkzoMO6gzoOSulpKeSSz6mPEoZw== + /@babel/plugin-transform-arrow-functions/7.0.0: 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.11 - source-map: 0.5.7 - trim-right: 1.0.1 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - /babel-helper-builder-binary-assignment-operator-visitor/6.24.1: + integrity: sha512-2EZDBl1WIO/q4DIkIp4s86sdp4ZifL51MoIviLY/gG/mLSuOIEg7J8o6mhbxOTvUJkaN50n+8u41FVsr5KLy/w== + /@babel/plugin-transform-async-to-generator/7.1.0: dependencies: - babel-helper-explode-assignable-expression: 6.24.1 - babel-runtime: 6.26.0 - babel-types: 6.26.0 + '@babel/helper-module-imports': 7.0.0 + '@babel/helper-plugin-utils': 7.0.0 + '@babel/helper-remap-async-to-generator': 7.1.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= - /babel-helper-call-delegate/6.24.1: + integrity: sha512-rNmcmoQ78IrvNCIt/R9U+cixUHeYAzgusTFgIAv+wQb9HJU4szhpDD6e5GCACmj/JP5KxuCwM96bX3L9v4ZN/g== + /@babel/plugin-transform-block-scoped-functions/7.0.0: dependencies: - babel-helper-hoist-variables: 6.24.1 - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= - /babel-helper-define-map/6.26.0: + integrity: sha512-AOBiyUp7vYTqz2Jibe1UaAWL0Hl9JUXEgjFvvvcSc9MVDItv46ViXFw2F7SVt1B5k+KWjl44eeXOAk3UDEaJjQ== + /@babel/plugin-transform-block-scoping/7.0.0: dependencies: - babel-helper-function-name: 6.24.1 - babel-runtime: 6.26.0 - babel-types: 6.26.0 + '@babel/helper-plugin-utils': 7.0.0 lodash: 4.17.11 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-GWEMCrmHQcYWISilUrk9GDqH4enf3UmhOEbNbNrlNAX1ssH3MsS1xLOS6rdjRVPgA7XXVPn87tRkdTEoA/dxEg== + /@babel/plugin-transform-classes/7.1.0: + dependencies: + '@babel/helper-annotate-as-pure': 7.0.0 + '@babel/helper-define-map': 7.1.0 + '@babel/helper-function-name': 7.1.0 + '@babel/helper-optimise-call-expression': 7.0.0 + '@babel/helper-plugin-utils': 7.0.0 + '@babel/helper-replace-supers': 7.1.0 + '@babel/helper-split-export-declaration': 7.0.0 + globals: 11.7.0 + dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= - /babel-helper-explode-assignable-expression/6.24.1: + integrity: sha512-rNaqoD+4OCBZjM7VaskladgqnZ1LO6o2UxuWSDzljzW21pN1KXkB7BstAVweZdxQkHAujps5QMNOTWesBciKFg== + /@babel/plugin-transform-computed-properties/7.0.0: dependencies: - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-8luCz33BBDPFX3BZLVdGQArCLKo= - /babel-helper-function-name/6.24.1: + integrity: sha512-ubouZdChNAv4AAWAgU7QKbB93NU5sHwInEWfp+/OzJKA02E6Woh9RVoX4sZrbRwtybky/d7baTUqwFx+HgbvMA== + /@babel/plugin-transform-destructuring/7.0.0: dependencies: - babel-helper-get-function-arity: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= - /babel-helper-get-function-arity/6.24.1: + integrity: sha512-Fr2GtF8YJSXGTyFPakPFB4ODaEKGU04bPsAllAIabwoXdFrPxL0LVXQX5dQWoxOjjgozarJcC9eWGsj0fD6Zsg== + /@babel/plugin-transform-dotall-regex/7.0.0: dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 + '@babel/helper-plugin-utils': 7.0.0 + '@babel/helper-regex': 7.0.0 + regexpu-core: 4.2.0 dev: true + engines: + node: '>=4' + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= - /babel-helper-hoist-variables/6.24.1: + integrity: sha512-00THs8eJxOJUFVx1w8i1MBF4XH4PsAjKjQ1eqN/uCH3YKwP21GCKfrn6YZFZswbOk9+0cw1zGQPHVc1KBlSxig== + /@babel/plugin-transform-duplicate-keys/7.0.0: dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-HssnaJydJVE+rbyZFKc/VAi+enY= - /babel-helper-optimise-call-expression/6.24.1: + integrity: sha512-w2vfPkMqRkdxx+C71ATLJG30PpwtTpW7DDdLqYt2acXU7YjztzeWW2Jk1T6hKqCLYCcEA5UQM/+xTAm+QCSnuQ== + /@babel/plugin-transform-exponentiation-operator/7.1.0: dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.1.0 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= - /babel-helper-regex/6.26.0: + integrity: sha512-uZt9kD1Pp/JubkukOGQml9tqAeI8NkE98oZnHZ2qHRElmeKCodbTZgOEUtujSCSLhHSBWbzNiFSDIMC4/RBTLQ== + /@babel/plugin-transform-for-of/7.0.0: dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 - lodash: 4.17.11 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= - /babel-helper-remap-async-to-generator/6.24.1: + integrity: sha512-TlxKecN20X2tt2UEr2LNE6aqA0oPeMT1Y3cgz8k4Dn1j5ObT8M3nl9aA37LLklx0PBZKETC9ZAf9n/6SujTuXA== + /@babel/plugin-transform-function-name/7.1.0: dependencies: - babel-helper-function-name: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 + '@babel/helper-function-name': 7.1.0 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= - /babel-helper-replace-supers/6.24.1: + integrity: sha512-VxOa1TMlFMtqPW2IDYZQaHsFrq/dDoIjgN098NowhexhZcz3UGlvPgZXuE1jEvNygyWyxRacqDpCZt+par1FNg== + /@babel/plugin-transform-literals/7.0.0: dependencies: - babel-helper-optimise-call-expression: 6.24.1 - babel-messages: 6.23.0 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-v22/5Dk40XNpohPKiov3S2qQqxo= - /babel-helpers/6.24.1: + integrity: sha512-1NTDBWkeNXgpUcyoVFxbr9hS57EpZYXpje92zv0SUzjdu3enaRwF/l3cmyRnXLtIdyJASyiS6PtybK+CgKf7jA== + /@babel/plugin-transform-modules-amd/7.1.0: dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 + '@babel/helper-module-transforms': 7.1.0 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= - /babel-messages/6.23.0: + integrity: sha512-wt8P+xQ85rrnGNr2x1iV3DW32W8zrB6ctuBkYBbf5/ZzJY99Ob4MFgsZDFgczNU76iy9PWsy4EuxOliDjdKw6A== + /@babel/plugin-transform-modules-commonjs/7.1.0: dependencies: - babel-runtime: 6.26.0 + '@babel/helper-module-transforms': 7.1.0 + '@babel/helper-plugin-utils': 7.0.0 + '@babel/helper-simple-access': 7.1.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= - /babel-plugin-check-es2015-constants/6.22.0: + integrity: sha512-wtNwtMjn1XGwM0AXPspQgvmE6msSJP15CX2RVfpTSTNPLhKhaOjaIfBaVfj4iUZ/VrFSodcFedwtPg/NxwQlPA== + /@babel/plugin-transform-modules-systemjs/7.0.0: dependencies: - babel-runtime: 6.26.0 + '@babel/helper-hoist-variables': 7.0.0 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= - /babel-plugin-syntax-async-functions/6.13.0: + integrity: sha512-8EDKMAsitLkiF/D4Zhe9CHEE2XLh4bfLbb9/Zf3FgXYQOZyZYyg7EAel/aT2A7bHv62jwHf09q2KU/oEexr83g== + /@babel/plugin-transform-modules-umd/7.1.0: + dependencies: + '@babel/helper-module-transforms': 7.1.0 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= - tarball: 'http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz' - /babel-plugin-syntax-exponentiation-operator/6.13.0: + integrity: sha512-enrRtn5TfRhMmbRwm7F8qOj0qEYByqUvTttPEGimcBH4CJHphjyK1Vg7sdU7JjeEmgSpM890IT/efS2nMHwYig== + /@babel/plugin-transform-new-target/7.0.0: + dependencies: + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= - tarball: 'http://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz' - /babel-plugin-syntax-object-rest-spread/6.13.0: + integrity: sha512-yin069FYjah+LbqfGeTfzIBODex/e++Yfa0rH0fpfam9uTbuEeEOx5GLGr210ggOV77mVRNoeqSYqeuaqSzVSw== + /@babel/plugin-transform-object-super/7.1.0: + dependencies: + '@babel/helper-plugin-utils': 7.0.0 + '@babel/helper-replace-supers': 7.1.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-/WU28rzhODb/o6VFjEkDpZe7O/U= - tarball: 'http://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz' - /babel-plugin-syntax-trailing-function-commas/6.22.0: + integrity: sha512-/O02Je1CRTSk2SSJaq0xjwQ8hG4zhZGNjE8psTsSNPXyLRCODv7/PBozqT5AmQMzp7MI3ndvMhGdqp9c96tTEw== + /@babel/plugin-transform-parameters/7.1.0: + dependencies: + '@babel/helper-call-delegate': 7.1.0 + '@babel/helper-get-function-arity': 7.0.0 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= - /babel-plugin-transform-async-to-generator/6.24.1: + integrity: sha512-vHV7oxkEJ8IHxTfRr3hNGzV446GAb+0hgbA7o/0Jd76s+YzccdWuTU296FOCOl/xweU4t/Ya4g41yWz80RFCRw== + /@babel/plugin-transform-regenerator/7.0.0: dependencies: - babel-helper-remap-async-to-generator: 6.24.1 - babel-plugin-syntax-async-functions: 6.13.0 - babel-runtime: 6.26.0 + regenerator-transform: 0.13.3 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= - /babel-plugin-transform-es2015-arrow-functions/6.22.0: + integrity: sha512-sj2qzsEx8KDVv1QuJc/dEfilkg3RRPvPYx/VnKLtItVQRWt1Wqf5eVCOLZm29CiGFfYYsA3VPjfizTCV0S0Dlw== + /@babel/plugin-transform-shorthand-properties/7.0.0: dependencies: - babel-runtime: 6.26.0 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= - /babel-plugin-transform-es2015-block-scoped-functions/6.22.0: + integrity: sha512-g/99LI4vm5iOf5r1Gdxq5Xmu91zvjhEG5+yZDJW268AZELAu4J1EiFLnkSG3yuUsZyOipVOVUKoGPYwfsTymhw== + /@babel/plugin-transform-spread/7.0.0: dependencies: - babel-runtime: 6.26.0 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-u8UbSflk1wy42OC5ToICRs46YUE= - /babel-plugin-transform-es2015-block-scoping/6.26.0: + integrity: sha512-L702YFy2EvirrR4shTj0g2xQp7aNwZoWNCkNu2mcoU0uyzMl0XRwDSwzB/xp6DSUFiBmEXuyAyEN16LsgVqGGQ== + /@babel/plugin-transform-sticky-regex/7.0.0: dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - lodash: 4.17.11 + '@babel/helper-plugin-utils': 7.0.0 + '@babel/helper-regex': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= - /babel-plugin-transform-es2015-classes/6.24.1: + integrity: sha512-LFUToxiyS/WD+XEWpkx/XJBrUXKewSZpzX68s+yEOtIbdnsRjpryDw9U06gYc6klYEij/+KQVRnD3nz3AoKmjw== + /@babel/plugin-transform-template-literals/7.0.0: dependencies: - babel-helper-define-map: 6.26.0 - 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.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 + '@babel/helper-annotate-as-pure': 7.0.0 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= - /babel-plugin-transform-es2015-computed-properties/6.24.1: + integrity: sha512-vA6rkTCabRZu7Nbl9DfLZE1imj4tzdWcg5vtdQGvj+OH9itNNB6hxuRMHuIY8SGnEt1T9g5foqs9LnrHzsqEFg== + /@babel/plugin-transform-typeof-symbol/7.0.0: dependencies: - babel-runtime: 6.26.0 - babel-template: 6.26.0 + '@babel/helper-plugin-utils': 7.0.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= - /babel-plugin-transform-es2015-destructuring/6.23.0: + integrity: sha512-1r1X5DO78WnaAIvs5uC48t41LLckxsYklJrZjNKcevyz83sF2l4RHbw29qrCPr/6ksFsdfRpT/ZgxNWHXRnffg== + /@babel/plugin-transform-unicode-regex/7.0.0: dependencies: - babel-runtime: 6.26.0 + '@babel/helper-plugin-utils': 7.0.0 + '@babel/helper-regex': 7.0.0 + regexpu-core: 4.2.0 dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 + resolution: + integrity: sha512-uJBrJhBOEa3D033P95nPHu3nbFwFE9ZgXsfEitzoIXIwqAZWk7uXcg06yFKXz9FSxBH5ucgU/cYdX0IV8ldHKw== + /@babel/preset-env/7.1.0: + dependencies: + '@babel/helper-module-imports': 7.0.0 + '@babel/helper-plugin-utils': 7.0.0 + '@babel/plugin-proposal-async-generator-functions': 7.1.0 + '@babel/plugin-proposal-json-strings': 7.0.0 + '@babel/plugin-proposal-object-rest-spread': 7.0.0 + '@babel/plugin-proposal-optional-catch-binding': 7.0.0 + '@babel/plugin-proposal-unicode-property-regex': 7.0.0 + '@babel/plugin-syntax-async-generators': 7.0.0 + '@babel/plugin-syntax-object-rest-spread': 7.0.0 + '@babel/plugin-syntax-optional-catch-binding': 7.0.0 + '@babel/plugin-transform-arrow-functions': 7.0.0 + '@babel/plugin-transform-async-to-generator': 7.1.0 + '@babel/plugin-transform-block-scoped-functions': 7.0.0 + '@babel/plugin-transform-block-scoping': 7.0.0 + '@babel/plugin-transform-classes': 7.1.0 + '@babel/plugin-transform-computed-properties': 7.0.0 + '@babel/plugin-transform-destructuring': 7.0.0 + '@babel/plugin-transform-dotall-regex': 7.0.0 + '@babel/plugin-transform-duplicate-keys': 7.0.0 + '@babel/plugin-transform-exponentiation-operator': 7.1.0 + '@babel/plugin-transform-for-of': 7.0.0 + '@babel/plugin-transform-function-name': 7.1.0 + '@babel/plugin-transform-literals': 7.0.0 + '@babel/plugin-transform-modules-amd': 7.1.0 + '@babel/plugin-transform-modules-commonjs': 7.1.0 + '@babel/plugin-transform-modules-systemjs': 7.0.0 + '@babel/plugin-transform-modules-umd': 7.1.0 + '@babel/plugin-transform-new-target': 7.0.0 + '@babel/plugin-transform-object-super': 7.1.0 + '@babel/plugin-transform-parameters': 7.1.0 + '@babel/plugin-transform-regenerator': 7.0.0 + '@babel/plugin-transform-shorthand-properties': 7.0.0 + '@babel/plugin-transform-spread': 7.0.0 + '@babel/plugin-transform-sticky-regex': 7.0.0 + '@babel/plugin-transform-template-literals': 7.0.0 + '@babel/plugin-transform-typeof-symbol': 7.0.0 + '@babel/plugin-transform-unicode-regex': 7.0.0 + browserslist: 4.1.1 + invariant: 2.2.4 + js-levenshtein: 1.1.3 + semver: 5.5.1 + dev: true + peerDependencies: + '@babel/core': ^7.0.0-0 resolution: - integrity: sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= - /babel-plugin-transform-es2015-duplicate-keys/6.24.1: + integrity: sha512-ZLVSynfAoDHB/34A17/JCZbyrzbQj59QC1Anyueb4Bwjh373nVPq5/HMph0z+tCmcDjXDe+DlKQq9ywQuvWrQg== + /@babel/template/7.1.0: dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 + '@babel/code-frame': 7.0.0 + '@babel/parser': 7.1.0 + '@babel/types': 7.0.0 dev: true resolution: - integrity: sha1-c+s9MQypaePvnskcU3QabxV2Qj4= - /babel-plugin-transform-es2015-for-of/6.23.0: + integrity: sha512-yZ948B/pJrwWGY6VxG6XRFsVTee3IQ7bihq9zFpM00Vydu6z5Xwg0C3J644kxI9WOTzd+62xcIsQ+AT1MGhqhA== + /@babel/traverse/7.1.0: dependencies: - babel-runtime: 6.26.0 + '@babel/code-frame': 7.0.0 + '@babel/generator': 7.0.0 + '@babel/helper-function-name': 7.1.0 + '@babel/helper-split-export-declaration': 7.0.0 + '@babel/parser': 7.1.0 + '@babel/types': 7.0.0 + debug: 3.2.5 + globals: 11.7.0 + lodash: 4.17.11 dev: true resolution: - integrity: sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= - /babel-plugin-transform-es2015-function-name/6.24.1: + integrity: sha512-bwgln0FsMoxm3pLOgrrnGaXk18sSM9JNf1/nHC/FksmNGFbYnPWY4GYCfLxyP1KRmfsxqkRpfoa6xr6VuuSxdw== + /@babel/types/7.0.0: dependencies: - babel-helper-function-name: 6.24.1 - babel-runtime: 6.26.0 - babel-types: 6.26.0 + esutils: 2.0.2 + lodash: 4.17.11 + to-fast-properties: 2.0.0 dev: true resolution: - integrity: sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= - /babel-plugin-transform-es2015-literals/6.22.0: + integrity: sha512-5tPDap4bGKTLPtci2SUl/B7Gv8RnuJFuQoWx26RJobS0fFrz4reUA3JnwIM+HVHEmWE0C1mzKhDtTp8NsWY02Q== + /@codefeathers/iseq/1.2.1: + dev: false + resolution: + integrity: sha1-zUHiKGdKZQlWBfKVacbdVtlodsw= + /@codefeathers/promise.object/0.9.5: + dev: false + resolution: + integrity: sha1-YBDLXpC4vhz12WrDHJKr/F8K/zA= + /JSONStream/1.3.4: dependencies: - babel-runtime: 6.26.0 + jsonparse: 1.3.1 + through: 2.3.8 dev: true + hasBin: true resolution: - integrity: sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= - /babel-plugin-transform-es2015-modules-amd/6.24.1: + integrity: sha512-Y7vfi3I5oMOYIr+WxV8NZxDSwcbNgzdKYsTNInmycOq9bUYwGg9ryu57Wg5NLmCjqdFPNUmpMBo3kSJN9tCbXg== + /acorn-dynamic-import/3.0.0: dependencies: - babel-plugin-transform-es2015-modules-commonjs: 6.26.2 - babel-runtime: 6.26.0 - babel-template: 6.26.0 + acorn: 5.7.3 dev: true resolution: - integrity: sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= - /babel-plugin-transform-es2015-modules-commonjs/6.26.2: + integrity: sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg== + /acorn-jsx/4.1.1: dependencies: - babel-plugin-transform-strict-mode: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-types: 6.26.0 + acorn: 5.7.1 dev: true resolution: - integrity: sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== - /babel-plugin-transform-es2015-modules-systemjs/6.24.1: + integrity: sha512-JY+iV6r+cO21KtntVvFkD+iqjtdpRUpGqKWgfkCdZq1R+kbreEl8EcdcJR4SmiIgsIQT33s6QzheQ9a275Q8xw== + /acorn-node/1.5.2: dependencies: - babel-helper-hoist-variables: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 + acorn: 5.7.3 + acorn-dynamic-import: 3.0.0 + xtend: 4.0.1 dev: true resolution: - integrity: sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= - /babel-plugin-transform-es2015-modules-umd/6.24.1: - dependencies: - babel-plugin-transform-es2015-modules-amd: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 + integrity: sha512-krFKvw/d1F17AN3XZbybIUzEY4YEPNiGo05AfP3dBlfVKrMHETKpgjpuZkSF8qDNt9UkQcqj7am8yJLseklCMg== + /acorn/5.7.1: dev: true + engines: + node: '>=0.4.0' + hasBin: true resolution: - integrity: sha1-rJl+YoXNGO1hdq22B9YCNErThGg= - /babel-plugin-transform-es2015-object-super/6.24.1: - dependencies: - babel-helper-replace-supers: 6.24.1 - babel-runtime: 6.26.0 + integrity: sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ== + /acorn/5.7.3: dev: true + engines: + node: '>=0.4.0' + hasBin: true resolution: - integrity: sha1-JM72muIcuDp/hgPa0CH1cusnj40= - /babel-plugin-transform-es2015-parameters/6.24.1: + integrity: sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== + /ajv-keywords/3.2.0/ajv@6.5.2: dependencies: - babel-helper-call-delegate: 6.24.1 - babel-helper-get-function-arity: 6.24.1 - babel-runtime: 6.26.0 - babel-template: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 + ajv: 6.5.2 dev: true + id: registry.npmjs.org/ajv-keywords/3.2.0 + peerDependencies: + ajv: ^6.0.0 resolution: - integrity: sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= - /babel-plugin-transform-es2015-shorthand-properties/6.24.1: + integrity: sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo= + /ajv/6.5.2: dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 + fast-deep-equal: 2.0.1 + fast-json-stable-stringify: 2.0.0 + json-schema-traverse: 0.4.1 + uri-js: 4.2.2 dev: true resolution: - integrity: sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= - /babel-plugin-transform-es2015-spread/6.22.0: - dependencies: - babel-runtime: 6.26.0 + integrity: sha512-hOs7GfvI6tUI1LfZddH82ky6mOMyTuY0mk7kE2pWpmhhUSkumzaTO5vbVwij39MdwPQWCV4Zv57Eo06NtL/GVA== + /ansi-escapes/3.1.0: dev: true + engines: + node: '>=4' resolution: - integrity: sha1-1taKmfia7cRTbIGlQujdnxdG+NE= - /babel-plugin-transform-es2015-sticky-regex/6.24.1: - dependencies: - babel-helper-regex: 6.26.0 - babel-runtime: 6.26.0 - babel-types: 6.26.0 + integrity: sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw== + /ansi-regex/2.1.1: dev: true + engines: + node: '>=0.10.0' resolution: - integrity: sha1-AMHNsaynERLN8M9hJsLta0V8zbw= - /babel-plugin-transform-es2015-template-literals/6.22.0: - dependencies: - babel-runtime: 6.26.0 + integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + /ansi-regex/3.0.0: dev: true + engines: + node: '>=4' resolution: - integrity: sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= - /babel-plugin-transform-es2015-typeof-symbol/6.23.0: - dependencies: - babel-runtime: 6.26.0 + integrity: sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + /ansi-styles/2.2.1: dev: true + engines: + node: '>=0.10.0' resolution: - integrity: sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= - /babel-plugin-transform-es2015-unicode-regex/6.24.1: + integrity: sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + /ansi-styles/3.2.1: dependencies: - babel-helper-regex: 6.26.0 - babel-runtime: 6.26.0 - regexpu-core: 2.0.0 + color-convert: 1.9.3 dev: true + engines: + node: '>=4' resolution: - integrity: sha1-04sS9C6nMj9yk4fxinxa4frrNek= - /babel-plugin-transform-exponentiation-operator/6.24.1: + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + /anymatch/2.0.0: dependencies: - babel-helper-builder-binary-assignment-operator-visitor: 6.24.1 - babel-plugin-syntax-exponentiation-operator: 6.13.0 - babel-runtime: 6.26.0 + micromatch: 3.1.10 + normalize-path: 2.1.1 dev: true + optional: true resolution: - integrity: sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= - /babel-plugin-transform-object-rest-spread/6.26.0: + integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + /argparse/1.0.10: dependencies: - babel-plugin-syntax-object-rest-spread: 6.13.0 - babel-runtime: 6.26.0 + sprintf-js: 1.0.3 dev: true resolution: - integrity: sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY= - /babel-plugin-transform-regenerator/6.26.0: - dependencies: - regenerator-transform: 0.10.1 + integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + /arr-diff/4.0.0: dev: true + engines: + node: '>=0.10.0' + optional: true resolution: - integrity: sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= - /babel-plugin-transform-strict-mode/6.24.1: - dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 + integrity: sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + /arr-flatten/1.1.0: dev: true + engines: + node: '>=0.10.0' + optional: true resolution: - integrity: sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= - /babel-polyfill/6.26.0: - dependencies: - babel-runtime: 6.26.0 - core-js: 2.5.7 - regenerator-runtime: 0.10.5 + integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + /arr-union/3.1.0: dev: true + engines: + node: '>=0.10.0' + optional: true resolution: - integrity: sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= - /babel-preset-env/1.7.0: - 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.24.1 - babel-plugin-transform-es2015-arrow-functions: 6.22.0 - babel-plugin-transform-es2015-block-scoped-functions: 6.22.0 - babel-plugin-transform-es2015-block-scoping: 6.26.0 - babel-plugin-transform-es2015-classes: 6.24.1 - babel-plugin-transform-es2015-computed-properties: 6.24.1 - babel-plugin-transform-es2015-destructuring: 6.23.0 - babel-plugin-transform-es2015-duplicate-keys: 6.24.1 - babel-plugin-transform-es2015-for-of: 6.23.0 - babel-plugin-transform-es2015-function-name: 6.24.1 - babel-plugin-transform-es2015-literals: 6.22.0 - babel-plugin-transform-es2015-modules-amd: 6.24.1 - babel-plugin-transform-es2015-modules-commonjs: 6.26.2 - babel-plugin-transform-es2015-modules-systemjs: 6.24.1 - babel-plugin-transform-es2015-modules-umd: 6.24.1 - babel-plugin-transform-es2015-object-super: 6.24.1 - babel-plugin-transform-es2015-parameters: 6.24.1 - babel-plugin-transform-es2015-shorthand-properties: 6.24.1 - babel-plugin-transform-es2015-spread: 6.22.0 - babel-plugin-transform-es2015-sticky-regex: 6.24.1 - babel-plugin-transform-es2015-template-literals: 6.22.0 - babel-plugin-transform-es2015-typeof-symbol: 6.23.0 - babel-plugin-transform-es2015-unicode-regex: 6.24.1 - babel-plugin-transform-exponentiation-operator: 6.24.1 - babel-plugin-transform-regenerator: 6.26.0 - browserslist: 3.2.8 - invariant: 2.2.4 - semver: 5.5.1 + integrity: sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + /array-filter/0.0.1: + dev: true + resolution: + integrity: sha1-fajPLiZijtcygDWB/SH2fKzS7uw= + /array-map/0.0.0: + dev: true + resolution: + integrity: sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= + /array-reduce/0.0.0: dev: true resolution: - integrity: sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== - /babel-register/6.26.0: + integrity: sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= + /array-union/1.0.2: dependencies: - babel-core: 6.26.3 - babel-runtime: 6.26.0 - core-js: 2.5.7 - home-or-tmp: 2.0.0 - lodash: 4.17.11 - mkdirp: 0.5.1 - source-map-support: 0.4.18 + array-uniq: 1.0.3 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + /array-uniq/1.0.3: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + /array-unique/0.3.2: + dev: true + engines: + node: '>=0.10.0' + optional: true + resolution: + integrity: sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + /arrify/1.0.1: dev: true + engines: + node: '>=0.10.0' resolution: - integrity: sha1-btAhFz4vy0htestFxgCahW9kcHE= - /babel-runtime/6.26.0: + integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + /asn1.js/4.10.1: dependencies: - core-js: 2.5.7 - regenerator-runtime: 0.11.1 + bn.js: 4.11.8 + inherits: 2.0.3 + minimalistic-assert: 1.0.1 dev: true resolution: - integrity: sha1-llxwWGaOgrVde/4E/yM3vItWR/4= - /babel-template/6.26.0: + integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + /assert/1.4.1: dependencies: - babel-runtime: 6.26.0 - babel-traverse: 6.26.0 - babel-types: 6.26.0 - babylon: 6.18.0 - lodash: 4.17.11 + util: 0.10.3 + dev: true + resolution: + integrity: sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= + /assign-symbols/1.0.0: + dev: true + engines: + node: '>=0.10.0' + optional: true + resolution: + integrity: sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + /async-each/1.0.1: dev: true + optional: true resolution: - integrity: sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= - /babel-traverse/6.26.0: - 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.9 - globals: 9.18.0 - invariant: 2.2.4 - lodash: 4.17.11 + integrity: sha1-GdOGodntxufByF04iu28xW0zYC0= + /atob/2.1.2: dev: true + engines: + node: '>= 4.5.0' + hasBin: true + optional: true resolution: - integrity: sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= - /babel-types/6.26.0: + integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + /babel-code-frame/6.26.0: dependencies: - babel-runtime: 6.26.0 + chalk: 1.1.3 esutils: 2.0.2 - lodash: 4.17.11 - to-fast-properties: 1.0.3 - dev: true - resolution: - integrity: sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= - /babylon/6.18.0: + js-tokens: 3.0.2 dev: true - hasBin: true resolution: - integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + integrity: sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= /balanced-match/1.0.0: dev: true resolution: @@ -760,13 +868,13 @@ packages: dev: true resolution: integrity: sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== - /binary-extensions/1.11.0: + /binary-extensions/1.12.0: dev: true engines: node: '>=0.10.0' optional: true resolution: - integrity: sha1-RqoXUftqL5PuXmibsQh9SxTGwgU= + integrity: sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== /bn.js/4.11.8: dev: true resolution: @@ -778,17 +886,6 @@ packages: dev: true resolution: integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - /braces/1.8.5: - dependencies: - expand-range: 1.8.2 - preserve: 0.2.0 - repeat-element: 1.1.3 - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= /braces/2.3.2: dependencies: arr-flatten: 1.1.0 @@ -940,14 +1037,15 @@ packages: hasBin: true resolution: integrity: sha512-fMES05wq1Oukts6ksGUU2TMVHHp06LyQt0SIwbXIHm7waSrQmNBZePsU0iM/4f94zbvb/wHma+D1YrdzWYnF/A== - /browserslist/3.2.8: + /browserslist/4.1.1: dependencies: - caniuse-lite: 1.0.30000885 - electron-to-chromium: 1.3.67 + caniuse-lite: 1.0.30000887 + electron-to-chromium: 1.3.70 + node-releases: 1.0.0-alpha.11 dev: true hasBin: true resolution: - integrity: sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== + integrity: sha512-VBorw+tgpOtZ1BYhrVSVTzTt/3+vSE3eFUh0N2GCFK1HffceOaf32YS/bs6WiFhjDAblAFrx85jMy3BG9fBK2Q== /buffer-from/1.1.1: dev: true resolution: @@ -1002,10 +1100,10 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= - /caniuse-lite/1.0.30000885: + /caniuse-lite/1.0.30000887: dev: true resolution: - integrity: sha512-cXKbYwpxBLd7qHyej16JazPoUacqoVuDhvR61U7Fr5vSxMUiodzcYa1rQYRYfZ5GexV03vGZHd722vNPLjPJGQ== + integrity: sha512-AHpONWuGFWO8yY9igdXH94tikM6ERS84286r0cAMAXYFtJBk76lhiMhtCxBJNBZsD6hzlvpWZ2AtbVFEkf4JQA== /chalk/1.1.3: dependencies: ansi-styles: 2.2.1 @@ -1023,7 +1121,7 @@ packages: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 - supports-color: 5.4.0 + supports-color: 5.5.0 dev: true engines: node: '>=4' @@ -1033,22 +1131,26 @@ packages: dev: true resolution: integrity: sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= - /chokidar/1.7.0: + /chokidar/2.0.4: dependencies: - anymatch: 1.3.2 + anymatch: 2.0.0 async-each: 1.0.1 - glob-parent: 2.0.0 + braces: 2.3.2 + glob-parent: 3.1.0 inherits: 2.0.3 is-binary-path: 1.0.1 - is-glob: 2.0.1 + is-glob: 4.0.0 + lodash.debounce: 4.0.8 + normalize-path: 2.1.1 path-is-absolute: 1.0.1 readdirp: 2.2.1 + upath: 1.1.0 dev: true optional: true optionalDependencies: fsevents: 1.2.4 resolution: - integrity: sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= + integrity: sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ== /cipher-base/1.0.4: dependencies: inherits: 2.0.3 @@ -1094,16 +1196,16 @@ packages: optional: true resolution: integrity: sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - /color-convert/1.9.2: + /color-convert/1.9.3: dependencies: - color-name: 1.1.1 + color-name: 1.1.3 dev: true resolution: - integrity: sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg== - /color-name/1.1.1: + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + /color-name/1.1.3: dev: true resolution: - integrity: sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok= + integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= /combine-source-map/0.8.0: dependencies: convert-source-map: 1.1.3 @@ -1165,10 +1267,6 @@ packages: optional: true resolution: integrity: sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - /core-js/2.5.7: - dev: true - resolution: - integrity: sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw== /core-util-is/1.0.2: dev: true resolution: @@ -1239,6 +1337,7 @@ packages: dependencies: ms: 2.0.0 dev: true + optional: true resolution: integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== /debug/3.1.0: @@ -1247,6 +1346,12 @@ packages: dev: true resolution: integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + /debug/3.2.5: + dependencies: + ms: 2.1.1 + dev: true + resolution: + integrity: sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg== /decode-uri-component/0.2.0: dev: true engines: @@ -1330,14 +1435,6 @@ packages: dev: true resolution: integrity: sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= - /detect-indent/4.0.0: - dependencies: - repeating: 2.0.1 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-920GQ1LN9Docts5hnE7jqUdd4gg= /detective/5.1.0: dependencies: acorn-node: 1.5.2 @@ -1379,10 +1476,10 @@ packages: dev: true resolution: integrity: sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= - /electron-to-chromium/1.3.67: + /electron-to-chromium/1.3.70: dev: true resolution: - integrity: sha512-h3zEBLdHvsKfaXv1SHAtykJyNtwYFEKkrWGSFyW1BzGgPQ4ykAzD5Hd8C5MZGTAEhkCKmtyIwYUrapsI0xfKww== + integrity: sha512-WYMjqCnPVS5JA+XvwEnpwucJpVi2+q9cdCFpbhxgWGsCtforFBEkuP9+nCyy/wnU/0SyLcLRIeZct9ayMGcXoQ== /elliptic/6.4.1: dependencies: bn.js: 4.11.8 @@ -1548,15 +1645,6 @@ packages: dev: true resolution: integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - /expand-brackets/0.1.5: - dependencies: - is-posix-bracket: 0.1.1 - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= /expand-brackets/2.1.4: dependencies: debug: 2.6.9 @@ -1572,15 +1660,6 @@ packages: optional: true resolution: integrity: sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - /expand-range/1.8.2: - dependencies: - fill-range: 2.2.4 - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= /extend-shallow/2.0.1: dependencies: is-extendable: 0.1.1 @@ -1610,15 +1689,6 @@ packages: node: '>=0.12' resolution: integrity: sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== - /extglob/0.3.2: - dependencies: - is-extglob: 1.0.0 - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= /extglob/2.0.4: dependencies: array-unique: 0.3.2 @@ -1664,26 +1734,6 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= - /filename-regex/2.0.1: - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= - /fill-range/2.2.4: - dependencies: - is-number: 2.1.0 - isobject: 2.1.0 - randomatic: 3.1.0 - repeat-element: 1.1.3 - repeat-string: 1.6.1 - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== /fill-range/4.0.0: dependencies: extend-shallow: 2.0.1 @@ -1714,15 +1764,6 @@ packages: optional: true resolution: integrity: sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - /for-own/0.1.5: - dependencies: - for-in: 1.0.2 - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= /foreach/2.0.5: dev: true resolution: @@ -1775,23 +1816,14 @@ packages: optional: true resolution: integrity: sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - /glob-base/0.3.0: - dependencies: - glob-parent: 2.0.0 - is-glob: 2.0.1 - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= - /glob-parent/2.0.0: + /glob-parent/3.1.0: dependencies: - is-glob: 2.0.1 + is-glob: 3.1.0 + path-dirname: 1.0.2 dev: true optional: true resolution: - integrity: sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + integrity: sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= /glob/7.1.2: dependencies: fs.realpath: 1.0.0 @@ -1820,12 +1852,6 @@ packages: node: '>=4' resolution: integrity: sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg== - /globals/9.18.0: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== /globby/5.0.0: dependencies: array-union: 1.0.2 @@ -1936,15 +1962,6 @@ packages: dev: true resolution: integrity: sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= - /home-or-tmp/2.0.0: - dependencies: - os-homedir: 1.0.2 - os-tmpdir: 1.0.2 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-42w/LSyufXRqhX440Y1fMqeILbg= /htmlescape/1.1.1: dev: true engines: @@ -2062,7 +2079,7 @@ packages: integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== /is-binary-path/1.0.1: dependencies: - binary-extensions: 1.11.0 + binary-extensions: 1.12.0 dev: true engines: node: '>=0.10.0' @@ -2125,22 +2142,6 @@ packages: optional: true resolution: integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - /is-dotfile/1.0.3: - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= - /is-equal-shallow/0.1.3: - dependencies: - is-primitive: 2.0.0 - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= /is-extendable/0.1.1: dev: true engines: @@ -2157,45 +2158,37 @@ packages: optional: true resolution: integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - /is-extglob/1.0.0: + /is-extglob/2.1.1: dev: true engines: node: '>=0.10.0' optional: true resolution: - integrity: sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= - /is-finite/1.0.2: - dependencies: - number-is-nan: 1.0.1 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= /is-fullwidth-code-point/2.0.0: dev: true engines: node: '>=4' resolution: integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - /is-glob/2.0.1: + /is-glob/3.1.0: dependencies: - is-extglob: 1.0.0 + is-extglob: 2.1.1 dev: true engines: node: '>=0.10.0' optional: true resolution: - integrity: sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= - /is-number/2.1.0: + integrity: sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + /is-glob/4.0.0: dependencies: - kind-of: 3.2.2 + is-extglob: 2.1.1 dev: true engines: node: '>=0.10.0' optional: true resolution: - integrity: sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + integrity: sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A= /is-number/3.0.0: dependencies: kind-of: 3.2.2 @@ -2205,13 +2198,6 @@ packages: optional: true resolution: integrity: sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - /is-number/4.0.0: - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== /is-path-cwd/1.0.0: dev: true engines: @@ -2234,29 +2220,21 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-jvW33lBDej/cprToZe96pVy0gDY= - /is-plain-object/2.0.4: - dependencies: - isobject: 3.0.1 - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - /is-posix-bracket/0.1.1: + /is-plain-obj/1.1.0: dev: true engines: node: '>=0.10.0' - optional: true resolution: - integrity: sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= - /is-primitive/2.0.0: + integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + /is-plain-object/2.0.4: + dependencies: + isobject: 3.0.1 dev: true engines: node: '>=0.10.0' optional: true resolution: - integrity: sha1-IHurkWOEmcB7Kt8kCkGochADRXU= + integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== /is-promise/2.1.0: dev: true resolution: @@ -2314,6 +2292,12 @@ packages: optional: true resolution: integrity: sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + /js-levenshtein/1.1.3: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-/812MXr9RBtMObviZ8gQBhHO8MOrGj8HlEE+4ccMTElNA/6I3u39u+bhny55Lk921yn44nSZFy9naNLElL5wgQ== /js-tokens/3.0.2: dev: true resolution: @@ -2335,11 +2319,13 @@ packages: hasBin: true resolution: integrity: sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - /jsesc/1.3.0: + /jsesc/2.5.1: dev: true + engines: + node: '>=4' hasBin: true resolution: - integrity: sha1-RsP+yMGJKxKwgz25vHYiF226s0s= + integrity: sha1-5CGiqOINawgZ3yiQj3glJrlt0f4= /json-schema-traverse/0.4.1: dev: true resolution: @@ -2428,6 +2414,11 @@ packages: node: '>= 0.8.0' resolution: integrity: sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + /lodash.debounce/4.0.8: + dev: true + optional: true + resolution: + integrity: sha1-gteb/zCmfEAF/9XiUVMArZyk168= /lodash.memoize/3.0.4: dev: true resolution: @@ -2463,11 +2454,6 @@ packages: optional: true resolution: integrity: sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - /math-random/1.0.1: - dev: true - optional: true - resolution: - integrity: sha1-izqsWIuKZuSXXjzepn97sylgH6w= /md5.js/1.3.4: dependencies: hash-base: 3.0.4 @@ -2475,27 +2461,6 @@ packages: dev: true resolution: integrity: sha1-6b296UogpawYsENA/Fdk1bCdkB0= - /micromatch/2.3.11: - dependencies: - arr-diff: 2.0.0 - array-unique: 0.2.1 - braces: 1.8.5 - expand-brackets: 0.1.5 - extglob: 0.3.2 - filename-regex: 2.0.1 - is-extglob: 1.0.0 - is-glob: 2.0.1 - kind-of: 3.2.2 - normalize-path: 2.1.1 - object.omit: 2.0.1 - parse-glob: 3.0.4 - regex-cache: 0.4.4 - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= /micromatch/3.1.10: dependencies: arr-diff: 4.0.0 @@ -2600,6 +2565,10 @@ packages: dev: true resolution: integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + /ms/2.1.1: + dev: true + resolution: + integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== /mute-stream/0.0.7: dev: true resolution: @@ -2636,6 +2605,12 @@ packages: dev: true resolution: integrity: sha512-2NpiFHqC87y/zFke0fC0spBXL3bBsoh/p5H1EFhshxjCR5+0g2d6BiXbUFz9v1sAcxsk2htp2eQnNIci2dIYcA== + /node-releases/1.0.0-alpha.11: + dependencies: + semver: 5.5.1 + dev: true + resolution: + integrity: sha512-CaViu+2FqTNYOYNihXa5uPS/zry92I3vPU4nCB6JB3OeZ2UGtOpF5gRwuN4+m3hbEcL47bOXyun1jX2iC+3uEQ== /normalize-path/2.1.1: dependencies: remove-trailing-separator: 1.1.0 @@ -2645,12 +2620,6 @@ packages: optional: true resolution: integrity: sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - /number-is-nan/1.0.1: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= /object-assign/4.1.1: dev: true engines: @@ -2683,16 +2652,6 @@ packages: optional: true resolution: integrity: sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - /object.omit/2.0.1: - dependencies: - for-own: 0.1.5 - is-extendable: 0.1.1 - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= /object.pick/1.3.0: dependencies: isobject: 3.0.1 @@ -2733,26 +2692,20 @@ packages: dev: true resolution: integrity: sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= - /os-homedir/1.0.2: - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-/7xJiDNuDoM94MFox+8VISGqf7M= /os-tmpdir/1.0.2: dev: true engines: node: '>=0.10.0' resolution: integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - /output-file-sync/1.1.2: + /output-file-sync/2.0.1: dependencies: graceful-fs: 4.1.11 + is-plain-obj: 1.1.0 mkdirp: 0.5.1 - object-assign: 4.1.1 dev: true resolution: - integrity: sha1-0KM+7+YaIF+suQCS6CZZjVJFznY= + integrity: sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ== /pako/1.0.6: dev: true resolution: @@ -2774,18 +2727,6 @@ packages: resolution: integrity: sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw== tarball: 'http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz' - /parse-glob/3.0.4: - dependencies: - glob-base: 0.3.0 - is-dotfile: 1.0.3 - is-extglob: 1.0.0 - is-glob: 2.0.1 - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha1-ssN2z7EfNVE7rdFz7wu246OIORw= /pascalcase/0.1.1: dev: true engines: @@ -2797,6 +2738,11 @@ packages: dev: true resolution: integrity: sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + /path-dirname/1.0.2: + dev: true + optional: true + resolution: + integrity: sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= /path-is-absolute/1.0.1: dev: true engines: @@ -2874,13 +2820,6 @@ packages: node: '>= 0.8.0' resolution: integrity: sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - /preserve/0.2.0: - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= /private/0.1.8: dev: true engines: @@ -2940,17 +2879,6 @@ packages: node: '>=0.4.x' resolution: integrity: sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= - /randomatic/3.1.0: - dependencies: - is-number: 4.0.0 - kind-of: 6.0.2 - math-random: 1.0.1 - dev: true - engines: - node: '>= 0.10.0' - optional: true - resolution: - integrity: sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ== /randombytes/2.0.6: dependencies: safe-buffer: 5.1.2 @@ -2994,35 +2922,24 @@ packages: optional: true resolution: integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - /regenerate/1.4.0: - dev: true - resolution: - integrity: sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - /regenerator-runtime/0.10.5: + /regenerate-unicode-properties/7.0.0: + dependencies: + regenerate: 1.4.0 dev: true + engines: + node: '>=4' resolution: - integrity: sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= - /regenerator-runtime/0.11.1: + integrity: sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw== + /regenerate/1.4.0: dev: true resolution: - integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - /regenerator-transform/0.10.1: + integrity: sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + /regenerator-transform/0.13.3: dependencies: - babel-runtime: 6.26.0 - babel-types: 6.26.0 private: 0.1.8 dev: true resolution: - integrity: sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== - /regex-cache/0.4.4: - dependencies: - is-equal-shallow: 0.1.3 - dev: true - engines: - node: '>=0.10.0' - optional: true - resolution: - integrity: sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== + integrity: sha512-5ipTrZFSq5vU2YoGoww4uaRVAK4wyYC4TSICibbfEPOruUu8FFP7ErV0BjmbIOEpn3O/k9na9UEdYR/3m7N6uA== /regex-not/1.0.2: dependencies: extend-shallow: 3.0.2 @@ -3047,25 +2964,30 @@ packages: node: '>=4.0.0' resolution: integrity: sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw== - /regexpu-core/2.0.0: + /regexpu-core/4.2.0: dependencies: regenerate: 1.4.0 - regjsgen: 0.2.0 - regjsparser: 0.1.5 + regenerate-unicode-properties: 7.0.0 + regjsgen: 0.4.0 + regjsparser: 0.3.0 + unicode-match-property-ecmascript: 1.0.4 + unicode-match-property-value-ecmascript: 1.0.2 dev: true + engines: + node: '>=4' resolution: - integrity: sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= - /regjsgen/0.2.0: + integrity: sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw== + /regjsgen/0.4.0: dev: true resolution: - integrity: sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= - /regjsparser/0.1.5: + integrity: sha512-X51Lte1gCYUdlwhF28+2YMO0U6WeN0GLpgpA7LK7mbdDnkQYiwvEpmpe0F/cv5L14EbxgrdayAG3JETBv0dbXA== + /regjsparser/0.3.0: dependencies: jsesc: 0.5.0 dev: true hasBin: true resolution: - integrity: sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + integrity: sha512-zza72oZBBHzt64G7DxdqrOo/30bhHkwMUoT0WqfGu98XLd7N+1tsy5MJ96Bk4MD0y74n629RhmrGW6XlnLLwCA== /remove-trailing-separator/1.1.0: dev: true optional: true @@ -3085,14 +3007,6 @@ packages: optional: true resolution: integrity: sha1-jcrkcOHIirwtYA//Sndihtp15jc= - /repeating/2.0.1: - dependencies: - is-finite: 1.0.2 - dev: true - engines: - node: '>=0.10.0' - resolution: - integrity: sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= /require-uncached/1.0.3: dependencies: caller-path: 0.1.0 @@ -3266,12 +3180,12 @@ packages: dev: true resolution: integrity: sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= - /slash/1.0.0: + /slash/2.0.0: dev: true engines: - node: '>=0.10.0' + node: '>=6' resolution: - integrity: sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== /slice-ansi/1.0.0: dependencies: is-fullwidth-code-point: 2.0.0 @@ -3327,12 +3241,6 @@ packages: optional: true resolution: integrity: sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== - /source-map-support/0.4.18: - dependencies: - source-map: 0.5.7 - dev: true - resolution: - integrity: sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== /source-map-url/0.4.0: dev: true optional: true @@ -3457,14 +3365,14 @@ packages: node: '>=0.8.0' resolution: integrity: sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - /supports-color/5.4.0: + /supports-color/5.5.0: dependencies: has-flag: 3.0.0 dev: true engines: node: '>=4' resolution: - integrity: sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== + integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== /symbol-observable/1.0.1: dev: true engines: @@ -3526,12 +3434,12 @@ packages: dev: true resolution: integrity: sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= - /to-fast-properties/1.0.3: + /to-fast-properties/2.0.0: dev: true engines: - node: '>=0.10.0' + node: '>=4' resolution: - integrity: sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= /to-object-path/0.3.0: dependencies: kind-of: 3.2.2 @@ -3600,6 +3508,33 @@ packages: hasBin: true resolution: integrity: sha512-13EaeocO4edF/3JKime9rD7oB6QI8llAGhgn5fKOPyfkJbRb6NFv9pYV6dFEmpa4uRjKeBqLZP8GpuzqHlKDMQ== + /unicode-canonical-property-names-ecmascript/1.0.4: + dev: true + engines: + node: '>=4' + resolution: + integrity: sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + /unicode-match-property-ecmascript/1.0.4: + dependencies: + unicode-canonical-property-names-ecmascript: 1.0.4 + unicode-property-aliases-ecmascript: 1.0.4 + dev: true + engines: + node: '>=4' + resolution: + integrity: sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + /unicode-match-property-value-ecmascript/1.0.2: + dev: true + engines: + node: '>=4' + resolution: + integrity: sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ== + /unicode-property-aliases-ecmascript/1.0.4: + dev: true + engines: + node: '>=4' + resolution: + integrity: sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg== /union-value/1.0.0: dependencies: arr-union: 3.1.0 @@ -3622,6 +3557,13 @@ packages: optional: true resolution: integrity: sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + /upath/1.1.0: + dev: true + engines: + node: '>=4' + optional: true + resolution: + integrity: sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw== /uri-js/4.2.2: dependencies: punycode: 2.1.1 @@ -3647,13 +3589,6 @@ packages: optional: true resolution: integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - /user-home/1.1.1: - dev: true - engines: - node: '>=0.10.0' - hasBin: true - resolution: - integrity: sha1-K1viOjK2Onyd640PKNSFcko98ZA= /util-deprecate/1.0.2: dev: true resolution: @@ -3670,14 +3605,6 @@ packages: dev: true resolution: integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== - /v8flags/2.1.1: - dependencies: - user-home: 1.1.1 - dev: true - engines: - node: '>= 0.10.0' - resolution: - integrity: sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= /vm-browserify/1.1.0: dev: true resolution: @@ -3715,11 +3642,12 @@ registry: 'https://registry.npmjs.org/' shrinkwrapMinorVersion: 9 shrinkwrapVersion: 3 specifiers: + '@babel/cli': ^7.1.0 + '@babel/core': ^7.1.0 + '@babel/plugin-syntax-object-rest-spread': ^7.0.0 + '@babel/preset-env': ^7.1.0 '@codefeathers/iseq': ^1.2.1 '@codefeathers/promise.object': ^0.9.5 - babel-cli: ^6.26.0 - babel-plugin-transform-object-rest-spread: ^6.26.0 - babel-preset-env: ^1.7.0 browserify: ^16.2.2 eslint: ^5.2.0 json-stringify-safe: ^5.0.1 diff --git a/src/gunner.js b/src/Gunner.js similarity index 98% rename from src/gunner.js rename to src/Gunner.js index 3db7b59..816f39d 100644 --- a/src/gunner.js +++ b/src/Gunner.js @@ -109,7 +109,6 @@ class Gunner { const expect = require('./lib/expect'); module.exports = Gunner; -module.exports.Runner = require('./runner'); module.exports.expect = expect; module.exports.expectMany = expect.expectMany; module.exports.Start = symbols.Start; diff --git a/src/runner/index.js b/src/Runner.js similarity index 91% rename from src/runner/index.js rename to src/Runner.js index 3b46c48..dd59c42 100644 --- a/src/runner/index.js +++ b/src/Runner.js @@ -1,9 +1,9 @@ -const reporters = require('../reporters'); +const reporters = require('./reporters'); const isBrowser = new Function("try { return this === window } catch (e) { return false }"); -const runner = instances => (options = {}) => { +const Runner = instances => (options = {}) => { if(isBrowser()) throw new Error( @@ -51,4 +51,4 @@ const runner = instances => (options = {}) => { }; -module.exports = runner; +module.exports = Runner; diff --git a/src/lib/buildTestQueue.js b/src/lib/buildTestQueue.js index 881dca0..c7c20bb 100644 --- a/src/lib/buildTestQueue.js +++ b/src/lib/buildTestQueue.js @@ -1,6 +1,6 @@ // Only imported for JSDoc /* eslint-disable-next-line */ -const Gunner = require('../gunner'); +const Gunner = require('../Gunner'); const symbols = require('../util/symbols'); const wrap = type => unit => ({ type, unit }); diff --git a/src/lib/testrunner.js b/src/lib/testrunner.js index 0118597..35887ef 100644 --- a/src/lib/testrunner.js +++ b/src/lib/testrunner.js @@ -1,6 +1,6 @@ // Only imported for JSDoc /* eslint-disable-next-line */ -const Gunner = require('../gunner'); +const Gunner = require('../Gunner'); Promise.object = require('@codefeathers/promise.object'); const { last, pipe, pick, assignToObject } = require('../util');