From 9ac58073bb0b5006bdcb491e9c7114451330d1ab Mon Sep 17 00:00:00 2001 From: Armagan Amcalar Date: Sun, 29 Dec 2019 15:36:33 +0100 Subject: [PATCH] Require minimum Node.js version of 10 and remove babel transpiling Node.js version 8 is out of maintenance at the end of 2019, and the minimum supported version will be 10, so we don't need babel transforms anymore. --- .travis.yml | 3 +- dist/components/component.js | 62 - dist/components/component.js.map | 1 - dist/components/configurable.js | 22 - dist/components/configurable.js.map | 1 - dist/components/discovery.js | 90 - dist/components/discovery.js.map | 1 - dist/components/monitor.js | 84 - dist/components/monitor.js.map | 1 - dist/components/monitorable.js | 53 - dist/components/monitorable.js.map | 1 - dist/components/pending-balanced-requester.js | 41 - .../pending-balanced-requester.js.map | 1 - dist/components/publisher.js | 55 - dist/components/publisher.js.map | 1 - dist/components/requester.js | 129 - dist/components/requester.js.map | 1 - dist/components/responder.js | 67 - dist/components/responder.js.map | 1 - dist/components/sockend.js | 126 - dist/components/sockend.js.map | 1 - dist/components/subscriber.js | 79 - dist/components/subscriber.js.map | 1 - dist/components/time-balanced-requester.js | 185 - .../components/time-balanced-requester.js.map | 1 - dist/index.js | 46 - dist/index.js.map | 1 - dist/monitoring-tool/frontend/index.html | 316 - dist/monitoring-tool/index.js | 183 - dist/monitoring-tool/index.js.map | 1 - dist/options-builder.js | 75 - dist/options-builder.js.map | 1 - package-lock.json | 5156 ++++++----------- package.json | 28 +- 34 files changed, 1637 insertions(+), 5178 deletions(-) delete mode 100644 dist/components/component.js delete mode 100644 dist/components/component.js.map delete mode 100644 dist/components/configurable.js delete mode 100644 dist/components/configurable.js.map delete mode 100644 dist/components/discovery.js delete mode 100644 dist/components/discovery.js.map delete mode 100644 dist/components/monitor.js delete mode 100644 dist/components/monitor.js.map delete mode 100644 dist/components/monitorable.js delete mode 100644 dist/components/monitorable.js.map delete mode 100644 dist/components/pending-balanced-requester.js delete mode 100644 dist/components/pending-balanced-requester.js.map delete mode 100644 dist/components/publisher.js delete mode 100644 dist/components/publisher.js.map delete mode 100644 dist/components/requester.js delete mode 100644 dist/components/requester.js.map delete mode 100644 dist/components/responder.js delete mode 100644 dist/components/responder.js.map delete mode 100644 dist/components/sockend.js delete mode 100644 dist/components/sockend.js.map delete mode 100644 dist/components/subscriber.js delete mode 100644 dist/components/subscriber.js.map delete mode 100644 dist/components/time-balanced-requester.js delete mode 100644 dist/components/time-balanced-requester.js.map delete mode 100644 dist/index.js delete mode 100644 dist/index.js.map delete mode 100644 dist/monitoring-tool/frontend/index.html delete mode 100644 dist/monitoring-tool/index.js delete mode 100644 dist/monitoring-tool/index.js.map delete mode 100644 dist/options-builder.js delete mode 100644 dist/options-builder.js.map diff --git a/.travis.yml b/.travis.yml index e05d054..fd3e968 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,9 @@ language: node_js matrix: include: - - node_js: '6' - - node_js: '8' - node_js: '10' - node_js: '12' + - node_js: '13' after_success: - ./node_modules/.bin/nyc report --reporter=text-lcov | ./node_modules/.bin/coveralls notifications: diff --git a/dist/components/component.js b/dist/components/component.js deleted file mode 100644 index d744d96..0000000 --- a/dist/components/component.js +++ /dev/null @@ -1,62 +0,0 @@ -"use strict"; - -require("core-js/modules/es7.object.get-own-property-descriptors"); - -require("core-js/modules/es6.symbol"); - -require("core-js/modules/es6.object.to-string"); - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(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; } - -const EventEmitter = require('eventemitter2').EventEmitter2; - -const Discovery = require('./discovery'); - -module.exports = class Component extends EventEmitter { - constructor(advertisement, discoveryOptions = {}) { - super({ - wildcard: true, - // should the event emitter use wildcards. - delimiter: '::', - // the delimiter used to segment namespaces, defaults to `.`. - newListener: false, - // if you want to emit the newListener event set to true. - maxListeners: 2000 // the max number of listeners that can be assigned to an event, defaults to 10. - - }); - advertisement.key = this.constructor.environment + '$$' + (advertisement.key || ''); - this.advertisement = advertisement; - this.advertisement.axon_type = this.type; - this.discoveryOptions = _objectSpread({}, Discovery.defaults, {}, discoveryOptions); - this.discoveryOptions.address = this.discoveryOptions.address || '0.0.0.0'; - } - - startDiscovery() { - this.discovery = new Discovery(this.advertisement, this.discoveryOptions); - this.discovery.on('added', obj => { - if (obj.advertisement.axon_type != this.oppo || obj.advertisement.key != this.advertisement.key || this.advertisement.namespace != obj.advertisement.namespace) return; - this.onAdded(obj); - this.emit('cote:added', obj); - }); - this.discovery.on('removed', obj => { - if (obj.advertisement.axon_type != this.oppo || obj.advertisement.key != this.advertisement.key || this.advertisement.namespace != obj.advertisement.namespace) return; - this.onRemoved(obj); - this.emit('cote:removed', obj); - }); - } - - onAdded() {} - - onRemoved() {} - - close() { - this.sock && this.sock.close(); - this.discovery && this.discovery.stop(); - } - -}; -//# sourceMappingURL=component.js.map \ No newline at end of file diff --git a/dist/components/component.js.map b/dist/components/component.js.map deleted file mode 100644 index 1e84a08..0000000 --- a/dist/components/component.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/components/component.js"],"names":["EventEmitter","require","EventEmitter2","Discovery","module","exports","Component","constructor","advertisement","discoveryOptions","wildcard","delimiter","newListener","maxListeners","key","environment","axon_type","type","defaults","address","startDiscovery","discovery","on","obj","oppo","namespace","onAdded","emit","onRemoved","close","sock","stop"],"mappings":";;;;;;;;;;;;;;AAAA,MAAMA,YAAY,GAAGC,OAAO,CAAC,eAAD,CAAP,CAAyBC,aAA9C;;AACA,MAAMC,SAAS,GAAGF,OAAO,CAAC,aAAD,CAAzB;;AAEAG,MAAM,CAACC,OAAP,GAAiB,MAAMC,SAAN,SAAwBN,YAAxB,CAAqC;AAClDO,EAAAA,WAAW,CAACC,aAAD,EAAgBC,gBAAgB,GAAG,EAAnC,EAAuC;AAC9C,UAAM;AACFC,MAAAA,QAAQ,EAAE,IADR;AACc;AAChBC,MAAAA,SAAS,EAAE,IAFT;AAEe;AACjBC,MAAAA,WAAW,EAAE,KAHX;AAGkB;AACpBC,MAAAA,YAAY,EAAE,IAJZ,CAIkB;;AAJlB,KAAN;AAOAL,IAAAA,aAAa,CAACM,GAAd,GAAoB,KAAKP,WAAL,CAAiBQ,WAAjB,GAA+B,IAA/B,IAAuCP,aAAa,CAACM,GAAd,IAAqB,EAA5D,CAApB;AAEA,SAAKN,aAAL,GAAqBA,aAArB;AACA,SAAKA,aAAL,CAAmBQ,SAAnB,GAA+B,KAAKC,IAApC;AAEA,SAAKR,gBAAL,qBAA6BN,SAAS,CAACe,QAAvC,MAAoDT,gBAApD;AACA,SAAKA,gBAAL,CAAsBU,OAAtB,GAAgC,KAAKV,gBAAL,CAAsBU,OAAtB,IAAiC,SAAjE;AACH;;AAEDC,EAAAA,cAAc,GAAG;AACb,SAAKC,SAAL,GAAiB,IAAIlB,SAAJ,CAAc,KAAKK,aAAnB,EAAkC,KAAKC,gBAAvC,CAAjB;AAEA,SAAKY,SAAL,CAAeC,EAAf,CAAkB,OAAlB,EAA4BC,GAAD,IAAS;AAChC,UACIA,GAAG,CAACf,aAAJ,CAAkBQ,SAAlB,IAA+B,KAAKQ,IAApC,IACAD,GAAG,CAACf,aAAJ,CAAkBM,GAAlB,IAAyB,KAAKN,aAAL,CAAmBM,GAD5C,IAEA,KAAKN,aAAL,CAAmBiB,SAAnB,IAAgCF,GAAG,CAACf,aAAJ,CAAkBiB,SAHtD,EAIE;AAEF,WAAKC,OAAL,CAAaH,GAAb;AACA,WAAKI,IAAL,CAAU,YAAV,EAAwBJ,GAAxB;AACH,KATD;AAUA,SAAKF,SAAL,CAAeC,EAAf,CAAkB,SAAlB,EAA8BC,GAAD,IAAS;AAClC,UACIA,GAAG,CAACf,aAAJ,CAAkBQ,SAAlB,IAA+B,KAAKQ,IAApC,IACAD,GAAG,CAACf,aAAJ,CAAkBM,GAAlB,IAAyB,KAAKN,aAAL,CAAmBM,GAD5C,IAEA,KAAKN,aAAL,CAAmBiB,SAAnB,IAAgCF,GAAG,CAACf,aAAJ,CAAkBiB,SAHtD,EAIE;AAEF,WAAKG,SAAL,CAAeL,GAAf;AACA,WAAKI,IAAL,CAAU,cAAV,EAA0BJ,GAA1B;AACH,KATD;AAUH;;AAEDG,EAAAA,OAAO,GAAG,CAAG;;AAEbE,EAAAA,SAAS,GAAG,CAAG;;AAEfC,EAAAA,KAAK,GAAG;AACJ,SAAKC,IAAL,IAAa,KAAKA,IAAL,CAAUD,KAAV,EAAb;AACA,SAAKR,SAAL,IAAkB,KAAKA,SAAL,CAAeU,IAAf,EAAlB;AACH;;AAlDiD,CAAtD","sourcesContent":["const EventEmitter = require('eventemitter2').EventEmitter2;\nconst Discovery = require('./discovery');\n\nmodule.exports = class Component extends EventEmitter {\n constructor(advertisement, discoveryOptions = {}) {\n super({\n wildcard: true, // should the event emitter use wildcards.\n delimiter: '::', // the delimiter used to segment namespaces, defaults to `.`.\n newListener: false, // if you want to emit the newListener event set to true.\n maxListeners: 2000, // the max number of listeners that can be assigned to an event, defaults to 10.\n });\n\n advertisement.key = this.constructor.environment + '$$' + (advertisement.key || '');\n\n this.advertisement = advertisement;\n this.advertisement.axon_type = this.type;\n\n this.discoveryOptions = { ...Discovery.defaults, ...discoveryOptions };\n this.discoveryOptions.address = this.discoveryOptions.address || '0.0.0.0';\n }\n\n startDiscovery() {\n this.discovery = new Discovery(this.advertisement, this.discoveryOptions);\n\n this.discovery.on('added', (obj) => {\n if (\n obj.advertisement.axon_type != this.oppo ||\n obj.advertisement.key != this.advertisement.key ||\n this.advertisement.namespace != obj.advertisement.namespace\n ) return;\n\n this.onAdded(obj);\n this.emit('cote:added', obj);\n });\n this.discovery.on('removed', (obj) => {\n if (\n obj.advertisement.axon_type != this.oppo ||\n obj.advertisement.key != this.advertisement.key ||\n this.advertisement.namespace != obj.advertisement.namespace\n ) return;\n\n this.onRemoved(obj);\n this.emit('cote:removed', obj);\n });\n }\n\n onAdded() { };\n\n onRemoved() { };\n\n close() {\n this.sock && this.sock.close();\n this.discovery && this.discovery.stop();\n }\n};\n"],"file":"component.js"} \ No newline at end of file diff --git a/dist/components/configurable.js b/dist/components/configurable.js deleted file mode 100644 index 72a9bcf..0000000 --- a/dist/components/configurable.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; - -module.exports = Base => class Configurable extends Base { - static get environment() { - return this.constructor._environment || ''; - } - - static setEnvironment(environment) { - if (!environment) return; - this.constructor._environment = environment + ':'; - } - - static get useHostNames() { - return this.constructor._useHostNames || false; - } - - static setUseHostNames(useHostNames) { - this.constructor._useHostNames = useHostNames; - } - -}; -//# sourceMappingURL=configurable.js.map \ No newline at end of file diff --git a/dist/components/configurable.js.map b/dist/components/configurable.js.map deleted file mode 100644 index 9cc9003..0000000 --- a/dist/components/configurable.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/components/configurable.js"],"names":["module","exports","Base","Configurable","environment","constructor","_environment","setEnvironment","useHostNames","_useHostNames","setUseHostNames"],"mappings":"AAAA;;AAEAA,MAAM,CAACC,OAAP,GAAkBC,IAAD,IAAU,MAAMC,YAAN,SAA2BD,IAA3B,CAAgC;AACvD,aAAWE,WAAX,GAAyB;AACrB,WAAO,KAAKC,WAAL,CAAiBC,YAAjB,IAAiC,EAAxC;AACH;;AAED,SAAOC,cAAP,CAAsBH,WAAtB,EAAmC;AAC/B,QAAI,CAACA,WAAL,EAAkB;AAElB,SAAKC,WAAL,CAAiBC,YAAjB,GAAgCF,WAAW,GAAG,GAA9C;AACH;;AAGD,aAAWI,YAAX,GAA0B;AACtB,WAAO,KAAKH,WAAL,CAAiBI,aAAjB,IAAkC,KAAzC;AACH;;AAGD,SAAOC,eAAP,CAAuBF,YAAvB,EAAqC;AACjC,SAAKH,WAAL,CAAiBI,aAAjB,GAAiCD,YAAjC;AACH;;AAnBsD,CAA3D","sourcesContent":["'use strict';\n\nmodule.exports = (Base) => class Configurable extends Base {\n static get environment() {\n return this.constructor._environment || '';\n }\n\n static setEnvironment(environment) {\n if (!environment) return;\n\n this.constructor._environment = environment + ':';\n }\n\n\n static get useHostNames() {\n return this.constructor._useHostNames || false;\n }\n\n\n static setUseHostNames(useHostNames) {\n this.constructor._useHostNames = useHostNames;\n };\n};\n"],"file":"configurable.js"} \ No newline at end of file diff --git a/dist/components/discovery.js b/dist/components/discovery.js deleted file mode 100644 index f2ad641..0000000 --- a/dist/components/discovery.js +++ /dev/null @@ -1,90 +0,0 @@ -"use strict"; - -require("core-js/modules/es7.object.get-own-property-descriptors"); - -require("core-js/modules/es6.symbol"); - -require("core-js/modules/es6.object.to-string"); - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(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; } - -const Discover = require('@dashersw/node-discover'); // eslint-disable-next-line - - -const colors = require('colors'); - -const defaultOptions = { - helloInterval: 2000, - checkInterval: 4000, - nodeTimeout: 5000, - masterTimeout: 6000, - monitor: false, - log: true, - helloLogsEnabled: true, - statusLogsEnabled: true, - ignoreProcess: false -}; - -class Discovery extends Discover { - constructor(advertisement, options) { - options = _objectSpread({}, defaultOptions, {}, Discovery.defaults, {}, options); - super(options); - this.advertisement = _objectSpread({ - type: 'service' - }, advertisement); - this.advertise(this.advertisement); - this.me.id = this.broadcast.instanceUuid; - this.me.processId = this.broadcast.processUuid; - this.me.processCommand = process.argv.slice(1).map(n => { - return n.split('/').slice(-2).join('/'); - }).join(' '); - options.log && this.log(this.helloLogger()); - this.on('added', obj => { - if (!options.monitor && obj.advertisement.key != this.advertisement.key) return; - options.log && options.statusLogsEnabled && options.helloLogsEnabled && this.log(this.statusLogger(obj, 'online')); - }); - this.on('removed', obj => { - if (!options.monitor && obj.advertisement.key != this.advertisement.key) return; - options.log && options.statusLogsEnabled && this.log(this.statusLogger(obj, 'offline')); - }); - } - - static setDefaults(options) { - this.defaults = options; - } - - log(logs) { - console.log.apply(console.log, logs); - } - - helloLogger() { - return ['\nHello! I\'m'.white, ...this.statusLogger(this.me), '\n========================\n'.white]; - } - - statusLogger(obj, status) { - const logs = []; - - if (status) { - const statusLog = status == 'online' ? '.online'.green : '.offline'.red; - logs.push(this.advertisement.name, '>', obj.advertisement.type.magenta + statusLog); - } else { - logs.push(); - } - - logs.push(`${obj.advertisement.name.white}${'#'.grey}${obj.id.grey}`); - - if (obj.advertisement.port) { - logs.push('on', obj.advertisement.port.toString().blue); - } - - return logs; - } - -} - -module.exports = Discovery; -//# sourceMappingURL=discovery.js.map \ No newline at end of file diff --git a/dist/components/discovery.js.map b/dist/components/discovery.js.map deleted file mode 100644 index b0991ca..0000000 --- a/dist/components/discovery.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/components/discovery.js"],"names":["Discover","require","colors","defaultOptions","helloInterval","checkInterval","nodeTimeout","masterTimeout","monitor","log","helloLogsEnabled","statusLogsEnabled","ignoreProcess","Discovery","constructor","advertisement","options","defaults","type","advertise","me","id","broadcast","instanceUuid","processId","processUuid","processCommand","process","argv","slice","map","n","split","join","helloLogger","on","obj","key","statusLogger","setDefaults","logs","console","apply","white","status","statusLog","green","red","push","name","magenta","grey","port","toString","blue","module","exports"],"mappings":"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","sourcesContent":["const Discover = require('@dashersw/node-discover');\n\n// eslint-disable-next-line\nconst colors = require('colors');\n\nconst defaultOptions = {\n helloInterval: 2000,\n checkInterval: 4000,\n nodeTimeout: 5000,\n masterTimeout: 6000,\n monitor: false,\n log: true,\n helloLogsEnabled: true,\n statusLogsEnabled: true,\n ignoreProcess: false,\n};\n\nclass Discovery extends Discover {\n constructor(advertisement, options) {\n options = { ...defaultOptions, ...Discovery.defaults, ...options };\n\n super(options);\n\n this.advertisement = { type: 'service', ...advertisement };\n\n this.advertise(this.advertisement);\n\n this.me.id = this.broadcast.instanceUuid;\n this.me.processId = this.broadcast.processUuid;\n this.me.processCommand = process.argv.slice(1).map((n) => {\n return n.split('/').slice(-2).join('/');\n }).join(' ');\n\n options.log && this.log(this.helloLogger());\n\n this.on('added', (obj) => {\n if (!options.monitor && obj.advertisement.key != this.advertisement.key) return;\n\n options.log && options.statusLogsEnabled && options.helloLogsEnabled &&\n this.log(this.statusLogger(obj, 'online'));\n });\n\n this.on('removed', (obj) => {\n if (!options.monitor && obj.advertisement.key != this.advertisement.key) return;\n\n options.log && options.statusLogsEnabled &&\n this.log(this.statusLogger(obj, 'offline'));\n });\n }\n\n static setDefaults(options) {\n this.defaults = options;\n }\n\n log(logs) {\n console.log.apply(console.log, logs);\n }\n\n helloLogger() {\n return ['\\nHello! I\\'m'.white, ...this.statusLogger(this.me), '\\n========================\\n'.white];\n }\n\n statusLogger(obj, status) {\n const logs = [];\n\n if (status) {\n const statusLog = status == 'online' ? '.online'.green : '.offline'.red;\n logs.push(this.advertisement.name, '>', obj.advertisement.type.magenta + statusLog);\n } else {\n logs.push();\n }\n\n logs.push(\n `${obj.advertisement.name.white}${'#'.grey}${obj.id.grey}`);\n\n if (obj.advertisement.port) {\n logs.push('on', obj.advertisement.port.toString().blue);\n }\n\n return logs;\n }\n}\n\nmodule.exports = Discovery;\n"],"file":"discovery.js"} \ No newline at end of file diff --git a/dist/components/monitor.js b/dist/components/monitor.js deleted file mode 100644 index 3e4e2ad..0000000 --- a/dist/components/monitor.js +++ /dev/null @@ -1,84 +0,0 @@ -"use strict"; - -require("core-js/modules/es7.object.get-own-property-descriptors"); - -require("core-js/modules/es6.symbol"); - -require("core-js/modules/es6.object.to-string"); - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(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; } - -const portfinder = require('portfinder'); - -const charm = require('charm')(); - -const Configurable = require('./configurable'); - -const Component = require('./component'); - -const axon = require('@dashersw/axon'); - -const defaultOptions = { - monitor: true, - log: false -}; -module.exports = class Monitor extends Configurable(Component) { - constructor(advertisement, discoveryOptions = {}, stream) { - advertisement.type = 'monitor'; - discoveryOptions = _objectSpread({}, defaultOptions, {}, discoveryOptions); - super(advertisement, discoveryOptions); - this.stream = stream; - this.sock = new axon.SubEmitterSocket(); - this.sock.sock.on('bind', () => this.startDiscovery()); - this.sock.on('status', status => this.emit('status', status)); - - const onPort = (err, port) => { - advertisement.port = +port; - this.sock.bind(port); - this.sock.sock.server.on('error', err => { - if (err.code != 'EADDRINUSE') throw err; - portfinder.getPort({ - host: this.discoveryOptions.address, - port: this.advertisement.port - }, onPort); - }); - }; - - portfinder.getPort({ - host: this.discoveryOptions.address, - port: this.advertisement.port - }, onPort); - } - - startDiscovery() { - super.startDiscovery(); - if (this.discoveryOptions.disableScreen) return; - const interval = this.discoveryOptions.interval || 5000; - charm.pipe(this.stream || process.stdout); - charm.reset().erase('screen').position(0, 0).write(' '); - - const draw = () => { - charm.erase('screen'); - let index = 3; - charm.position(0, 2); - charm.foreground('green').write('Name').move(16).write('id').move(37).write('Address').move(11).write('Port'); - charm.erase('down'); - this.discovery.eachNode(node => { - let port = node.advertisement.port || '----'; - port += ''; - charm.position(0, index).foreground('cyan').write(node.advertisement.name.slice(0, 20)).move(20 - node.advertisement.name.length, 0).foreground('magenta').write(node.id).move(3, 0).foreground('yellow').write(node.address).move(3, 0).foreground('red').write(port); - index++; - }); - charm.position(0, 1); - setTimeout(draw, interval); - }; - - draw(); - } - -}; -//# sourceMappingURL=monitor.js.map \ No newline at end of file diff --git a/dist/components/monitor.js.map b/dist/components/monitor.js.map deleted file mode 100644 index f82147f..0000000 --- a/dist/components/monitor.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/components/monitor.js"],"names":["portfinder","require","charm","Configurable","Component","axon","defaultOptions","monitor","log","module","exports","Monitor","constructor","advertisement","discoveryOptions","stream","type","sock","SubEmitterSocket","on","startDiscovery","status","emit","onPort","err","port","bind","server","code","getPort","host","address","disableScreen","interval","pipe","process","stdout","reset","erase","position","write","draw","index","foreground","move","discovery","eachNode","node","name","slice","length","id","setTimeout"],"mappings":"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","sourcesContent":["const portfinder = require('portfinder');\nconst charm = require('charm')();\nconst Configurable = require('./configurable');\nconst Component = require('./component');\nconst axon = require('@dashersw/axon');\n\nconst defaultOptions = {\n monitor: true,\n log: false,\n};\n\nmodule.exports = class Monitor extends Configurable(Component) {\n constructor(advertisement, discoveryOptions = {}, stream) {\n advertisement.type = 'monitor';\n\n discoveryOptions = { ...defaultOptions, ...discoveryOptions };\n\n super(advertisement, discoveryOptions);\n\n this.stream = stream;\n\n this.sock = new axon.SubEmitterSocket();\n this.sock.sock.on('bind', () => this.startDiscovery());\n\n this.sock.on('status', (status) => this.emit('status', status));\n\n const onPort = (err, port) => {\n advertisement.port = +port;\n\n this.sock.bind(port);\n this.sock.sock.server.on('error', (err) => {\n if (err.code != 'EADDRINUSE') throw err;\n\n portfinder.getPort({\n host: this.discoveryOptions.address,\n port: this.advertisement.port,\n }, onPort);\n });\n };\n\n portfinder.getPort({\n host: this.discoveryOptions.address,\n port: this.advertisement.port,\n }, onPort);\n }\n\n startDiscovery() {\n super.startDiscovery();\n\n if (this.discoveryOptions.disableScreen) return;\n\n const interval = this.discoveryOptions.interval || 5000;\n\n charm.pipe(this.stream || process.stdout);\n charm.reset().erase('screen').position(0, 0).\n write(' ');\n\n const draw = () => {\n charm.erase('screen');\n let index = 3;\n charm.position(0, 2);\n charm.foreground('green').\n write('Name').move(16).\n write('id').move(37).\n write('Address').move(11).\n write('Port');\n\n charm.erase('down');\n\n this.discovery.eachNode((node) => {\n let port = node.advertisement.port || '----';\n port += '';\n charm.position(0, index).foreground('cyan').\n write(node.advertisement.name.slice(0, 20)).move(20 - node.advertisement.name.length, 0).\n foreground('magenta').write(node.id).move(3, 0).\n foreground('yellow').write(node.address).move(3, 0).\n foreground('red').write(port);\n index++;\n });\n\n charm.position(0, 1);\n\n setTimeout(draw, interval);\n };\n\n draw();\n }\n};\n"],"file":"monitor.js"} \ No newline at end of file diff --git a/dist/components/monitorable.js b/dist/components/monitorable.js deleted file mode 100644 index 32e3a07..0000000 --- a/dist/components/monitorable.js +++ /dev/null @@ -1,53 +0,0 @@ -"use strict"; - -const axon = require('@dashersw/axon'); - -module.exports = Base => class Monitorable extends Base { - startDiscovery() { - super.startDiscovery(); - this.discovery.on('added', obj => { - const adv = obj.advertisement; - - if (adv.type != 'monitor' || !this.advertisement.key.startsWith(adv.key)) { - return; - } - - this.onMonitorAdded(obj); - }); - } - - onMonitorAdded(obj) { - if (!this.monitorStatusPublisher) { - this.monitorStatusPublisher = new axon.PubEmitterSocket(); - this.monitorStatusPublisher.sock.set('retry timeout', 0); - const statusInterval = this.discoveryOptions.statusInterval || 5000; - this.monitorInterval = setInterval(() => this.onMonitorInterval(), statusInterval); - } - - let address = obj.address; - if (this.constructor.useHostNames) address = obj.hostName; - this.monitorStatusPublisher.connect(obj.advertisement.port, address); - } - - onMonitorInterval() { - if (!this.monitorStatusPublisher.sock.socks.length) return; - const nodes = (this.sock.socks || this.sock.sock.socks).map(s => { - if (s.id) return s.id; - - for (const id in this.discovery.nodes) { - const node = this.discovery.nodes[id]; - - if ((this.constructor.useHostNames ? s._host == node.hostName : s.remoteAddress == node.address) && s.remotePort == node.advertisement.port) { - s.id = node.id; - return s.id; - } - } - }); - this.monitorStatusPublisher.emit('status', { - id: this.discovery.me.id, - nodes: nodes - }); - } - -}; -//# sourceMappingURL=monitorable.js.map \ No newline at end of file diff --git a/dist/components/monitorable.js.map b/dist/components/monitorable.js.map deleted file mode 100644 index de2bf2f..0000000 --- a/dist/components/monitorable.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/components/monitorable.js"],"names":["axon","require","module","exports","Base","Monitorable","startDiscovery","discovery","on","obj","adv","advertisement","type","key","startsWith","onMonitorAdded","monitorStatusPublisher","PubEmitterSocket","sock","set","statusInterval","discoveryOptions","monitorInterval","setInterval","onMonitorInterval","address","constructor","useHostNames","hostName","connect","port","socks","length","nodes","map","s","id","node","_host","remoteAddress","remotePort","emit","me"],"mappings":";;AAAA,MAAMA,IAAI,GAAGC,OAAO,CAAC,gBAAD,CAApB;;AAEAC,MAAM,CAACC,OAAP,GAAkBC,IAAD,IAAU,MAAMC,WAAN,SAA0BD,IAA1B,CAA+B;AACtDE,EAAAA,cAAc,GAAG;AACb,UAAMA,cAAN;AAEA,SAAKC,SAAL,CAAeC,EAAf,CAAkB,OAAlB,EAA4BC,GAAD,IAAS;AAChC,YAAMC,GAAG,GAAGD,GAAG,CAACE,aAAhB;;AAEA,UAAID,GAAG,CAACE,IAAJ,IAAY,SAAZ,IAAyB,CAAC,KAAKD,aAAL,CAAmBE,GAAnB,CAAuBC,UAAvB,CAAkCJ,GAAG,CAACG,GAAtC,CAA9B,EAA0E;AACtE;AACH;;AAED,WAAKE,cAAL,CAAoBN,GAApB;AACH,KARD;AASH;;AAEDM,EAAAA,cAAc,CAACN,GAAD,EAAM;AAChB,QAAI,CAAC,KAAKO,sBAAV,EAAkC;AAC9B,WAAKA,sBAAL,GAA8B,IAAIhB,IAAI,CAACiB,gBAAT,EAA9B;AACA,WAAKD,sBAAL,CAA4BE,IAA5B,CAAiCC,GAAjC,CAAqC,eAArC,EAAsD,CAAtD;AACA,YAAMC,cAAc,GAAG,KAAKC,gBAAL,CAAsBD,cAAtB,IAAwC,IAA/D;AAEA,WAAKE,eAAL,GAAuBC,WAAW,CAAC,MAAM,KAAKC,iBAAL,EAAP,EAAiCJ,cAAjC,CAAlC;AACH;;AAED,QAAIK,OAAO,GAAGhB,GAAG,CAACgB,OAAlB;AACA,QAAI,KAAKC,WAAL,CAAiBC,YAArB,EAAmCF,OAAO,GAAGhB,GAAG,CAACmB,QAAd;AAEnC,SAAKZ,sBAAL,CAA4Ba,OAA5B,CAAoCpB,GAAG,CAACE,aAAJ,CAAkBmB,IAAtD,EAA4DL,OAA5D;AACH;;AAEDD,EAAAA,iBAAiB,GAAG;AAChB,QAAI,CAAC,KAAKR,sBAAL,CAA4BE,IAA5B,CAAiCa,KAAjC,CAAuCC,MAA5C,EAAoD;AAEpD,UAAMC,KAAK,GAAG,CAAC,KAAKf,IAAL,CAAUa,KAAV,IAAmB,KAAKb,IAAL,CAAUA,IAAV,CAAea,KAAnC,EAA0CG,GAA1C,CAA+CC,CAAD,IAAO;AAC/D,UAAIA,CAAC,CAACC,EAAN,EAAU,OAAOD,CAAC,CAACC,EAAT;;AAEV,WAAK,MAAMA,EAAX,IAAiB,KAAK7B,SAAL,CAAe0B,KAAhC,EAAuC;AACnC,cAAMI,IAAI,GAAG,KAAK9B,SAAL,CAAe0B,KAAf,CAAqBG,EAArB,CAAb;;AAEA,YAAI,CAAC,KAAKV,WAAL,CAAiBC,YAAjB,GAAgCQ,CAAC,CAACG,KAAF,IAAWD,IAAI,CAACT,QAAhD,GAA2DO,CAAC,CAACI,aAAF,IAAmBF,IAAI,CAACZ,OAApF,KACAU,CAAC,CAACK,UAAF,IAAgBH,IAAI,CAAC1B,aAAL,CAAmBmB,IADvC,EAC6C;AACzCK,UAAAA,CAAC,CAACC,EAAF,GAAOC,IAAI,CAACD,EAAZ;AAEA,iBAAOD,CAAC,CAACC,EAAT;AACH;AACJ;AACJ,KAba,CAAd;AAeA,SAAKpB,sBAAL,CAA4ByB,IAA5B,CAAiC,QAAjC,EAA2C;AACvCL,MAAAA,EAAE,EAAE,KAAK7B,SAAL,CAAemC,EAAf,CAAkBN,EADiB;AAEvCH,MAAAA,KAAK,EAAEA;AAFgC,KAA3C;AAIH;;AApDqD,CAA1D","sourcesContent":["const axon = require('@dashersw/axon');\n\nmodule.exports = (Base) => class Monitorable extends Base {\n startDiscovery() {\n super.startDiscovery();\n\n this.discovery.on('added', (obj) => {\n const adv = obj.advertisement;\n\n if (adv.type != 'monitor' || !this.advertisement.key.startsWith(adv.key)) {\n return;\n }\n\n this.onMonitorAdded(obj);\n });\n }\n\n onMonitorAdded(obj) {\n if (!this.monitorStatusPublisher) {\n this.monitorStatusPublisher = new axon.PubEmitterSocket();\n this.monitorStatusPublisher.sock.set('retry timeout', 0);\n const statusInterval = this.discoveryOptions.statusInterval || 5000;\n\n this.monitorInterval = setInterval(() => this.onMonitorInterval(), statusInterval);\n }\n\n let address = obj.address;\n if (this.constructor.useHostNames) address = obj.hostName;\n\n this.monitorStatusPublisher.connect(obj.advertisement.port, address);\n }\n\n onMonitorInterval() {\n if (!this.monitorStatusPublisher.sock.socks.length) return;\n\n const nodes = (this.sock.socks || this.sock.sock.socks).map((s) => {\n if (s.id) return s.id;\n\n for (const id in this.discovery.nodes) {\n const node = this.discovery.nodes[id];\n\n if ((this.constructor.useHostNames ? s._host == node.hostName : s.remoteAddress == node.address) &&\n s.remotePort == node.advertisement.port) {\n s.id = node.id;\n\n return s.id;\n }\n }\n });\n\n this.monitorStatusPublisher.emit('status', {\n id: this.discovery.me.id,\n nodes: nodes,\n });\n }\n};\n"],"file":"monitorable.js"} \ No newline at end of file diff --git a/dist/components/pending-balanced-requester.js b/dist/components/pending-balanced-requester.js deleted file mode 100644 index a4473e6..0000000 --- a/dist/components/pending-balanced-requester.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; - -const Requester = require('./requester'); - -const _ = require('lodash'); - -const uuid = require('uuid'); - -module.exports = class PendingBalancedRequester extends Requester { - constructor(advertisement, discoveryOptions) { - super(advertisement, discoveryOptions); - this.sock.on('connect', function (sock) { - sock.uuid = uuid.v4(); - }); - } - - send(...args) { - const sock = this.sock; - - if (sock.socks.length) { - sock.socks.forEach(function (s) { - s.count = 0; - }); - - _.forEach(sock.callbacks, function (cb) { - cb.sock && cb.sock.count++; - }); - - sock.n = sock.socks.indexOf(_.minBy(sock.socks, 'count')); - } - - const rv = Requester.prototype.send.apply(this, args); - if (!sock.socks.length) return rv; - const sentSock = sock.socks[sock.n - 1]; - const cbId = sock.identity + ':' + (sock.ids - 1); - sock.callbacks[cbId].sock = sentSock; - return rv || sentSock.uuid; - } - -}; -//# sourceMappingURL=pending-balanced-requester.js.map \ No newline at end of file diff --git a/dist/components/pending-balanced-requester.js.map b/dist/components/pending-balanced-requester.js.map deleted file mode 100644 index 11e4c66..0000000 --- a/dist/components/pending-balanced-requester.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/components/pending-balanced-requester.js"],"names":["Requester","require","_","uuid","module","exports","PendingBalancedRequester","constructor","advertisement","discoveryOptions","sock","on","v4","send","args","socks","length","forEach","s","count","callbacks","cb","n","indexOf","minBy","rv","prototype","apply","sentSock","cbId","identity","ids"],"mappings":";;AAAA,MAAMA,SAAS,GAAGC,OAAO,CAAC,aAAD,CAAzB;;AACA,MAAMC,CAAC,GAAGD,OAAO,CAAC,QAAD,CAAjB;;AACA,MAAME,IAAI,GAAGF,OAAO,CAAC,MAAD,CAApB;;AAEAG,MAAM,CAACC,OAAP,GAAiB,MAAMC,wBAAN,SAAuCN,SAAvC,CAAiD;AAC9DO,EAAAA,WAAW,CAACC,aAAD,EAAgBC,gBAAhB,EAAkC;AACzC,UAAMD,aAAN,EAAqBC,gBAArB;AAEA,SAAKC,IAAL,CAAUC,EAAV,CAAa,SAAb,EAAwB,UAASD,IAAT,EAAe;AACnCA,MAAAA,IAAI,CAACP,IAAL,GAAYA,IAAI,CAACS,EAAL,EAAZ;AACH,KAFD;AAGH;;AAEDC,EAAAA,IAAI,CAAC,GAAGC,IAAJ,EAAU;AACV,UAAMJ,IAAI,GAAG,KAAKA,IAAlB;;AAEA,QAAIA,IAAI,CAACK,KAAL,CAAWC,MAAf,EAAuB;AACnBN,MAAAA,IAAI,CAACK,KAAL,CAAWE,OAAX,CAAmB,UAASC,CAAT,EAAY;AAC3BA,QAAAA,CAAC,CAACC,KAAF,GAAU,CAAV;AACH,OAFD;;AAIAjB,MAAAA,CAAC,CAACe,OAAF,CAAUP,IAAI,CAACU,SAAf,EAA0B,UAASC,EAAT,EAAa;AACnCA,QAAAA,EAAE,CAACX,IAAH,IAAWW,EAAE,CAACX,IAAH,CAAQS,KAAR,EAAX;AACH,OAFD;;AAIAT,MAAAA,IAAI,CAACY,CAAL,GAASZ,IAAI,CAACK,KAAL,CAAWQ,OAAX,CAAmBrB,CAAC,CAACsB,KAAF,CAAQd,IAAI,CAACK,KAAb,EAAoB,OAApB,CAAnB,CAAT;AACH;;AAED,UAAMU,EAAE,GAAGzB,SAAS,CAAC0B,SAAV,CAAoBb,IAApB,CAAyBc,KAAzB,CAA+B,IAA/B,EAAqCb,IAArC,CAAX;AAEA,QAAI,CAACJ,IAAI,CAACK,KAAL,CAAWC,MAAhB,EAAwB,OAAOS,EAAP;AAExB,UAAMG,QAAQ,GAAGlB,IAAI,CAACK,KAAL,CAAWL,IAAI,CAACY,CAAL,GAAS,CAApB,CAAjB;AAEA,UAAMO,IAAI,GAAGnB,IAAI,CAACoB,QAAL,GAAgB,GAAhB,IAAuBpB,IAAI,CAACqB,GAAL,GAAW,CAAlC,CAAb;AACArB,IAAAA,IAAI,CAACU,SAAL,CAAeS,IAAf,EAAqBnB,IAArB,GAA4BkB,QAA5B;AAEA,WAAOH,EAAE,IAAIG,QAAQ,CAACzB,IAAtB;AACH;;AAlC6D,CAAlE","sourcesContent":["const Requester = require('./requester');\nconst _ = require('lodash');\nconst uuid = require('uuid');\n\nmodule.exports = class PendingBalancedRequester extends Requester {\n constructor(advertisement, discoveryOptions) {\n super(advertisement, discoveryOptions);\n\n this.sock.on('connect', function(sock) {\n sock.uuid = uuid.v4();\n });\n };\n\n send(...args) {\n const sock = this.sock;\n\n if (sock.socks.length) {\n sock.socks.forEach(function(s) {\n s.count = 0;\n });\n\n _.forEach(sock.callbacks, function(cb) {\n cb.sock && cb.sock.count++;\n });\n\n sock.n = sock.socks.indexOf(_.minBy(sock.socks, 'count'));\n }\n\n const rv = Requester.prototype.send.apply(this, args);\n\n if (!sock.socks.length) return rv;\n\n const sentSock = sock.socks[sock.n - 1];\n\n const cbId = sock.identity + ':' + (sock.ids - 1);\n sock.callbacks[cbId].sock = sentSock;\n\n return rv || sentSock.uuid;\n };\n};\n"],"file":"pending-balanced-requester.js"} \ No newline at end of file diff --git a/dist/components/publisher.js b/dist/components/publisher.js deleted file mode 100644 index d78d17d..0000000 --- a/dist/components/publisher.js +++ /dev/null @@ -1,55 +0,0 @@ -"use strict"; - -const Configurable = require('./configurable'); - -const Component = require('./component'); - -const axon = require('@dashersw/axon'); - -const portfinder = require('portfinder'); - -module.exports = class Publisher extends Configurable(Component) { - constructor(advertisement, discoveryOptions) { - super(advertisement, discoveryOptions); - this.sock = new axon.types[this.type](); - this.sock.sock.on('bind', () => this.startDiscovery()); - - const onPort = (err, port) => { - this.advertisement.port = +port; - this.sock.bind(port); - this.sock.sock.server.on('error', err => { - if (err.code != 'EADDRINUSE') throw err; - portfinder.getPort({ - host: this.discoveryOptions.address, - port: this.advertisement.port - }, onPort); - }); - }; - - portfinder.getPort({ - host: this.discoveryOptions.address, - port: advertisement.port - }, onPort); - } - - publish(topic, data) { - let namespace = ''; - - if (this.advertisement.namespace) { - namespace = this.advertisement.namespace + '::'; - } - - topic = 'message::' + namespace + topic; - this.sock.emit(topic, data); - } - - get type() { - return 'pub-emitter'; - } - - get oppo() { - return 'sub-emitter'; - } - -}; -//# sourceMappingURL=publisher.js.map \ No newline at end of file diff --git a/dist/components/publisher.js.map b/dist/components/publisher.js.map deleted file mode 100644 index 94a408a..0000000 --- a/dist/components/publisher.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/components/publisher.js"],"names":["Configurable","require","Component","axon","portfinder","module","exports","Publisher","constructor","advertisement","discoveryOptions","sock","types","type","on","startDiscovery","onPort","err","port","bind","server","code","getPort","host","address","publish","topic","data","namespace","emit","oppo"],"mappings":";;AAAA,MAAMA,YAAY,GAAGC,OAAO,CAAC,gBAAD,CAA5B;;AACA,MAAMC,SAAS,GAAGD,OAAO,CAAC,aAAD,CAAzB;;AACA,MAAME,IAAI,GAAGF,OAAO,CAAC,gBAAD,CAApB;;AACA,MAAMG,UAAU,GAAGH,OAAO,CAAC,YAAD,CAA1B;;AAEAI,MAAM,CAACC,OAAP,GAAiB,MAAMC,SAAN,SAAwBP,YAAY,CAACE,SAAD,CAApC,CAAgD;AAC7DM,EAAAA,WAAW,CAACC,aAAD,EAAgBC,gBAAhB,EAAkC;AACzC,UAAMD,aAAN,EAAqBC,gBAArB;AAEA,SAAKC,IAAL,GAAY,IAAIR,IAAI,CAACS,KAAL,CAAW,KAAKC,IAAhB,CAAJ,EAAZ;AACA,SAAKF,IAAL,CAAUA,IAAV,CAAeG,EAAf,CAAkB,MAAlB,EAA0B,MAAM,KAAKC,cAAL,EAAhC;;AAEA,UAAMC,MAAM,GAAG,CAACC,GAAD,EAAMC,IAAN,KAAe;AAC1B,WAAKT,aAAL,CAAmBS,IAAnB,GAA0B,CAACA,IAA3B;AAEA,WAAKP,IAAL,CAAUQ,IAAV,CAAeD,IAAf;AACA,WAAKP,IAAL,CAAUA,IAAV,CAAeS,MAAf,CAAsBN,EAAtB,CAAyB,OAAzB,EAAmCG,GAAD,IAAS;AACvC,YAAIA,GAAG,CAACI,IAAJ,IAAY,YAAhB,EAA8B,MAAMJ,GAAN;AAE9Bb,QAAAA,UAAU,CAACkB,OAAX,CAAmB;AACfC,UAAAA,IAAI,EAAE,KAAKb,gBAAL,CAAsBc,OADb;AAEfN,UAAAA,IAAI,EAAE,KAAKT,aAAL,CAAmBS;AAFV,SAAnB,EAGGF,MAHH;AAIH,OAPD;AAQH,KAZD;;AAcAZ,IAAAA,UAAU,CAACkB,OAAX,CAAmB;AACfC,MAAAA,IAAI,EAAE,KAAKb,gBAAL,CAAsBc,OADb;AAEfN,MAAAA,IAAI,EAAET,aAAa,CAACS;AAFL,KAAnB,EAGGF,MAHH;AAIH;;AAEDS,EAAAA,OAAO,CAACC,KAAD,EAAQC,IAAR,EAAc;AACjB,QAAIC,SAAS,GAAG,EAAhB;;AAEA,QAAI,KAAKnB,aAAL,CAAmBmB,SAAvB,EAAkC;AAC9BA,MAAAA,SAAS,GAAG,KAAKnB,aAAL,CAAmBmB,SAAnB,GAA+B,IAA3C;AACH;;AAEDF,IAAAA,KAAK,GAAG,cAAcE,SAAd,GAA0BF,KAAlC;AACA,SAAKf,IAAL,CAAUkB,IAAV,CAAeH,KAAf,EAAsBC,IAAtB;AACH;;AAED,MAAId,IAAJ,GAAW;AACP,WAAO,aAAP;AACH;;AAED,MAAIiB,IAAJ,GAAW;AACP,WAAO,aAAP;AACH;;AA5C4D,CAAjE","sourcesContent":["const Configurable = require('./configurable');\nconst Component = require('./component');\nconst axon = require('@dashersw/axon');\nconst portfinder = require('portfinder');\n\nmodule.exports = class Publisher extends Configurable(Component) {\n constructor(advertisement, discoveryOptions) {\n super(advertisement, discoveryOptions);\n\n this.sock = new axon.types[this.type]();\n this.sock.sock.on('bind', () => this.startDiscovery());\n\n const onPort = (err, port) => {\n this.advertisement.port = +port;\n\n this.sock.bind(port);\n this.sock.sock.server.on('error', (err) => {\n if (err.code != 'EADDRINUSE') throw err;\n\n portfinder.getPort({\n host: this.discoveryOptions.address,\n port: this.advertisement.port,\n }, onPort);\n });\n };\n\n portfinder.getPort({\n host: this.discoveryOptions.address,\n port: advertisement.port,\n }, onPort);\n }\n\n publish(topic, data) {\n let namespace = '';\n\n if (this.advertisement.namespace) {\n namespace = this.advertisement.namespace + '::';\n }\n\n topic = 'message::' + namespace + topic;\n this.sock.emit(topic, data);\n };\n\n get type() {\n return 'pub-emitter';\n }\n\n get oppo() {\n return 'sub-emitter';\n }\n};\n"],"file":"publisher.js"} \ No newline at end of file diff --git a/dist/components/requester.js b/dist/components/requester.js deleted file mode 100644 index c7e279b..0000000 --- a/dist/components/requester.js +++ /dev/null @@ -1,129 +0,0 @@ -"use strict"; - -require("core-js/modules/es6.object.to-string"); - -require("core-js/modules/es7.object.values"); - -const Configurable = require('./configurable'); - -const Monitorable = require('./monitorable'); - -const Component = require('./component'); - -const axon = require('@dashersw/axon'); - -const debug = require('debug')('axon:req'); - -const SUBSET_IDENTIFIER = '__subset'; -module.exports = class Requester extends Monitorable(Configurable(Component)) { - constructor(advertisement, discoveryOptions) { - super(advertisement, discoveryOptions); - this.sock = new axon.types[this.type](); - this.sock.set('retry timeout', 0); - this.timeout = advertisement.timeout || process.env.COTE_REQUEST_TIMEOUT; - this.sock.send = this.socketSend.bind(this); - this.startDiscovery(); - } - - filterSubsetInSocks(subset, socks) { - // Find correct nodes - const possibleNodes = Object.values(this.discovery.nodes).filter(node => { - return node.advertisement.subset == subset; - }); // Find corresponding sockets - - const possibleSocks = possibleNodes.map(node => { - return socks.find(sock => { - return sock.remoteAddress == node.address && sock.remotePort == node.advertisement.port; - }); - }).filter(sock => sock); - return possibleSocks; - } // This function overwrites the axon socket's send() function. - // The socketSend() function's `this` is bound to this class in - // order to have access to the advertisement of other nodes. - // That advertisement contains each node's `subset` properties, which are needed - // to find specific subset Responders and their corresponding socks. - - - socketSend(...args) { - // (1) Original logic from https://github.com/dashersw/axon/blob/master/lib/sockets/req.js#L94 - const socks = this.sock.socks; // Enqueue if no socks connected yet - - if (!socks || !socks.length) { - debug('no connected peers'); - return this.sock.enqueue(args); - } // (1) end - // The following part chooses either a subset or all connected socks depending on the - // existence of the SUBSET_IDENTIFIER - - - const data = args[0]; - const subset = data[SUBSET_IDENTIFIER]; - const possibleSocks = subset ? this.filterSubsetInSocks(subset, socks) : socks; // Enqueue if the correct nodes did not connect yet/does not exist - - if (!possibleSocks.length) return this.sock.enqueue(args); // Balance between available - - const sock = possibleSocks[this.sock.n++ % possibleSocks.length]; // Save callback. In this context it will always have a context as it is called by sendOverSocket() - // (2) Original logic from https://github.com/dashersw/axon/blob/master/lib/sockets/req.js#L88 - - const fn = args.pop(); - fn.id = this.sock.id(); - this.sock.callbacks[fn.id] = fn; - args.push(fn.id); // (2) end - // Remove possible subset identifier from message - - delete args[0][SUBSET_IDENTIFIER]; // Send over sock - // (3) Original logic from https://github.com/dashersw/axon/blob/master/lib/sockets/req.js#L94 - - sock.write(this.sock.pack(args)); // (3) end - } - - onAdded(obj) { - super.onAdded(obj); - const address = this.constructor.useHostNames ? obj.hostName : obj.address; - const alreadyConnected = this.sock.socks.some(s => (this.constructor.useHostNames ? s._host == obj.hostName : s.remoteAddress == address) && s.remotePort == obj.advertisement.port); - if (alreadyConnected) return; - this.sock.connect(obj.advertisement.port, address); - } - - send(...args) { - const hasCallback = typeof args[args.length - 1] == 'function'; - const timeout = args[0].__timeout || this.timeout; - if (hasCallback) return sendOverSocket(this.sock, timeout, ...args); - return new Promise((resolve, reject) => { - sendOverSocket(this.sock, timeout, ...args, (err, res) => { - if (err) return reject(err); - resolve(res); - }); - }); - } - - get type() { - return 'req'; - } - - get oppo() { - return 'rep'; - } - -}; - -function sendOverSocket(sock, timeout, ...args) { - if (!timeout) return sock.send(...args); - const cb = args.pop(); - const timeoutHandle = setTimeout(() => { - // Remove the request from the request queue so that it's not sent to responders (#183) - const req = sock.queue.findIndex(r => r[r.length - 1] == messageCallback); - if (req > -1) sock.queue.splice(req, 1); // Remove the request callback - - delete sock.callbacks[messageCallback.id]; - cb(new Error('Request timed out.')); - }, timeout); - - const messageCallback = (...args) => { - clearTimeout(timeoutHandle); - cb(...args); - }; - - sock.send(...args, messageCallback); -} -//# sourceMappingURL=requester.js.map \ No newline at end of file diff --git a/dist/components/requester.js.map b/dist/components/requester.js.map deleted file mode 100644 index 79223ae..0000000 --- a/dist/components/requester.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/components/requester.js"],"names":["Configurable","require","Monitorable","Component","axon","debug","SUBSET_IDENTIFIER","module","exports","Requester","constructor","advertisement","discoveryOptions","sock","types","type","set","timeout","process","env","COTE_REQUEST_TIMEOUT","send","socketSend","bind","startDiscovery","filterSubsetInSocks","subset","socks","possibleNodes","Object","values","discovery","nodes","filter","node","possibleSocks","map","find","remoteAddress","address","remotePort","port","args","length","enqueue","data","n","fn","pop","id","callbacks","push","write","pack","onAdded","obj","useHostNames","hostName","alreadyConnected","some","s","_host","connect","hasCallback","__timeout","sendOverSocket","Promise","resolve","reject","err","res","oppo","cb","timeoutHandle","setTimeout","req","queue","findIndex","r","messageCallback","splice","Error","clearTimeout"],"mappings":"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","sourcesContent":["const Configurable = require('./configurable');\nconst Monitorable = require('./monitorable');\nconst Component = require('./component');\nconst axon = require('@dashersw/axon');\nconst debug = require('debug')('axon:req');\n\nconst SUBSET_IDENTIFIER = '__subset';\n\n\nmodule.exports = class Requester extends Monitorable(Configurable(Component)) {\n constructor(advertisement, discoveryOptions) {\n super(advertisement, discoveryOptions);\n\n this.sock = new axon.types[this.type]();\n this.sock.set('retry timeout', 0);\n this.timeout = advertisement.timeout || process.env.COTE_REQUEST_TIMEOUT;\n\n this.sock.send = this.socketSend.bind(this);\n this.startDiscovery();\n }\n\n filterSubsetInSocks(subset, socks) {\n // Find correct nodes\n const possibleNodes = Object.values(this.discovery.nodes).filter((node) => {\n return node.advertisement.subset == subset;\n });\n\n // Find corresponding sockets\n const possibleSocks = possibleNodes.map((node) => {\n return socks.find((sock) => {\n return sock.remoteAddress == node.address &&\n sock.remotePort == node.advertisement.port;\n });\n }).filter((sock) => sock);\n\n return possibleSocks;\n }\n\n // This function overwrites the axon socket's send() function.\n // The socketSend() function's `this` is bound to this class in\n // order to have access to the advertisement of other nodes.\n // That advertisement contains each node's `subset` properties, which are needed\n // to find specific subset Responders and their corresponding socks.\n socketSend(...args) {\n // (1) Original logic from https://github.com/dashersw/axon/blob/master/lib/sockets/req.js#L94\n const { socks } = this.sock;\n // Enqueue if no socks connected yet\n if (!socks || !socks.length) {\n debug('no connected peers');\n return this.sock.enqueue(args);\n }\n // (1) end\n\n // The following part chooses either a subset or all connected socks depending on the\n // existence of the SUBSET_IDENTIFIER\n const data = args[0];\n const subset = data[SUBSET_IDENTIFIER];\n\n const possibleSocks = subset ? this.filterSubsetInSocks(subset, socks) : socks;\n // Enqueue if the correct nodes did not connect yet/does not exist\n if (!possibleSocks.length) return this.sock.enqueue(args);\n\n // Balance between available\n const sock = possibleSocks[this.sock.n++ % possibleSocks.length];\n\n // Save callback. In this context it will always have a context as it is called by sendOverSocket()\n // (2) Original logic from https://github.com/dashersw/axon/blob/master/lib/sockets/req.js#L88\n const fn = args.pop();\n fn.id = this.sock.id();\n this.sock.callbacks[fn.id] = fn;\n args.push(fn.id);\n // (2) end\n\n // Remove possible subset identifier from message\n delete args[0][SUBSET_IDENTIFIER];\n\n // Send over sock\n // (3) Original logic from https://github.com/dashersw/axon/blob/master/lib/sockets/req.js#L94\n sock.write(this.sock.pack(args));\n // (3) end\n };\n\n onAdded(obj) {\n super.onAdded(obj);\n\n const address = this.constructor.useHostNames ? obj.hostName : obj.address;\n\n const alreadyConnected = this.sock.socks.some((s) =>\n (this.constructor.useHostNames ? s._host == obj.hostName : s.remoteAddress == address) &&\n s.remotePort == obj.advertisement.port);\n\n if (alreadyConnected) return;\n\n this.sock.connect(obj.advertisement.port, address);\n }\n\n send(...args) {\n const hasCallback = typeof args[args.length - 1] == 'function';\n const timeout = args[0].__timeout || this.timeout;\n\n if (hasCallback) return sendOverSocket(this.sock, timeout, ...args);\n\n return new Promise((resolve, reject) => {\n sendOverSocket(this.sock, timeout, ...args, (err, res) => {\n if (err) return reject(err);\n resolve(res);\n });\n });\n }\n\n get type() {\n return 'req';\n }\n get oppo() {\n return 'rep';\n }\n};\n\nfunction sendOverSocket(sock, timeout, ...args) {\n if (!timeout) return sock.send(...args);\n\n const cb = args.pop();\n\n const timeoutHandle = setTimeout(() => {\n // Remove the request from the request queue so that it's not sent to responders (#183)\n const req = sock.queue.findIndex((r) => r[r.length - 1] == messageCallback);\n if (req > -1) sock.queue.splice(req, 1);\n\n // Remove the request callback\n delete sock.callbacks[messageCallback.id];\n\n cb(new Error('Request timed out.'));\n }, timeout);\n\n const messageCallback = (...args) => {\n clearTimeout(timeoutHandle);\n cb(...args);\n };\n\n sock.send(...args, messageCallback);\n}\n"],"file":"requester.js"} \ No newline at end of file diff --git a/dist/components/responder.js b/dist/components/responder.js deleted file mode 100644 index 23b333e..0000000 --- a/dist/components/responder.js +++ /dev/null @@ -1,67 +0,0 @@ -"use strict"; - -const axon = require('@dashersw/axon'); - -const portfinder = require('portfinder'); - -const Configurable = require('./configurable'); - -const Component = require('./component'); // eslint-disable-next-line - - -const colors = require('colors'); - -module.exports = class Responder extends Configurable(Component) { - constructor(advertisement, discoveryOptions) { - super(advertisement, discoveryOptions); - this.sock = new axon.types[this.type](); - this.sock.on('bind', () => this.startDiscovery()); - this.sock.on('message', (req, cb) => { - if (!req.type) return; - - if (this.listeners(req.type).length === 0 && this.discoveryOptions.logUnknownEvents) { - this.discovery.log([this.advertisement.name, '>', `No listeners found for event: ${req.type}`.yellow]); - } - - this.emit(req.type, req, cb); - }); - - const onPort = (err, port) => { - this.advertisement.port = +port; - this.sock.bind(port); - this.sock.server.on('error', err => { - if (err.code != 'EADDRINUSE') throw err; - portfinder.getPort({ - host: this.discoveryOptions.address, - port: this.advertisement.port - }, onPort); - }); - }; - - portfinder.getPort({ - host: this.discoveryOptions.address, - port: advertisement.port - }, onPort); - } - - on(type, listener) { - super.on(type, (...args) => { - const rv = listener(...args); - - if (rv && typeof rv.then == 'function') { - const cb = args.pop(); - rv.then(val => cb(null, val)).catch(cb); - } - }); - } - - get type() { - return 'rep'; - } - - get oppo() { - return 'req'; - } - -}; -//# sourceMappingURL=responder.js.map \ No newline at end of file diff --git a/dist/components/responder.js.map b/dist/components/responder.js.map deleted file mode 100644 index 7fb6ed3..0000000 --- a/dist/components/responder.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/components/responder.js"],"names":["axon","require","portfinder","Configurable","Component","colors","module","exports","Responder","constructor","advertisement","discoveryOptions","sock","types","type","on","startDiscovery","req","cb","listeners","length","logUnknownEvents","discovery","log","name","yellow","emit","onPort","err","port","bind","server","code","getPort","host","address","listener","args","rv","then","pop","val","catch","oppo"],"mappings":"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","sourcesContent":["const axon = require('@dashersw/axon');\nconst portfinder = require('portfinder');\nconst Configurable = require('./configurable');\nconst Component = require('./component');\n\n// eslint-disable-next-line\nconst colors = require('colors');\n\nmodule.exports = class Responder extends Configurable(Component) {\n constructor(advertisement, discoveryOptions) {\n super(advertisement, discoveryOptions);\n\n this.sock = new axon.types[this.type]();\n this.sock.on('bind', () => this.startDiscovery());\n\n this.sock.on('message', (req, cb) => {\n if (!req.type) return;\n\n if (this.listeners(req.type).length === 0 && this.discoveryOptions.logUnknownEvents) {\n this.discovery.log([this.advertisement.name, '>', `No listeners found for event: ${req.type}`.yellow]);\n }\n\n this.emit(req.type, req, cb);\n });\n\n const onPort = (err, port) => {\n this.advertisement.port = +port;\n\n this.sock.bind(port);\n this.sock.server.on('error', (err) => {\n if (err.code != 'EADDRINUSE') throw err;\n\n portfinder.getPort({\n host: this.discoveryOptions.address,\n port: this.advertisement.port,\n }, onPort);\n });\n };\n\n portfinder.getPort({\n host: this.discoveryOptions.address,\n port: advertisement.port,\n }, onPort);\n }\n\n on(type, listener) {\n super.on(type, (...args) => {\n const rv = listener(...args);\n\n if (rv && typeof rv.then == 'function') {\n const cb = args.pop();\n rv.then((val) => cb(null, val)).catch(cb);\n }\n });\n }\n\n get type() {\n return 'rep';\n }\n\n get oppo() {\n return 'req';\n }\n};\n"],"file":"responder.js"} \ No newline at end of file diff --git a/dist/components/sockend.js b/dist/components/sockend.js deleted file mode 100644 index 2e71577..0000000 --- a/dist/components/sockend.js +++ /dev/null @@ -1,126 +0,0 @@ -"use strict"; - -require("core-js/modules/es6.object.to-string"); - -require("core-js/modules/es6.set"); - -const Subscriber = require('./subscriber'); - -const Requester = require('./requester'); - -const Configurable = require('./configurable'); - -const Component = require('./component'); - -module.exports = class Sockend extends Configurable(Component) { - constructor(io, advertisement, discoveryOptions) { - const originalKey = advertisement.key; - super(advertisement, discoveryOptions); - this.requesterTransformators = []; - this.startDiscovery(); - const namespaces = {}; - this.discovery.on('added', obj => { - if (obj.advertisement.axon_type != 'rep') return; - if (obj.advertisement.key != this.advertisement.key) return; - if (!Array.isArray(obj.advertisement.respondsTo)) return; - const namespace = obj.advertisement.namespace; - const normalizedNamespace = namespace || ''; - if (namespaces['/' + normalizedNamespace]) return; - namespaces['/' + normalizedNamespace] = true; - obj.namespace = namespace; - const requester = new Requester({ - name: 'sockendReq', - namespace, - key: originalKey - }, discoveryOptions); - obj.requester = requester; - const originalRequestOnAdded = requester.onAdded.bind(requester); - - requester.onAdded = obj => { - if (!Array.isArray(obj.advertisement.respondsTo)) return; - originalRequestOnAdded(obj); - }; - - obj.requesterSocketHandler = socket => { - obj.advertisement.respondsTo.forEach(topic => { - socket.on(topic, (data, cb) => { - if (typeof data == 'function' && typeof cb == 'undefined') { - cb = data; - data = {}; - } - - data.type = topic; - this.requesterTransformators.forEach(transFn => transFn(data, socket)); - requester.send(data, cb); - }); - }); - }; - - let server = io.of('/'); - if (namespace) server = io.of('/' + namespace); - server.on('connection', obj.requesterSocketHandler); - - for (const sId in server.sockets) { - obj.requesterSocketHandler(server.sockets[sId]); - } - }); - const publisherNamespaces = {}; - this.discovery.on('added', obj => { - if (obj.advertisement.axon_type != 'pub-emitter') return; - if (obj.advertisement.key != this.advertisement.key) return; - const namespace = obj.advertisement.namespace; - const normalizedNamespace = namespace || ''; - if (publisherNamespaces['/' + normalizedNamespace]) return; - publisherNamespaces['/' + normalizedNamespace] = true; - obj.namespace = namespace; - const subscriber = new Subscriber({ - name: 'sockendSub', - namespace: namespace, - key: originalKey, - subscribesTo: obj.advertisement.broadcasts - }, discoveryOptions); - - subscriber.onMonitorAdded = () => {}; - - obj.subscriber = subscriber; - subscriber.on('**', function (data) { - /* eslint-disable no-invalid-this */ - if (this.event == 'cote:added' || this.event == 'cote:removed') return; - let topic = this.event.split('::'); - let namespace = ''; - - if (topic.length > 1) { - namespace += '/' + topic[0]; - topic = topic.slice(1); - } - - topic = topic.join(''); - const emitter = io.of(namespace); - - if (data.__room) { - data.__rooms = new Set(data.__rooms || []); - - data.__rooms.add(data.__room); - - delete data.__room; - } - - if (data.__rooms) { - const rooms = data.__rooms; - delete data.__rooms; - rooms.forEach(room => { - emitter.to(room).emit(topic, data); - }); - } else { - emitter.emit(topic, data); - } - }); - }); - } - - get type() { - return 'sockend'; - } - -}; -//# sourceMappingURL=sockend.js.map \ No newline at end of file diff --git a/dist/components/sockend.js.map b/dist/components/sockend.js.map deleted file mode 100644 index ee0a00a..0000000 --- a/dist/components/sockend.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/components/sockend.js"],"names":["Subscriber","require","Requester","Configurable","Component","module","exports","Sockend","constructor","io","advertisement","discoveryOptions","originalKey","key","requesterTransformators","startDiscovery","namespaces","discovery","on","obj","axon_type","Array","isArray","respondsTo","namespace","normalizedNamespace","requester","name","originalRequestOnAdded","onAdded","bind","requesterSocketHandler","socket","forEach","topic","data","cb","type","transFn","send","server","of","sId","sockets","publisherNamespaces","subscriber","subscribesTo","broadcasts","onMonitorAdded","event","split","length","slice","join","emitter","__room","__rooms","Set","add","rooms","room","to","emit"],"mappings":"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","sourcesContent":["const Subscriber = require('./subscriber');\nconst Requester = require('./requester');\nconst Configurable = require('./configurable');\nconst Component = require('./component');\n\nmodule.exports = class Sockend extends Configurable(Component) {\n constructor(io, advertisement, discoveryOptions) {\n const originalKey = advertisement.key;\n super(advertisement, discoveryOptions);\n\n this.requesterTransformators = [];\n\n this.startDiscovery();\n\n const namespaces = {};\n\n this.discovery.on('added', (obj) => {\n if (obj.advertisement.axon_type != 'rep') return;\n if (obj.advertisement.key != this.advertisement.key) return;\n if (!Array.isArray(obj.advertisement.respondsTo)) return;\n\n const namespace = obj.advertisement.namespace;\n const normalizedNamespace = namespace || '';\n\n if (namespaces['/' + normalizedNamespace]) return;\n\n namespaces['/' + normalizedNamespace] = true;\n obj.namespace = namespace;\n\n const requester = new Requester({\n name: 'sockendReq',\n namespace,\n key: originalKey,\n }, discoveryOptions);\n obj.requester = requester;\n\n const originalRequestOnAdded = requester.onAdded.bind(requester);\n requester.onAdded = (obj) => {\n if (!Array.isArray(obj.advertisement.respondsTo)) return;\n originalRequestOnAdded(obj);\n };\n\n obj.requesterSocketHandler = (socket) => {\n obj.advertisement.respondsTo.forEach((topic) => {\n socket.on(topic, (data, cb) => {\n if (typeof data == 'function' && typeof cb == 'undefined') {\n cb = data;\n data = {};\n }\n\n data.type = topic;\n\n this.requesterTransformators.forEach((transFn) => transFn(data, socket));\n\n requester.send(data, cb);\n });\n });\n };\n\n let server = io.of('/');\n if (namespace) server = io.of('/' + namespace);\n server.on('connection', obj.requesterSocketHandler);\n\n for (const sId in server.sockets) {\n obj.requesterSocketHandler(server.sockets[sId]);\n }\n });\n\n const publisherNamespaces = {};\n\n this.discovery.on('added', (obj) => {\n if (obj.advertisement.axon_type != 'pub-emitter') return;\n if (obj.advertisement.key != this.advertisement.key) return;\n\n const namespace = obj.advertisement.namespace;\n const normalizedNamespace = namespace || '';\n\n if (publisherNamespaces['/' + normalizedNamespace]) return;\n\n publisherNamespaces['/' + normalizedNamespace] = true;\n obj.namespace = namespace;\n\n const subscriber = new Subscriber({\n name: 'sockendSub',\n namespace: namespace,\n key: originalKey,\n subscribesTo: obj.advertisement.broadcasts,\n }, discoveryOptions);\n\n subscriber.onMonitorAdded = () => {\n };\n\n obj.subscriber = subscriber;\n\n subscriber.on('**', function(data) {\n /* eslint-disable no-invalid-this */\n if (this.event == 'cote:added' || this.event == 'cote:removed') return;\n\n let topic = this.event.split('::');\n let namespace = '';\n if (topic.length > 1) {\n namespace += '/' + topic[0];\n topic = topic.slice(1);\n }\n topic = topic.join('');\n\n const emitter = io.of(namespace);\n if (data.__room) {\n data.__rooms = new Set(data.__rooms || []);\n data.__rooms.add(data.__room);\n delete data.__room;\n }\n if (data.__rooms) {\n const rooms = data.__rooms;\n delete data.__rooms;\n rooms.forEach((room) => {\n emitter.to(room).emit(topic, data);\n });\n } else {\n emitter.emit(topic, data);\n }\n });\n });\n };\n\n get type() {\n return 'sockend';\n }\n};\n"],"file":"sockend.js"} \ No newline at end of file diff --git a/dist/components/subscriber.js b/dist/components/subscriber.js deleted file mode 100644 index dfa7b01..0000000 --- a/dist/components/subscriber.js +++ /dev/null @@ -1,79 +0,0 @@ -"use strict"; - -const Configurable = require('./configurable'); - -const Monitorable = require('./monitorable'); - -const Component = require('./component'); - -const axon = require('@dashersw/axon'); // eslint-disable-next-line - - -const colors = require('colors'); - -module.exports = class Subscriber extends Monitorable(Configurable(Component)) { - constructor(advertisement, discoveryOptions) { - super(advertisement, discoveryOptions); - this.startDiscovery(); - this.sock = new axon.types[this.type](); - this.sock.sock.set('retry timeout', 0); - this.advertisement.subscribesTo = this.advertisement.subscribesTo || ['*']; - this.advertisement.subscribesTo.forEach(topic => { - let namespace = ''; - - if (this.advertisement.namespace) { - namespace = this.advertisement.namespace + '::'; - } - - topic = 'message::' + namespace + topic; - - (topic => { - this.sock.on(topic, (...args) => { - if (args.length == 1) { - args.unshift(topic.substr(9)); - } else { - args[0] = namespace + args[0]; - } - - if (this.listeners(args[0]).length === 0 && this.discoveryOptions.logUnknownEvents) { - this.discovery.log([this.advertisement.name, '>', `No listeners found for event: ${args[0]}`.yellow]); - } - - this.emit(...args); - }); - })(topic); - }); - } - - onAdded(obj) { - super.onAdded(obj); - const address = this.constructor.useHostNames ? obj.hostName : obj.address; - const alreadyConnected = this.sock.sock.socks.some(s => (this.constructor.useHostNames ? s._host == obj.hostName : s.remoteAddress == address) && s.remotePort == obj.advertisement.port); - if (alreadyConnected) return; - this.sock.connect(obj.advertisement.port, address); - } - - on(type, listener) { - return super.on(this.formatTypeWithNamespace(type), listener); - } - - formatTypeWithNamespace(type) { - let namespace = ''; - - if (this.advertisement.namespace) { - namespace = this.advertisement.namespace + '::'; - } - - return namespace + type; - } - - get type() { - return 'sub-emitter'; - } - - get oppo() { - return 'pub-emitter'; - } - -}; -//# sourceMappingURL=subscriber.js.map \ No newline at end of file diff --git a/dist/components/subscriber.js.map b/dist/components/subscriber.js.map deleted file mode 100644 index 2d03c9f..0000000 --- a/dist/components/subscriber.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/components/subscriber.js"],"names":["Configurable","require","Monitorable","Component","axon","colors","module","exports","Subscriber","constructor","advertisement","discoveryOptions","startDiscovery","sock","types","type","set","subscribesTo","forEach","topic","namespace","on","args","length","unshift","substr","listeners","logUnknownEvents","discovery","log","name","yellow","emit","onAdded","obj","address","useHostNames","hostName","alreadyConnected","socks","some","s","_host","remoteAddress","remotePort","port","connect","listener","formatTypeWithNamespace","oppo"],"mappings":"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","sourcesContent":["const Configurable = require('./configurable');\nconst Monitorable = require('./monitorable');\nconst Component = require('./component');\nconst axon = require('@dashersw/axon');\n\n// eslint-disable-next-line\nconst colors = require('colors');\n\nmodule.exports = class Subscriber extends Monitorable(Configurable(Component)) {\n constructor(advertisement, discoveryOptions) {\n super(advertisement, discoveryOptions);\n\n this.startDiscovery();\n\n this.sock = new axon.types[this.type]();\n this.sock.sock.set('retry timeout', 0);\n\n this.advertisement.subscribesTo = this.advertisement.subscribesTo || ['*'];\n\n this.advertisement.subscribesTo.forEach((topic) => {\n let namespace = '';\n if (this.advertisement.namespace) {\n namespace = this.advertisement.namespace + '::';\n }\n\n topic = 'message::' + namespace + topic;\n\n ((topic) => {\n this.sock.on(topic, (...args) => {\n if (args.length == 1) {\n args.unshift(topic.substr(9));\n } else {\n args[0] = namespace + args[0];\n }\n\n if (this.listeners(args[0]).length === 0 && this.discoveryOptions.logUnknownEvents) {\n this.discovery.log([this.advertisement.name, '>',\n `No listeners found for event: ${args[0]}`.yellow]);\n }\n\n this.emit(...args);\n });\n })(topic);\n });\n }\n\n onAdded(obj) {\n super.onAdded(obj);\n\n const address = this.constructor.useHostNames ? obj.hostName : obj.address;\n\n const alreadyConnected = this.sock.sock.socks.some((s) =>\n (this.constructor.useHostNames ? s._host == obj.hostName : s.remoteAddress == address) &&\n s.remotePort == obj.advertisement.port);\n\n if (alreadyConnected) return;\n\n this.sock.connect(obj.advertisement.port, address);\n }\n\n on(type, listener) {\n return super.on(this.formatTypeWithNamespace(type), listener);\n }\n\n formatTypeWithNamespace(type) {\n let namespace = '';\n if (this.advertisement.namespace) {\n namespace = this.advertisement.namespace + '::';\n }\n\n return namespace + type;\n }\n\n get type() {\n return 'sub-emitter';\n }\n\n get oppo() {\n return 'pub-emitter';\n }\n};\n"],"file":"subscriber.js"} \ No newline at end of file diff --git a/dist/components/time-balanced-requester.js b/dist/components/time-balanced-requester.js deleted file mode 100644 index b14acc4..0000000 --- a/dist/components/time-balanced-requester.js +++ /dev/null @@ -1,185 +0,0 @@ -"use strict"; - -require("core-js/modules/es6.object.to-string"); - -const Requester = require('./requester'); - -const _ = require('lodash'); - -const uuid = require('uuid'); - -module.exports = class TimeBalancedRequester extends Requester { - constructor(advertisement, discoveryOptions) { - super(advertisement, discoveryOptions); - this.responders = {}; - this.timers = {}; - this.requestId = 0; - this.callbacks = {}; - this.MAX_REQUESTS = 10; - this.CALCULATION_TIMEOUT = 10000; - this.SAMPLE_INTERVAL = 100; // neglect requests from calculation this took longer then the given timeout - - setInterval(() => { - const now = new Date(); - - for (const index in this.responders) { - for (const id in this.responders[index]) { - if (now - this.responders[index][id].sent > this.CALCULATION_TIMEOUT) { - if (this.timers[id]) { - clearInterval(this.timers[id]); - } // if the response is lost, don't leave garbage - - - delete this.responders[index][id]; - } - } - } - }, this.SAMPLE_INTERVAL); // clear all gathered data when a socket disconnects - - this.sock.on('socket close', sock => { - if (sock.uuid) { - const responder = this.responders[sock.uuid]; - - for (const id in responder) { - // clear timers and callbacks for the disconnected socket - clearInterval(this.timers[id]); - delete this.timers[id]; - - if (typeof this.callbacks[id] == 'function') { - this.callbacks[id](new Error('lost connection')); - } else { - this.callbacks[id] && this.callbacks[id].reject(new Error('lost connection')); - } - - delete this.callbacks[id]; - } - - delete this.responders[sock.uuid]; - } - }); - } - - send(...args) { - const id = this.requestId++; - const hasCallback = 'function' == typeof args[args.length - 1]; - - if (hasCallback) { - this.callbacks[id] = args.pop(); - } else { - let resolve; - let reject; - this.callbacks[id] = new Promise((_resolve, _reject) => { - resolve = _resolve; - reject = _reject; - }); - this.callbacks[id].resolve = resolve; - this.callbacks[id].reject = reject; - } - - let originalPromise; - let index = 0; - const socks = this.sock.socks; - const len = socks.length; - let minAvgResponseTime = Number.MAX_VALUE; - let minIndex = 0; - let average = 0; - - if (len > 0 && _.size(this.responders) == len) { - // have data for all sockets - for (index in this.responders) { - const item = this.responders[index]; - let totalTime = 0; - - for (const request in item) { - const time = item[request].time || 0; - totalTime += time; - } - - average = totalTime / _.size(item) || 0; - - if (average < minAvgResponseTime) { - minAvgResponseTime = average; - minIndex = index; - } - - this.responders[index].average = average; - } - - minIndex = _.findIndex(socks, { - uuid: minIndex - }); // explore other servers every once in a while - - if (id % this.MAX_REQUESTS == 0) { - minIndex = Math.floor(Math.random() * len); - } - } else if (len != 0) { - // there is a new socket to be explored use it - minIndex = _.findIndex(socks, s => !s.uuid); - } - - let n = this.sock.n = minIndex % len || 0; // select the socket to be used - - if (!this.sock.socks[n]) n = this.sock.n = 0; - - if (socks[n] && typeof socks[n].uuid == 'undefined') { - socks[n].uuid = uuid.v4(); - } // assign a unique identifier to this socket - - - index = socks[n] && socks[n].uuid || 0; // save the index of selected socket - - const cb = (...args) => { - const lastRequests = this.responders[index]; - - if (lastRequests && lastRequests[id]) { - lastRequests[id].time = new Date() - lastRequests[id].sent; - } // save response time - - - clearInterval(this.timers[id]); // clear timers for this request - - delete this.timers[id]; - const stats = { - averageTime: lastRequests && lastRequests.average || 0 - }; - - if (hasCallback) { - this.callbacks[id](...args, stats); - } else { - if (originalPromise.state == 'rejected') this.callbacks[id].reject(args[0]);else this.callbacks[id].resolve(args[0]); - } - - delete this.callbacks[id]; - }; - - if (index != 0) { - if (!this.responders[index]) this.responders[index] = {}; // create if it's the first request for this index - - this.responders[index][id] = { - // create a container object - time: 0, - sent: new Date() - }; // increment responseTime of this request every 0.1 seconds - - this.timers[id] = setInterval(() => { - const lastRequests = this.responders[index]; - if (!lastRequests) return clearInterval(this.timers[id]); - if (lastRequests[id]) lastRequests[id].time += this.SAMPLE_INTERVAL; - }, this.SAMPLE_INTERVAL); - } - - if (hasCallback) return super.send(...args, cb);else { - originalPromise = super.send(...args); - originalPromise.then(res => { - originalPromise.state = 'resolved'; - cb(res); - }).catch(err => { - originalPromise.state = 'rejected'; - cb(err); - }); - return this.callbacks[id]; - } - } - -}; -//# sourceMappingURL=time-balanced-requester.js.map \ No newline at end of file diff --git a/dist/components/time-balanced-requester.js.map b/dist/components/time-balanced-requester.js.map deleted file mode 100644 index 98c0139..0000000 --- a/dist/components/time-balanced-requester.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/components/time-balanced-requester.js"],"names":["Requester","require","_","uuid","module","exports","TimeBalancedRequester","constructor","advertisement","discoveryOptions","responders","timers","requestId","callbacks","MAX_REQUESTS","CALCULATION_TIMEOUT","SAMPLE_INTERVAL","setInterval","now","Date","index","id","sent","clearInterval","sock","on","responder","Error","reject","send","args","hasCallback","length","pop","resolve","Promise","_resolve","_reject","originalPromise","socks","len","minAvgResponseTime","Number","MAX_VALUE","minIndex","average","size","item","totalTime","request","time","findIndex","Math","floor","random","s","n","v4","cb","lastRequests","stats","averageTime","state","then","res","catch","err"],"mappings":";;;;AAAA,MAAMA,SAAS,GAAGC,OAAO,CAAC,aAAD,CAAzB;;AACA,MAAMC,CAAC,GAAGD,OAAO,CAAC,QAAD,CAAjB;;AACA,MAAME,IAAI,GAAGF,OAAO,CAAC,MAAD,CAApB;;AAEAG,MAAM,CAACC,OAAP,GAAiB,MAAMC,qBAAN,SAAoCN,SAApC,CAA8C;AAC3DO,EAAAA,WAAW,CAACC,aAAD,EAAgBC,gBAAhB,EAAkC;AACzC,UAAMD,aAAN,EAAqBC,gBAArB;AAEA,SAAKC,UAAL,GAAkB,EAAlB;AACA,SAAKC,MAAL,GAAc,EAAd;AACA,SAAKC,SAAL,GAAiB,CAAjB;AACA,SAAKC,SAAL,GAAiB,EAAjB;AACA,SAAKC,YAAL,GAAoB,EAApB;AACA,SAAKC,mBAAL,GAA2B,KAA3B;AACA,SAAKC,eAAL,GAAuB,GAAvB,CATyC,CAWzC;;AACAC,IAAAA,WAAW,CAAC,MAAM;AACd,YAAMC,GAAG,GAAG,IAAIC,IAAJ,EAAZ;;AAEA,WAAK,MAAMC,KAAX,IAAoB,KAAKV,UAAzB,EAAqC;AACjC,aAAK,MAAMW,EAAX,IAAiB,KAAKX,UAAL,CAAgBU,KAAhB,CAAjB,EAAyC;AACrC,cAAIF,GAAG,GAAG,KAAKR,UAAL,CAAgBU,KAAhB,EAAuBC,EAAvB,EAA2BC,IAAjC,GAAwC,KAAKP,mBAAjD,EAAsE;AAClE,gBAAI,KAAKJ,MAAL,CAAYU,EAAZ,CAAJ,EAAqB;AACjBE,cAAAA,aAAa,CAAC,KAAKZ,MAAL,CAAYU,EAAZ,CAAD,CAAb;AACH,aAHiE,CAGhE;;;AAEF,mBAAO,KAAKX,UAAL,CAAgBU,KAAhB,EAAuBC,EAAvB,CAAP;AACH;AACJ;AACJ;AACJ,KAdU,EAcR,KAAKL,eAdG,CAAX,CAZyC,CA4BzC;;AACA,SAAKQ,IAAL,CAAUC,EAAV,CAAa,cAAb,EAA8BD,IAAD,IAAU;AACnC,UAAIA,IAAI,CAACrB,IAAT,EAAe;AACX,cAAMuB,SAAS,GAAG,KAAKhB,UAAL,CAAgBc,IAAI,CAACrB,IAArB,CAAlB;;AAEA,aAAK,MAAMkB,EAAX,IAAiBK,SAAjB,EAA4B;AAAE;AAC1BH,UAAAA,aAAa,CAAC,KAAKZ,MAAL,CAAYU,EAAZ,CAAD,CAAb;AACA,iBAAO,KAAKV,MAAL,CAAYU,EAAZ,CAAP;;AAEA,cAAI,OAAO,KAAKR,SAAL,CAAeQ,EAAf,CAAP,IAA6B,UAAjC,EAA6C;AACzC,iBAAKR,SAAL,CAAeQ,EAAf,EAAmB,IAAIM,KAAJ,CAAU,iBAAV,CAAnB;AACH,WAFD,MAEO;AACH,iBAAKd,SAAL,CAAeQ,EAAf,KAAsB,KAAKR,SAAL,CAAeQ,EAAf,EAAmBO,MAAnB,CAA0B,IAAID,KAAJ,CAAU,iBAAV,CAA1B,CAAtB;AACH;;AACD,iBAAO,KAAKd,SAAL,CAAeQ,EAAf,CAAP;AACH;;AACD,eAAO,KAAKX,UAAL,CAAgBc,IAAI,CAACrB,IAArB,CAAP;AACH;AACJ,KAjBD;AAkBH;;AAED0B,EAAAA,IAAI,CAAC,GAAGC,IAAJ,EAAU;AACV,UAAMT,EAAE,GAAG,KAAKT,SAAL,EAAX;AAEA,UAAMmB,WAAW,GAAG,cAAc,OAAOD,IAAI,CAACA,IAAI,CAACE,MAAL,GAAc,CAAf,CAA7C;;AACA,QAAID,WAAJ,EAAiB;AACb,WAAKlB,SAAL,CAAeQ,EAAf,IAAqBS,IAAI,CAACG,GAAL,EAArB;AACH,KAFD,MAEO;AACH,UAAIC,OAAJ;AACA,UAAIN,MAAJ;AACA,WAAKf,SAAL,CAAeQ,EAAf,IAAqB,IAAIc,OAAJ,CAAY,CAACC,QAAD,EAAWC,OAAX,KAAuB;AACpDH,QAAAA,OAAO,GAAGE,QAAV;AACAR,QAAAA,MAAM,GAAGS,OAAT;AACH,OAHoB,CAArB;AAKA,WAAKxB,SAAL,CAAeQ,EAAf,EAAmBa,OAAnB,GAA6BA,OAA7B;AACA,WAAKrB,SAAL,CAAeQ,EAAf,EAAmBO,MAAnB,GAA4BA,MAA5B;AACH;;AAED,QAAIU,eAAJ;AAEA,QAAIlB,KAAK,GAAG,CAAZ;AACA,UAAMmB,KAAK,GAAG,KAAKf,IAAL,CAAUe,KAAxB;AACA,UAAMC,GAAG,GAAGD,KAAK,CAACP,MAAlB;AACA,QAAIS,kBAAkB,GAAGC,MAAM,CAACC,SAAhC;AACA,QAAIC,QAAQ,GAAG,CAAf;AACA,QAAIC,OAAO,GAAG,CAAd;;AAEA,QAAIL,GAAG,GAAG,CAAN,IAAWtC,CAAC,CAAC4C,IAAF,CAAO,KAAKpC,UAAZ,KAA2B8B,GAA1C,EAA+C;AAAE;AAC7C,WAAKpB,KAAL,IAAc,KAAKV,UAAnB,EAA+B;AAC3B,cAAMqC,IAAI,GAAG,KAAKrC,UAAL,CAAgBU,KAAhB,CAAb;AACA,YAAI4B,SAAS,GAAG,CAAhB;;AAEA,aAAK,MAAMC,OAAX,IAAsBF,IAAtB,EAA4B;AACxB,gBAAMG,IAAI,GAAGH,IAAI,CAACE,OAAD,CAAJ,CAAcC,IAAd,IAAsB,CAAnC;AACAF,UAAAA,SAAS,IAAIE,IAAb;AACH;;AACDL,QAAAA,OAAO,GAAGG,SAAS,GAAG9C,CAAC,CAAC4C,IAAF,CAAOC,IAAP,CAAZ,IAA4B,CAAtC;;AAEA,YAAIF,OAAO,GAAGJ,kBAAd,EAAkC;AAC9BA,UAAAA,kBAAkB,GAAGI,OAArB;AACAD,UAAAA,QAAQ,GAAGxB,KAAX;AACH;;AACD,aAAKV,UAAL,CAAgBU,KAAhB,EAAuByB,OAAvB,GAAiCA,OAAjC;AACH;;AAEDD,MAAAA,QAAQ,GAAG1C,CAAC,CAACiD,SAAF,CAAYZ,KAAZ,EAAmB;AAAEpC,QAAAA,IAAI,EAAEyC;AAAR,OAAnB,CAAX,CAlB2C,CAoB3C;;AACA,UAAIvB,EAAE,GAAG,KAAKP,YAAV,IAA0B,CAA9B,EAAiC;AAC7B8B,QAAAA,QAAQ,GAAGQ,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACE,MAAL,KAAgBd,GAA3B,CAAX;AACH;AACJ,KAxBD,MAwBO,IAAIA,GAAG,IAAI,CAAX,EAAc;AAAE;AACnBI,MAAAA,QAAQ,GAAG1C,CAAC,CAACiD,SAAF,CAAYZ,KAAZ,EAAoBgB,CAAD,IAAO,CAACA,CAAC,CAACpD,IAA7B,CAAX;AACH;;AAED,QAAIqD,CAAC,GAAG,KAAKhC,IAAL,CAAUgC,CAAV,GAAeZ,QAAQ,GAAGJ,GAAZ,IAAoB,CAA1C,CAvDU,CAuDmC;;AAC7C,QAAI,CAAC,KAAKhB,IAAL,CAAUe,KAAV,CAAgBiB,CAAhB,CAAL,EAAyBA,CAAC,GAAG,KAAKhC,IAAL,CAAUgC,CAAV,GAAc,CAAlB;;AACzB,QAAIjB,KAAK,CAACiB,CAAD,CAAL,IAAY,OAAOjB,KAAK,CAACiB,CAAD,CAAL,CAASrD,IAAhB,IAAwB,WAAxC,EAAqD;AACjDoC,MAAAA,KAAK,CAACiB,CAAD,CAAL,CAASrD,IAAT,GAAgBA,IAAI,CAACsD,EAAL,EAAhB;AACH,KA3DS,CA2DR;;;AAEFrC,IAAAA,KAAK,GAAImB,KAAK,CAACiB,CAAD,CAAL,IAAYjB,KAAK,CAACiB,CAAD,CAAL,CAASrD,IAAtB,IAA+B,CAAvC,CA7DU,CA6DgC;;AAE1C,UAAMuD,EAAE,GAAG,CAAC,GAAG5B,IAAJ,KAAa;AACpB,YAAM6B,YAAY,GAAG,KAAKjD,UAAL,CAAgBU,KAAhB,CAArB;;AACA,UAAIuC,YAAY,IAAIA,YAAY,CAACtC,EAAD,CAAhC,EAAsC;AAClCsC,QAAAA,YAAY,CAACtC,EAAD,CAAZ,CAAiB6B,IAAjB,GAAyB,IAAI/B,IAAJ,KAAawC,YAAY,CAACtC,EAAD,CAAZ,CAAiBC,IAAvD;AACH,OAJmB,CAIlB;;;AACFC,MAAAA,aAAa,CAAC,KAAKZ,MAAL,CAAYU,EAAZ,CAAD,CAAb,CALoB,CAKY;;AAChC,aAAO,KAAKV,MAAL,CAAYU,EAAZ,CAAP;AAEA,YAAMuC,KAAK,GAAG;AAAEC,QAAAA,WAAW,EAAGF,YAAY,IAAIA,YAAY,CAACd,OAA9B,IAA0C;AAAzD,OAAd;;AAEA,UAAId,WAAJ,EAAiB;AACb,aAAKlB,SAAL,CAAeQ,EAAf,EAAmB,GAAGS,IAAtB,EAA4B8B,KAA5B;AACH,OAFD,MAEO;AACH,YAAItB,eAAe,CAACwB,KAAhB,IAAyB,UAA7B,EAAyC,KAAKjD,SAAL,CAAeQ,EAAf,EAAmBO,MAAnB,CAA0BE,IAAI,CAAC,CAAD,CAA9B,EAAzC,KACK,KAAKjB,SAAL,CAAeQ,EAAf,EAAmBa,OAAnB,CAA2BJ,IAAI,CAAC,CAAD,CAA/B;AACR;;AACD,aAAO,KAAKjB,SAAL,CAAeQ,EAAf,CAAP;AACH,KAjBD;;AAmBA,QAAID,KAAK,IAAI,CAAb,EAAgB;AACZ,UAAI,CAAC,KAAKV,UAAL,CAAgBU,KAAhB,CAAL,EAA6B,KAAKV,UAAL,CAAgBU,KAAhB,IAAyB,EAAzB,CADjB,CAC8C;;AAC1D,WAAKV,UAAL,CAAgBU,KAAhB,EAAuBC,EAAvB,IAA6B;AAAE;AAC3B6B,QAAAA,IAAI,EAAE,CADmB;AAEzB5B,QAAAA,IAAI,EAAE,IAAIH,IAAJ;AAFmB,OAA7B,CAFY,CAOZ;;AACA,WAAKR,MAAL,CAAYU,EAAZ,IAAkBJ,WAAW,CAAC,MAAM;AAChC,cAAM0C,YAAY,GAAG,KAAKjD,UAAL,CAAgBU,KAAhB,CAArB;AACA,YAAI,CAACuC,YAAL,EAAmB,OAAOpC,aAAa,CAAC,KAAKZ,MAAL,CAAYU,EAAZ,CAAD,CAApB;AAEnB,YAAIsC,YAAY,CAACtC,EAAD,CAAhB,EAAsBsC,YAAY,CAACtC,EAAD,CAAZ,CAAiB6B,IAAjB,IAAyB,KAAKlC,eAA9B;AACzB,OAL4B,EAK1B,KAAKA,eALqB,CAA7B;AAMH;;AAED,QAAIe,WAAJ,EAAiB,OAAO,MAAMF,IAAN,CAAW,GAAGC,IAAd,EAAoB4B,EAApB,CAAP,CAAjB,KACK;AACDpB,MAAAA,eAAe,GAAG,MAAMT,IAAN,CAAW,GAAGC,IAAd,CAAlB;AACAQ,MAAAA,eAAe,CAACyB,IAAhB,CAAsBC,GAAD,IAAS;AAC1B1B,QAAAA,eAAe,CAACwB,KAAhB,GAAwB,UAAxB;AACAJ,QAAAA,EAAE,CAACM,GAAD,CAAF;AACH,OAHD,EAGGC,KAHH,CAGUC,GAAD,IAAS;AACd5B,QAAAA,eAAe,CAACwB,KAAhB,GAAwB,UAAxB;AACAJ,QAAAA,EAAE,CAACQ,GAAD,CAAF;AACH,OAND;AAOA,aAAO,KAAKrD,SAAL,CAAeQ,EAAf,CAAP;AACH;AACJ;;AAhK0D,CAA/D","sourcesContent":["const Requester = require('./requester');\nconst _ = require('lodash');\nconst uuid = require('uuid');\n\nmodule.exports = class TimeBalancedRequester extends Requester {\n constructor(advertisement, discoveryOptions) {\n super(advertisement, discoveryOptions);\n\n this.responders = {};\n this.timers = {};\n this.requestId = 0;\n this.callbacks = {};\n this.MAX_REQUESTS = 10;\n this.CALCULATION_TIMEOUT = 10000;\n this.SAMPLE_INTERVAL = 100;\n\n // neglect requests from calculation this took longer then the given timeout\n setInterval(() => {\n const now = new Date();\n\n for (const index in this.responders) {\n for (const id in this.responders[index]) {\n if (now - this.responders[index][id].sent > this.CALCULATION_TIMEOUT) {\n if (this.timers[id]) {\n clearInterval(this.timers[id]);\n } // if the response is lost, don't leave garbage\n\n delete this.responders[index][id];\n }\n }\n }\n }, this.SAMPLE_INTERVAL);\n\n // clear all gathered data when a socket disconnects\n this.sock.on('socket close', (sock) => {\n if (sock.uuid) {\n const responder = this.responders[sock.uuid];\n\n for (const id in responder) { // clear timers and callbacks for the disconnected socket\n clearInterval(this.timers[id]);\n delete this.timers[id];\n\n if (typeof this.callbacks[id] == 'function') {\n this.callbacks[id](new Error('lost connection'));\n } else {\n this.callbacks[id] && this.callbacks[id].reject(new Error('lost connection'));\n }\n delete this.callbacks[id];\n }\n delete this.responders[sock.uuid];\n }\n });\n }\n\n send(...args) {\n const id = this.requestId++;\n\n const hasCallback = 'function' == typeof args[args.length - 1];\n if (hasCallback) {\n this.callbacks[id] = args.pop();\n } else {\n let resolve;\n let reject;\n this.callbacks[id] = new Promise((_resolve, _reject) => {\n resolve = _resolve;\n reject = _reject;\n });\n\n this.callbacks[id].resolve = resolve;\n this.callbacks[id].reject = reject;\n }\n\n let originalPromise;\n\n let index = 0;\n const socks = this.sock.socks;\n const len = socks.length;\n let minAvgResponseTime = Number.MAX_VALUE;\n let minIndex = 0;\n let average = 0;\n\n if (len > 0 && _.size(this.responders) == len) { // have data for all sockets\n for (index in this.responders) {\n const item = this.responders[index];\n let totalTime = 0;\n\n for (const request in item) {\n const time = item[request].time || 0;\n totalTime += time;\n }\n average = totalTime / _.size(item) || 0;\n\n if (average < minAvgResponseTime) {\n minAvgResponseTime = average;\n minIndex = index;\n }\n this.responders[index].average = average;\n }\n\n minIndex = _.findIndex(socks, { uuid: minIndex });\n\n // explore other servers every once in a while\n if (id % this.MAX_REQUESTS == 0) {\n minIndex = Math.floor(Math.random() * len);\n }\n } else if (len != 0) { // there is a new socket to be explored use it\n minIndex = _.findIndex(socks, (s) => !s.uuid);\n }\n\n let n = this.sock.n = (minIndex % len) || 0; // select the socket to be used\n if (!this.sock.socks[n]) n = this.sock.n = 0;\n if (socks[n] && typeof socks[n].uuid == 'undefined') {\n socks[n].uuid = uuid.v4();\n } // assign a unique identifier to this socket\n\n index = (socks[n] && socks[n].uuid) || 0; // save the index of selected socket\n\n const cb = (...args) => {\n const lastRequests = this.responders[index];\n if (lastRequests && lastRequests[id]) {\n lastRequests[id].time = (new Date() - lastRequests[id].sent);\n } // save response time\n clearInterval(this.timers[id]); // clear timers for this request\n delete this.timers[id];\n\n const stats = { averageTime: (lastRequests && lastRequests.average) || 0 };\n\n if (hasCallback) {\n this.callbacks[id](...args, stats);\n } else {\n if (originalPromise.state == 'rejected') this.callbacks[id].reject(args[0]);\n else this.callbacks[id].resolve(args[0]);\n }\n delete this.callbacks[id];\n };\n\n if (index != 0) {\n if (!this.responders[index]) this.responders[index] = {}; // create if it's the first request for this index\n this.responders[index][id] = { // create a container object\n time: 0,\n sent: new Date(),\n };\n\n // increment responseTime of this request every 0.1 seconds\n this.timers[id] = setInterval(() => {\n const lastRequests = this.responders[index];\n if (!lastRequests) return clearInterval(this.timers[id]);\n\n if (lastRequests[id]) lastRequests[id].time += this.SAMPLE_INTERVAL;\n }, this.SAMPLE_INTERVAL);\n }\n\n if (hasCallback) return super.send(...args, cb);\n else {\n originalPromise = super.send(...args);\n originalPromise.then((res) => {\n originalPromise.state = 'resolved';\n cb(res);\n }).catch((err) => {\n originalPromise.state = 'rejected';\n cb(err);\n });\n return this.callbacks[id];\n }\n };\n};\n"],"file":"time-balanced-requester.js"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 7e8cdae..0000000 --- a/dist/index.js +++ /dev/null @@ -1,46 +0,0 @@ -"use strict"; - -const Discovery = require('./components/discovery'); - -const Requester = require('./components/requester'); - -const Responder = require('./components/responder'); - -const Publisher = require('./components/publisher'); - -const Subscriber = require('./components/subscriber'); - -const Sockend = require('./components/sockend'); - -const Monitor = require('./components/monitor'); - -const MonitoringTool = require('./monitoring-tool'); - -const TimeBalancedRequester = require('./components/time-balanced-requester'); - -const PendingBalancedRequester = require('./components/pending-balanced-requester'); - -const optionsBuilder = require('./options-builder'); - -const cote = (options = {}) => { - options = optionsBuilder(options); - Discovery.setDefaults(options); - const components = [Requester, Responder, Publisher, Subscriber, Sockend, TimeBalancedRequester, PendingBalancedRequester]; - components.forEach(function (component) { - component.setEnvironment(options.environment); - component.setUseHostNames && component.setUseHostNames(options.useHostNames); - }); - return cote; -}; - -cote.Requester = Requester; -cote.Responder = Responder; -cote.Publisher = Publisher; -cote.Subscriber = Subscriber; -cote.Sockend = Sockend; -cote.Monitor = Monitor; -cote.MonitoringTool = MonitoringTool; -cote.TimeBalancedRequester = TimeBalancedRequester; -cote.PendingBalancedRequester = PendingBalancedRequester; -module.exports = cote(); -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map deleted file mode 100644 index 576d5c8..0000000 --- a/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/index.js"],"names":["Discovery","require","Requester","Responder","Publisher","Subscriber","Sockend","Monitor","MonitoringTool","TimeBalancedRequester","PendingBalancedRequester","optionsBuilder","cote","options","setDefaults","components","forEach","component","setEnvironment","environment","setUseHostNames","useHostNames","module","exports"],"mappings":";;AAAA,MAAMA,SAAS,GAAGC,OAAO,CAAC,wBAAD,CAAzB;;AACA,MAAMC,SAAS,GAAGD,OAAO,CAAC,wBAAD,CAAzB;;AACA,MAAME,SAAS,GAAGF,OAAO,CAAC,wBAAD,CAAzB;;AACA,MAAMG,SAAS,GAAGH,OAAO,CAAC,wBAAD,CAAzB;;AACA,MAAMI,UAAU,GAAGJ,OAAO,CAAC,yBAAD,CAA1B;;AACA,MAAMK,OAAO,GAAGL,OAAO,CAAC,sBAAD,CAAvB;;AACA,MAAMM,OAAO,GAAGN,OAAO,CAAC,sBAAD,CAAvB;;AACA,MAAMO,cAAc,GAAGP,OAAO,CAAC,mBAAD,CAA9B;;AACA,MAAMQ,qBAAqB,GAAGR,OAAO,CAAC,sCAAD,CAArC;;AACA,MAAMS,wBAAwB,GAAGT,OAAO,CAAC,yCAAD,CAAxC;;AAEA,MAAMU,cAAc,GAAGV,OAAO,CAAC,mBAAD,CAA9B;;AAEA,MAAMW,IAAI,GAAG,CAACC,OAAO,GAAG,EAAX,KAAkB;AAC3BA,EAAAA,OAAO,GAAGF,cAAc,CAACE,OAAD,CAAxB;AAEAb,EAAAA,SAAS,CAACc,WAAV,CAAsBD,OAAtB;AAEA,QAAME,UAAU,GAAG,CACfb,SADe,EAEfC,SAFe,EAGfC,SAHe,EAIfC,UAJe,EAKfC,OALe,EAMfG,qBANe,EAOfC,wBAPe,CAAnB;AAUAK,EAAAA,UAAU,CAACC,OAAX,CAAmB,UAASC,SAAT,EAAoB;AACnCA,IAAAA,SAAS,CAACC,cAAV,CAAyBL,OAAO,CAACM,WAAjC;AACAF,IAAAA,SAAS,CAACG,eAAV,IACIH,SAAS,CAACG,eAAV,CAA0BP,OAAO,CAACQ,YAAlC,CADJ;AAEH,GAJD;AAMA,SAAOT,IAAP;AACH,CAtBD;;AAwBAA,IAAI,CAACV,SAAL,GAAiBA,SAAjB;AACAU,IAAI,CAACT,SAAL,GAAiBA,SAAjB;AACAS,IAAI,CAACR,SAAL,GAAiBA,SAAjB;AACAQ,IAAI,CAACP,UAAL,GAAkBA,UAAlB;AACAO,IAAI,CAACN,OAAL,GAAeA,OAAf;AACAM,IAAI,CAACL,OAAL,GAAeA,OAAf;AACAK,IAAI,CAACJ,cAAL,GAAsBA,cAAtB;AACAI,IAAI,CAACH,qBAAL,GAA6BA,qBAA7B;AACAG,IAAI,CAACF,wBAAL,GAAgCA,wBAAhC;AAEAY,MAAM,CAACC,OAAP,GAAiBX,IAAI,EAArB","sourcesContent":["const Discovery = require('./components/discovery');\nconst Requester = require('./components/requester');\nconst Responder = require('./components/responder');\nconst Publisher = require('./components/publisher');\nconst Subscriber = require('./components/subscriber');\nconst Sockend = require('./components/sockend');\nconst Monitor = require('./components/monitor');\nconst MonitoringTool = require('./monitoring-tool');\nconst TimeBalancedRequester = require('./components/time-balanced-requester');\nconst PendingBalancedRequester = require('./components/pending-balanced-requester');\n\nconst optionsBuilder = require('./options-builder');\n\nconst cote = (options = {}) => {\n options = optionsBuilder(options);\n\n Discovery.setDefaults(options);\n\n const components = [\n Requester,\n Responder,\n Publisher,\n Subscriber,\n Sockend,\n TimeBalancedRequester,\n PendingBalancedRequester,\n ];\n\n components.forEach(function(component) {\n component.setEnvironment(options.environment);\n component.setUseHostNames &&\n component.setUseHostNames(options.useHostNames);\n });\n\n return cote;\n};\n\ncote.Requester = Requester;\ncote.Responder = Responder;\ncote.Publisher = Publisher;\ncote.Subscriber = Subscriber;\ncote.Sockend = Sockend;\ncote.Monitor = Monitor;\ncote.MonitoringTool = MonitoringTool;\ncote.TimeBalancedRequester = TimeBalancedRequester;\ncote.PendingBalancedRequester = PendingBalancedRequester;\n\nmodule.exports = cote();\n"],"file":"index.js"} \ No newline at end of file diff --git a/dist/monitoring-tool/frontend/index.html b/dist/monitoring-tool/frontend/index.html deleted file mode 100644 index 4829aeb..0000000 --- a/dist/monitoring-tool/frontend/index.html +++ /dev/null @@ -1,316 +0,0 @@ - - - - - - Management Console - - - - - - - - - - - - - - - - - - - -
-

Cote Monitor

-
-
-
-
- - - diff --git a/dist/monitoring-tool/index.js b/dist/monitoring-tool/index.js deleted file mode 100644 index ce0462e..0000000 --- a/dist/monitoring-tool/index.js +++ /dev/null @@ -1,183 +0,0 @@ -"use strict"; - -require("core-js/modules/es6.object.to-string"); - -module.exports = function (port) { - const fs = require('fs'); - - const _ = require('lodash'); - - const cote = require('../'); - - const portfinder = require('portfinder'); - - const server = require('http').createServer(handler); - - const io = require('socket.io').listen(server); // Instantiate a monitor, sockend and publisher components - - - const monitor = new cote.Monitor({ - name: 'monitor' - }, { - disableScreen: true - }); - new cote.Sockend(io, { - name: 'sockend', - namespace: 'monitoring', - key: 'monitoring' - }); - const publisher = new cote.Publisher({ - name: 'status publisher', - broadcasts: ['statusUpdate'], - namespace: 'monitoring', - key: 'monitoring' - }); // Graph related variables - - const graph = { - nodes: [], - links: [] - }; - const rawLinks = {}; - - const onPort = (err, port) => { - server.listen(port); - server.on('error', err => { - if (err.code != 'EADDRINUSE') throw err; - portfinder.getPort({ - port - }, onPort); - }); - }; - - portfinder.getPort({ - port: port || 5555 - }, onPort); - monitor.on('status', function (status) { - const node = monitor.discovery.nodes[status.id]; - if (!node) return; - if (node.processId == monitor.discovery.me.processId) return; - rawLinks[status.id] = { - source: status.id, - target: status.nodes - }; - }); - monitor.sock.sock.on('bind', () => { - monitor.discovery.on('removed', function (node) { - delete rawLinks[node.id]; - const removedNode = node.id; - - for (const nodeId in rawLinks) { - const rawLink = rawLinks[nodeId]; - const removedNodeIndex = rawLink.target.indexOf(removedNode); - - if (removedNodeIndex > -1) { - rawLink.target.splice(removedNodeIndex, 1); - if (!rawLink.target.length) delete rawLinks[nodeId]; - } - } - }); - }); - setInterval(function () { - graph.nodes = []; - const hosts = getHosts(monitor.discovery.nodes); - graph.nodes = graph.nodes.concat(hosts); - const processes = getProcesses(monitor.discovery.nodes); - graph.nodes = graph.nodes.concat(processes); - const nodes = getNodes(monitor.discovery.nodes); - graph.nodes = graph.nodes.concat(nodes); // Update links - - const indexMap = {}; - graph.nodes.forEach(function (node, index) { - indexMap[node.id] = index; - }); - graph.links = getLinks(rawLinks, indexMap); // Publish the output - - publisher.publish('statusUpdate', graph); - }, 5000); - - function handler(req, res) { - fs.readFile(__dirname + '/frontend/index.html', function (err, data) { - if (err) { - res.writeHead(500); - return res.end('Error loading index.html'); - } - - res.writeHead(200); - res.end(data); - }); - } - - function getProcesses(nodes) { - const processes = _.groupBy(nodes, 'processId'); - - return _.map(processes, (process, processId) => ({ - id: processId, - type: 'process', - name: process[0].processCommand - })).filter(function (process) { - return process.id != monitor.discovery.me.processId; - }); - } - - function getHosts(nodes) { - const nodesByHosts = _.groupBy(nodes, 'hostName'); - - _.forEach(nodesByHosts, (nodesByHost, hostId) => { - const nodesByProcess = _.groupBy(nodesByHost, 'processId'); - - _.forEach(nodesByProcess, (processNodes, processId) => { - if (processId == monitor.discovery.me.processId) return; - rawLinks[processId] = { - source: processId, - target: processNodes.map(function (node) { - return node.id; - }) - }; - }); - - rawLinks[hostId] = { - source: hostId, - target: Object.keys(nodesByProcess) - }; - }); - - let hosts = Object.keys(nodesByHosts); - hosts = _.map(hosts, host => ({ - id: host, - type: 'host', - name: host - })); - return hosts; - } - - function getNodes(nodes) { - nodes = _.filter(nodes, node => node.processId != monitor.discovery.me.processId && node.advertisement.name != 'sockendSub' && node.advertisement.name != 'sockendReq'); - - const simplifiedNodes = _.map(nodes, node => ({ - id: node.id, - type: 'node', - name: node.advertisement.name - })); - - return simplifiedNodes; - } - - function getLinks(rawLinks, indexMap) { - const links = _.map(rawLinks, rawLink => rawLink.target.map(target => ({ - // flip source & target for semantics :) - source: indexMap[target], - // monitor.discovery.nodes[target].advertisement.name + '#' + target, - target: indexMap[rawLink.source] // monitor.discovery.nodes[rawLink.source].advertisement.name + - // '#' + rawLink.source - - }))); - - return _.flatten(links).filter(link => link.source && link.target); - } - - return { - monitor, - server - }; -}; -//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/monitoring-tool/index.js.map b/dist/monitoring-tool/index.js.map deleted file mode 100644 index db9cd4e..0000000 --- a/dist/monitoring-tool/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../src/monitoring-tool/index.js"],"names":["module","exports","port","fs","require","_","cote","portfinder","server","createServer","handler","io","listen","monitor","Monitor","name","disableScreen","Sockend","namespace","key","publisher","Publisher","broadcasts","graph","nodes","links","rawLinks","onPort","err","on","code","getPort","status","node","discovery","id","processId","me","source","target","sock","removedNode","nodeId","rawLink","removedNodeIndex","indexOf","splice","length","setInterval","hosts","getHosts","concat","processes","getProcesses","getNodes","indexMap","forEach","index","getLinks","publish","req","res","readFile","__dirname","data","writeHead","end","groupBy","map","process","type","processCommand","filter","nodesByHosts","nodesByHost","hostId","nodesByProcess","processNodes","Object","keys","host","advertisement","simplifiedNodes","flatten","link"],"mappings":"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","sourcesContent":["module.exports = function(port) {\n const fs = require('fs');\n const _ = require('lodash');\n const cote = require('../');\n const portfinder = require('portfinder');\n\n const server = require('http').createServer(handler);\n const io = require('socket.io').listen(server);\n\n // Instantiate a monitor, sockend and publisher components\n const monitor = new cote.Monitor({\n name: 'monitor',\n }, { disableScreen: true });\n\n new cote.Sockend(io, {\n name: 'sockend',\n namespace: 'monitoring',\n key: 'monitoring',\n });\n\n const publisher = new cote.Publisher({\n name: 'status publisher',\n broadcasts: ['statusUpdate'],\n namespace: 'monitoring',\n key: 'monitoring',\n });\n\n // Graph related variables\n const graph = {\n nodes: [],\n links: [],\n };\n const rawLinks = {};\n\n const onPort = (err, port) => {\n server.listen(port);\n server.on('error', (err) => {\n if (err.code != 'EADDRINUSE') throw err;\n\n portfinder.getPort({ port }, onPort);\n });\n };\n\n portfinder.getPort({ port: port || 5555 }, onPort);\n\n monitor.on('status', function(status) {\n const node = monitor.discovery.nodes[status.id];\n if (!node) return;\n\n if (node.processId == monitor.discovery.me.processId) return;\n\n rawLinks[status.id] = {\n source: status.id,\n target: status.nodes,\n };\n });\n\n monitor.sock.sock.on('bind', () => {\n monitor.discovery.on('removed', function(node) {\n delete rawLinks[node.id];\n const removedNode = node.id;\n\n for (const nodeId in rawLinks) {\n const rawLink = rawLinks[nodeId];\n\n const removedNodeIndex = rawLink.target.indexOf(removedNode);\n if (removedNodeIndex > -1) {\n rawLink.target.splice(removedNodeIndex, 1);\n if (!rawLink.target.length) delete rawLinks[nodeId];\n }\n }\n });\n });\n\n setInterval(function() {\n graph.nodes = [];\n\n const hosts = getHosts(monitor.discovery.nodes);\n graph.nodes = graph.nodes.concat(hosts);\n\n const processes = getProcesses(monitor.discovery.nodes);\n graph.nodes = graph.nodes.concat(processes);\n\n const nodes = getNodes(monitor.discovery.nodes);\n graph.nodes = graph.nodes.concat(nodes);\n\n // Update links\n const indexMap = {};\n graph.nodes.forEach(function(node, index) {\n indexMap[node.id] = index;\n });\n graph.links = getLinks(rawLinks, indexMap);\n\n // Publish the output\n publisher.publish('statusUpdate', graph);\n }, 5000);\n\n function handler(req, res) {\n fs.readFile(__dirname + '/frontend/index.html', function(err, data) {\n if (err) {\n res.writeHead(500);\n return res.end('Error loading index.html');\n }\n res.writeHead(200);\n res.end(data);\n });\n }\n\n function getProcesses(nodes) {\n const processes = _.groupBy(nodes, 'processId');\n\n return _.map(processes, (process, processId) => (\n {\n id: processId,\n type: 'process',\n name: process[0].processCommand,\n }\n )).filter(function(process) {\n return process.id != monitor.discovery.me.processId;\n });\n }\n\n function getHosts(nodes) {\n const nodesByHosts = _.groupBy(nodes, 'hostName');\n\n _.forEach(nodesByHosts, (nodesByHost, hostId) => {\n const nodesByProcess = _.groupBy(nodesByHost, 'processId');\n\n _.forEach(nodesByProcess, (processNodes, processId) => {\n if (processId == monitor.discovery.me.processId) return;\n\n rawLinks[processId] = {\n source: processId,\n target: processNodes.map(function(node) {\n return node.id;\n }),\n };\n });\n\n rawLinks[hostId] = {\n source: hostId,\n target: Object.keys(nodesByProcess),\n };\n });\n\n let hosts = Object.keys(nodesByHosts);\n hosts = _.map(hosts, (host) => ({\n id: host,\n type: 'host',\n name: host,\n }));\n return hosts;\n }\n\n function getNodes(nodes) {\n nodes = _.filter(nodes, (node) =>\n node.processId != monitor.discovery.me.processId &&\n node.advertisement.name != 'sockendSub' &&\n node.advertisement.name != 'sockendReq'\n );\n\n const simplifiedNodes = _.map(nodes, (node) => ({\n id: node.id,\n type: 'node',\n name: node.advertisement.name,\n }));\n\n return simplifiedNodes;\n }\n\n function getLinks(rawLinks, indexMap) {\n const links = _.map(rawLinks,\n (rawLink) => rawLink.target.map(\n (target) => ({ // flip source & target for semantics :)\n source: indexMap[target], // monitor.discovery.nodes[target].advertisement.name + '#' + target,\n target: indexMap[rawLink.source], // monitor.discovery.nodes[rawLink.source].advertisement.name +\n // '#' + rawLink.source\n })\n )\n );\n\n return _.flatten(links).filter((link) => link.source && link.target);\n }\n\n return { monitor, server };\n};\n"],"file":"index.js"} \ No newline at end of file diff --git a/dist/options-builder.js b/dist/options-builder.js deleted file mode 100644 index 348fc44..0000000 --- a/dist/options-builder.js +++ /dev/null @@ -1,75 +0,0 @@ -"use strict"; - -require("core-js/modules/es7.object.get-own-property-descriptors"); - -require("core-js/modules/es6.symbol"); - -require("core-js/modules/es6.object.to-string"); - -require("core-js/modules/es7.object.entries"); - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(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; } - -const parser = { - bool: v => v.toLowerCase() == 'true', - // node always converts process.env values to string, so no need to check - // for type: https://nodejs.org/api/process.html#process_process_env - int: v => parseInt(v, 10), - // see above for skipping type checks - str: v => v, - exists: v => !!v -}; -const defaultOptions = { - environment: '', - useHostNames: false, - broadcast: null, - multicast: null, - logUnknownEvents: true -}; -const envVarOptionsMap = { - COTE_ENV: ['environment', parser.str], - COTE_USE_HOST_NAMES: ['useHostNames', parser.exists], - COTE_MULTICAST_ADDRESS: ['multicast', parser.str], - COTE_CHECK_INTERVAL: ['checkInterval', parser.int], - COTE_HELLO_INTERVAL: ['helloInterval', parser.int], - COTE_HELLO_LOGS_ENABLED: ['helloLogsEnabled', parser.bool], - COTE_STATUS_LOGS_ENABLED: ['statusLogsEnabled', parser.bool], - COTE_LOG: ['log', parser.bool], - COTE_LOG_UNKNOWN_EVENTS: ['logUnknownEvents', parser.bool], - COTE_NODE_TIMEOUT: ['nodeTimeout', parser.int], - COTE_IGNORE_PROCESS: ['ignoreProcess', parser.bool] -}; - -module.exports = options => { - const environmentSettings = {}; - Object.entries(envVarOptionsMap).forEach(([envVar, [setting, parser]]) => { - if (!(envVar in process.env)) return; - const value = process.env[envVar]; - environmentSettings[setting] = parser(value); - }); - - if (!process.env.COTE_BROADCAST_ADDRESS && process.env.DOCKERCLOUD_IP_ADDRESS) { - environmentSettings.broadcast = '10.7.255.255'; - } - - const keys = Object.keys(process.env).filter(k => k.slice(0, 15) == 'COTE_DISCOVERY_'); - keys.forEach(k => { - const keyName = k.slice(15); - const keyArray = keyName.split('_').map(k => k.toLowerCase()); - const pluginName = keyArray.shift(); - const pluginObj = environmentSettings[pluginName] = environmentSettings[pluginName] || {}; - keyArray.forEach(k => { - pluginObj[k] = process.env[`COTE_DISCOVERY_${pluginName.toUpperCase()}_${k.toUpperCase()}`]; - }); // Discovery plugins (such as redis) may not have access to real IP addresses. - // Therefore we automatically default to `true` for `COTE_USE_HOST_NAMES`, - // since host names are accurate. - - environmentSettings.useHostNames = true; - }); - return _objectSpread({}, defaultOptions, {}, environmentSettings, {}, options); -}; -//# sourceMappingURL=options-builder.js.map \ No newline at end of file diff --git a/dist/options-builder.js.map b/dist/options-builder.js.map deleted file mode 100644 index 736a3ce..0000000 --- a/dist/options-builder.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../src/options-builder.js"],"names":["parser","bool","v","toLowerCase","int","parseInt","str","exists","defaultOptions","environment","useHostNames","broadcast","multicast","logUnknownEvents","envVarOptionsMap","COTE_ENV","COTE_USE_HOST_NAMES","COTE_MULTICAST_ADDRESS","COTE_CHECK_INTERVAL","COTE_HELLO_INTERVAL","COTE_HELLO_LOGS_ENABLED","COTE_STATUS_LOGS_ENABLED","COTE_LOG","COTE_LOG_UNKNOWN_EVENTS","COTE_NODE_TIMEOUT","COTE_IGNORE_PROCESS","module","exports","options","environmentSettings","Object","entries","forEach","envVar","setting","process","env","value","COTE_BROADCAST_ADDRESS","DOCKERCLOUD_IP_ADDRESS","keys","filter","k","slice","keyName","keyArray","split","map","pluginName","shift","pluginObj","toUpperCase"],"mappings":";;;;;;;;;;;;;;;;AAAA,MAAMA,MAAM,GAAG;AACXC,EAAAA,IAAI,EAAGC,CAAD,IAAOA,CAAC,CAACC,WAAF,MAAmB,MADrB;AAC6B;AACxC;AACAC,EAAAA,GAAG,EAAGF,CAAD,IAAOG,QAAQ,CAACH,CAAD,EAAI,EAAJ,CAHT;AAGkB;AAC7BI,EAAAA,GAAG,EAAGJ,CAAD,IAAOA,CAJD;AAKXK,EAAAA,MAAM,EAAGL,CAAD,IAAO,CAAC,CAACA;AALN,CAAf;AAQA,MAAMM,cAAc,GAAG;AACnBC,EAAAA,WAAW,EAAE,EADM;AAEnBC,EAAAA,YAAY,EAAE,KAFK;AAGnBC,EAAAA,SAAS,EAAE,IAHQ;AAInBC,EAAAA,SAAS,EAAE,IAJQ;AAKnBC,EAAAA,gBAAgB,EAAE;AALC,CAAvB;AAQA,MAAMC,gBAAgB,GAAG;AACrBC,EAAAA,QAAQ,EAAE,CAAC,aAAD,EAAgBf,MAAM,CAACM,GAAvB,CADW;AAErBU,EAAAA,mBAAmB,EAAE,CAAC,cAAD,EAAiBhB,MAAM,CAACO,MAAxB,CAFA;AAGrBU,EAAAA,sBAAsB,EAAE,CAAC,WAAD,EAAcjB,MAAM,CAACM,GAArB,CAHH;AAIrBY,EAAAA,mBAAmB,EAAE,CAAC,eAAD,EAAkBlB,MAAM,CAACI,GAAzB,CAJA;AAKrBe,EAAAA,mBAAmB,EAAE,CAAC,eAAD,EAAkBnB,MAAM,CAACI,GAAzB,CALA;AAMrBgB,EAAAA,uBAAuB,EAAE,CAAC,kBAAD,EAAqBpB,MAAM,CAACC,IAA5B,CANJ;AAOrBoB,EAAAA,wBAAwB,EAAE,CAAC,mBAAD,EAAsBrB,MAAM,CAACC,IAA7B,CAPL;AAQrBqB,EAAAA,QAAQ,EAAE,CAAC,KAAD,EAAQtB,MAAM,CAACC,IAAf,CARW;AASrBsB,EAAAA,uBAAuB,EAAE,CAAC,kBAAD,EAAqBvB,MAAM,CAACC,IAA5B,CATJ;AAUrBuB,EAAAA,iBAAiB,EAAE,CAAC,aAAD,EAAgBxB,MAAM,CAACI,GAAvB,CAVE;AAWrBqB,EAAAA,mBAAmB,EAAE,CAAC,eAAD,EAAkBzB,MAAM,CAACC,IAAzB;AAXA,CAAzB;;AAcAyB,MAAM,CAACC,OAAP,GAAkBC,OAAD,IAAa;AAC1B,QAAMC,mBAAmB,GAAG,EAA5B;AAEAC,EAAAA,MAAM,CAACC,OAAP,CAAejB,gBAAf,EAAiCkB,OAAjC,CAAyC,CAAC,CAACC,MAAD,EAAS,CAACC,OAAD,EAAUlC,MAAV,CAAT,CAAD,KAAiC;AACtE,QAAI,EAAEiC,MAAM,IAAIE,OAAO,CAACC,GAApB,CAAJ,EAA8B;AAE9B,UAAMC,KAAK,GAAGF,OAAO,CAACC,GAAR,CAAYH,MAAZ,CAAd;AAEAJ,IAAAA,mBAAmB,CAACK,OAAD,CAAnB,GAA+BlC,MAAM,CAACqC,KAAD,CAArC;AACH,GAND;;AAQA,MAAI,CAACF,OAAO,CAACC,GAAR,CAAYE,sBAAb,IAAuCH,OAAO,CAACC,GAAR,CAAYG,sBAAvD,EAA+E;AAC3EV,IAAAA,mBAAmB,CAAClB,SAApB,GAAgC,cAAhC;AACH;;AAED,QAAM6B,IAAI,GAAGV,MAAM,CAACU,IAAP,CAAYL,OAAO,CAACC,GAApB,EAAyBK,MAAzB,CAAiCC,CAAD,IAAOA,CAAC,CAACC,KAAF,CAAQ,CAAR,EAAW,EAAX,KAAkB,iBAAzD,CAAb;AAEAH,EAAAA,IAAI,CAACR,OAAL,CAAcU,CAAD,IAAO;AAChB,UAAME,OAAO,GAAGF,CAAC,CAACC,KAAF,CAAQ,EAAR,CAAhB;AACA,UAAME,QAAQ,GAAGD,OAAO,CAACE,KAAR,CAAc,GAAd,EAAmBC,GAAnB,CAAwBL,CAAD,IAAOA,CAAC,CAACvC,WAAF,EAA9B,CAAjB;AACA,UAAM6C,UAAU,GAAGH,QAAQ,CAACI,KAAT,EAAnB;AAEA,UAAMC,SAAS,GAAGrB,mBAAmB,CAACmB,UAAD,CAAnB,GAAkCnB,mBAAmB,CAACmB,UAAD,CAAnB,IAAmC,EAAvF;AAEAH,IAAAA,QAAQ,CAACb,OAAT,CAAkBU,CAAD,IAAO;AACpBQ,MAAAA,SAAS,CAACR,CAAD,CAAT,GAAeP,OAAO,CAACC,GAAR,CAAa,kBAAiBY,UAAU,CAACG,WAAX,EAAyB,IAAGT,CAAC,CAACS,WAAF,EAAgB,EAA1E,CAAf;AACH,KAFD,EAPgB,CAWhB;AACA;AACA;;AACAtB,IAAAA,mBAAmB,CAACnB,YAApB,GAAmC,IAAnC;AACH,GAfD;AAiBA,2BAAYF,cAAZ,MAA+BqB,mBAA/B,MAAuDD,OAAvD;AACH,CAnCD","sourcesContent":["const parser = {\n bool: (v) => v.toLowerCase() == 'true', // node always converts process.env values to string, so no need to check\n // for type: https://nodejs.org/api/process.html#process_process_env\n int: (v) => parseInt(v, 10), // see above for skipping type checks\n str: (v) => v,\n exists: (v) => !!v,\n};\n\nconst defaultOptions = {\n environment: '',\n useHostNames: false,\n broadcast: null,\n multicast: null,\n logUnknownEvents: true,\n};\n\nconst envVarOptionsMap = {\n COTE_ENV: ['environment', parser.str],\n COTE_USE_HOST_NAMES: ['useHostNames', parser.exists],\n COTE_MULTICAST_ADDRESS: ['multicast', parser.str],\n COTE_CHECK_INTERVAL: ['checkInterval', parser.int],\n COTE_HELLO_INTERVAL: ['helloInterval', parser.int],\n COTE_HELLO_LOGS_ENABLED: ['helloLogsEnabled', parser.bool],\n COTE_STATUS_LOGS_ENABLED: ['statusLogsEnabled', parser.bool],\n COTE_LOG: ['log', parser.bool],\n COTE_LOG_UNKNOWN_EVENTS: ['logUnknownEvents', parser.bool],\n COTE_NODE_TIMEOUT: ['nodeTimeout', parser.int],\n COTE_IGNORE_PROCESS: ['ignoreProcess', parser.bool],\n};\n\nmodule.exports = (options) => {\n const environmentSettings = {};\n\n Object.entries(envVarOptionsMap).forEach(([envVar, [setting, parser]]) => {\n if (!(envVar in process.env)) return;\n\n const value = process.env[envVar];\n\n environmentSettings[setting] = parser(value);\n });\n\n if (!process.env.COTE_BROADCAST_ADDRESS && process.env.DOCKERCLOUD_IP_ADDRESS) {\n environmentSettings.broadcast = '10.7.255.255';\n }\n\n const keys = Object.keys(process.env).filter((k) => k.slice(0, 15) == 'COTE_DISCOVERY_');\n\n keys.forEach((k) => {\n const keyName = k.slice(15);\n const keyArray = keyName.split('_').map((k) => k.toLowerCase());\n const pluginName = keyArray.shift();\n\n const pluginObj = environmentSettings[pluginName] = environmentSettings[pluginName] || {};\n\n keyArray.forEach((k) => {\n pluginObj[k] = process.env[`COTE_DISCOVERY_${pluginName.toUpperCase()}_${k.toUpperCase()}`];\n });\n\n // Discovery plugins (such as redis) may not have access to real IP addresses.\n // Therefore we automatically default to `true` for `COTE_USE_HOST_NAMES`,\n // since host names are accurate.\n environmentSettings.useHostNames = true;\n });\n\n return { ...defaultOptions, ...environmentSettings, ...options };\n};\n"],"file":"options-builder.js"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index e5c8a9e..4083057 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,429 +46,129 @@ "slide": "^1.1.5" } }, - "@babel/cli": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.6.2.tgz", - "integrity": "sha512-JDZ+T/br9pPfT2lmAMJypJDTTTHM9ePD/ED10TRjRzJVdEVy+JB3iRlhzYmTt5YkNgHvxWGlUVnLtdv6ruiDrQ==", - "dev": true, - "requires": { - "chokidar": "^2.1.8", - "commander": "^2.8.1", - "convert-source-map": "^1.1.0", - "fs-readdir-recursive": "^1.1.0", - "glob": "^7.0.0", - "lodash": "^4.17.13", - "mkdirp": "^0.5.1", - "output-file-sync": "^2.0.0", - "slash": "^2.0.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "optional": true - } - } - }, "@babel/code-frame": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", - "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", "dev": true, "requires": { "@babel/highlight": "^7.0.0" } }, "@babel/core": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.6.2.tgz", - "integrity": "sha512-l8zto/fuoZIbncm+01p8zPSDZu/VuuJhAfA7d/AbzM09WR7iVhavvfNDYCNpo1VvLk6E6xgAoP9P+/EMJHuRkQ==", + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.7.7.tgz", + "integrity": "sha512-jlSjuj/7z138NLZALxVgrx13AOtqip42ATZP7+kYl53GvDV6+4dCek1mVUo8z8c8Xnw/mx2q3d9HWh3griuesQ==", "dev": true, "requires": { "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.2", - "@babel/helpers": "^7.6.2", - "@babel/parser": "^7.6.2", - "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.2", - "@babel/types": "^7.6.0", - "convert-source-map": "^1.1.0", + "@babel/generator": "^7.7.7", + "@babel/helpers": "^7.7.4", + "@babel/parser": "^7.7.7", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4", + "convert-source-map": "^1.7.0", "debug": "^4.1.0", "json5": "^2.1.0", "lodash": "^4.17.13", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.2.tgz", - "integrity": "sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ==", - "dev": true, - "requires": { - "@babel/types": "^7.6.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", - "dev": true, - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@babel/parser": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.2.tgz", - "integrity": "sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==", - "dev": true - }, - "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" - } - }, - "@babel/traverse": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.2.tgz", - "integrity": "sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.2", - "@babel/types": "^7.6.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", - "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } } }, "@babel/generator": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", - "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.7.7.tgz", + "integrity": "sha512-/AOIBpHh/JU1l0ZFS4kiRCBnLi6OTHzh0RPk3h9isBxkkqELtQNFi1Vr/tiG9p1yfoUdKVwISuXWQR+hwwM4VQ==", "dev": true, "requires": { - "@babel/types": "^7.4.0", + "@babel/types": "^7.7.4", "jsesc": "^2.5.1", - "lodash": "^4.17.11", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" + "lodash": "^4.17.13", + "source-map": "^0.5.0" } }, "@babel/helper-annotate-as-pure": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz", - "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.7.4.tgz", + "integrity": "sha512-2BQmQgECKzYKFPpiycoF9tlb5HA4lrVyAmLLVK177EcQAqjVLciUb2/R+n1boQ9y5ENV3uz2ZqiNw7QMBBw1Og==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.7.4" } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz", - "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-call-delegate": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz", - "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.7.4.tgz", + "integrity": "sha512-Biq/d/WtvfftWZ9Uf39hbPBYDUo986m5Bb4zhkeYDGUllF43D+nUe5M6Vuo6/8JDK/0YX/uBdeoQpyaNhNugZQ==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/traverse": "^7.4.4", - "@babel/types": "^7.4.4" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.2.tgz", - "integrity": "sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ==", - "dev": true, - "requires": { - "@babel/types": "^7.6.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", - "dev": true, - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@babel/parser": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.2.tgz", - "integrity": "sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==", - "dev": true - }, - "@babel/traverse": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.2.tgz", - "integrity": "sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.2", - "@babel/types": "^7.6.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", - "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "@babel/helper-explode-assignable-expression": "^7.7.4", + "@babel/types": "^7.7.4" } }, - "@babel/helper-define-map": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz", - "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==", + "@babel/helper-create-regexp-features-plugin": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.4.tgz", + "integrity": "sha512-Mt+jBKaxL0zfOIWrfQpnfYCN7/rS6GKx6CCCfuoqVVd+17R8zNDlzVYmIi9qyb2wOk002NsmSTDymkIygDUH7A==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/types": "^7.5.5", - "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/types": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", - "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/helper-regex": "^7.4.4", + "regexpu-core": "^4.6.0" } }, "@babel/helper-explode-assignable-expression": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz", - "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.7.4.tgz", + "integrity": "sha512-2/SicuFrNSXsZNBxe5UGdLr+HZg+raWBLE9vC98bdYOKX/U6PY0mdGlYUJdtTDPSU0Lw0PNbKKDpwYHJLn2jLg==", "dev": true, "requires": { - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/helper-function-name": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", - "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.7.4.tgz", + "integrity": "sha512-AnkGIdiBhEuiwdoMnKm7jfPfqItZhgRaZfMg1XX3bS25INOnLPjPG1Ppnajh8eqgt5kPJnfqrRHqFqmjKDZLzQ==", "dev": true, "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/helper-get-function-arity": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/helper-get-function-arity": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", - "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz", - "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==", - "dev": true, - "requires": { - "@babel/types": "^7.4.4" - }, - "dependencies": { - "@babel/types": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", - "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz", - "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.7.4.tgz", + "integrity": "sha512-QTGKEdCkjgzgfJ3bAyRwF4yyT3pg+vDgan8DSivq1eS0gwi+KGKE5x8kRcbeFTb/673mkO5SN1IZfmCfA5o+EA==", "dev": true, "requires": { - "@babel/types": "^7.5.5" - }, - "dependencies": { - "@babel/types": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", - "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "@babel/types": "^7.7.4" } }, "@babel/helper-module-imports": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", - "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.7.4.tgz", + "integrity": "sha512-dGcrX6K9l8258WFjyDLJwuVKxR4XZfU0/vTUgOQYWEnRD8mgr+p4d6fCUMq/ys0h4CCt/S5JhbvtyErjWouAUQ==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/types": "^7.7.4" } }, "@babel/helper-module-transforms": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.2.2.tgz", - "integrity": "sha512-YRD7I6Wsv+IHuTPkAmAS4HhY0dkPobgLftHp0cRGZSdrRvmZY8rFvae/GVu3bD00qscuvK3WPHB3YdNpBXUqrA==", - "dev": true, - "requires": { - "@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.2.2", - "@babel/types": "^7.2.2", - "lodash": "^4.17.10" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz", - "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==", + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.7.5.tgz", + "integrity": "sha512-A7pSxyJf1gN5qXVcidwLWydjftUN878VkalhXX5iQDuGyiGK3sOrrKKHF4/A4fwHtnsotv/NipwAeLzY4KQPvw==", "dev": true, "requires": { - "@babel/types": "^7.0.0" + "@babel/helper-module-imports": "^7.7.4", + "@babel/helper-simple-access": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4", + "lodash": "^4.17.13" } }, "@babel/helper-plugin-utils": { @@ -478,260 +178,73 @@ "dev": true }, "@babel/helper-regex": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0.tgz", - "integrity": "sha512-TR0/N0NDCcUIUEbqV6dCO+LptmmSQFQ7q70lfcEB4URsjD0E1HzicrwUH+ap6BAQ2jhCX9Q4UqZy4wilujWlkg==", + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", + "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", "dev": true, "requires": { - "lodash": "^4.17.10" + "lodash": "^4.17.13" } }, "@babel/helper-remap-async-to-generator": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz", - "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==", - "dev": true, - "requires": { - "@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" - } - }, - "@babel/helper-replace-supers": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz", - "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.7.4.tgz", + "integrity": "sha512-Sk4xmtVdM9sA/jCI80f+KS+Md+ZHIpjuqmYPk1M7F/upHou5e4ReYmExAiu6PVe65BhJPZA2CY9x9k4BqE5klw==", "dev": true, "requires": { - "@babel/helper-member-expression-to-functions": "^7.5.5", - "@babel/helper-optimise-call-expression": "^7.0.0", - "@babel/traverse": "^7.5.5", - "@babel/types": "^7.5.5" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - }, - "@babel/generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.2.tgz", - "integrity": "sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ==", - "dev": true, - "requires": { - "@babel/types": "^7.6.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", - "dev": true, - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@babel/parser": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.2.tgz", - "integrity": "sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==", - "dev": true - }, - "@babel/traverse": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.2.tgz", - "integrity": "sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.2", - "@babel/types": "^7.6.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - } - }, - "@babel/types": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", - "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "@babel/helper-annotate-as-pure": "^7.7.4", + "@babel/helper-wrap-function": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/helper-simple-access": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz", - "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.7.4.tgz", + "integrity": "sha512-zK7THeEXfan7UlWsG2A6CI/L9jVnI5+xxKZOdej39Y0YtDYKx9raHk5F2EtK9K8DHRTihYwg20ADt9S36GR78A==", "dev": true, "requires": { - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" + "@babel/template": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/helper-split-export-declaration": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", - "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.7.4.tgz", + "integrity": "sha512-guAg1SXFcVr04Guk9eq0S4/rWS++sbmyqosJzVs8+1fH5NI+ZcmkaSkc7dmtAFbHFva6yRJnjW3yAcGxjueDug==", "dev": true, "requires": { - "@babel/types": "^7.4.0" + "@babel/types": "^7.7.4" } }, "@babel/helper-wrap-function": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz", - "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.7.4.tgz", + "integrity": "sha512-VsfzZt6wmsocOaVU0OokwrIytHND55yvyT4BPB9AIIgwr8+x7617hetdJTsuGwygN5RC6mxA9EJztTjuwm2ofg==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/template": "^7.1.0", - "@babel/traverse": "^7.1.0", - "@babel/types": "^7.2.0" + "@babel/helper-function-name": "^7.7.4", + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/helpers": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.6.2.tgz", - "integrity": "sha512-3/bAUL8zZxYs1cdX2ilEE0WobqbCmKWr/889lf2SS0PpDcpEIY8pb1CCyz0pEcX3pEb+MCbks1jIokz2xLtGTA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.7.4.tgz", + "integrity": "sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg==", "dev": true, "requires": { - "@babel/template": "^7.6.0", - "@babel/traverse": "^7.6.2", - "@babel/types": "^7.6.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.6.2.tgz", - "integrity": "sha512-j8iHaIW4gGPnViaIHI7e9t/Hl8qLjERI6DcV9kEpAIDJsAOrcnXqRS7t+QbhL76pwbtqP+QCQLL0z1CyVmtjjQ==", - "dev": true, - "requires": { - "@babel/types": "^7.6.0", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", - "dev": true, - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@babel/parser": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.2.tgz", - "integrity": "sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==", - "dev": true - }, - "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" - } - }, - "@babel/traverse": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.6.2.tgz", - "integrity": "sha512-8fRE76xNwNttVEF2TwxJDGBLWthUkHWSldmfuBzVRmEDWOtu4XdINTgN7TDWzuLg4bbeIMLvfMFD9we5YcWkRQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.6.2", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.6.2", - "@babel/types": "^7.6.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } - } - } - }, - "@babel/types": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", - "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - } + "@babel/template": "^7.7.4", + "@babel/traverse": "^7.7.4", + "@babel/types": "^7.7.4" } }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", "dev": true, "requires": { "chalk": "^2.0.0", @@ -740,2237 +253,926 @@ } }, "@babel/parser": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.2.tgz", - "integrity": "sha512-9fJTDipQFvlfSVdD/JBtkiY0br9BtfvW2R8wo6CX/Ej2eMuV0gWPk1M67Mt3eggQvBqYW1FCEk8BN7WvGm/g5g==", + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.7.7.tgz", + "integrity": "sha512-WtTZMZAZLbeymhkd/sEaPD8IQyGAhmuTuvTzLiCFM7iXiVdY0gc0IaI+cW0fh1BnSMbJSzXX6/fHllgHKwHhXw==", "dev": true }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz", - "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.7.4.tgz", + "integrity": "sha512-1ypyZvGRXriY/QP668+s8sFr2mqinhkRDMPSQLNghCQE+GAkFtp+wkHVvg2+Hdki8gwP+NFzJBJ/N1BfzCCDEw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0", - "@babel/plugin-syntax-async-generators": "^7.2.0" + "@babel/helper-remap-async-to-generator": "^7.7.4", + "@babel/plugin-syntax-async-generators": "^7.7.4" } }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz", - "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==", + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.7.7.tgz", + "integrity": "sha512-3qp9I8lelgzNedI3hrhkvhaEYree6+WHnyA/q4Dza9z7iEIs1eyhWyJnetk3jJ69RT0AT4G0UhEGwyGFJ7GUuQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0" + "@babel/plugin-syntax-object-rest-spread": "^7.7.4" } }, - "@babel/plugin-proposal-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz", - "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==", + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.7.4.tgz", + "integrity": "sha512-DyM7U2bnsQerCQ+sejcTNZh8KQEUuC3ufzdnVnSiUv/qoGJp2Z3hanKL18KDhsBT5Wj6a7CMT5mdyCNJsEaA9w==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-json-strings": "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding": "^7.7.4" } }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.4.0.tgz", - "integrity": "sha512-uTNi8pPYyUH2eWHyYWWSYJKwKg34hhgl4/dbejEjL+64OhbHjTX7wEVWMQl82tEmdDsGeu77+s8HHLS627h6OQ==", + "@babel/plugin-syntax-async-generators": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.7.4.tgz", + "integrity": "sha512-Li4+EjSpBgxcsmeEF8IFcfV/+yJGxHXDirDkEoyFjumuwbmfCVHUt0HuowD/iGM7OhIRyXJH9YXxqiH6N815+g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" + "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==", + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.7.4.tgz", + "integrity": "sha512-mObR+r+KZq0XhRVS2BrBKBpr5jqrqzlPvS9C9vuOf5ilSwzloAl7RPWLrgKdWS6IreaVrjHxTjtyqFiOisaCwg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0" + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.7.4.tgz", + "integrity": "sha512-4ZSuzWgFxqHRE31Glu+fEr/MirNZOMYmD/0BhBWyLyOOQz/gTAl7QmWm2hX1QxEIXsr2vkdlwxIzTyiYRC4xcQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.6.2.tgz", - "integrity": "sha512-NxHETdmpeSCtiatMRYWVJo7266rrvAC3DTeG5exQBIH/fMIUK7ejDNznBbn3HQl/o9peymRRg7Yqkx6PdUXmMw==", + "@babel/plugin-transform-async-to-generator": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.7.4.tgz", + "integrity": "sha512-zpUTZphp5nHokuy8yLlyafxCJ0rSlFoSHypTUWgpdwoDXWQcseaect7cJ8Ppk6nunOM6+5rPMkod4OYKPR5MUg==", "dev": true, "requires": { + "@babel/helper-module-imports": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" - }, - "dependencies": { - "@babel/helper-regex": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", - "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", - "dev": true, - "requires": { - "lodash": "^4.17.13" - } - }, - "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" - } - } + "@babel/helper-remap-async-to-generator": "^7.7.4" } }, - "@babel/plugin-syntax-async-generators": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz", - "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==", + "@babel/plugin-transform-dotall-regex": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.7.7.tgz", + "integrity": "sha512-b4in+YlTeE/QmTgrllnb3bHA0HntYvjz8O3Mcbx75UBPJA2xhb5A8nle498VhxSXJHQefjtQxpnLPehDJ4TRlg==", "dev": true, "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", - "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.7.4.tgz", + "integrity": "sha512-MCqiLfCKm6KEA1dglf6Uqq1ElDIZwFuzz1WH5mTf8k2uQSxEJMbOIEh7IZv7uichr7PMfi5YVSrr1vz+ipp7AQ==", "dev": true, "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.7.4", "@babel/helper-plugin-utils": "^7.0.0" } }, - "@babel/plugin-syntax-json-strings": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz", - "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==", + "@babel/plugin-transform-modules-commonjs": { + "version": "7.7.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.7.5.tgz", + "integrity": "sha512-9Cq4zTFExwFhQI6MT1aFxgqhIsMWQWDVwOgLzl7PTWJHsNaqFvklAU+Oz6AQLAS0dJKTwZSOCo20INwktxpi3Q==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/helper-module-transforms": "^7.7.5", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-simple-access": "^7.7.4", + "babel-plugin-dynamic-import-node": "^2.3.0" } }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", - "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", + "@babel/template": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.4.tgz", + "integrity": "sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4" } }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz", - "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==", + "@babel/traverse": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz", + "integrity": "sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/code-frame": "^7.5.5", + "@babel/generator": "^7.7.4", + "@babel/helper-function-name": "^7.7.4", + "@babel/helper-split-export-declaration": "^7.7.4", + "@babel/parser": "^7.7.4", + "@babel/types": "^7.7.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" } }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", - "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==", + "@babel/types": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.7.4.tgz", + "integrity": "sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "esutils": "^2.0.2", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" } }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.4.0.tgz", - "integrity": "sha512-EeaFdCeUULM+GPFEsf7pFcNSxM7hYjoj5fiYbyuiXobW4JhFnjAv9OWzNwHyHcKoPNpAfeRDuW6VyaXEDUBa7g==", + "@concordance/react": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@concordance/react/-/react-2.0.0.tgz", + "integrity": "sha512-huLSkUuM2/P+U0uy2WwlKuixMsTODD8p4JVQBI4VKeopkiN0C7M3N9XYVawb4M+4spN5RrO/eLhk7KoQX6nsfA==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" + "arrify": "^1.0.1" } }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", - "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", - "dev": true, + "@dashersw/axon": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@dashersw/axon/-/axon-2.0.5.tgz", + "integrity": "sha512-e7az6UOh/1JqLvzg2GPhP3n47QMQal3Qg2a2497JwY7dlbSKUg4dQmnRyKWNjFz0FHjranUjKvX6J6NAV3Sm/Q==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "amp": "~0.3.1", + "amp-message": "~0.1.1", + "configurable": "0.0.1", + "debug": "*", + "escape-regexp": "0.0.1" } }, - "@babel/plugin-transform-block-scoping": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.6.2.tgz", - "integrity": "sha512-zZT8ivau9LOQQaOGC7bQLQOT4XPkPXgN2ERfUgk1X8ql+mVkLc4E8eKk+FO3o0154kxzqenWCorfmEXpEZcrSQ==", - "dev": true, + "@dashersw/node-discover": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@dashersw/node-discover/-/node-discover-1.0.4.tgz", + "integrity": "sha512-OblARM345ECaTSSFQcuWUl+7/uhOjhKBIA0G0CbOPbUzwF3cqBbl2R0E9tulnsLk3XB6Zpmja0TZIU5ClKF6LA==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "lodash": "^4.17.13" + "redis": "^2.7.1", + "uuid": "^3.3.2" } }, - "@babel/plugin-transform-classes": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz", - "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==", + "@sinonjs/commons": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.0.tgz", + "integrity": "sha512-qbk9AP+cZUsKdW1GJsBpxPKFmCJ0T8swwzVje3qFd+AkQb74Q/tiuzrdfFg8AD2g5HH/XbE/I8Uc1KYHVYWfhg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-define-map": "^7.5.5", - "@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.5.5", - "@babel/helper-split-export-declaration": "^7.4.4", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", - "dev": true, - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@babel/types": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", - "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - } + "type-detect": "4.0.8" } }, - "@babel/plugin-transform-computed-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz", - "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==", + "@sinonjs/formatio": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", + "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@sinonjs/commons": "^1", + "@sinonjs/samsam": "^3.1.0" } }, - "@babel/plugin-transform-destructuring": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.6.0.tgz", - "integrity": "sha512-2bGIS5P1v4+sWTCnKNDZDxbGvEqi0ijeqM/YqHtVGrvG2y0ySgnEEhXErvE9dA0bnIzY9bIzdFK0jFA46ASIIQ==", + "@sinonjs/samsam": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", + "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@sinonjs/commons": "^1.3.0", + "array-from": "^2.1.1", + "lodash": "^4.17.15" } }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.2.0.tgz", - "integrity": "sha512-sKxnyHfizweTgKZf7XsXu/CNupKhzijptfTM+bozonIuyVrLWVUvYjE2bhuSBML8VQeMxq4Mm63Q9qvcvUcciQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0", - "regexpu-core": "^4.1.3" - } + "@sinonjs/text-encoding": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "dev": true }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz", - "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz", - "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==", + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" } }, - "@babel/plugin-transform-for-of": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz", - "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true }, - "@babel/plugin-transform-function-name": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz", - "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" - } + "@types/node": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.1.1.tgz", + "integrity": "sha512-hx6zWtudh3Arsbl3cXay+JnkvVgCKzCWKv42C9J01N2T2np4h8w5X8u6Tpz5mj38kE3M9FM0Pazx8vKFFMnjLQ==", + "dev": true }, - "@babel/plugin-transform-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz", - "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==", - "dev": true, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "mime-types": "~2.1.24", + "negotiator": "0.6.2" } }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz", - "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } + "acorn": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", + "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", + "dev": true }, - "@babel/plugin-transform-modules-amd": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz", - "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==", + "acorn-jsx": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.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" } }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.4.0.tgz", - "integrity": "sha512-iWKAooAkipG7g1IY0eah7SumzfnIT3WNhT4uYB2kIsvHnNSB6MDYVa5qyICSwaTBDBY2c4SnJ3JtEa6ltJd6Jw==", - "dev": true, + "amp": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", + "integrity": "sha1-at+NWKdPNh6CwfqNOJwHnhOfxH0=" + }, + "amp-message": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz", + "integrity": "sha1-p48cmJlQh602GSpBKY5NtJ49/EU=", "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0" + "amp": "0.3.1" } }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz", - "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==", + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", - "babel-plugin-dynamic-import-node": "^2.3.0" + "string-width": "^2.0.0" } }, - "@babel/plugin-transform-modules-umd": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz", - "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==", + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.1.0", - "@babel/helper-plugin-utils": "^7.0.0" + "color-convert": "^1.9.0" } }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.6.2.tgz", - "integrity": "sha512-xBdB+XOs+lgbZc2/4F5BVDVcDNS4tcSKQc96KmlqLEAwz6tpYPEvPdmDfvVG0Ssn8lAhronaRs6Z6KSexIpK5g==", + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "regexpu-core": "^4.6.0" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" }, "dependencies": { - "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" + "remove-trailing-separator": "^1.0.1" } } } }, - "@babel/plugin-transform-new-target": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz", - "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "sprintf-js": "~1.0.2" } }, - "@babel/plugin-transform-object-super": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz", - "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-replace-supers": "^7.5.5" - } + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true }, - "@babel/plugin-transform-parameters": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz", - "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==", - "dev": true, - "requires": { - "@babel/helper-call-delegate": "^7.4.4", - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" - } + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true }, - "@babel/plugin-transform-property-literals": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz", - "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0" - } + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true }, - "@babel/plugin-transform-regenerator": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz", - "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.0" - } + "array-differ": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-2.1.0.tgz", + "integrity": "sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w==", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "dev": true }, - "@babel/plugin-transform-reserved-words": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz", - "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==", + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "array-uniq": "^1.0.1" + }, + "dependencies": { + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + } } }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz", - "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==", + "array-uniq": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-2.1.0.tgz", + "integrity": "sha512-bdHxtev7FN6+MXI1YFW0Q8mQ8dTJc2S8AMfju+ZR77pbg2yAdVyDlwkaUI7Har0LyOMRFPHrJ9lYdyjZZswdlQ==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "safer-buffer": "~2.1.0" } }, - "@babel/plugin-transform-spread": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.6.2.tgz", - "integrity": "sha512-DpSvPFryKdK1x+EDJYCy28nmAaIMdxmhot62jAXF/o99iA33Zj2Lmcp3vDmz+MUh0LNYVPvfj5iC3feb3/+PFg==", + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "lodash": "^4.17.14" } }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz", - "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==", + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "ava": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/ava/-/ava-1.4.1.tgz", + "integrity": "sha512-wKpgOPTL7hJSBWpfbU4SA8rlsTZrph9g9g7qYDV7M6uK1rKeW8oCUJWRwCd8B24S4N0Y5myf6cTEnA66WIk0sA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.0.0" + "@ava/babel-preset-stage-4": "^2.0.0", + "@ava/babel-preset-transform-test-files": "^5.0.0", + "@ava/write-file-atomic": "^2.2.0", + "@babel/core": "^7.4.0", + "@babel/generator": "^7.4.0", + "@babel/plugin-syntax-async-generators": "^7.2.0", + "@babel/plugin-syntax-object-rest-spread": "^7.2.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", + "@concordance/react": "^2.0.0", + "ansi-escapes": "^3.2.0", + "ansi-styles": "^3.2.1", + "arr-flatten": "^1.1.0", + "array-union": "^1.0.1", + "array-uniq": "^2.0.0", + "arrify": "^1.0.0", + "bluebird": "^3.5.3", + "chalk": "^2.4.2", + "chokidar": "^2.1.5", + "chunkd": "^1.0.0", + "ci-parallel-vars": "^1.0.0", + "clean-stack": "^2.0.0", + "clean-yaml-object": "^0.1.0", + "cli-cursor": "^2.1.0", + "cli-truncate": "^1.1.0", + "code-excerpt": "^2.1.1", + "common-path-prefix": "^1.0.0", + "concordance": "^4.0.0", + "convert-source-map": "^1.6.0", + "currently-unhandled": "^0.4.1", + "debug": "^4.1.1", + "del": "^4.0.0", + "dot-prop": "^4.2.0", + "emittery": "^0.4.1", + "empower-core": "^1.2.0", + "equal-length": "^1.0.0", + "escape-string-regexp": "^1.0.5", + "esm": "^3.2.20", + "figures": "^2.0.0", + "find-up": "^3.0.0", + "get-port": "^4.2.0", + "globby": "^7.1.1", + "ignore-by-default": "^1.0.0", + "import-local": "^2.0.0", + "indent-string": "^3.2.0", + "is-ci": "^2.0.0", + "is-error": "^2.2.1", + "is-observable": "^1.1.0", + "is-plain-object": "^2.0.4", + "is-promise": "^2.1.0", + "lodash.clone": "^4.5.0", + "lodash.clonedeep": "^4.5.0", + "lodash.clonedeepwith": "^4.5.0", + "lodash.debounce": "^4.0.3", + "lodash.difference": "^4.3.0", + "lodash.flatten": "^4.2.0", + "loud-rejection": "^1.2.0", + "make-dir": "^2.1.0", + "matcher": "^1.1.1", + "md5-hex": "^2.0.0", + "meow": "^5.0.0", + "ms": "^2.1.1", + "multimatch": "^3.0.0", + "observable-to-promise": "^0.5.0", + "ora": "^3.2.0", + "package-hash": "^3.0.0", + "pkg-conf": "^3.0.0", + "plur": "^3.0.1", + "pretty-ms": "^4.0.0", + "require-precompiled": "^0.1.0", + "resolve-cwd": "^2.0.0", + "slash": "^2.0.0", + "source-map-support": "^0.5.11", + "stack-utils": "^1.0.2", + "strip-ansi": "^5.2.0", + "strip-bom-buf": "^1.0.0", + "supertap": "^1.0.0", + "supports-color": "^6.1.0", + "trim-off-newlines": "^1.0.1", + "trim-right": "^1.0.1", + "unique-temp-dir": "^1.0.0", + "update-notifier": "^2.5.0" } }, - "@babel/plugin-transform-template-literals": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz", - "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==", + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz", + "integrity": "sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==", + "dev": true + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", + "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0" + "object.assign": "^4.1.0" } }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz", - "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==", + "babel-plugin-espower": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-3.0.1.tgz", + "integrity": "sha512-Ms49U7VIAtQ/TtcqRbD6UBmJBUCSxiC3+zPc+eGqxKUIFO1lTshyEDRUjhoAbd2rWfwYf3cZ62oXozrd8W6J0A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0" + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "call-matcher": "^1.0.0", + "core-js": "^2.0.0", + "espower-location-detector": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.1.1" } }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.6.2.tgz", - "integrity": "sha512-orZI6cWlR3nk2YmYdb0gImrgCUwb5cBUwjf6Ks6dvNVvXERkwtJWOQaEOjPiu0Gu1Tq6Yq/hruCZZOOi9F34Dw==", + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { - "@babel/helper-regex": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", - "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { - "lodash": "^4.17.13" + "is-descriptor": "^1.0.0" } }, - "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { - "regenerate": "^1.4.0" + "kind-of": "^6.0.0" } }, - "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" - } - } - } - }, - "@babel/preset-env": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.6.2.tgz", - "integrity": "sha512-Ru7+mfzy9M1/YTEtlDS8CD45jd22ngb9tXnn64DvQK3ooyqSw9K4K9DUWmYknTTVk4TqygL9dqCrZgm1HMea/Q==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-async-generator-functions": "^7.2.0", - "@babel/plugin-proposal-dynamic-import": "^7.5.0", - "@babel/plugin-proposal-json-strings": "^7.2.0", - "@babel/plugin-proposal-object-rest-spread": "^7.6.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.2.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.6.2", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-syntax-json-strings": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@babel/plugin-transform-arrow-functions": "^7.2.0", - "@babel/plugin-transform-async-to-generator": "^7.5.0", - "@babel/plugin-transform-block-scoped-functions": "^7.2.0", - "@babel/plugin-transform-block-scoping": "^7.6.2", - "@babel/plugin-transform-classes": "^7.5.5", - "@babel/plugin-transform-computed-properties": "^7.2.0", - "@babel/plugin-transform-destructuring": "^7.6.0", - "@babel/plugin-transform-dotall-regex": "^7.6.2", - "@babel/plugin-transform-duplicate-keys": "^7.5.0", - "@babel/plugin-transform-exponentiation-operator": "^7.2.0", - "@babel/plugin-transform-for-of": "^7.4.4", - "@babel/plugin-transform-function-name": "^7.4.4", - "@babel/plugin-transform-literals": "^7.2.0", - "@babel/plugin-transform-member-expression-literals": "^7.2.0", - "@babel/plugin-transform-modules-amd": "^7.5.0", - "@babel/plugin-transform-modules-commonjs": "^7.6.0", - "@babel/plugin-transform-modules-systemjs": "^7.5.0", - "@babel/plugin-transform-modules-umd": "^7.2.0", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.6.2", - "@babel/plugin-transform-new-target": "^7.4.4", - "@babel/plugin-transform-object-super": "^7.5.5", - "@babel/plugin-transform-parameters": "^7.4.4", - "@babel/plugin-transform-property-literals": "^7.2.0", - "@babel/plugin-transform-regenerator": "^7.4.5", - "@babel/plugin-transform-reserved-words": "^7.2.0", - "@babel/plugin-transform-shorthand-properties": "^7.2.0", - "@babel/plugin-transform-spread": "^7.6.2", - "@babel/plugin-transform-sticky-regex": "^7.2.0", - "@babel/plugin-transform-template-literals": "^7.4.4", - "@babel/plugin-transform-typeof-symbol": "^7.2.0", - "@babel/plugin-transform-unicode-regex": "^7.6.2", - "@babel/types": "^7.6.0", - "browserslist": "^4.6.0", - "core-js-compat": "^3.1.1", - "invariant": "^2.2.2", - "js-levenshtein": "^1.1.3", - "semver": "^5.5.0" - }, - "dependencies": { - "@babel/helper-module-transforms": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz", - "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/template": "^7.4.4", - "@babel/types": "^7.5.5", - "lodash": "^4.17.13" + "kind-of": "^6.0.0" } }, - "@babel/helper-regex": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz", - "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { - "lodash": "^4.17.13" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", - "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", - "dev": true, - "requires": { - "@babel/types": "^7.4.4" - } - }, - "@babel/parser": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.6.2.tgz", - "integrity": "sha512-mdFqWrSPCmikBoaBYMuBulzTIKuXVPtEISFbRRVNwMWpCms/hmE2kRq0bblUHaNRKrjRlmVbx1sDHmjmRgD2Xg==", - "dev": true - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.6.2.tgz", - "integrity": "sha512-LDBXlmADCsMZV1Y9OQwMc0MyGZ8Ta/zlD9N67BfQT8uYwkRswiu2hU6nJKrjrt/58aH/vqfQlR/9yId/7A2gWw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz", - "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.0.0", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-remap-async-to-generator": "^7.1.0" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.6.2.tgz", - "integrity": "sha512-KGKT9aqKV+9YMZSkowzYoYEiHqgaDhGmPNZlZxX6UeHC4z30nC1J9IrZuGqbYFB1jaIGdv91ujpze0exiVK8bA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-regex": "^7.4.4", - "regexpu-core": "^4.6.0" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.6.0.tgz", - "integrity": "sha512-Ma93Ix95PNSEngqomy5LSBMAQvYKVe3dy+JlVJSHEXZR5ASL9lQBedMiCyVtmTLraIDVRE3ZjTZvmXXD2Ozw3g==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.4.4", - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/helper-simple-access": "^7.1.0", - "babel-plugin-dynamic-import-node": "^2.3.0" - } - }, - "@babel/template": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.6.0.tgz", - "integrity": "sha512-5AEH2EXD8euCk446b7edmgFdub/qfH1SN6Nii3+fyXP807QRx9Q73A2N5hNwRRslC2H9sNzaFhsPubkS4L8oNQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.6.0", - "@babel/types": "^7.6.0" - } - }, - "@babel/types": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.6.1.tgz", - "integrity": "sha512-X7gdiuaCmA0uRjCmRtYJNAVCc/q+5xSgsfKJHqMN4iNLILX39677fJE1O40arPMh0TTtS9ItH67yre6c7k6t0g==", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - } - }, - "regenerate-unicode-properties": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", - "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regexpu-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", - "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.1.0", - "regjsgen": "^0.5.0", - "regjsparser": "^0.6.0", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.1.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } } } }, - "@babel/template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", - "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.0", - "@babel/types": "^7.4.0" + "tweetnacl": "^0.14.3" } }, - "@babel/traverse": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.0.tgz", - "integrity": "sha512-/DtIHKfyg2bBKnIN+BItaIlEg5pjAnzHOIQe5w+rHAw/rg9g0V7T4rqPX8BJPfW11kt3koyjAnTNwCzb28Y1PA==", - "dev": true, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/generator": "^7.4.0", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.0", - "@babel/parser": "^7.4.0", - "@babel/types": "^7.4.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.11" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - } + "callsite": "1.0.0" } }, - "@babel/types": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", - "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "dev": true, + "optional": true, "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.11", - "to-fast-properties": "^2.0.0" + "file-uri-to-path": "1.0.0" } }, - "@concordance/react": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@concordance/react/-/react-2.0.0.tgz", - "integrity": "sha512-huLSkUuM2/P+U0uy2WwlKuixMsTODD8p4JVQBI4VKeopkiN0C7M3N9XYVawb4M+4spN5RrO/eLhk7KoQX6nsfA==", + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "boxen": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", + "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", "dev": true, "requires": { - "arrify": "^1.0.1" + "ansi-align": "^2.0.0", + "camelcase": "^4.0.0", + "chalk": "^2.0.1", + "cli-boxes": "^1.0.0", + "string-width": "^2.0.0", + "term-size": "^1.2.0", + "widest-line": "^2.0.0" } }, - "@dashersw/axon": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@dashersw/axon/-/axon-2.0.5.tgz", - "integrity": "sha512-e7az6UOh/1JqLvzg2GPhP3n47QMQal3Qg2a2497JwY7dlbSKUg4dQmnRyKWNjFz0FHjranUjKvX6J6NAV3Sm/Q==", + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "requires": { - "amp": "~0.3.1", - "amp-message": "~0.1.1", - "configurable": "0.0.1", - "debug": "*", - "escape-regexp": "0.0.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "@dashersw/node-discover": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@dashersw/node-discover/-/node-discover-1.0.4.tgz", - "integrity": "sha512-OblARM345ECaTSSFQcuWUl+7/uhOjhKBIA0G0CbOPbUzwF3cqBbl2R0E9tulnsLk3XB6Zpmja0TZIU5ClKF6LA==", + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, "requires": { - "redis": "^2.7.1", - "uuid": "^3.3.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } } } }, - "@sinonjs/commons": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.6.0.tgz", - "integrity": "sha512-w4/WHG7C4WWFyE5geCieFJF6MZkbW4VAriol5KlmQXpAQdxvV0p26sqNZOW6Qyw6Y0l9K4g+cHvvczR2sEEpqg==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true }, - "@sinonjs/formatio": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.1.tgz", - "integrity": "sha512-tsHvOB24rvyvV2+zKMmPkZ7dXX6LSLKZ7aOtXY6Edklp0uRcgGpOsQTTGTcWViFyx4uhWc6GV8QdnALbIbIdeQ==", + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^3.1.0" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" } }, - "@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", + "call-matcher": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.1.0.tgz", + "integrity": "sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw==", "dev": true, "requires": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" + "core-js": "^2.0.0", + "deep-equal": "^1.0.0", + "espurify": "^1.6.0", + "estraverse": "^4.0.0" } }, - "@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "call-signature": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", + "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", "dev": true }, - "accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", - "requires": { - "mime-types": "~2.1.18", - "negotiator": "0.6.1" - } + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" }, - "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, - "acorn-jsx": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz", - "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==", + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", "dev": true }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" - }, - "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", "dev": true, "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" } }, - "amp": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", - "integrity": "sha1-at+NWKdPNh6CwfqNOJwHnhOfxH0=" - }, - "amp-message": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz", - "integrity": "sha1-p48cmJlQh602GSpBKY5NtJ49/EU=", - "requires": { - "amp": "0.3.1" - } + "capture-stack-trace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", + "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", + "dev": true }, - "ansi-align": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", - "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", - "dev": true, - "requires": { - "string-width": "^2.0.0" - } - }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-differ": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-2.1.0.tgz", - "integrity": "sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w==", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, - "array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { - "array-uniq": "^1.0.1" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "dependencies": { - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } } } }, - "array-uniq": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-2.0.0.tgz", - "integrity": "sha512-O3QZEr+3wDj7otzF7PjNGs6CA3qmYMLvt5xGkjY/V0VxS+ovvqVo/5wKM/OVOAyuX4DTh9H31zE/yKtO66hTkg==", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true - }, - "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "ava": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/ava/-/ava-1.4.1.tgz", - "integrity": "sha512-wKpgOPTL7hJSBWpfbU4SA8rlsTZrph9g9g7qYDV7M6uK1rKeW8oCUJWRwCd8B24S4N0Y5myf6cTEnA66WIk0sA==", - "dev": true, + "charm": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/charm/-/charm-1.0.2.tgz", + "integrity": "sha1-it02cVOm2aWBMxBSxAkJkdqZXjU=", "requires": { - "@ava/babel-preset-stage-4": "^2.0.0", - "@ava/babel-preset-transform-test-files": "^5.0.0", - "@ava/write-file-atomic": "^2.2.0", - "@babel/core": "^7.4.0", - "@babel/generator": "^7.4.0", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.2.0", - "@concordance/react": "^2.0.0", - "ansi-escapes": "^3.2.0", - "ansi-styles": "^3.2.1", - "arr-flatten": "^1.1.0", - "array-union": "^1.0.1", - "array-uniq": "^2.0.0", - "arrify": "^1.0.0", - "bluebird": "^3.5.3", - "chalk": "^2.4.2", - "chokidar": "^2.1.5", - "chunkd": "^1.0.0", - "ci-parallel-vars": "^1.0.0", - "clean-stack": "^2.0.0", - "clean-yaml-object": "^0.1.0", - "cli-cursor": "^2.1.0", - "cli-truncate": "^1.1.0", - "code-excerpt": "^2.1.1", - "common-path-prefix": "^1.0.0", - "concordance": "^4.0.0", - "convert-source-map": "^1.6.0", - "currently-unhandled": "^0.4.1", - "debug": "^4.1.1", - "del": "^4.0.0", - "dot-prop": "^4.2.0", - "emittery": "^0.4.1", - "empower-core": "^1.2.0", - "equal-length": "^1.0.0", - "escape-string-regexp": "^1.0.5", - "esm": "^3.2.20", - "figures": "^2.0.0", - "find-up": "^3.0.0", - "get-port": "^4.2.0", - "globby": "^7.1.1", - "ignore-by-default": "^1.0.0", - "import-local": "^2.0.0", - "indent-string": "^3.2.0", - "is-ci": "^2.0.0", - "is-error": "^2.2.1", - "is-observable": "^1.1.0", - "is-plain-object": "^2.0.4", - "is-promise": "^2.1.0", - "lodash.clone": "^4.5.0", - "lodash.clonedeep": "^4.5.0", - "lodash.clonedeepwith": "^4.5.0", - "lodash.debounce": "^4.0.3", - "lodash.difference": "^4.3.0", - "lodash.flatten": "^4.2.0", - "loud-rejection": "^1.2.0", - "make-dir": "^2.1.0", - "matcher": "^1.1.1", - "md5-hex": "^2.0.0", - "meow": "^5.0.0", - "ms": "^2.1.1", - "multimatch": "^3.0.0", - "observable-to-promise": "^0.5.0", - "ora": "^3.2.0", - "package-hash": "^3.0.0", - "pkg-conf": "^3.0.0", - "plur": "^3.0.1", - "pretty-ms": "^4.0.0", - "require-precompiled": "^0.1.0", - "resolve-cwd": "^2.0.0", - "slash": "^2.0.0", - "source-map-support": "^0.5.11", - "stack-utils": "^1.0.2", - "strip-ansi": "^5.2.0", - "strip-bom-buf": "^1.0.0", - "supertap": "^1.0.0", - "supports-color": "^6.1.0", - "trim-off-newlines": "^1.0.1", - "trim-right": "^1.0.1", - "unique-temp-dir": "^1.0.0", - "update-notifier": "^2.5.0" - }, - "dependencies": { - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "esm": { - "version": "3.2.21", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.21.tgz", - "integrity": "sha512-DkNi6jYtrT/FdO8pPEH+GFtBE321T3nup8FWdgaYpzaf4tK6aVJiCfgxNotZjEbnZ32t2VEtqIfbjp5GBN65Nw==", - "dev": true - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz", - "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-espower": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-espower/-/babel-plugin-espower-3.0.1.tgz", - "integrity": "sha512-Ms49U7VIAtQ/TtcqRbD6UBmJBUCSxiC3+zPc+eGqxKUIFO1lTshyEDRUjhoAbd2rWfwYf3cZ62oXozrd8W6J0A==", - "dev": true, - "requires": { - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "call-matcher": "^1.0.0", - "core-js": "^2.0.0", - "espower-location-detector": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.1.1" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } - } - }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } - } - }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" - }, - "base64id": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", - "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "requires": { - "callsite": "1.0.0" - } - }, - "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", - "dev": true - }, - "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" - }, - "bluebird": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", - "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", - "dev": true - }, - "boxen": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", - "integrity": "sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw==", - "dev": true, - "requires": { - "ansi-align": "^2.0.0", - "camelcase": "^4.0.0", - "chalk": "^2.0.1", - "cli-boxes": "^1.0.0", - "string-width": "^2.0.0", - "term-size": "^1.2.0", - "widest-line": "^2.0.0" - } - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "browserslist": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.0.tgz", - "integrity": "sha512-9rGNDtnj+HaahxiVV38Gn8n8Lr8REKsel68v1sPFfIGEK6uSXTY3h9acgiT1dZVtOOUtifo/Dn8daDQ5dUgVsA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000989", - "electron-to-chromium": "^1.3.247", - "node-releases": "^1.1.29" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "call-matcher": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/call-matcher/-/call-matcher-1.1.0.tgz", - "integrity": "sha512-IoQLeNwwf9KTNbtSA7aEBb1yfDbdnzwjCetjkC8io5oGeOmK2CBNdg0xr+tadRYKO0p7uQyZzvon0kXlZbvGrw==", - "dev": true, - "requires": { - "core-js": "^2.0.0", - "deep-equal": "^1.0.0", - "espurify": "^1.6.0", - "estraverse": "^4.0.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } - } - }, - "call-signature": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/call-signature/-/call-signature-0.0.2.tgz", - "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", - "dev": true - }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", - "dev": true, - "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" - } - }, - "caniuse-lite": { - "version": "1.0.30000997", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000997.tgz", - "integrity": "sha512-BQLFPIdj2ntgBNWp9Q64LGUIEmvhKkzzHhUHR3CD5A9Lb7ZKF20/+sgadhFap69lk5XmK1fTUleDclaRFvgVUA==", - "dev": true - }, - "capture-stack-trace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz", - "integrity": "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "charm": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/charm/-/charm-1.0.2.tgz", - "integrity": "sha1-it02cVOm2aWBMxBSxAkJkdqZXjU=", - "requires": { - "inherits": "^2.0.1" - } - }, - "chokidar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.5.tgz", - "integrity": "sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "dependencies": { - "fsevents": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", - "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.10.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", - "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true, - "optional": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", - "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", - "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", - "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", - "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true, - "optional": true - }, - "needle": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.2.4.tgz", - "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==", - "dev": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz", - "integrity": "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==", - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", - "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", - "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.2.0.tgz", - "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==", - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "optional": true - }, - "semver": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", - "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "dev": true, - "optional": true - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", - "dev": true - } + "inherits": "^2.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" } }, "chunkd": { @@ -3011,19 +1213,13 @@ "requires": { "is-descriptor": "^0.1.0" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, "clean-stack": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.0.0.tgz", - "integrity": "sha512-VEoL9Qh7I8s8iHnV53DaeWSt8NJ0g3khMfK6NiCPB7H657juhro+cSw2O88uo3bo0c0X5usamtXk0/Of0wXa5A==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, "clean-yaml-object": { @@ -3048,9 +1244,9 @@ } }, "cli-spinners": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.0.0.tgz", - "integrity": "sha512-yiEBmhaKPPeBj7wWm4GEdtPZK940p9pl3EANIrnJ3JnvWyrPjcFcsEq6qRUuQ7fzB0+Y82ld3p6B34xo95foWw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.2.0.tgz", + "integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ==", "dev": true }, "cli-truncate": { @@ -3115,9 +1311,9 @@ "integrity": "sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg==" }, "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "requires": { "delayed-stream": "~1.0.0" @@ -3212,9 +1408,9 @@ "integrity": "sha1-R9dbcntRtOuEwdra/j+CQDE4M7E=" }, "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" @@ -3238,27 +1434,10 @@ "dev": true }, "core-js": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz", - "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A==" - }, - "core-js-compat": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.1.tgz", - "integrity": "sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A==", - "dev": true, - "requires": { - "browserslist": "^4.6.6", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -3267,17 +1446,16 @@ "dev": true }, "coveralls": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.6.tgz", - "integrity": "sha512-Pgh4v3gCI4T/9VijVrm8Ym5v0OgjvGLKj3zTUwkvsCiwqae/p6VLzpsFNjQS2i6ewV7ef+DjFJ5TSKxYt/mCrA==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.9.tgz", + "integrity": "sha512-nNBg3B1+4iDox5A5zqHKzUTiwl2ey4k2o0NEcVZYvl+GOSJdKBj4AJGKLv6h3SvWch7tABHePAQOSZWM9E2hMg==", "dev": true, "requires": { - "growl": "~> 1.10.0", "js-yaml": "^3.13.1", - "lcov-parse": "^0.0.10", + "lcov-parse": "^1.0.0", "log-driver": "^1.2.7", "minimist": "^1.2.0", - "request": "^2.86.0" + "request": "^2.88.0" }, "dependencies": { "minimist": { @@ -3342,11 +1520,11 @@ } }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "decamelize": { @@ -3380,10 +1558,18 @@ "dev": true }, "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } }, "deep-extend": { "version": "0.6.0", @@ -3453,33 +1639,22 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, "del": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/del/-/del-4.0.0.tgz", - "integrity": "sha512-/BnSJ+SuZyLu7xMn48kZY0nMXDi+5KNmR4g8n21Wivsl8+B9njV6/5kcTNE9juSprp0zRWBU28JuHUq0FqK1Nw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", "dev": true, "requires": { + "@types/glob": "^7.1.1", "globby": "^6.1.0", "is-path-cwd": "^2.0.0", "is-path-in-cwd": "^2.0.0", "p-map": "^2.0.0", "pify": "^4.0.1", - "rimraf": "^2.6.2" + "rimraf": "^2.6.3" }, "dependencies": { "globby": { @@ -3565,12 +1740,6 @@ "safer-buffer": "^2.1.0" } }, - "electron-to-chromium": { - "version": "1.3.267", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.267.tgz", - "integrity": "sha512-9Q2ixAJC+oHjWNtJV0MQ4vJMCWSowIrC6V6vcr+bwPddTDHj2ddv9xxXCzf4jT/fy6HP7maPoW0gifXkRxCttQ==", - "dev": true - }, "emittery": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.4.1.tgz", @@ -3591,14 +1760,6 @@ "requires": { "call-signature": "0.0.2", "core-js": "^2.0.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "engine.io": { @@ -3612,6 +1773,21 @@ "debug": "~3.1.0", "engine.io-parser": "~2.1.0", "ws": "~6.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } } }, "engine.io-client": { @@ -3632,25 +1808,30 @@ "yeast": "0.1.2" }, "dependencies": { - "ws": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", - "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { - "async-limiter": "~1.0.0" + "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "engine.io-parser": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz", - "integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", "requires": { "after": "0.8.2", "arraybuffer.slice": "~0.0.7", "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", + "blob": "0.0.5", "has-binary2": "~1.0.2" } }, @@ -3669,6 +1850,36 @@ "is-arrayish": "^0.2.1" } }, + "es-abstract": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", + "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", @@ -3743,27 +1954,12 @@ "which": "^1.2.9" } }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", @@ -3792,18 +1988,24 @@ } }, "eslint-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", - "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.0.0" + "eslint-visitor-keys": "^1.1.0" } }, "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + }, + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", "dev": true }, "espower-location-detector": { @@ -3842,14 +2044,6 @@ "dev": true, "requires": { "core-js": "^2.0.0" - }, - "dependencies": { - "core-js": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.5.tgz", - "integrity": "sha512-klh/kDpwX8hryYL14M9w/xei6vrv6sE8gTHDG7/T/+SEovB/G4ejwcfE/CBzO6Edsu+OETZMZ3wcX/EjUkrl5A==", - "dev": true - } } }, "esquery": { @@ -3871,15 +2065,15 @@ } }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, "eventemitter2": { @@ -3943,6 +2137,12 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -3974,9 +2174,9 @@ } }, "external-editor": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", - "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "requires": { "chardet": "^0.7.0", @@ -4046,12 +2246,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -4074,9 +2268,9 @@ "dev": true }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { @@ -4103,6 +2297,13 @@ "flat-cache": "^2.0.1" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -4144,12 +2345,23 @@ "flatted": "^2.0.0", "rimraf": "2.6.3", "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } } }, "flatted": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", - "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", "dev": true }, "for-in": { @@ -4184,12 +2396,6 @@ "map-cache": "^0.2.2" } }, - "fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", - "dev": true - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -4197,14 +2403,15 @@ "dev": true }, "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", + "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", "dev": true, "optional": true, "requires": { + "bindings": "^1.5.0", "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" + "node-pre-gyp": "*" }, "dependencies": { "abbrev": { @@ -4252,7 +2459,7 @@ } }, "chownr": { - "version": "1.1.1", + "version": "1.1.3", "bundled": true, "dev": true, "optional": true @@ -4282,7 +2489,7 @@ "optional": true }, "debug": { - "version": "4.1.1", + "version": "3.2.6", "bundled": true, "dev": true, "optional": true, @@ -4309,12 +2516,12 @@ "optional": true }, "fs-minipass": { - "version": "1.2.5", + "version": "1.2.7", "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^2.6.0" } }, "fs.realpath": { @@ -4340,7 +2547,7 @@ } }, "glob": { - "version": "7.1.3", + "version": "7.1.6", "bundled": true, "dev": true, "optional": true, @@ -4369,7 +2576,7 @@ } }, "ignore-walk": { - "version": "3.0.1", + "version": "3.0.3", "bundled": true, "dev": true, "optional": true, @@ -4388,7 +2595,7 @@ } }, "inherits": { - "version": "2.0.3", + "version": "2.0.4", "bundled": true, "dev": true, "optional": true @@ -4430,7 +2637,7 @@ "optional": true }, "minipass": { - "version": "2.3.5", + "version": "2.9.0", "bundled": true, "dev": true, "optional": true, @@ -4440,12 +2647,12 @@ } }, "minizlib": { - "version": "1.2.1", + "version": "1.3.3", "bundled": true, "dev": true, "optional": true, "requires": { - "minipass": "^2.2.1" + "minipass": "^2.9.0" } }, "mkdirp": { @@ -4458,31 +2665,24 @@ } }, "ms": { - "version": "2.1.1", + "version": "2.1.2", "bundled": true, "dev": true, "optional": true }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true, - "optional": true - }, "needle": { - "version": "2.3.0", + "version": "2.4.0", "bundled": true, "dev": true, "optional": true, "requires": { - "debug": "^4.1.0", + "debug": "^3.2.6", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { - "version": "0.12.0", + "version": "0.14.0", "bundled": true, "dev": true, "optional": true, @@ -4496,7 +2696,7 @@ "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", - "tar": "^4" + "tar": "^4.4.2" } }, "nopt": { @@ -4510,13 +2710,22 @@ } }, "npm-bundled": { - "version": "1.0.6", + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { - "version": "1.4.1", + "version": "1.4.7", "bundled": true, "dev": true, "optional": true, @@ -4587,7 +2796,7 @@ "optional": true }, "process-nextick-args": { - "version": "2.0.0", + "version": "2.0.1", "bundled": true, "dev": true, "optional": true @@ -4628,7 +2837,7 @@ } }, "rimraf": { - "version": "2.6.3", + "version": "2.7.1", "bundled": true, "dev": true, "optional": true, @@ -4655,7 +2864,7 @@ "optional": true }, "semver": { - "version": "5.7.0", + "version": "5.7.1", "bundled": true, "dev": true, "optional": true @@ -4708,18 +2917,18 @@ "optional": true }, "tar": { - "version": "4.4.8", + "version": "4.4.13", "bundled": true, "dev": true, "optional": true, "requires": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", "mkdirp": "^0.5.0", "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" + "yallist": "^3.0.3" } }, "util-deprecate": { @@ -4744,7 +2953,7 @@ "optional": true }, "yallist": { - "version": "3.0.3", + "version": "3.1.1", "bundled": true, "dev": true, "optional": true @@ -4791,9 +3000,9 @@ } }, "glob": { - "version": "7.1.2", - "resolved": "http://localhost:4873/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4835,9 +3044,9 @@ } }, "globals": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", - "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true }, "globby": { @@ -4888,33 +3097,11 @@ } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", "dev": true }, - "handlebars": { - "version": "4.1.2", - "resolved": "", - "dev": true, - "requires": { - "source-map": "^0.6.1" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", @@ -4931,6 +3118,15 @@ "har-schema": "^2.0.0" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-binary2": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", @@ -4951,9 +3147,9 @@ "dev": true }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, "has-value": { @@ -4965,14 +3161,6 @@ "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "has-values": { @@ -4985,26 +3173,6 @@ "kind-of": "^4.0.0" }, "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -5026,9 +3194,9 @@ } }, "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", "dev": true }, "http-signature": { @@ -5070,9 +3238,9 @@ "dev": true }, "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -5131,9 +3299,9 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.5", @@ -5142,9 +3310,9 @@ "dev": true }, "inquirer": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.2.tgz", - "integrity": "sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", "dev": true, "requires": { "ansi-escapes": "^3.2.0", @@ -5153,24 +3321,15 @@ "cli-width": "^2.0.0", "external-editor": "^3.0.3", "figures": "^2.0.0", - "lodash": "^4.17.11", + "lodash": "^4.17.12", "mute-stream": "0.0.7", "run-async": "^2.2.0", "rxjs": "^6.4.0", "string-width": "^2.1.0", - "strip-ansi": "^5.0.0", + "strip-ansi": "^5.1.0", "through": "^2.3.6" } }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "irregular-plurals": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-2.0.0.tgz", @@ -5179,13 +3338,30 @@ }, "is-accessor-descriptor": { "version": "0.1.6", - "resolved": "http://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -5207,6 +3383,12 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", @@ -5218,13 +3400,30 @@ }, "is-data-descriptor": { "version": "0.1.4", - "resolved": "http://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -5245,9 +3444,9 @@ } }, "is-error": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.1.tgz", - "integrity": "sha1-aEqW2EB2V3yY9M20DG0mpRI78Zw=", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.2.tgz", + "integrity": "sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==", "dev": true }, "is-extendable": { @@ -5285,6 +3484,17 @@ "requires": { "global-dirs": "^0.1.0", "is-path-inside": "^1.0.0" + }, + "dependencies": { + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + } } }, "is-npm": { @@ -5300,6 +3510,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "is-obj": { @@ -5318,27 +3539,27 @@ } }, "is-path-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.0.0.tgz", - "integrity": "sha512-m5dHHzpOXEiv18JEORttBO64UgTEypx99vCxQLjbBvGhOJxnTNglYoFXxwo6AbsQb79sqqycQEHv2hWkHZAijA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", "dev": true }, "is-path-in-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.0.0.tgz", - "integrity": "sha512-6Vz5Gc9s/sDA3JBVu0FzWufm8xaBsqy1zn8Q6gmvGP6nSDMw78aS4poBNeatWjaRpTpxxLn1WOndAiOlk+qY8A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", "dev": true, "requires": { - "is-path-inside": "^1.0.0" + "is-path-inside": "^2.1.0" } }, "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", "dev": true, "requires": { - "path-is-inside": "^1.0.1" + "path-is-inside": "^1.0.2" } }, "is-plain-obj": { @@ -5354,14 +3575,6 @@ "dev": true, "requires": { "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "is-promise": { @@ -5376,10 +3589,19 @@ "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", "dev": true }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, "is-retry-allowed": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", - "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", "dev": true }, "is-stream": { @@ -5388,6 +3610,15 @@ "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -5436,32 +3667,34 @@ "dev": true }, "istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true }, "istanbul-lib-instrument": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.1.0.tgz", - "integrity": "sha512-ooVllVGT38HIk8MxDj/OIHXSYvH+1tq/Vb38s8ixt9GoJadXska4WkGY+0wkmtYCZNYtaARniH/DixUGGLZ0uA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", "dev": true, "requires": { - "@babel/generator": "^7.0.0", - "@babel/parser": "^7.0.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "istanbul-lib-coverage": "^2.0.3", - "semver": "^5.5.0" + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, - "js-levenshtein": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", - "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", - "dev": true - }, "js-string-escape": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", @@ -5527,9 +3760,9 @@ "dev": true }, "json5": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", - "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz", + "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -5562,13 +3795,10 @@ "dev": true }, "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true }, "latest-version": { "version": "3.1.0", @@ -5580,9 +3810,9 @@ } }, "lcov-parse": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz", - "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", + "integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=", "dev": true }, "levn": { @@ -5705,15 +3935,6 @@ "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", "dev": true }, - "loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "requires": { - "js-tokens": "^3.0.0 || ^4.0.0" - } - }, "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", @@ -5831,27 +4052,19 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } } }, "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "version": "1.42.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==" }, "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "version": "2.1.25", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", + "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", "requires": { - "mime-db": "~1.33.0" + "mime-db": "1.42.0" } }, "mimic-fn": { @@ -5862,8 +4075,8 @@ }, "minimatch": { "version": "3.0.4", - "resolved": "http://localhost:4873/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -5914,9 +4127,9 @@ } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "multimatch": { "version": "3.0.0", @@ -5937,9 +4150,9 @@ "dev": true }, "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "dev": true, "optional": true }, @@ -5960,26 +4173,6 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" - }, - "dependencies": { - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } } }, "natural-compare": { @@ -5989,9 +4182,9 @@ "dev": true }, "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", - "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "nice-try": { "version": "1.0.5", @@ -6000,25 +4193,27 @@ "dev": true }, "nise": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.2.tgz", - "integrity": "sha512-/6RhOUlicRCbE9s+94qCUsyE+pKlVJ5AhIv+jEE7ESKwnbXqulKZ1FYU+XAtHHWE9TinYvAxDUJAb912PwPoWA==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", + "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", "dev": true, "requires": { "@sinonjs/formatio": "^3.2.1", "@sinonjs/text-encoding": "^0.7.1", "just-extend": "^4.0.2", - "lolex": "^4.1.0", + "lolex": "^5.0.1", "path-to-regexp": "^1.7.0" - } - }, - "node-releases": { - "version": "1.1.32", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.32.tgz", - "integrity": "sha512-VhVknkitq8dqtWoluagsGPn3dxTvN9fwgR59fV3D7sLBHe0JfDramsMI8n8mY//ccq/Kkrf8ZRHRpsyVZ3qw1A==", - "dev": true, - "requires": { - "semver": "^5.3.0" + }, + "dependencies": { + "lolex": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + } } }, "normalize-package-data": { @@ -6034,13 +4229,10 @@ } }, "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true }, "npm-run-path": { "version": "2.0.2", @@ -6085,14 +4277,12 @@ "dependencies": { "ansi-regex": { "version": "3.0.0", - "resolved": false, - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "bundled": true, "dev": true }, "append-transform": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", - "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "bundled": true, "dev": true, "requires": { "default-require-extensions": "^2.0.0" @@ -6100,26 +4290,30 @@ }, "archy": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "bundled": true, "dev": true }, "arrify": { "version": "1.0.1", - "resolved": false, - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "bundled": true, "dev": true }, + "async": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, "balanced-match": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "bundled": true, "dev": true }, "brace-expansion": { "version": "1.1.11", - "resolved": false, - "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", + "bundled": true, "dev": true, "requires": { "balanced-match": "^1.0.0", @@ -6128,8 +4322,7 @@ }, "caching-transform": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.1.tgz", - "integrity": "sha512-Y1KTLNwSPd4ljsDrFOtyXVmm7Gnk42yQitNq43AhE+cwUR/e4T+rmOHs1IPtzBg8066GBJfTOj1rQYFSWSsH2g==", + "bundled": true, "dev": true, "requires": { "hasha": "^3.0.0", @@ -6140,14 +4333,12 @@ }, "camelcase": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "bundled": true, "dev": true }, "cliui": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "bundled": true, "dev": true, "requires": { "string-width": "^2.1.1", @@ -6157,26 +4348,28 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": false, - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "bundled": true, "dev": true }, + "commander": { + "version": "2.17.1", + "bundled": true, + "dev": true, + "optional": true + }, "commondir": { "version": "1.0.1", - "resolved": false, - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "bundled": true, "dev": true }, "concat-map": { "version": "0.0.1", - "resolved": false, - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "bundled": true, "dev": true }, "convert-source-map": { "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "bundled": true, "dev": true, "requires": { "safe-buffer": "~5.1.1" @@ -6184,8 +4377,7 @@ }, "cross-spawn": { "version": "4.0.2", - "resolved": false, - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "bundled": true, "dev": true, "requires": { "lru-cache": "^4.0.1", @@ -6194,8 +4386,7 @@ }, "debug": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "bundled": true, "dev": true, "requires": { "ms": "^2.1.1" @@ -6203,14 +4394,12 @@ }, "decamelize": { "version": "1.2.0", - "resolved": false, - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "bundled": true, "dev": true }, "default-require-extensions": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", - "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "bundled": true, "dev": true, "requires": { "strip-bom": "^3.0.0" @@ -6218,8 +4407,7 @@ }, "end-of-stream": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "bundled": true, "dev": true, "requires": { "once": "^1.4.0" @@ -6227,8 +4415,7 @@ }, "error-ex": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "bundled": true, "dev": true, "requires": { "is-arrayish": "^0.2.1" @@ -6236,14 +4423,12 @@ }, "es6-error": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "bundled": true, "dev": true }, "execa": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "bundled": true, "dev": true, "requires": { "cross-spawn": "^6.0.0", @@ -6257,8 +4442,7 @@ "dependencies": { "cross-spawn": { "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "bundled": true, "dev": true, "requires": { "nice-try": "^1.0.4", @@ -6272,8 +4456,7 @@ }, "find-cache-dir": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", - "integrity": "sha512-LDUY6V1Xs5eFskUVYtIwatojt6+9xC9Chnlk/jYOOvn3FAFfSaWddxahDGyNHh0b2dMXa6YW2m0tk8TdVaXHlA==", + "bundled": true, "dev": true, "requires": { "commondir": "^1.0.1", @@ -6283,8 +4466,7 @@ }, "find-up": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "bundled": true, "dev": true, "requires": { "locate-path": "^3.0.0" @@ -6292,8 +4474,7 @@ }, "foreground-child": { "version": "1.5.6", - "resolved": false, - "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "bundled": true, "dev": true, "requires": { "cross-spawn": "^4", @@ -6302,20 +4483,17 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "bundled": true, "dev": true }, "get-caller-file": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "bundled": true, "dev": true }, "get-stream": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "bundled": true, "dev": true, "requires": { "pump": "^3.0.0" @@ -6323,8 +4501,7 @@ }, "glob": { "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "bundled": true, "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -6337,20 +4514,35 @@ }, "graceful-fs": { "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "bundled": true, "dev": true }, + "handlebars": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "async": "^2.5.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + } + } + }, "has-flag": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "bundled": true, "dev": true }, "hasha": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz", - "integrity": "sha1-UqMvq4Vp1BymmmH/GiFPjrfIvTk=", + "bundled": true, "dev": true, "requires": { "is-stream": "^1.0.1" @@ -6358,20 +4550,17 @@ }, "hosted-git-info": { "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "bundled": true, "dev": true }, "imurmurhash": { "version": "0.1.4", - "resolved": false, - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "bundled": true, "dev": true }, "inflight": { "version": "1.0.6", - "resolved": false, - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "bundled": true, "dev": true, "requires": { "once": "^1.3.0", @@ -6380,50 +4569,42 @@ }, "inherits": { "version": "2.0.3", - "resolved": false, - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "bundled": true, "dev": true }, "invert-kv": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "bundled": true, "dev": true }, "is-arrayish": { "version": "0.2.1", - "resolved": false, - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": false, - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "bundled": true, "dev": true }, "is-stream": { "version": "1.1.0", - "resolved": false, - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "bundled": true, "dev": true }, "isexe": { "version": "2.0.0", - "resolved": false, - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "bundled": true, "dev": true }, "istanbul-lib-coverage": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-dKWuzRGCs4G+67VfW9pBFFz2Jpi4vSp/k7zBcJ888ofV5Mi1g5CUML5GvMvV6u9Cjybftu+E8Cgp+k0dI1E5lw==", + "bundled": true, "dev": true }, "istanbul-lib-hook": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.3.tgz", - "integrity": "sha512-CLmEqwEhuCYtGcpNVJjLV1DQyVnIqavMLFHV/DP+np/g3qvdxu3gsPqYoJMXm15sN84xOlckFB3VNvRbf5yEgA==", + "bundled": true, "dev": true, "requires": { "append-transform": "^1.0.0" @@ -6431,8 +4612,7 @@ }, "istanbul-lib-report": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.4.tgz", - "integrity": "sha512-sOiLZLAWpA0+3b5w5/dq0cjm2rrNdAfHWaGhmn7XEFW6X++IV9Ohn+pnELAl9K3rfpaeBfbmH9JU5sejacdLeA==", + "bundled": true, "dev": true, "requires": { "istanbul-lib-coverage": "^2.0.3", @@ -6442,8 +4622,7 @@ "dependencies": { "supports-color": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "bundled": true, "dev": true, "requires": { "has-flag": "^3.0.0" @@ -6453,8 +4632,7 @@ }, "istanbul-lib-source-maps": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.2.tgz", - "integrity": "sha512-JX4v0CiKTGp9fZPmoxpu9YEkPbEqCqBbO3403VabKjH+NRXo72HafD5UgnjTEqHL2SAjaZK1XDuDOkn6I5QVfQ==", + "bundled": true, "dev": true, "requires": { "debug": "^4.1.1", @@ -6466,16 +4644,14 @@ "dependencies": { "source-map": { "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "bundled": true, "dev": true } } }, "istanbul-reports": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.1.1.tgz", - "integrity": "sha512-FzNahnidyEPBCI0HcufJoSEoKykesRlFcSzQqjH9x0+LC8tnnE/p/90PBLu8iZTxr8yYZNyTtiAujUqyN+CIxw==", + "bundled": true, "dev": true, "requires": { "handlebars": "^4.1.0" @@ -6483,14 +4659,12 @@ }, "json-parse-better-errors": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "bundled": true, "dev": true }, "lcid": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "bundled": true, "dev": true, "requires": { "invert-kv": "^2.0.0" @@ -6498,8 +4672,7 @@ }, "load-json-file": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -6510,24 +4683,26 @@ }, "locate-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "bundled": true, "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, + "lodash": { + "version": "4.17.11", + "bundled": true, + "dev": true + }, "lodash.flattendeep": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=", + "bundled": true, "dev": true }, "lru-cache": { "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "bundled": true, "dev": true, "requires": { "pseudomap": "^1.0.2", @@ -6536,8 +4711,7 @@ }, "make-dir": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "bundled": true, "dev": true, "requires": { "pify": "^3.0.0" @@ -6545,8 +4719,7 @@ }, "map-age-cleaner": { "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "bundled": true, "dev": true, "requires": { "p-defer": "^1.0.0" @@ -6554,8 +4727,7 @@ }, "mem": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", - "integrity": "sha512-I5u6Q1x7wxO0kdOpYBB28xueHADYps5uty/zg936CiG8NTe5sJL8EjrCuLneuDW3PlMdZBGDIn8BirEVdovZvg==", + "bundled": true, "dev": true, "requires": { "map-age-cleaner": "^0.1.1", @@ -6565,8 +4737,7 @@ }, "merge-source-map": { "version": "1.1.0", - "resolved": false, - "integrity": "sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=", + "bundled": true, "dev": true, "requires": { "source-map": "^0.6.1" @@ -6574,31 +4745,32 @@ "dependencies": { "source-map": { "version": "0.6.1", - "resolved": false, - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "bundled": true, "dev": true } } }, "mimic-fn": { "version": "1.2.0", - "resolved": false, - "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=", + "bundled": true, "dev": true }, "minimatch": { "version": "3.0.4", - "resolved": false, - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "bundled": true, "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "0.0.10", + "bundled": true, + "dev": true + }, "mkdirp": { "version": "0.5.1", - "resolved": false, - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "bundled": true, "dev": true, "requires": { "minimist": "0.0.8" @@ -6606,28 +4778,24 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "bundled": true, "dev": true } } }, "ms": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "bundled": true, "dev": true }, "nice-try": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "bundled": true, "dev": true }, "normalize-package-data": { "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "bundled": true, "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -6638,8 +4806,7 @@ }, "npm-run-path": { "version": "2.0.2", - "resolved": false, - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "bundled": true, "dev": true, "requires": { "path-key": "^2.0.0" @@ -6647,29 +4814,34 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": false, - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "bundled": true, "dev": true }, "once": { "version": "1.4.0", - "resolved": false, - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "bundled": true, "dev": true, "requires": { "wrappy": "1" } }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, "os-homedir": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "bundled": true, "dev": true }, "os-locale": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "bundled": true, "dev": true, "requires": { "execa": "^1.0.0", @@ -6679,26 +4851,22 @@ }, "p-defer": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "bundled": true, "dev": true }, "p-finally": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "bundled": true, "dev": true }, "p-is-promise": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", - "integrity": "sha512-pzQPhYMCAgLAKPWD2jC3Se9fEfrD9npNos0y150EeqZll7akhEgGhTW/slB6lHku8AvYGiJ+YJ5hfHKePPgFWg==", + "bundled": true, "dev": true }, "p-limit": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", - "integrity": "sha512-NhURkNcrVB+8hNfLuysU8enY5xn2KXphsHBaC2YmRNTZRc7RWusw6apSpdEj3jo4CMb6W9nrF6tTnsJsJeyu6g==", + "bundled": true, "dev": true, "requires": { "p-try": "^2.0.0" @@ -6706,8 +4874,7 @@ }, "p-locate": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "bundled": true, "dev": true, "requires": { "p-limit": "^2.0.0" @@ -6715,14 +4882,12 @@ }, "p-try": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", - "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "bundled": true, "dev": true }, "package-hash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz", - "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.15", @@ -6733,8 +4898,7 @@ }, "parse-json": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "bundled": true, "dev": true, "requires": { "error-ex": "^1.3.1", @@ -6743,32 +4907,27 @@ }, "path-exists": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "bundled": true, "dev": true }, "path-is-absolute": { "version": "1.0.1", - "resolved": false, - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "bundled": true, "dev": true }, "path-key": { "version": "2.0.1", - "resolved": false, - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "bundled": true, "dev": true }, "path-parse": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "bundled": true, "dev": true }, "path-type": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "bundled": true, "dev": true, "requires": { "pify": "^3.0.0" @@ -6776,14 +4935,12 @@ }, "pify": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "bundled": true, "dev": true }, "pkg-dir": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "bundled": true, "dev": true, "requires": { "find-up": "^3.0.0" @@ -6791,14 +4948,12 @@ }, "pseudomap": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "bundled": true, "dev": true }, "pump": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "bundled": true, "dev": true, "requires": { "end-of-stream": "^1.1.0", @@ -6807,8 +4962,7 @@ }, "read-pkg": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "bundled": true, "dev": true, "requires": { "load-json-file": "^4.0.0", @@ -6818,8 +4972,7 @@ }, "read-pkg-up": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", - "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "bundled": true, "dev": true, "requires": { "find-up": "^3.0.0", @@ -6828,8 +4981,7 @@ }, "release-zalgo": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=", + "bundled": true, "dev": true, "requires": { "es6-error": "^4.0.1" @@ -6837,20 +4989,17 @@ }, "require-directory": { "version": "2.1.1", - "resolved": false, - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "bundled": true, "dev": true }, "require-main-filename": { "version": "1.0.1", - "resolved": false, - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "bundled": true, "dev": true }, "resolve": { "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "bundled": true, "dev": true, "requires": { "path-parse": "^1.0.6" @@ -6858,14 +5007,12 @@ }, "resolve-from": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "bundled": true, "dev": true }, "rimraf": { "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "bundled": true, "dev": true, "requires": { "glob": "^7.1.3" @@ -6873,26 +5020,22 @@ }, "safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "bundled": true, "dev": true }, "semver": { "version": "5.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", - "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "bundled": true, "dev": true }, "set-blocking": { "version": "2.0.0", - "resolved": false, - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "bundled": true, "dev": true }, "shebang-command": { "version": "1.2.0", - "resolved": false, - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "bundled": true, "dev": true, "requires": { "shebang-regex": "^1.0.0" @@ -6900,20 +5043,17 @@ }, "shebang-regex": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "bundled": true, "dev": true }, "signal-exit": { "version": "3.0.2", - "resolved": false, - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "bundled": true, "dev": true }, "spawn-wrap": { "version": "1.4.2", - "resolved": false, - "integrity": "sha1-z/WOc6giRhe2Vhq9wyWG6gyCJIw=", + "bundled": true, "dev": true, "requires": { "foreground-child": "^1.5.6", @@ -6926,8 +5066,7 @@ }, "spdx-correct": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "bundled": true, "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", @@ -6936,14 +5075,12 @@ }, "spdx-exceptions": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "bundled": true, "dev": true }, "spdx-expression-parse": { "version": "3.0.0", - "resolved": false, - "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", + "bundled": true, "dev": true, "requires": { "spdx-exceptions": "^2.1.0", @@ -6952,14 +5089,12 @@ }, "spdx-license-ids": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "bundled": true, "dev": true }, "string-width": { "version": "2.1.1", - "resolved": false, - "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "bundled": true, "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -6968,8 +5103,7 @@ }, "strip-ansi": { "version": "4.0.0", - "resolved": false, - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -6977,20 +5111,17 @@ }, "strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "bundled": true, "dev": true }, "strip-eof": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "bundled": true, "dev": true }, "test-exclude": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.1.0.tgz", - "integrity": "sha512-gwf0S2fFsANC55fSeSqpb8BYk6w3FDvwZxfNjeF6FRgvFa43r+7wRiA/Q0IxoRU37wB/LE8IQ4221BsNucTaCA==", + "bundled": true, "dev": true, "requires": { "arrify": "^1.0.1", @@ -6999,16 +5130,32 @@ "require-main-filename": "^1.0.1" } }, + "uglify-js": { + "version": "3.4.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, "uuid": { "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "bundled": true, "dev": true }, "validate-npm-package-license": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "bundled": true, "dev": true, "requires": { "spdx-correct": "^3.0.0", @@ -7017,8 +5164,7 @@ }, "which": { "version": "1.3.1", - "resolved": false, - "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", + "bundled": true, "dev": true, "requires": { "isexe": "^2.0.0" @@ -7026,14 +5172,17 @@ }, "which-module": { "version": "2.0.0", - "resolved": false, - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "bundled": true, + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true, "dev": true }, "wrap-ansi": { "version": "2.1.0", - "resolved": false, - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "bundled": true, "dev": true, "requires": { "string-width": "^1.0.1", @@ -7042,14 +5191,12 @@ "dependencies": { "ansi-regex": { "version": "2.1.1", - "resolved": false, - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "bundled": true, "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": false, - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "bundled": true, "dev": true, "requires": { "number-is-nan": "^1.0.0" @@ -7057,8 +5204,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "bundled": true, "dev": true, "requires": { "code-point-at": "^1.0.0", @@ -7068,8 +5214,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": false, - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "bundled": true, "dev": true, "requires": { "ansi-regex": "^2.0.0" @@ -7079,14 +5224,12 @@ }, "wrappy": { "version": "1.0.2", - "resolved": false, - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "bundled": true, "dev": true }, "write-file-atomic": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", - "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", + "bundled": true, "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -7096,20 +5239,17 @@ }, "y18n": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "bundled": true, "dev": true }, "yallist": { "version": "2.1.2", - "resolved": false, - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "bundled": true, "dev": true }, "yargs": { "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "bundled": true, "dev": true, "requires": { "cliui": "^4.0.0", @@ -7128,8 +5268,7 @@ }, "yargs-parser": { "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "bundled": true, "dev": true, "requires": { "camelcase": "^5.0.0", @@ -7174,9 +5313,30 @@ "requires": { "is-descriptor": "^0.1.0" } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } } } }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.2.tgz", + "integrity": "sha512-Epah+btZd5wrrfjkJZq1AOB9O6OxUQto45hzFd7lXGrpHPGE0W1k+426yrZV+k6NJOzLNNW/nVsmZdIWsAqoOQ==", + "dev": true + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -7190,14 +5350,6 @@ "dev": true, "requires": { "isobject": "^3.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "object.assign": { @@ -7219,14 +5371,6 @@ "dev": true, "requires": { "isobject": "^3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } } }, "observable-to-promise": { @@ -7277,30 +5421,30 @@ } }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "word-wrap": "~1.2.3" } }, "ora": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.2.0.tgz", - "integrity": "sha512-XHMZA5WieCbtg+tu0uPF8CjvwQdNzKCX6BVh3N6GFsEXH40mTk5dsw/ya1lBTUGJslcEFJFQ8cBhOgkkZXQtMA==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", "dev": true, "requires": { "chalk": "^2.4.2", "cli-cursor": "^2.1.0", "cli-spinners": "^2.0.0", "log-symbols": "^2.2.0", - "strip-ansi": "^5.0.0", + "strip-ansi": "^5.2.0", "wcwidth": "^1.0.1" } }, @@ -7310,17 +5454,6 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, - "output-file-sync": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-2.0.1.tgz", - "integrity": "sha512-mDho4qm7WgIXIGf4eYU1RHN2UU5tPfVYVSRwDJw0uTmj35DQUt/eNp19N7v6T3SrR0ESTEf2up2CGO73qI35zQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "is-plain-obj": "^1.1.0", - "mkdirp": "^0.5.1" - } - }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -7328,9 +5461,9 @@ "dev": true }, "p-limit": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", - "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", + "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -7346,15 +5479,15 @@ } }, "p-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.0.0.tgz", - "integrity": "sha512-GO107XdrSUmtHxVoi60qc9tUl/KkNKm+X2CF4P9amalpGxv5YqVPJNfSb0wcA+syCopkZvYYIzW8OVTQW59x/w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", "dev": true }, "p-try": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.1.0.tgz", - "integrity": "sha512-H2RyIJ7+A3rjkwKC2l5GGtU4H1vkxKCAGsWasNVd0Set+6i4znxbWy6/j16YDPJDWxhsgZiKAstMEP8wCdSpjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "package-hash": { @@ -7367,14 +5500,6 @@ "hasha": "^3.0.0", "lodash.flattendeep": "^4.4.0", "release-zalgo": "^1.0.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "dev": true - } } }, "package-json": { @@ -7409,9 +5534,9 @@ } }, "parse-ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.0.0.tgz", - "integrity": "sha512-AddiXFSLLCqj+tCRJ9MrUtHZB4DWojO3tk0NVZ+g5MaMQHF2+p2ktqxuoXyPFLljz/aUK0Nfhd/uGWnhXVXEyA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", + "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", "dev": true }, "parseqs": { @@ -7473,9 +5598,9 @@ "dev": true }, "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", "dev": true, "requires": { "isarray": "0.0.1" @@ -7534,9 +5659,9 @@ } }, "pkg-conf": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.0.0.tgz", - "integrity": "sha512-YOvV9hWNY9+abaZdgaZs4eyTzfeO1bwEYCYRskER2aP5ZWZAdrb/8YeOo95mb6tr01MR9ZUGArl1sMy2At/YWQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", + "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", "dev": true, "requires": { "find-up": "^3.0.0", @@ -7544,22 +5669,17 @@ }, "dependencies": { "load-json-file": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.2.0.tgz", - "integrity": "sha512-HvjIlM2Y/RDHk1X6i4sGgaMTrAsnNrgQCJtuf5PEhbOV6MCJuMVZLMdlJRE0JGLMkF7b6O5zs9LcDxKIUt9CbQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", "dev": true, "requires": { - "graceful-fs": "^4.1.2", + "graceful-fs": "^4.1.15", "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true } } }, @@ -7573,9 +5693,9 @@ } }, "plur": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/plur/-/plur-3.0.1.tgz", - "integrity": "sha512-lJl0ojUynAM1BZn58Pas2WT/TXeC1+bS+UqShl0x9+49AtOn7DixRXVzaC8qrDOIxNDmepKnLuMTH7NQmkX0PA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/plur/-/plur-3.1.1.tgz", + "integrity": "sha512-t1Ax8KUvV3FFII8ltczPn2tJdjqbd1sIzu6t4JL7nQ3EyeL/lTrj5PWKb06ic5/6XYDr65rQ4uzQEGN70/6X5w==", "dev": true, "requires": { "irregular-plurals": "^2.0.0" @@ -7603,6 +5723,11 @@ "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -7633,16 +5758,10 @@ "parse-ms": "^2.0.0" } }, - "private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true - }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, "progress": { @@ -7658,9 +5777,9 @@ "dev": true }, "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", "dev": true }, "punycode": { @@ -7785,17 +5904,17 @@ } }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", + "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", - "string_decoder": "~1.0.3", + "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" }, "dependencies": { @@ -7812,7 +5931,6 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", "dev": true, - "optional": true, "requires": { "graceful-fs": "^4.1.11", "micromatch": "^3.1.10", @@ -7840,9 +5958,9 @@ } }, "redis-commands": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.3.5.tgz", - "integrity": "sha512-foGF8u6MXGFF++1TZVC6icGXuMYPftKXt1FBT2vrfU9ZATNtZJ8duRC5d1lEfE8hyVe3jhelHGB91oB7I6qLsA==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.5.0.tgz", + "integrity": "sha512-6KxamqpZ468MeQC3bkWmCB1fp56XL64D4Kf0zJSwDZbVLLm7KFkoIcHrgRvQ+sk8dnhySs7+yBg94yIkAK7aJg==" }, "redis-parser": { "version": "2.6.0", @@ -7856,23 +5974,14 @@ "dev": true }, "regenerate-unicode-properties": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.0.2.tgz", - "integrity": "sha512-SbA/iNrBUf6Pv2zU8Ekv1Qbhv92yxL4hiDa2siuxs4KKn4oOoMDHXjAf7+Nz9qinUQ46B1LcWEi/PhJfPWpZWQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz", + "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==", "dev": true, "requires": { "regenerate": "^1.4.0" } }, - "regenerator-transform": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz", - "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==", - "dev": true, - "requires": { - "private": "^0.1.6" - } - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -7883,6 +5992,16 @@ "safe-regex": "^1.1.0" } }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", @@ -7890,13 +6009,13 @@ "dev": true }, "regexpu-core": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.4.tgz", - "integrity": "sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.6.0.tgz", + "integrity": "sha512-YlVaefl8P5BnFYOITTNzDvan1ulLOiXJzCNZxduTIosN17b87h3bvG9yHMoHaRuo88H4mQ06Aodj5VtYGGGiTg==", "dev": true, "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.0.2", + "regenerate-unicode-properties": "^8.1.0", "regjsgen": "^0.5.0", "regjsparser": "^0.6.0", "unicode-match-property-ecmascript": "^1.0.4", @@ -7923,15 +6042,15 @@ } }, "regjsgen": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", - "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.1.tgz", + "integrity": "sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg==", "dev": true }, "regjsparser": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", - "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.2.tgz", + "integrity": "sha512-E9ghzUtoLwDekPT0DYCp+c4h+bvuUpe6rRHCTYn6eGoqj1LgKXxT6I0Il4WbjhQkOghzi/V+y03bPKvbllL93Q==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -7961,9 +6080,9 @@ "dev": true }, "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", "dev": true }, "repeat-string": { @@ -7998,35 +6117,6 @@ "tough-cookie": "~2.4.3", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" - }, - "dependencies": { - "mime-db": { - "version": "1.38.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.38.0.tgz", - "integrity": "sha512-bqVioMFFzc2awcdJZIzR3HjZFX20QhilVS7hytkKrv7xFAn8bM1gzc/FOX2awLISvWe0PV8ptFKcon+wZ5qYkg==", - "dev": true - }, - "mime-types": { - "version": "2.1.22", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.22.tgz", - "integrity": "sha512-aGl6TZGnhm/li6F7yx82bJiBZwgiEa4Hf6CNr8YO+r5UHr53tSTYZb102zyU50DOWWKeOv0uQLRL0/9EiKWCog==", - "dev": true, - "requires": { - "mime-db": "~1.38.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - } } }, "require-precompiled": { @@ -8036,9 +6126,9 @@ "dev": true }, "resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", - "integrity": "sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.1.tgz", + "integrity": "sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -8082,28 +6172,12 @@ "dev": true }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dev": true, "requires": { "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } } }, "run-async": { @@ -8116,23 +6190,23 @@ } }, "rxjs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", - "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "safe-regex": { "version": "1.1.0", - "resolved": "http://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { @@ -8146,9 +6220,9 @@ "dev": true }, "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true }, "semver-diff": { @@ -8223,6 +6297,17 @@ "lolex": "^4.2.0", "nise": "^1.5.2", "supports-color": "^5.5.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "slash": { @@ -8288,6 +6373,12 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, @@ -8339,18 +6430,6 @@ "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true } } }, @@ -8361,6 +6440,17 @@ "dev": true, "requires": { "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "socket.io": { @@ -8374,27 +6464,12 @@ "socket.io-adapter": "~1.1.0", "socket.io-client": "2.2.0", "socket.io-parser": "~3.3.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } } }, "socket.io-adapter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", - "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", + "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==" }, "socket.io-client": { "version": "2.2.0", @@ -8417,15 +6492,18 @@ "to-array": "0.1.4" }, "dependencies": { - "socket.io-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", - "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "isarray": "2.0.1" + "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -8437,6 +6515,21 @@ "component-emitter": "1.2.1", "debug": "~3.1.0", "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } } }, "source-map": { @@ -8446,12 +6539,12 @@ "dev": true }, "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "dev": true, "requires": { - "atob": "^2.1.1", + "atob": "^2.1.2", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", @@ -8459,9 +6552,9 @@ } }, "source-map-support": { - "version": "0.5.11", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.11.tgz", - "integrity": "sha512-//sajEx/fGL3iw6fltKMdPvy8kL3kJ2O3iuYlRoT3k9Kb4BjOoZ+BZzaNHeuaruSt+Kf3Zk9tnfAQg9/AJqUVQ==", + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", "dev": true, "requires": { "buffer-from": "^1.0.0", @@ -8509,9 +6602,9 @@ } }, "spdx-license-ids": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", - "integrity": "sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", "dev": true }, "split-string": { @@ -8594,10 +6687,30 @@ } } }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -8678,9 +6791,9 @@ } }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -8693,13 +6806,13 @@ "dev": true }, "table": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/table/-/table-5.2.3.tgz", - "integrity": "sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", "dev": true, "requires": { - "ajv": "^6.9.1", - "lodash": "^4.17.11", + "ajv": "^6.10.2", + "lodash": "^4.17.14", "slice-ansi": "^2.1.0", "string-width": "^3.0.0" }, @@ -8788,6 +6901,17 @@ "dev": true, "requires": { "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } } }, "to-regex": { @@ -8810,17 +6934,6 @@ "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } - } } }, "tough-cookie": { @@ -8860,9 +6973,9 @@ "dev": true }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", "dev": true }, "tunnel-agent": { @@ -8895,6 +7008,12 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + }, "uid2": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", @@ -9004,12 +7123,6 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true } } }, @@ -9023,8 +7136,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "optional": true + "dev": true }, "update-notifier": { "version": "2.5.0", @@ -9156,10 +7268,10 @@ "string-width": "^2.1.1" } }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, "wrappy": { @@ -9178,9 +7290,9 @@ } }, "write-file-atomic": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.2.tgz", - "integrity": "sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "dev": true, "requires": { "graceful-fs": "^4.1.11", @@ -9208,9 +7320,9 @@ "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=" }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, "yallist": { diff --git a/package.json b/package.json index f532ea4..5d19407 100644 --- a/package.json +++ b/package.json @@ -13,30 +13,26 @@ ], "description": "A Node.js library for building zero-configuration microservices.", "scripts": { - "build": "babel src -D -d dist -s", - "clean": "rm -rf dist", "coverage": "nyc -x=\"**/examples/*\" -x=\"**/*balanced*.js\" -x=\"**/test/*.js\" -x=\"**/lib/*.js\" report", "lint": "eslint src test", "lint-fix": "eslint --fix src test", - "publish": "npm run build", "test": "NODE_ENV=dev nyc -x=\"**/examples/*\" -x=\"**/*balanced*.js\" -x=\"**/test/*.js\" -x=\"**/lib/*.js\" ava --timeout=60000" }, "author": { "name": "Armagan Amcalar", "email": "armagan@amcalar.com" }, - "main": "dist/index.js", + "main": "src/index.js", "license": "MIT", "repository": "dashersw/cote", "engines": { - "node": ">=v6.0.0" + "node": ">=v10.0.0" }, "dependencies": { "@dashersw/axon": "2.0.5", "@dashersw/node-discover": "^1.0.4", "charm": "1.0.2", "colors": "1.3.3", - "core-js": "^2.6.9", "eventemitter2": "5.0.1", "lodash": "^4.17.15", "portfinder": "1.0.20", @@ -44,9 +40,6 @@ "uuid": "^3.3.3" }, "devDependencies": { - "@babel/cli": "^7.6.2", - "@babel/core": "^7.6.2", - "@babel/preset-env": "^7.6.2", "async": "^2.6.3", "ava": "^1.4.1", "commander": "2.20.0", @@ -89,22 +82,5 @@ } ] } - }, - "babel": { - "presets": [ - [ - "@babel/env", - { - "targets": { - "node": "6" - }, - "useBuiltIns": "usage", - "corejs": "2", - "exclude": [ - "es6.promise" - ] - } - ] - ] } }