diff --git a/mesh.js b/mesh.js index d9debb9..162e656 100644 --- a/mesh.js +++ b/mesh.js @@ -20,7 +20,7 @@ module.exports = mesh var DEFAULT_HOST = (module.exports.DEFAULT_HOST = '127.0.0.1') var DEFAULT_PORT = (module.exports.DEFAULT_PORT = 39999) -var intern = module.exports.intern = make_intern() +var intern = (module.exports.intern = make_intern()) var optioner = Optioner({ pin: Joi.alternatives().try(Joi.string(), Joi.object()), @@ -159,11 +159,13 @@ function mesh(options) { sneeze_opts.tag = void 0 !== sneeze_opts.tag ? sneeze_opts.tag : void 0 !== tag - ? null === tag ? null : 'seneca~' + tag - : 'seneca~mesh' + ? null === tag ? null : 'seneca~' + tag + : 'seneca~mesh' - seneca.add('role:transport,cmd:listen', - intern.make_transport_listen(options, join, listen, init_done)) + seneca.add( + 'role:transport,cmd:listen', + intern.make_transport_listen(options, join, listen, init_done) + ) // call seneca.listen as a convenience // subsequent seneca.listen calls will still publish to network @@ -191,10 +193,9 @@ function mesh(options) { }) } - function join(instance, raw_config, done) { var client_instance = instance.root.delegate() - var config = seneca.util.clean(raw_config || {}, {proto:false}) + var config = seneca.util.clean(raw_config || {}, { proto: false }) if (!config.pin && !config.pins) { config.pin = 'null:true' @@ -248,7 +249,6 @@ function mesh(options) { }) }) - sneeze.join(meta) function add_client(meta) { @@ -271,9 +271,8 @@ function mesh(options) { ) var has_balance_client = !!balance_map[pin_config.pin] - var target_map = (balance_map[pin_config.pin] = balance_map[ - pin_config.pin - ] || {}) + var target_map = (balance_map[pin_config.pin] = + balance_map[pin_config.pin] || {}) // this is a duplicate, so ignore if (target_map[pin_config.id]) { @@ -290,7 +289,6 @@ function mesh(options) { target_map[pin_config.id] = true - if (!has_balance_client) { // no balancer for this pin, so add one client_instance.client({ @@ -313,7 +311,7 @@ function mesh(options) { if (client_instance.id === meta.instance) { return } - + var config = meta.config || {} var pins = intern.resolve_pins(client_instance, config) @@ -332,7 +330,8 @@ function mesh(options) { } client_instance.act('role:transport,type:balance,remove:client', { - config: pin_config, meta:meta + config: pin_config, + meta: meta }) }) } @@ -342,10 +341,9 @@ function mesh(options) { }) } - function make_intern() { return { - make_transport_listen: function (options, join, listen, init_done) { + make_transport_listen: function(options, join, listen, init_done) { var listen_count = 0 var last_mesh_listen_err = null @@ -370,9 +368,9 @@ function make_intern() { // only finish mesh plugin init if all auto listens attempted if (listen.length === listen_count) { - setTimeout(function(){ + setTimeout(function() { init_done(last_mesh_listen_err) - },options.jointime) + }, options.jointime) } }) } else { @@ -443,9 +441,8 @@ function make_intern() { addbase_funcmap: { defined: function(seneca, options, bases, next) { - var add = (options.sneeze || {}).bases || - options.bases || - options.remotes || [] + var add = + (options.sneeze || {}).bases || options.bases || options.remotes || [] add = add.filter(function(base) { return base && 0 < base.length @@ -522,7 +519,7 @@ function make_intern() { var first = true var base_addr = - (options.host || DEFAULT_HOST) + ':' + (options.port || DEFAULT_PORT) + (options.host || DEFAULT_HOST) + ':' + (options.port || DEFAULT_PORT) if (options.isbase) { var ri = options.discover.registry.refresh_interval @@ -551,8 +548,8 @@ function make_intern() { if (options.isbase) { var prune_first = - Math.random() < - options.discover.registry.prune_first_probability + Math.random() < + options.discover.registry.prune_first_probability if (prune_first || -1 === add.indexOf(base_addr)) { add.push(base_addr) @@ -560,7 +557,7 @@ function make_intern() { if ( prune_first && - options.discover.registry.prune_bound < add.length + options.discover.registry.prune_bound < add.length ) { add.shift() } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..9758763 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3919 @@ +{ + "name": "seneca-mesh", + "version": "0.11.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "JSONSelect": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/JSONSelect/-/JSONSelect-0.4.0.tgz", + "integrity": "sha1-oI7cxn6z/L6Z7WMIVTRKDPKCu40=" + }, + "accept": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/accept/-/accept-2.1.4.tgz", + "integrity": "sha1-iHr1TO7lx/RDBGGXHsQAxh0JrLs=", + "dev": true, + "requires": { + "boom": "5.2.0", + "hoek": "4.0.1" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + } + } + }, + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ammo": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/ammo/-/ammo-2.0.4.tgz", + "integrity": "sha1-v4CqshFpjqePY+9efxE91dnokX8=", + "dev": true, + "requires": { + "boom": "5.2.0", + "hoek": "4.0.1" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + } + } + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", + "dev": true + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "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": { + "array-uniq": "1.0.3" + } + }, + "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 + }, + "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.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "b64": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/b64/-/b64-3.0.3.tgz", + "integrity": "sha512-Pbeh0i6OLubPJdIdCepn8ZQHwN2MWznZHbHABSTEfQ706ie+yuxNSaPdqX1xRatT6WanaS1EazMiSg0NUW2XxQ==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "backoff": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.3.0.tgz", + "integrity": "sha1-7nx+OAk/kuRyhZ22NedlJFT8Ieo=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "boom": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/boom/-/boom-3.2.2.tgz", + "integrity": "sha1-DwzF0ErcUAO4x9cfQsynJx/vDng=", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + }, + "bossy": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/bossy/-/bossy-3.0.4.tgz", + "integrity": "sha1-+a6fJugbQaMY9O4Ng2huSlwlB7k=", + "dev": true, + "requires": { + "hoek": "4.0.1", + "joi": "10.6.0" + }, + "dependencies": { + "joi": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz", + "integrity": "sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==", + "dev": true, + "requires": { + "hoek": "4.0.1", + "isemail": "2.2.1", + "items": "2.1.1", + "topo": "2.0.2" + } + } + } + }, + "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" + } + }, + "call": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/call/-/call-3.0.4.tgz", + "integrity": "sha1-44Dy8qSRMwqnkIU1X4vggId9VZ4=", + "dev": true, + "requires": { + "boom": "4.3.1", + "hoek": "4.0.1" + }, + "dependencies": { + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + } + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "catbox": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/catbox/-/catbox-7.1.5.tgz", + "integrity": "sha512-4fui5lELzqZ+9cnaAP/BcqXTH6LvWLBRtFhJ0I4FfgfXiSaZcf6k9m9dqOyChiTxNYtvLk7ZMYSf7ahMq3bf5A==", + "dev": true, + "requires": { + "boom": "5.2.0", + "hoek": "4.0.1", + "joi": "10.6.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + }, + "joi": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz", + "integrity": "sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==", + "dev": true, + "requires": { + "hoek": "4.0.1", + "isemail": "2.2.1", + "items": "2.1.1", + "topo": "2.0.2" + } + } + } + }, + "catbox-memory": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/catbox-memory/-/catbox-memory-2.0.4.tgz", + "integrity": "sha1-Qz4lWQLK9UIz0ShkKcj03xToItU=", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chairo": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/chairo/-/chairo-2.2.1.tgz", + "integrity": "sha1-4E2yhikzq/XY6tW+JTX2jBf1SKA=", + "dev": true, + "requires": { + "boom": "3.2.2", + "hoek": "4.0.1", + "items": "2.1.1", + "joi": "8.4.2", + "jsonic": "0.2.2", + "seneca": "2.1.0" + }, + "dependencies": { + "joi": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/joi/-/joi-8.4.2.tgz", + "integrity": "sha1-vXd0ZY/pkFjYmU7R1LmWJITruFk=", + "dev": true, + "requires": { + "hoek": "4.0.1", + "isemail": "2.2.1", + "moment": "2.20.1", + "topo": "2.0.2" + } + }, + "jsonic": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/jsonic/-/jsonic-0.2.2.tgz", + "integrity": "sha1-Enu5nfTYIWUsSKI9AlzysW5hhJE=", + "dev": true + }, + "lodash": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.5.0.tgz", + "integrity": "sha1-IoSqBvWxNq29lUuQNRG2L8OdH1k=", + "dev": true + }, + "seneca": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/seneca/-/seneca-2.1.0.tgz", + "integrity": "sha1-QhPY/AGEAUsNPqR7XttzZ/aF2Zw=", + "dev": true, + "requires": { + "archy": "1.0.0", + "eraro": "0.4.1", + "gate-executor": "0.4.0", + "gex": "0.2.2", + "jsonic": "0.2.2", + "lodash": "4.5.0", + "lru-cache": "4.0.0", + "minimist": "1.2.0", + "nid": "0.3.2", + "norma": "0.3.0", + "parambulator": "1.5.2", + "patrun": "0.5.0", + "rolling-stats": "0.1.1", + "semver": "5.1.0", + "seneca-basic": "0.4.0", + "seneca-cluster": "0.0.1", + "seneca-mem-store": "0.5.0", + "seneca-parambulator": "0.2.0", + "seneca-repl": "0.2.0", + "seneca-transport": "1.2.0", + "seneca-web": "0.7.1", + "use-plugin": "0.3.1", + "zig": "0.1.1" + } + }, + "seneca-repl": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/seneca-repl/-/seneca-repl-0.2.0.tgz", + "integrity": "sha1-fQdtEOshvax52aibm7kyhlQlSu4=", + "dev": true, + "requires": { + "jsonic": "0.2.2", + "lodash": "4.5.0" + } + } + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "cjson": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cjson/-/cjson-0.2.1.tgz", + "integrity": "sha1-c82KrWXZ4VBfmvF0TTt5wVJ2gqU=" + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "clone": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", + "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=" + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/code/-/code-4.1.0.tgz", + "integrity": "sha1-IJrRHQWvigwceq9pTZ+k0sfZW4U=", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + }, + "color": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.3.tgz", + "integrity": "sha1-S60dDVJJndANvW8IaEQkZ+STlOY=", + "dev": true, + "requires": { + "clone": "1.0.3", + "color-convert": "1.9.1", + "color-string": "0.3.0" + } + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "colors": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.5.1.tgz", + "integrity": "sha1-fQAj6usVTo7p/Oddy5I9DtFmd3Q=" + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "commander": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.12.2.tgz", + "integrity": "sha512-BFnaq5ZOGcDN7FlrtBT4xxkgIToalIIxwjxLWVJ8bGTpe1LroqMiqQXdA7ygc7CRvaYS+9zfPGFnJqFSayx+AA==" + }, + "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 + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "connect": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.4.1.tgz", + "integrity": "sha1-ohNh0/QJnvdhzabcSpc7seuwo00=", + "dev": true, + "requires": { + "debug": "2.2.0", + "finalhandler": "0.4.1", + "parseurl": "1.3.2", + "utils-merge": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "consul": { + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/consul/-/consul-0.25.0.tgz", + "integrity": "sha1-BcBqZnaJIgQnBV3pLGRY3tef8u0=", + "dev": true, + "requires": { + "papi": "0.25.1" + } + }, + "content": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/content/-/content-3.0.6.tgz", + "integrity": "sha512-tyl3fRp8jOHsQR0X9vrIy0mKQccv0tA9/RlvLl514eA7vHOJr/TnmMTpgQjInwbeW9IOQVy0OECGAuQNUa0nnQ==", + "dev": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + } + } + }, + "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 + }, + "coveralls": { + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-2.13.3.tgz", + "integrity": "sha512-iiAmn+l1XqRwNLXhW8Rs5qHZRFMYp9ZIPjEOVRpC/c4so6Y/f4/lFi0FfR5B9cCqgyhkJ5cZmbvcVRfP8MHchw==", + "dev": true, + "requires": { + "js-yaml": "3.6.1", + "lcov-parse": "0.0.10", + "log-driver": "1.2.5", + "minimist": "1.2.0", + "request": "2.79.0" + } + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + }, + "dependencies": { + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + } + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "optional": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "dev": true + }, + "docco": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/docco/-/docco-0.7.0.tgz", + "integrity": "sha1-1gblqZDLoFLKHhgDqcWH7O48XDg=", + "dev": true, + "requires": { + "commander": "2.12.2", + "fs-extra": "5.0.0", + "highlight.js": "9.12.0", + "marked": "0.3.9", + "underscore": "1.7.0" + } + }, + "doctrine": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz", + "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "ebnf-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/ebnf-parser/-/ebnf-parser-0.1.10.tgz", + "integrity": "sha1-zR9rpHfFY4xAyX7ZtXLbW6tdgzE=" + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "eraro": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/eraro/-/eraro-0.4.1.tgz", + "integrity": "sha1-ZThzB2mh6J/8Pwx+LJTVofhmYp0=", + "dev": true, + "requires": { + "lodash": "2.4.2" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "escodegen": { + "version": "0.0.21", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-0.0.21.tgz", + "integrity": "sha1-U9ZSz6EDA4gnlFilJmxf/HCcY8M=", + "requires": { + "esprima": "1.0.4", + "estraverse": "0.0.4", + "source-map": "0.6.1" + }, + "dependencies": { + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=" + } + } + }, + "eslint": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.0.0.tgz", + "integrity": "sha1-cnfAFDf99B3M0WjVqg5Jt1yh8mA=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "debug": "2.6.9", + "doctrine": "2.0.2", + "eslint-scope": "3.7.1", + "espree": "3.4.3", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "glob": "7.1.2", + "globals": "9.18.0", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-my-json-valid": "2.17.1", + "is-resolvable": "1.0.1", + "js-yaml": "3.10.0", + "json-stable-stringify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "4.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + } + } + }, + "eslint-config-hapi": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-hapi/-/eslint-config-hapi-10.1.0.tgz", + "integrity": "sha512-tAUedyvZla1qKt6jhOx7mj5tYDVCwdSyImpEK7wk/A/atKUjg18aHUK6Q6qWWM6rq21I1F/A8JAhIpkk0SvFMQ==", + "dev": true + }, + "eslint-plugin-hapi": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-hapi/-/eslint-plugin-hapi-4.1.0.tgz", + "integrity": "sha512-z1yUoSWArx6pXaC0FoWRFpqjbHn8QWonJiTVhJmiC14jOAT7FZKdKWCkhM4jQrgrkEK9YEv3p2HuzSf5dtWmuQ==", + "dev": true, + "requires": { + "hapi-capitalize-modules": "1.1.6", + "hapi-for-you": "1.0.0", + "hapi-no-var": "1.0.1", + "hapi-scope-start": "2.1.1", + "no-arrowception": "1.0.0" + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "espree": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.3.tgz", + "integrity": "sha1-KRC1zNSc6JPC//+qtP2LOjG4I3Q=", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz", + "integrity": "sha1-dqD9Zvz+FU/SkmZ9wmQBl1CxZXs=" + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "estraverse": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-0.0.4.tgz", + "integrity": "sha1-AaCTLf7ldGhKWYr1pnw7+bZCjbI=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz", + "integrity": "sha1-A9MLX2fdbmMtKUXTDWZScxo01dg=", + "dev": true + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "farmhash": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/farmhash/-/farmhash-1.2.1.tgz", + "integrity": "sha1-Lb8SYE71yh8UIPtmAPzLMNVHTf0=", + "requires": { + "nan": "2.8.0" + } + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "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=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "finalhandler": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.1.tgz", + "integrity": "sha1-haF8bFmpRxfSYtYSMNSw6+PUoU0=", + "dev": true, + "requires": { + "debug": "2.2.0", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "find-rc": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/find-rc/-/find-rc-3.0.1.tgz", + "integrity": "sha1-VKQXg3DxC8k3H6jRssKAmir6DM4=", + "dev": true + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "fresh": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz", + "integrity": "sha1-ZR+DjiJCTnVm3hYdg1jKoZn4PU8=", + "dev": true + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "jsonfile": "4.0.0", + "universalify": "0.1.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 + }, + "gate-executor": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/gate-executor/-/gate-executor-0.4.0.tgz", + "integrity": "sha1-ReSue9dg/+8NiB/ZOttPf2x2kVI=", + "dev": true, + "requires": { + "async": "1.5.2", + "eraro": "0.4.1", + "lodash": "4.0.0" + }, + "dependencies": { + "lodash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.0.0.tgz", + "integrity": "sha1-msQ4RMWV4o0wEIt7pYNwM5WSLfw=", + "dev": true + } + } + }, + "generate-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", + "dev": true + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "gex": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/gex/-/gex-0.2.2.tgz", + "integrity": "sha1-LUCdJDCVlwjaVc9WKUxk9tiXNIc=", + "dev": true, + "requires": { + "lodash": "3.10.0" + }, + "dependencies": { + "lodash": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.0.tgz", + "integrity": "sha1-k9UcZygopEFqEq9XIguoqHN+L7s=", + "dev": true + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "hapi": { + "version": "15.0.2", + "resolved": "https://registry.npmjs.org/hapi/-/hapi-15.0.2.tgz", + "integrity": "sha1-B9Jj4saCzx+BtKn0AbIL4tptKWk=", + "dev": true, + "requires": { + "accept": "2.1.4", + "ammo": "2.0.4", + "boom": "4.3.1", + "call": "3.0.4", + "catbox": "7.1.5", + "catbox-memory": "2.0.4", + "cryptiles": "3.1.2", + "heavy": "4.0.4", + "hoek": "4.0.1", + "iron": "4.0.5", + "items": "2.1.1", + "joi": "9.0.4", + "mimos": "3.0.3", + "podium": "1.3.0", + "shot": "3.4.2", + "statehood": "5.0.3", + "subtext": "4.4.1", + "topo": "2.0.2" + }, + "dependencies": { + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + } + } + } + } + }, + "hapi-capitalize-modules": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/hapi-capitalize-modules/-/hapi-capitalize-modules-1.1.6.tgz", + "integrity": "sha1-eZEXFBXhXmqjIx5k3ac8gUZmUxg=", + "dev": true + }, + "hapi-for-you": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hapi-for-you/-/hapi-for-you-1.0.0.tgz", + "integrity": "sha1-02L77o172pwseAHiB+WlzRoLans=", + "dev": true + }, + "hapi-no-var": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hapi-no-var/-/hapi-no-var-1.0.1.tgz", + "integrity": "sha512-kk2xyyTzI+eQ/oA1rO4eVdCpYsrPHVERHa6+mTHD08XXFLaAkkaEs6reMg1VyqGh2o5xPt//DO4EhCacLx/cRA==", + "dev": true + }, + "hapi-scope-start": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/hapi-scope-start/-/hapi-scope-start-2.1.1.tgz", + "integrity": "sha1-dJWnJv5yt7yo3izcwdh82M5qtPI=", + "dev": true + }, + "har-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", + "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "commander": "2.12.2", + "is-my-json-valid": "2.17.1", + "pinkie-promise": "2.0.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + }, + "dependencies": { + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + } + } + }, + "heavy": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/heavy/-/heavy-4.0.4.tgz", + "integrity": "sha1-NskTNsAMz+hSyqTRUwhjNc0vAOk=", + "dev": true, + "requires": { + "boom": "5.2.0", + "hoek": "4.0.1", + "joi": "10.6.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + }, + "joi": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz", + "integrity": "sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==", + "dev": true, + "requires": { + "hoek": "4.0.1", + "isemail": "2.2.1", + "items": "2.1.1", + "topo": "2.0.2" + } + } + } + }, + "highlight.js": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz", + "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4=", + "dev": true + }, + "hoek": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.0.1.tgz", + "integrity": "sha1-FAsWVI/hYm2R0k9JFMRMi/2pUuM=" + }, + "http-errors": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "integrity": "sha1-GX4izevUGYWF6GlO9nhhl7ke2UI=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "statuses": "1.2.1" + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "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.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "ip": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.3.tgz", + "integrity": "sha1-ErFilKOJJUhtYYoRA1BuTrT4spY=" + }, + "iron": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/iron/-/iron-4.0.5.tgz", + "integrity": "sha1-TwQszri5c480a1mqc0yDqJvDFCg=", + "dev": true, + "requires": { + "boom": "5.2.0", + "cryptiles": "3.1.2", + "hoek": "4.0.1" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-my-json-valid": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.1.tgz", + "integrity": "sha512-Q2khNw+oBlWuaYvEEHtKSw/pCxD2L5Rc1C+UQme9X6JdRDh7m5D7HkozA0qa3DUkQ6VzCnEm8mVIQPyIRkI5sQ==", + "dev": true, + "requires": { + "generate-function": "2.0.0", + "generate-object-property": "1.2.0", + "jsonpointer": "4.0.1", + "xtend": "4.0.1" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "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.2" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-resolvable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.1.tgz", + "integrity": "sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isemail": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/isemail/-/isemail-2.2.1.tgz", + "integrity": "sha1-A1PT2aYpUQgMJiwqoKQrjqjp4qY=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "items": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/items/-/items-2.1.1.tgz", + "integrity": "sha1-i9FtnIOxlSneWuoyGsqtp4NkoZg=" + }, + "jison": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/jison/-/jison-0.4.13.tgz", + "integrity": "sha1-kEFwfWIkE2f1iDRTK58ZwsNvrHg=", + "requires": { + "JSONSelect": "0.4.0", + "cjson": "0.2.1", + "ebnf-parser": "0.1.10", + "escodegen": "0.0.21", + "esprima": "1.0.4", + "jison-lex": "0.2.1", + "lex-parser": "0.1.4", + "nomnom": "1.5.2" + }, + "dependencies": { + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=" + } + } + }, + "jison-lex": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/jison-lex/-/jison-lex-0.2.1.tgz", + "integrity": "sha1-rEuBXozOUTLrErXfz+jXB7iETf4=", + "requires": { + "lex-parser": "0.1.4", + "nomnom": "1.5.2" + } + }, + "joi": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/joi/-/joi-9.0.4.tgz", + "integrity": "sha1-iNZIkJFavrEnzXVwJxFtUN8+aN8=", + "requires": { + "hoek": "4.0.1", + "isemail": "2.2.1", + "items": "2.1.1", + "moment": "2.20.1", + "topo": "2.0.2" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.6.1.tgz", + "integrity": "sha1-bl/mfYsgXOTSL60Ft3geja3MSzA=", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "2.7.3" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, + "jsonic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/jsonic/-/jsonic-0.3.0.tgz", + "integrity": "sha1-tUXalfVDkuWLPdoF9fLjd6bJ0b8=" + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsonpath": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/jsonpath/-/jsonpath-0.2.11.tgz", + "integrity": "sha1-v+IuBmW5cS+Oe99+Lh+MCLWUxg4=", + "requires": { + "esprima": "1.2.2", + "jison": "0.4.13", + "static-eval": "0.2.3", + "underscore": "1.7.0" + } + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "keypress": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.2.1.tgz", + "integrity": "sha1-HoBFQlABjbrUw/6USX1uZ7YmnHc=" + }, + "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.6" + } + }, + "lab": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/lab/-/lab-14.0.1.tgz", + "integrity": "sha512-qFDMhwCcnYu2iNdunWmgBvowXtbJdchU3tEarWgRdnl3ilP66i4G1dCpbdUYPfA8dDEjBU350IXaj6Gz6QzHOw==", + "dev": true, + "requires": { + "bossy": "3.0.4", + "code": "4.1.0", + "diff": "3.4.0", + "eslint": "4.0.0", + "eslint-config-hapi": "10.1.0", + "eslint-plugin-hapi": "4.1.0", + "espree": "3.4.3", + "find-rc": "3.0.1", + "handlebars": "4.0.11", + "hoek": "4.0.1", + "items": "2.1.1", + "json-stable-stringify": "1.0.1", + "json-stringify-safe": "5.0.1", + "mkdirp": "0.5.1", + "seedrandom": "2.4.3", + "source-map": "0.5.7", + "source-map-support": "0.4.18" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcov-parse": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.10.tgz", + "integrity": "sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "lex-parser": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/lex-parser/-/lex-parser-0.1.4.tgz", + "integrity": "sha1-ZMTwJfF/1Tv7RXY/rrFvAVp0dVA=" + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "log-driver": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.5.tgz", + "integrity": "sha1-euTsJXMC/XkNVXyxDJcQDYV7AFY=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "lru-cache": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.0.tgz", + "integrity": "sha1-tcvwFVbBaWb+vlTO7A+03JDfbCg=", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "marked": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.9.tgz", + "integrity": "sha512-nW5u0dxpXxHfkHzzrveY45gCbi+R4PaO4WRZYqZNl+vB0hVGeqlFn0aOg1c8AKL63TrNFn9Bm2UP4AdiZ9TPLw==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "mimos": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/mimos/-/mimos-3.0.3.tgz", + "integrity": "sha1-uRCQcq03jCty9qAQHEPd+ys2ZB8=", + "dev": true, + "requires": { + "hoek": "4.0.1", + "mime-db": "1.30.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "moment": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz", + "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "msgpack": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/msgpack/-/msgpack-1.0.2.tgz", + "integrity": "sha1-kj4sXP+mXIQY6bIo0RJHk5acQpw=", + "requires": { + "nan": "2.8.0" + } + }, + "mstring": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/mstring/-/mstring-0.1.2.tgz", + "integrity": "sha1-iiaLGy3q3h5Y5NHrpUhKn++vrwI=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "ndjson": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-1.4.4.tgz", + "integrity": "sha1-eCAmc24Uaf7m7qED6IVxM2xyw3E=", + "dev": true, + "requires": { + "minimist": "1.2.0", + "split2": "2.2.0", + "through2": "2.0.3" + } + }, + "nid": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/nid/-/nid-0.3.2.tgz", + "integrity": "sha1-l3qTGO1cKjjt1mJj8+r9gUPyJRo=" + }, + "nigel": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/nigel/-/nigel-2.0.2.tgz", + "integrity": "sha1-k6GGb7DFLYc5CqdeKxYfS1x15bE=", + "dev": true, + "requires": { + "hoek": "4.0.1", + "vise": "2.0.2" + } + }, + "no-arrowception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/no-arrowception/-/no-arrowception-1.0.0.tgz", + "integrity": "sha1-W/PpXrnEG1c4SoBTM9qjtzTuMno=", + "dev": true + }, + "node-discover": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/node-discover/-/node-discover-0.6.0.tgz", + "integrity": "sha1-ajFvVTeqTeyQbpywQ6ArT9NEs2Q=", + "requires": { + "node-uuid": "1.4.8" + } + }, + "node-uuid": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", + "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" + }, + "nomnom": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.5.2.tgz", + "integrity": "sha1-9DRUSKhTz71cDSYyDyR3qwUm/i8=", + "requires": { + "colors": "0.5.1", + "underscore": "1.1.7" + }, + "dependencies": { + "underscore": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.1.7.tgz", + "integrity": "sha1-QLq4S60Z0jAJbo1u9ii/8FXYPbA=" + } + } + }, + "norma": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/norma/-/norma-0.3.0.tgz", + "integrity": "sha1-JyZcNBEBjDLJPucZ9pLPkN7Fq2Q=", + "dev": true, + "requires": { + "eraro": "0.4.1", + "lodash": "2.4.2" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } + } + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": 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 + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.10", + "wordwrap": "0.0.3" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "optioner": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/optioner/-/optioner-0.8.0.tgz", + "integrity": "sha1-5hhOs3m0NODl+Ev5fcvIDkCDwbI=", + "requires": { + "hoek": "4.0.1", + "joi": "9.0.4" + } + }, + "ordu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ordu/-/ordu-0.1.1.tgz", + "integrity": "sha1-nIEJSTaTyvCCmfyoTFlq64YLrqo=", + "dev": 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 + }, + "pad": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pad/-/pad-1.1.0.tgz", + "integrity": "sha1-en0YUgDrrDL58S7nVsOh0IezGQs=" + }, + "papi": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/papi/-/papi-0.25.1.tgz", + "integrity": "sha1-pUwCKxeA+SQPrmqh6GGyHJ+PEtk=", + "dev": true + }, + "parambulator": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/parambulator/-/parambulator-1.5.2.tgz", + "integrity": "sha1-cMr6sUVG0QA8xTveMy4vIFxc+J0=", + "dev": true, + "requires": { + "gex": "0.2.2", + "jsonic": "0.2.2", + "lodash": "4.5.0" + }, + "dependencies": { + "jsonic": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/jsonic/-/jsonic-0.2.2.tgz", + "integrity": "sha1-Enu5nfTYIWUsSKI9AlzysW5hhJE=", + "dev": true + }, + "lodash": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.5.0.tgz", + "integrity": "sha1-IoSqBvWxNq29lUuQNRG2L8OdH1k=", + "dev": true + } + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "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 + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "patrun": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/patrun/-/patrun-0.5.0.tgz", + "integrity": "sha1-d6UfdzrEkxuzU/1B1Z3mR4/GEY0=", + "dev": true, + "requires": { + "gex": "0.2.2", + "lodash": "3.10.0" + }, + "dependencies": { + "lodash": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.0.tgz", + "integrity": "sha1-k9UcZygopEFqEq9XIguoqHN+L7s=", + "dev": true + } + } + }, + "pez": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/pez/-/pez-2.1.5.tgz", + "integrity": "sha1-XsLMYlAMw+tCNtSkFM9aF7XrUAc=", + "dev": true, + "requires": { + "b64": "3.0.3", + "boom": "5.2.0", + "content": "3.0.6", + "hoek": "4.0.1", + "nigel": "2.0.2" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + } + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "pluralize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-4.0.0.tgz", + "integrity": "sha1-WbcIwcAZCi9pLxx2GMRGsFL9F2I=", + "dev": true + }, + "podium": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/podium/-/podium-1.3.0.tgz", + "integrity": "sha512-ZIujqk1pv8bRZNVxwwwq0BhXilZ2udycQT3Kp8ah3f3TcTmVg7ILJsv/oLf47gRa2qeiP584lNq+pfvS9U3aow==", + "dev": true, + "requires": { + "hoek": "4.0.1", + "items": "2.1.1", + "joi": "10.6.0" + }, + "dependencies": { + "joi": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz", + "integrity": "sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==", + "dev": true, + "requires": { + "hoek": "4.0.1", + "isemail": "2.2.1", + "items": "2.1.1", + "topo": "2.0.2" + } + } + } + }, + "precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prettier": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.4.4.tgz", + "integrity": "sha512-GuuPazIvjW1DG26yLQgO+nagmRF/h9M4RaCtZWqu/eFW7csdZkQEwPJUeXX10d+LzmCnR9DuIZndqIOn3p2YoA==", + "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=", + "dev": true + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz", + "integrity": "sha1-qfMRQq9GjLcrJbMBNrokVoNJFr4=", + "dev": true + }, + "range-parser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.3.tgz", + "integrity": "sha1-aHKCNTXGkuLCoBA4Jq/YLC4P8XU=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "reconnect-core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reconnect-core/-/reconnect-core-1.1.0.tgz", + "integrity": "sha1-W7Ngs1sZfqVT8JK2BXUzqkHyhow=", + "dev": true, + "requires": { + "backoff": "2.3.0" + } + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.79.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", + "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.11.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "2.0.6", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "qs": "6.3.2", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.4.3", + "uuid": "3.1.0" + }, + "dependencies": { + "qs": { + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", + "integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=", + "dev": true + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + } + } + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "rif": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/rif/-/rif-0.3.0.tgz", + "integrity": "sha1-aa3Lq8u/rAoRSUlGPRph4ttAkXQ=", + "requires": { + "ip": "1.1.3" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "rolling-stats": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/rolling-stats/-/rolling-stats-0.1.1.tgz", + "integrity": "sha1-zVr3dKiJOzCmdIMvovSrqkeM/IA=", + "dev": true + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "seedrandom": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.3.tgz", + "integrity": "sha1-JDhQTa0zkXMUv/GKxNeU8W1qrsw=", + "dev": true + }, + "semver": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz", + "integrity": "sha1-hfLPhVBGXE3wAM99hvawVBBqueU=", + "dev": true + }, + "send": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.1.tgz", + "integrity": "sha1-ow1fTILIqbrprQCh2bG9vm8Zntc=", + "dev": true, + "requires": { + "debug": "2.2.0", + "depd": "1.1.1", + "destroy": "1.0.4", + "escape-html": "1.0.3", + "etag": "1.7.0", + "fresh": "0.3.0", + "http-errors": "1.3.1", + "mime": "1.3.4", + "ms": "0.7.1", + "on-finished": "2.3.0", + "range-parser": "1.0.3", + "statuses": "1.2.1" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "seneca": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/seneca/-/seneca-3.4.3.tgz", + "integrity": "sha1-8kC84FJVQwDPu6NfEjl13KtpcEo=", + "dev": true, + "requires": { + "archy": "1.0.0", + "eraro": "0.4.1", + "gate-executor": "1.1.1", + "gex": "0.2.2", + "json-stringify-safe": "5.0.1", + "jsonic": "0.3.0", + "lodash": "4.17.4", + "minimist": "1.2.0", + "nid": "0.3.2", + "norma": "0.3.0", + "ordu": "0.1.1", + "patrun": "0.5.1", + "qs": "6.4.0", + "rolling-stats": "0.1.1", + "semver": "5.3.0", + "seneca-log-filter": "0.1.0", + "seneca-transport": "2.1.1", + "use-plugin": "0.3.2", + "wreck": "12.2.0" + }, + "dependencies": { + "backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha1-9hbtqdPktmuMp/ynn2lXIsX44m8=", + "dev": true, + "requires": { + "precond": "0.2.3" + } + }, + "gate-executor": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/gate-executor/-/gate-executor-1.1.1.tgz", + "integrity": "sha1-Zn9ncoSg2+hrbEigtK/oxISBLK8=", + "dev": true + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "lru-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.0.1.tgz", + "integrity": "sha1-E0OVXtry432bnn7nJB4nxLn7cr4=", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "ndjson": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-1.4.3.tgz", + "integrity": "sha1-eqAm/jqzin2horStB7EAjnM+sjk=", + "dev": true, + "requires": { + "minimist": "1.2.0", + "split2": "0.2.1", + "through2": "0.6.5" + } + }, + "patrun": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/patrun/-/patrun-0.5.1.tgz", + "integrity": "sha1-W/83V/Tz/SvftqBNJ5QsvsPhLxw=", + "dev": true, + "requires": { + "gex": "0.2.2", + "lodash": "4.15.0" + }, + "dependencies": { + "lodash": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz", + "integrity": "sha1-MWI5HY8BQKoiz49rPDTWt/Y9Oqk=", + "dev": true + } + } + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "0.0.1", + "string_decoder": "0.10.31" + } + }, + "reconnect-core": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reconnect-core/-/reconnect-core-1.3.0.tgz", + "integrity": "sha1-+65SkZp4d9hE4yRtAaLyZwHIM8g=", + "dev": true, + "requires": { + "backoff": "2.5.0" + } + }, + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "seneca-transport": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/seneca-transport/-/seneca-transport-2.1.1.tgz", + "integrity": "sha1-/40aAzW/4DfKfO3fJ4KL3VUpKiI=", + "dev": true, + "requires": { + "eraro": "0.4.1", + "gex": "0.2.2", + "jsonic": "0.2.2", + "lodash": "4.15.0", + "lru-cache": "4.0.1", + "ndjson": "1.4.3", + "nid": "0.3.2", + "patrun": "0.5.0", + "qs": "6.2.1", + "reconnect-core": "1.3.0", + "wreck": "9.0.0" + }, + "dependencies": { + "jsonic": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/jsonic/-/jsonic-0.2.2.tgz", + "integrity": "sha1-Enu5nfTYIWUsSKI9AlzysW5hhJE=", + "dev": true + }, + "lodash": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz", + "integrity": "sha1-MWI5HY8BQKoiz49rPDTWt/Y9Oqk=", + "dev": true + }, + "patrun": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/patrun/-/patrun-0.5.0.tgz", + "integrity": "sha1-d6UfdzrEkxuzU/1B1Z3mR4/GEY0=", + "dev": true, + "requires": { + "gex": "0.2.2", + "lodash": "3.10.0" + }, + "dependencies": { + "lodash": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.0.tgz", + "integrity": "sha1-k9UcZygopEFqEq9XIguoqHN+L7s=", + "dev": true + } + } + }, + "qs": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", + "integrity": "sha1-zgPF/wk1vB2daanxTL0Y5WjWdiU=", + "dev": true + }, + "wreck": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wreck/-/wreck-9.0.0.tgz", + "integrity": "sha1-HeY9SbsHuU/nGIZLi+YxduYzMew=", + "dev": true, + "requires": { + "boom": "3.2.2", + "hoek": "4.0.1" + } + } + } + }, + "split2": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/split2/-/split2-0.2.1.tgz", + "integrity": "sha1-At2smtwD7Au3jBKC7Aecpuha6QA=", + "dev": true, + "requires": { + "through2": "0.6.5" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + }, + "through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", + "dev": true, + "requires": { + "readable-stream": "1.0.34", + "xtend": "4.0.1" + } + }, + "use-plugin": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/use-plugin/-/use-plugin-0.3.2.tgz", + "integrity": "sha1-Afi4cvJMzepP15WPBX9NVb8f3/Q=", + "dev": true, + "requires": { + "eraro": "0.4.1", + "lodash": "4.15.0", + "nid": "0.3.2", + "norma": "0.3.0" + }, + "dependencies": { + "lodash": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz", + "integrity": "sha1-MWI5HY8BQKoiz49rPDTWt/Y9Oqk=", + "dev": true + } + } + }, + "wreck": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/wreck/-/wreck-12.2.0.tgz", + "integrity": "sha1-ocM3HiFSv202AP9YG2acaKTT2Lg=", + "dev": true, + "requires": { + "boom": "4.3.1", + "hoek": "4.0.1" + }, + "dependencies": { + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + } + } + } + } + }, + "seneca-balance-client": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/seneca-balance-client/-/seneca-balance-client-0.6.1.tgz", + "integrity": "sha1-ocfnNezsz33VAA9ljg1PHLV6HF8=", + "dev": true, + "requires": { + "eraro": "0.4.1", + "jsonic": "0.3.0", + "lodash": "4.17.4" + } + }, + "seneca-basic": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/seneca-basic/-/seneca-basic-0.4.0.tgz", + "integrity": "sha1-NeFADmG+EOuQ33Pd4/laRTh7gzc=", + "dev": true, + "requires": { + "async": "1.5.2", + "lodash": "4.0.0", + "nid": "0.3.2" + }, + "dependencies": { + "lodash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.0.0.tgz", + "integrity": "sha1-msQ4RMWV4o0wEIt7pYNwM5WSLfw=", + "dev": true + } + } + }, + "seneca-cluster": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/seneca-cluster/-/seneca-cluster-0.0.1.tgz", + "integrity": "sha1-1qK0SCyLzUnM8Obhol+F70Cl9tM=", + "dev": true, + "requires": { + "eraro": "0.4.1", + "semver": "5.1.0" + } + }, + "seneca-consul-registry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/seneca-consul-registry/-/seneca-consul-registry-0.1.0.tgz", + "integrity": "sha1-U15kQ4Z42TBufglLbieVVmTPUaM=", + "dev": true, + "requires": { + "consul": "0.25.0", + "lodash": "4.5.0" + }, + "dependencies": { + "lodash": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.5.0.tgz", + "integrity": "sha1-IoSqBvWxNq29lUuQNRG2L8OdH1k=", + "dev": true + } + } + }, + "seneca-log-filter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/seneca-log-filter/-/seneca-log-filter-0.1.0.tgz", + "integrity": "sha1-9RPed9/cwSACP4R6fGDO7Qr8ZrM=", + "dev": true, + "requires": { + "lodash": "4.15.0" + }, + "dependencies": { + "lodash": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz", + "integrity": "sha1-MWI5HY8BQKoiz49rPDTWt/Y9Oqk=", + "dev": true + } + } + }, + "seneca-mem-store": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/seneca-mem-store/-/seneca-mem-store-0.5.0.tgz", + "integrity": "sha1-LDgxkSMw+uMWI06prmiXNuB0Vzg=", + "dev": true, + "requires": { + "lodash": "3.10.1" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + } + } + }, + "seneca-parambulator": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/seneca-parambulator/-/seneca-parambulator-0.2.0.tgz", + "integrity": "sha1-HiYmrpU5H4bW2WoKFYm4kHu6IQ4=", + "dev": true, + "requires": { + "lodash": "4.5.0", + "parambulator": "1.5.2" + }, + "dependencies": { + "lodash": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.5.0.tgz", + "integrity": "sha1-IoSqBvWxNq29lUuQNRG2L8OdH1k=", + "dev": true + } + } + }, + "seneca-repl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/seneca-repl/-/seneca-repl-1.0.1.tgz", + "integrity": "sha1-D2ExxSqO58kwoefaEqsUS+ehwOE=", + "dev": true, + "requires": { + "jsonic": "0.2.2", + "lodash": "4.15.0" + }, + "dependencies": { + "jsonic": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/jsonic/-/jsonic-0.2.2.tgz", + "integrity": "sha1-Enu5nfTYIWUsSKI9AlzysW5hhJE=", + "dev": true + }, + "lodash": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz", + "integrity": "sha1-MWI5HY8BQKoiz49rPDTWt/Y9Oqk=", + "dev": true + } + } + }, + "seneca-transport": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/seneca-transport/-/seneca-transport-1.2.0.tgz", + "integrity": "sha1-A2fOuKjxV9ljfAqiKH+C9rJ6gao=", + "dev": true, + "requires": { + "eraro": "0.4.1", + "gex": "0.2.2", + "jsonic": "0.2.2", + "lodash": "4.5.1", + "lru-cache": "3.2.0", + "ndjson": "1.4.4", + "nid": "0.3.2", + "patrun": "0.5.0", + "qs": "5.2.0", + "reconnect-core": "1.1.0", + "wreck": "6.3.0" + }, + "dependencies": { + "jsonic": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/jsonic/-/jsonic-0.2.2.tgz", + "integrity": "sha1-Enu5nfTYIWUsSKI9AlzysW5hhJE=", + "dev": true + }, + "lodash": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.5.1.tgz", + "integrity": "sha1-gOigdMpfOJOmscELKmNkktcQwxY=", + "dev": true + }, + "lru-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=", + "dev": true, + "requires": { + "pseudomap": "1.0.2" + } + } + } + }, + "seneca-web": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/seneca-web/-/seneca-web-0.7.1.tgz", + "integrity": "sha1-9pT4CtK7Rhj8a4VmcKG9zfTewH0=", + "dev": true, + "requires": { + "async": "1.5.2", + "connect": "3.4.1", + "eraro": "0.4.1", + "json-stringify-safe": "5.0.1", + "lodash": "4.2.1", + "methods": "1.1.2", + "mstring": "0.1.2", + "nid": "0.3.2", + "norma": "0.3.0", + "parambulator": "1.5.1", + "rolling-stats": "0.1.1", + "serve-static": "1.10.2" + }, + "dependencies": { + "gex": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/gex/-/gex-0.2.0.tgz", + "integrity": "sha1-5f9BdNZstlaq7bYk76LjV/YR5og=", + "dev": true, + "requires": { + "lodash": "2.4.2" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } + } + }, + "jsonic": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/jsonic/-/jsonic-0.2.0.tgz", + "integrity": "sha1-fjpTlkLd8sS4DT+pEVwL+pN3xb0=", + "dev": true + }, + "lodash": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.2.1.tgz", + "integrity": "sha1-Fx/c+7ww1onFRM0YwFKfVt5sGqk=", + "dev": true + }, + "parambulator": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parambulator/-/parambulator-1.5.1.tgz", + "integrity": "sha1-N8XQ5b+5JOJVg7JDMulPiIdiQsw=", + "dev": true, + "requires": { + "gex": "0.2.0", + "jsonic": "0.2.0", + "lodash": "2.4.2" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } + } + } + } + }, + "serve-static": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.2.tgz", + "integrity": "sha1-/rgA0OciEk3QsAMzFgwW6cqovLM=", + "dev": true, + "requires": { + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.13.1" + } + }, + "shot": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/shot/-/shot-3.4.2.tgz", + "integrity": "sha1-Hlw/bysmZJrcQvfrNQIUpaApHWc=", + "dev": true, + "requires": { + "hoek": "4.0.1", + "joi": "10.6.0" + }, + "dependencies": { + "joi": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz", + "integrity": "sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==", + "dev": true, + "requires": { + "hoek": "4.0.1", + "isemail": "2.2.1", + "items": "2.1.1", + "topo": "2.0.2" + } + } + } + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } + }, + "sneeze": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/sneeze/-/sneeze-0.8.0.tgz", + "integrity": "sha1-1U9JJdN/F6SdsuJxSIpGplyo1eg=", + "requires": { + "ansi-escapes": "1.4.0", + "chalk": "1.1.3", + "jsonpath": "0.2.11", + "keypress": "0.2.1", + "lodash": "4.5.0", + "optioner": "0.8.0", + "pad": "1.1.0", + "swim": "0.3.2" + }, + "dependencies": { + "lodash": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.5.0.tgz", + "integrity": "sha1-IoSqBvWxNq29lUuQNRG2L8OdH1k=" + } + } + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + }, + "dependencies": { + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "dev": true, + "requires": { + "through2": "2.0.3" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "statehood": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/statehood/-/statehood-5.0.3.tgz", + "integrity": "sha512-YrPrCt10t3ImH/JMO5szSwX7sCm8HoqVl3VFLOa9EZ1g/qJx/ZmMhN+2uzPPB/vaU6hpkJpXxcBWsgIkkG+MXA==", + "dev": true, + "requires": { + "boom": "5.2.0", + "cryptiles": "3.1.2", + "hoek": "4.0.1", + "iron": "4.0.5", + "items": "2.1.1", + "joi": "10.6.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + } + }, + "joi": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/joi/-/joi-10.6.0.tgz", + "integrity": "sha512-hBF3LcqyAid+9X/pwg+eXjD2QBZI5eXnBFJYaAkH4SK3mp9QSRiiQnDYlmlz5pccMvnLcJRS4whhDOTCkmsAdQ==", + "dev": true, + "requires": { + "hoek": "4.0.1", + "isemail": "2.2.1", + "items": "2.1.1", + "topo": "2.0.2" + } + } + } + }, + "static-eval": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-0.2.3.tgz", + "integrity": "sha1-Aj8XrJ/uQm6niMEuo5IG3Bdfiyo=", + "requires": { + "escodegen": "0.0.28" + }, + "dependencies": { + "escodegen": { + "version": "0.0.28", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-0.0.28.tgz", + "integrity": "sha1-Dk/xcV8yh3XWyrUaxEpAbNer/9M=", + "requires": { + "esprima": "1.0.4", + "estraverse": "1.3.2", + "source-map": "0.6.1" + } + }, + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=" + }, + "estraverse": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.3.2.tgz", + "integrity": "sha1-N8K4k+8T1yPydth41g2FNRUqbEI=" + } + } + }, + "statuses": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "integrity": "sha1-3e1FzBglbVHtQK7BQkidXGECbSg=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "2.1.1" + } + }, + "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 + }, + "subtext": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/subtext/-/subtext-4.4.1.tgz", + "integrity": "sha1-L87JRd5CkoPD0YsVH/D6HxuHrsk=", + "dev": true, + "requires": { + "boom": "5.2.0", + "content": "3.0.6", + "hoek": "4.0.1", + "pez": "2.1.5", + "wreck": "12.5.1" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + }, + "wreck": { + "version": "12.5.1", + "resolved": "https://registry.npmjs.org/wreck/-/wreck-12.5.1.tgz", + "integrity": "sha512-l5DUGrc+yDyIflpty1x9XuMj1ehVjC/dTbF3/BasOO77xk0EdEa4M/DuOY8W88MQDAD0fEDqyjc8bkIMHd2E9A==", + "dev": true, + "requires": { + "boom": "5.2.0", + "hoek": "4.0.1" + } + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + }, + "swim": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/swim/-/swim-0.3.2.tgz", + "integrity": "sha1-2nIgLrHamkc3ja6r3xOsKTHakP8=", + "requires": { + "clone": "1.0.3", + "commander": "2.12.2", + "debug": "2.6.9", + "farmhash": "1.2.1", + "msgpack": "1.0.2" + } + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "topo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz", + "integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=", + "requires": { + "hoek": "4.0.1" + } + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", + "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=", + "dev": true + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "optional": true + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "underscore": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz", + "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=" + }, + "universalify": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "use-plugin": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/use-plugin/-/use-plugin-0.3.1.tgz", + "integrity": "sha1-XZafuZq1XOTxr5BsmXgjKnWJIa8=", + "dev": true, + "requires": { + "eraro": "0.4.1", + "lodash": "2.4.2", + "nid": "0.3.2", + "norma": "0.3.0" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "vise": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/vise/-/vise-2.0.2.tgz", + "integrity": "sha1-awjo+0y3bjpQzW3Q7DczjoEaDTk=", + "dev": true, + "requires": { + "hoek": "4.0.1" + } + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "wreck": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/wreck/-/wreck-6.3.0.tgz", + "integrity": "sha1-oTaXafB7u2LWo3gzanhx/Hc8dAs=", + "dev": true, + "requires": { + "boom": "2.10.1", + "hoek": "2.16.3" + }, + "dependencies": { + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + } + } + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + }, + "zig": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/zig/-/zig-0.1.1.tgz", + "integrity": "sha1-gBGFWUx9EzjxTD6/vgunTwuWnMs=", + "dev": true, + "requires": { + "lodash": "2.4.2" + }, + "dependencies": { + "lodash": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", + "dev": true + } + } + } + } +} diff --git a/package.json b/package.json index 38007f2..0f30e32 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "lint": "lab *.js -dL", "coveralls": "lab -s -P test -r lcov | coveralls", "coverage": "lab -v -P test -L -t 78 -r html > docs/coverage.html", - "prettier": "prettier --write --no-semi --single-quote mesh.js" + "prettier": "prettier --write --no-semi --single-quote mesh.js test/*.js" }, "repository": { "type": "git", @@ -48,17 +48,17 @@ }, "devDependencies": { "chairo": "2.2.1", + "code": "4.1.x", "color": "0.11.3", "coveralls": "2.13.x", "docco": "0.7.x", "hapi": "15.0.2", "lab": "14.0.x", - "code": "4.1.x", - "seneca-repl": "1.0.x", + "prettier": "^1.4.4", "seneca": "plugin", "seneca-balance-client": "0.6.1", "seneca-consul-registry": "0.1.0", - "prettier": "1.4.x" + "seneca-repl": "1.0.x" }, "files": [ "README.md", diff --git a/test/mesh.test.js b/test/mesh.test.js index ad7da72..20ad6ff 100644 --- a/test/mesh.test.js +++ b/test/mesh.test.js @@ -5,7 +5,6 @@ 'use strict' - var Assert = require('assert') var Util = require('util') @@ -14,212 +13,223 @@ var Code = require('code') var Seneca = require('seneca') var Rif = require('rif') - -var lab = exports.lab = Lab.script() +var lab = (exports.lab = Lab.script()) var describe = lab.describe var it = lab.it var expect = Code.expect - var Mesh = require('..') var intern = Mesh.intern - var test_discover = { stop: true, - guess: {active: true}, - multicast: {active: false}, - registry: {active: false} + guess: { active: true }, + multicast: { active: false }, + registry: { active: false } } +describe('#mesh', function() { + it('nextgen-single-with-base', { parallel: false, timeout: 5555 }, function( + fin + ) { + var b0 = Seneca({ tag: 'b0', legacy: { transport: false } }) + .test(fin) + .use('..', { base: true, discover: test_discover }) -describe('#mesh', function () { - - it('nextgen-single-with-base', {parallel: false, timeout: 5555}, function (fin) { - var b0 = Seneca({tag: 'b0', legacy: { transport: false }}) - .test(fin) - .use('..', {base: true, discover: test_discover}) - - var s0 = Seneca({tag: 's0', legacy: { transport: false }}) - .test(fin) - .add('a:1', function (msg, reply) { reply({x: msg.x}) }) - - b0.ready(function () { - s0 - .use('..', {pin: 'a:1', discover: test_discover}) - .ready(function () { + var s0 = Seneca({ tag: 's0', legacy: { transport: false } }) + .test(fin) + .add('a:1', function(msg, reply) { + reply({ x: msg.x }) + }) - b0.act('a:1,x:0', function (ignore, out) { - Assert.equal(0, out.x) + b0.ready(function() { + s0.use('..', { pin: 'a:1', discover: test_discover }).ready(function() { + b0.act('a:1,x:0', function(ignore, out) { + Assert.equal(0, out.x) - b0.act('a:1,x:1', function (ignore, out) { - Assert.equal(1, out.x) + b0.act('a:1,x:1', function(ignore, out) { + Assert.equal(1, out.x) - s0.close(b0.close.bind(b0, setTimeout.bind(this, fin, 555))) - }) + s0.close(b0.close.bind(b0, setTimeout.bind(this, fin, 555))) }) }) + }) }) }) - - it('intern.resolve_bases', function (done) { + it('intern.resolve_bases', function(done) { var rif = make_rif() - Assert.equal( - '', - '' + intern.resolve_bases()) + Assert.equal('', '' + intern.resolve_bases()) - Assert.equal(Mesh.DEFAULT_HOST + ':' + Mesh.DEFAULT_PORT + - ',192.168.1.2:' + Mesh.DEFAULT_PORT, - '' + intern.resolve_bases([':' + Mesh.DEFAULT_PORT], - {host: '192.168.1.2'}, rif)) + Assert.equal( + Mesh.DEFAULT_HOST + + ':' + + Mesh.DEFAULT_PORT + + ',192.168.1.2:' + + Mesh.DEFAULT_PORT, + '' + + intern.resolve_bases( + [':' + Mesh.DEFAULT_PORT], + { host: '192.168.1.2' }, + rif + ) + ) Assert.equal( - 'foo:' + Mesh.DEFAULT_PORT + ',' + - 'bar:' + Mesh.DEFAULT_PORT, - '' + intern.resolve_bases(['foo', 'bar'], null, rif)) + 'foo:' + Mesh.DEFAULT_PORT + ',' + 'bar:' + Mesh.DEFAULT_PORT, + '' + intern.resolve_bases(['foo', 'bar'], null, rif) + ) Assert.equal( Mesh.DEFAULT_HOST + ':33333', - '' + intern.resolve_bases([':33333'], null, rif)) + '' + intern.resolve_bases([':33333'], null, rif) + ) Assert.equal( Mesh.DEFAULT_HOST + ':33333,' + 'zed:33333', - '' + intern.resolve_bases([':33333'], {host: 'zed'}, rif)) + '' + intern.resolve_bases([':33333'], { host: 'zed' }, rif) + ) Assert.equal( '127.0.0.1:' + Mesh.DEFAULT_PORT, - '' + intern.resolve_bases(['@lo'], null, rif)) + '' + intern.resolve_bases(['@lo'], null, rif) + ) done() }) + it('intern.make_pin_config', function(done) { + var si = Seneca({ log: 'silent' }) - it('intern.make_pin_config', function (done) { - var si = Seneca({log: 'silent'}) - - expect(intern.make_pin_config( - si, {identifier$: 'i0'}, 'a:1', {pin: 'a:1', x: 1})).to.equal({ - id: 'pin:a:1,x:1~i0', + expect( + intern.make_pin_config(si, { identifier$: 'i0' }, 'a:1', { pin: 'a:1', x: 1 }) + ).to.equal({ + id: 'pin:a:1,x:1~i0', + pin: 'a:1', + x: 1 + }) - expect(intern.make_pin_config( - si, {identifier$: 'i0'}, 'a:1', {pins: [{a: 1}, 'b:1'], x: 1})).to.equal({ - id: 'pin:a:1,x:1~i0', - pin: 'a:1', + expect( + intern.make_pin_config(si, { identifier$: 'i0' }, 'a:1', { + pins: [{ a: 1 }, 'b:1'], x: 1 }) + ).to.equal({ + id: 'pin:a:1,x:1~i0', + pin: 'a:1', + x: 1 + }) done() }) + it('intern.resolve_pins', function(done) { + var si = Seneca({ log: 'silent' }) - it('intern.resolve_pins', function (done) { - var si = Seneca({log: 'silent'}) - - expect(intern.resolve_pins(si, {pin: 'a:1'})) - .to.equal(['a:1']) + expect(intern.resolve_pins(si, { pin: 'a:1' })).to.equal(['a:1']) - expect(intern.resolve_pins(si, {pin: {a: 1}})) - .to.equal(['a:1']) + expect(intern.resolve_pins(si, { pin: { a: 1 } })).to.equal(['a:1']) - expect(intern.resolve_pins(si, {pins: 'a:1'})) - .to.equal(['a:1']) + expect(intern.resolve_pins(si, { pins: 'a:1' })).to.equal(['a:1']) - expect(intern.resolve_pins(si, {pins: {a: 1}})) - .to.equal(['a:1']) + expect(intern.resolve_pins(si, { pins: { a: 1 } })).to.equal(['a:1']) - expect(intern.resolve_pins(si, {pin: ['a:1']})) - .to.equal(['a:1']) + expect(intern.resolve_pins(si, { pin: ['a:1'] })).to.equal(['a:1']) - expect(intern.resolve_pins(si, {pin: [{a: 1}]})) - .to.equal(['a:1']) + expect(intern.resolve_pins(si, { pin: [{ a: 1 }] })).to.equal(['a:1']) - expect(intern.resolve_pins(si, {pins: ['a:1']})) - .to.equal(['a:1']) + expect(intern.resolve_pins(si, { pins: ['a:1'] })).to.equal(['a:1']) - expect(intern.resolve_pins(si, {pins: [{a: 1}]})) - .to.equal(['a:1']) + expect(intern.resolve_pins(si, { pins: [{ a: 1 }] })).to.equal(['a:1']) + expect(intern.resolve_pins(si, { pin: 'a:1,b:2' })).to.equal(['a:1,b:2']) - expect(intern.resolve_pins(si, {pin: 'a:1,b:2'})) - .to.equal(['a:1,b:2']) + expect(intern.resolve_pins(si, { pin: 'b:2,a:1' })).to.equal(['a:1,b:2']) - expect(intern.resolve_pins(si, {pin: 'b:2,a:1'})) - .to.equal(['a:1,b:2']) + expect(intern.resolve_pins(si, { pin: 'a:1;b:2' })).to.equal(['a:1', 'b:2']) - expect(intern.resolve_pins(si, {pin: 'a:1;b:2'})) - .to.equal(['a:1', 'b:2']) + expect(intern.resolve_pins(si, { pin: 'b:2;a:1' })).to.equal(['b:2', 'a:1']) - expect(intern.resolve_pins(si, {pin: 'b:2;a:1'})) - .to.equal(['b:2', 'a:1']) + expect(intern.resolve_pins(si, { pin: 'a:1;a:1' })).to.equal(['a:1', 'a:1']) - expect(intern.resolve_pins(si, {pin: 'a:1;a:1'})) - .to.equal(['a:1', 'a:1']) + expect(intern.resolve_pins(si, { pins: 'a:1;b:2' })).to.equal([ + 'a:1', + 'b:2' + ]) + expect(intern.resolve_pins(si, { pins: ['a:1;b:2'] })).to.equal([ + 'a:1', + 'b:2' + ]) - expect(intern.resolve_pins(si, {pins: 'a:1;b:2'})) - .to.equal(['a:1', 'b:2']) + expect(intern.resolve_pins(si, { pins: [{ a: 1 }, { b: 2 }] })).to.equal([ + 'a:1', + 'b:2' + ]) - expect(intern.resolve_pins(si, {pins: ['a:1;b:2']})) - .to.equal(['a:1', 'b:2']) + expect(intern.resolve_pins(si, { pins: ['a:1', 'b:2'] })).to.equal([ + 'a:1', + 'b:2' + ]) - expect(intern.resolve_pins(si, {pins: [{a: 1}, {b: 2}]})) - .to.equal(['a:1', 'b:2']) - - expect(intern.resolve_pins(si, {pins: ['a:1', 'b:2']})) - .to.equal(['a:1', 'b:2']) - - expect(intern.resolve_pins(si, {pin: 'a:1,b:2;c:3'})) - .to.equal(['a:1,b:2', 'c:3']) - - expect(intern.resolve_pins(si, {pin: 'c:3;a:1,b:2'})) - .to.equal(['c:3', 'a:1,b:2']) + expect(intern.resolve_pins(si, { pin: 'a:1,b:2;c:3' })).to.equal([ + 'a:1,b:2', + 'c:3' + ]) + expect(intern.resolve_pins(si, { pin: 'c:3;a:1,b:2' })).to.equal([ + 'c:3', + 'a:1,b:2' + ]) done() }) - - it('base', {timeout: 5555, parallel: false}, function (done) { - Seneca({tag: 'b0a', log: 'test', debug: {short_logs: true}}) - .error(done) - .use('..', {isbase: true, discover: test_discover}) - .ready(function () { - this.close(setTimeout.bind(this, done, 555)) - }) + it('base', { timeout: 5555, parallel: false }, function(done) { + Seneca({ tag: 'b0a', log: 'test', debug: { short_logs: true } }) + .error(done) + .use('..', { isbase: true, discover: test_discover }) + .ready(function() { + this.close(setTimeout.bind(this, done, 555)) + }) }) - - it('single-with-base', {parallel: false, timeout: 5555}, function (done) { + it('single-with-base', { parallel: false, timeout: 5555 }, function(done) { var b0b, s0b - b0b = - Seneca({tag: 'b0b', log: 'silent', debug: {short_logs: true}}) + b0b = Seneca({ tag: 'b0b', log: 'silent', debug: { short_logs: true } }) .error(done) - .use('..', {isbase: true, discover: test_discover}) + .use('..', { isbase: true, discover: test_discover }) - s0b = - Seneca({tag: 's0b', log: 'silent', debug: {short_logs: true}}) + s0b = Seneca({ tag: 's0b', log: 'silent', debug: { short_logs: true } }) .error(done) - .add('a:1', function (msg) { this.good({x: msg.i}) }) + .add('a:1', function(msg) { + this.good({ x: msg.i }) + }) - b0b.ready(function () { - s0b.use('..', {pin: 'a:1', discover: test_discover}).ready(function () { - s0b.act('role:mesh,get:members', function (err, out) { - if (err) { done(err) } + b0b.ready(function() { + s0b.use('..', { pin: 'a:1', discover: test_discover }).ready(function() { + s0b.act('role:mesh,get:members', function(err, out) { + if (err) { + done(err) + } Assert.equal(1, out.list.length) - b0b.act('a:1,i:0', function (err, out) { - if (err) { done(err) } + b0b.act('a:1,i:0', function(err, out) { + if (err) { + done(err) + } Assert.equal(0, out.x) - b0b.act('a:1,i:1', function (err, out) { - if (err) { done(err) } + b0b.act('a:1,i:1', function(err, out) { + if (err) { + done(err) + } Assert.equal(1, out.x) s0b.close(b0b.close.bind(b0b, setTimeout.bind(this, done, 555))) @@ -230,229 +240,330 @@ describe('#mesh', function () { }) }) - it('happy', {parallel: false, timeout: 5555}, function (fin) { + it('happy', { parallel: false, timeout: 5555 }, function(fin) { var b0, s0, s1, c0 - b0 = - Seneca({id$: 'b0'}) + b0 = Seneca({ id$: 'b0' }) .test(fin) - .use('..', {base: true, discover: test_discover, sneeze: {silent: true}}) + .use('..', { + base: true, + discover: test_discover, + sneeze: { silent: true } + }) - s0 = - Seneca({id$: 's0'}) + s0 = Seneca({ id$: 's0' }) .test(fin) - .use('..', {pin: 'a:1', discover: test_discover, sneeze: {silent: true}}) - .add('a:1', function (m, r) { r({x: 0}) }) - - s1 = - Seneca({id$: 's1'}) - .test(fin)//, 'print') - .use('..', {pin: 'a:1', discover: test_discover, sneeze: {silent: true}}) - .add('a:1', function (m, r) { r({x: 1}) }) - .add('a:1', function (m, r) { + .use('..', { + pin: 'a:1', + discover: test_discover, + sneeze: { silent: true } + }) + .add('a:1', function(m, r) { + r({ x: 0 }) + }) + + s1 = Seneca({ id$: 's1' }) + .test(fin) //, 'print') + .use('..', { + pin: 'a:1', + discover: test_discover, + sneeze: { silent: true } + }) + .add('a:1', function(m, r) { + r({ x: 1 }) + }) + .add('a:1', function(m, r) { this.prior(m, r) }) - c0 = - Seneca({id$: 'c0'}) + c0 = Seneca({ id$: 'c0' }) .test(fin) - .use('..', {discover: test_discover, sneeze: {silent: true}}) - - b0.ready(s0.ready.bind(s0, s1.ready.bind(s1, c0.ready.bind(c0, function () { - c0 - .gate() - .act({role: 'transport', type: 'balance', get: 'target-map'}, - function(e,o){ - expect(o['a:1']['a:1'].targets.length).equal(2) - }) - - .act({role: 'mesh', get: 'members'}, - function(e,o){ - expect(o.list.length).equal(3) - }) - - .act('a:1,s:0', function (e, o) { - expect(o.x).equal(0) - }) - .act('a:1,s:1', function (e, o) { - expect(o.x).equal(1) - }) - .act('a:1,s:2', function (e, o) { - expect(o.x).equal(0) - }) - - .ready(function() { - b0.act('role:mesh,get:members', function (e, o) { - expect(o.list.length).equal(3) - - s0.close(setTimeout.bind(null,function () { - c0 - .act('a:1,s:3', function (e, o) { - expect(o.x).equal(1) - }) - .act('a:1,s:4', function (e, o) { - expect(o.x).equal(1) + .use('..', { discover: test_discover, sneeze: { silent: true } }) + + b0.ready( + s0.ready.bind( + s0, + s1.ready.bind( + s1, + c0.ready.bind(c0, function() { + c0 + .gate() + .act( + { role: 'transport', type: 'balance', get: 'target-map' }, + function(e, o) { + expect(o['a:1']['a:1'].targets.length).equal(2) + } + ) + .act({ role: 'mesh', get: 'members' }, function(e, o) { + expect(o.list.length).equal(3) + }) + .act('a:1,s:0', function(e, o) { + expect(o.x).equal(0) + }) + .act('a:1,s:1', function(e, o) { + expect(o.x).equal(1) + }) + .act('a:1,s:2', function(e, o) { + expect(o.x).equal(0) + }) + .ready(function() { + b0.act('role:mesh,get:members', function(e, o) { + expect(o.list.length).equal(3) + + s0.close( + setTimeout.bind( + null, + function() { + c0 + .act('a:1,s:3', function(e, o) { + expect(o.x).equal(1) + }) + .act('a:1,s:4', function(e, o) { + expect(o.x).equal(1) + }) + .close(s1.close.bind(s1, b0.close.bind(b0, fin))) + }, + 1555 + ) + ) }) - - .close(s1.close.bind(s1,b0.close.bind(b0, fin)))},1555)) + }) }) - }) - })))) + ) + ) + ) }) - - it('many-actors', {parallel: false, timeout: 19999}, function (done) { + it('many-actors', { parallel: false, timeout: 19999 }, function(done) { var b0, s0, s1, s2, c0, c1 - b0 = Seneca({tag: 'b0', log: 'test', debug: {short_logs: true}}) - .error(done) - - s0 = Seneca({tag: 's0', log: 'test', debug: {short_logs: true}}) - .error(done) - .add('a:1', function (m) { this.good({x: m.x + 1}) }) + b0 = Seneca({ tag: 'b0', log: 'test', debug: { short_logs: true } }).error( + done + ) - s1 = Seneca({tag: 's1', log: 'test', debug: {short_logs: true}}) + s0 = Seneca({ tag: 's0', log: 'test', debug: { short_logs: true } }) .error(done) - .add('a:1', function (m) { this.good({x: m.x + 2}) }) + .add('a:1', function(m) { + this.good({ x: m.x + 1 }) + }) - s2 = Seneca({tag: 's2', log: 'test', debug: {short_logs: true}}) + s1 = Seneca({ tag: 's1', log: 'test', debug: { short_logs: true } }) .error(done) - .add('a:1', function (m) { this.good({x: m.x + 3}) }) + .add('a:1', function(m) { + this.good({ x: m.x + 2 }) + }) - c0 = Seneca({tag: 'c0', log: 'test', debug: {short_logs: true}}) + s2 = Seneca({ tag: 's2', log: 'test', debug: { short_logs: true } }) .error(done) + .add('a:1', function(m) { + this.good({ x: m.x + 3 }) + }) - c1 = Seneca({tag: 'c1', log: 'test', debug: {short_logs: true}}) - .error(done) + c0 = Seneca({ tag: 'c0', log: 'test', debug: { short_logs: true } }).error( + done + ) + c1 = Seneca({ tag: 'c1', log: 'test', debug: { short_logs: true } }).error( + done + ) - b0.use('..', {isbase: true, discover: test_discover, sneeze: {silent: true}}).ready(function () { - s0.use('..', {pin: 'a:1', model: 'actor', discover: test_discover, sneeze: {silent: true}}).ready(function () { - s1.use('..', {pin: 'a:1', model: 'actor', discover: test_discover, sneeze: {silent: true}}).ready(function () { - s2.use('..', {pin: 'a:1', model: 'actor', discover: test_discover, sneeze: {silent: true}}).ready(function () { - c0.use('..', {discover: test_discover, sneeze: {silent: true}}).ready(function () { - c1.use('..', {discover: test_discover, sneeze: {silent: true}}).ready(setTimeout.bind(null, do_topology, 1222)) - }) }) }) }) }) + b0 + .use('..', { + isbase: true, + discover: test_discover, + sneeze: { silent: true } + }) + .ready(function() { + s0 + .use('..', { + pin: 'a:1', + model: 'actor', + discover: test_discover, + sneeze: { silent: true } + }) + .ready(function() { + s1 + .use('..', { + pin: 'a:1', + model: 'actor', + discover: test_discover, + sneeze: { silent: true } + }) + .ready(function() { + s2 + .use('..', { + pin: 'a:1', + model: 'actor', + discover: test_discover, + sneeze: { silent: true } + }) + .ready(function() { + c0 + .use('..', { + discover: test_discover, + sneeze: { silent: true } + }) + .ready(function() { + c1 + .use('..', { + discover: test_discover, + sneeze: { silent: true } + }) + .ready(setTimeout.bind(null, do_topology, 1222)) + }) + }) + }) + }) + }) - function do_topology () { - c0.act('role:mesh,get:members', function (err, o) { - if (err) { done(err) } + function do_topology() { + c0.act('role:mesh,get:members', function(err, o) { + if (err) { + done(err) + } Assert.equal(5, o.list.length) - c1.act('role:mesh,get:members', function (err, o) { - if (err) { done(err) } + c1.act('role:mesh,get:members', function(err, o) { + if (err) { + done(err) + } Assert.equal(5, o.list.length) - c0.act('role:transport,type:balance,get:target-map,pg:"a:1"', function (err, c0map) { - if (err) { done(err) } - Assert.equal(3, c0map['a:1'].targets.length) - - c1.act('role:transport,type:balance,get:target-map,pg:"a:1"', function (err, c1map) { - if (err) { done(err) } - Assert.equal(3, c1map['a:1'].targets.length) - - do_actors(c0map, c1map) - }) - }) + c0.act( + 'role:transport,type:balance,get:target-map,pg:"a:1"', + function(err, c0map) { + if (err) { + done(err) + } + Assert.equal(3, c0map['a:1'].targets.length) + + c1.act( + 'role:transport,type:balance,get:target-map,pg:"a:1"', + function(err, c1map) { + if (err) { + done(err) + } + Assert.equal(3, c1map['a:1'].targets.length) + + do_actors(c0map, c1map) + } + ) + } + ) }) }) } - function do_actors (c0map, c1map) { + function do_actors(c0map, c1map) { // var i = 0 // console.log(i++,'c0',c0map['a:1'].index,c0map.x,'c1',c1map['a:1'].index,c1map.x) - c0.act('a:1,x:0', function (e, o) { + c0.act('a:1,x:0', function(e, o) { // console.log(i++,'c0',c0map['a:1'].index,'c1',c1map['a:1'].index) Assert.equal(1, o.x) - c1.act('a:1,x:0', function (e, o) { + c1.act('a:1,x:0', function(e, o) { // console.log(i++,'c0',c0map['a:1'].index,'c1',c1map['a:1'].index) Assert.equal(1, o.x) - c0.act('a:1,x:0', function (e, o) { + c0.act('a:1,x:0', function(e, o) { Assert.equal(2, o.x) - c1.act('a:1,x:0', function (e, o) { + c1.act('a:1,x:0', function(e, o) { Assert.equal(2, o.x) - c0.act('a:1,x:0', function (e, o) { + c0.act('a:1,x:0', function(e, o) { Assert.equal(3, o.x) - c1.act('a:1,x:0', function (e, o) { + c1.act('a:1,x:0', function(e, o) { Assert.equal(3, o.x) - c0.act('a:1,x:0', function (e, o) { + c0.act('a:1,x:0', function(e, o) { Assert.equal(1, o.x) - c1.act('a:1,x:0', function (e, o) { + c1.act('a:1,x:0', function(e, o) { Assert.equal(1, o.x) - c0.act('a:1,x:0', function (e, o) { + c0.act('a:1,x:0', function(e, o) { Assert.equal(2, o.x) - c1.act('a:1,x:0', function (e, o) { + c1.act('a:1,x:0', function(e, o) { Assert.equal(2, o.x) - c0.act('a:1,x:0', function (e, o) { + c0.act('a:1,x:0', function(e, o) { Assert.equal(3, o.x) - c1.act('a:1,x:0', function (e, o) { + c1.act('a:1,x:0', function(e, o) { Assert.equal(3, o.x) s1.close(setTimeout.bind(this, do_s1_down, 2555)) - }) }) }) - }) }) }) - }) }) }) - }) }) }) + }) + }) + }) + }) + }) + }) + }) + }) + }) + }) + }) + }) } - function do_s1_down () { - c0.act('a:1,x:0', function (e, o) { + function do_s1_down() { + c0.act('a:1,x:0', function(e, o) { Assert.equal(1, o.x) - c1.act('a:1,x:0', function (e, o) { + c1.act('a:1,x:0', function(e, o) { Assert.equal(1, o.x) - c0.act('a:1,x:0', function (e, o) { + c0.act('a:1,x:0', function(e, o) { Assert.equal(3, o.x) - c1.act('a:1,x:0', function (e, o) { + c1.act('a:1,x:0', function(e, o) { Assert.equal(3, o.x) - c0.act('a:1,x:0', function (e, o) { + c0.act('a:1,x:0', function(e, o) { Assert.equal(1, o.x) - c1.act('a:1,x:0', function (e, o) { + c1.act('a:1,x:0', function(e, o) { Assert.equal(1, o.x) - c0.act('a:1,x:0', function (e, o) { + c0.act('a:1,x:0', function(e, o) { Assert.equal(3, o.x) - c1.act('a:1,x:0', function (e, o) { + c1.act('a:1,x:0', function(e, o) { Assert.equal(3, o.x) - c0.act('a:1,x:0', function (e, o) { + c0.act('a:1,x:0', function(e, o) { Assert.equal(1, o.x) - c1.act('a:1,x:0', function (e, o) { + c1.act('a:1,x:0', function(e, o) { Assert.equal(1, o.x) - c0.act('a:1,x:0', function (e, o) { + c0.act('a:1,x:0', function(e, o) { Assert.equal(3, o.x) - c1.act('a:1,x:0', function (e, o) { + c1.act('a:1,x:0', function(e, o) { Assert.equal(3, o.x) close() - }) }) }) - }) }) }) - }) }) }) - }) }) }) + }) + }) + }) + }) + }) + }) + }) + }) + }) + }) + }) + }) } - - function close () { + function close() { c1.close() c0.close() s2.close() @@ -462,53 +573,73 @@ describe('#mesh', function () { } }) - - it('observe-consume-basic', {parallel: false, timeout: 9999}, function (done) { + it('observe-consume-basic', { parallel: false, timeout: 9999 }, function( + done + ) { var b0, s0, s1, c0 var s0x = 0 var s1z = 0 var s0y = [] var s1y = [] - b0 = Seneca({tag: 'b0', log: 'test'}) - .error(done) + b0 = Seneca({ tag: 'b0', log: 'test' }).error(done) - s0 = Seneca({tag: 's0', log: 'test'}) + s0 = Seneca({ tag: 's0', log: 'test' }) .error(done) - .add('a:1', function (m) { this.good({x: m.x + (++s0x)}) }) - .add('b:1', function (m) { s0y.push(m.y); this.good() }) + .add('a:1', function(m) { + this.good({ x: m.x + ++s0x }) + }) + .add('b:1', function(m) { + s0y.push(m.y) + this.good() + }) - s1 = Seneca({tag: 's1', log: 'test'}) + s1 = Seneca({ tag: 's1', log: 'test' }) .error(done) - .add('b:1', function (m) { s1y.push(m.y); this.good() }) - .add('c:1', function (m) { this.good({z: m.z + (++s1z)}) }) + .add('b:1', function(m) { + s1y.push(m.y) + this.good() + }) + .add('c:1', function(m) { + this.good({ z: m.z + ++s1z }) + }) - c0 = Seneca({tag: 'c0', log: 'test'}) - .error(done) + c0 = Seneca({ tag: 'c0', log: 'test' }).error(done) + b0 + .use('..', { + isbase: true, + discover: test_discover, + sneeze: { silent: true } + }) + .ready(function() { + s0 + .use('..', { + listen: [{ pin: 'a:1' }, { pin: 'b:1', model: 'observe' }], + discover: test_discover + }) + .ready(function() { + s1 + .use('..', { + listen: [{ pin: 'c:1' }, { pin: 'b:1', model: 'observe' }], + discover: test_discover + }) + .ready(function() { + c0 + .use('..', { + discover: test_discover, + sneeze: { silent: true } + }) + .ready(do_abc) + }) + }) + }) - b0.use('..', {isbase: true, discover: test_discover, sneeze: {silent: true}}).ready(function () { - s0.use('..', { - listen: [ - {pin: 'a:1'}, - {pin: 'b:1', model: 'observe'} - ], discover: test_discover - }).ready(function () { - s1.use('..', { - listen: [ - {pin: 'c:1'}, - {pin: 'b:1', model: 'observe'} - ], discover: test_discover - }).ready(function () { - c0.use('..', {discover: test_discover, sneeze: {silent: true}}).ready(do_abc) - }) }) }) - - - function do_abc () { - c0.act('a:1,x:0', function (e, o) { + function do_abc() { + c0.act('a:1,x:0', function(e, o) { Assert.equal(1, o.x) - c0.act('a:1,x:0', function (e, o) { + c0.act('a:1,x:0', function(e, o) { Assert.equal(2, o.x) c0.act('b:1,y:0') @@ -516,24 +647,25 @@ describe('#mesh', function () { c0.act('b:1,y:2') c0.act('b:1,y:3') - setTimeout(function () { + setTimeout(function() { Assert.deepEqual([0, 1, 2, 3], s0y) Assert.deepEqual([0, 1, 2, 3], s1y) - c0.act('c:1,z:0', function (e, o) { + c0.act('c:1,z:0', function(e, o) { Assert.equal(1, o.z) - c0.act('c:1,z:0', function (e, o) { + c0.act('c:1,z:0', function(e, o) { Assert.equal(2, o.z) close() - }) }) + }) + }) }, 111) - }) }) + }) + }) } - - function close () { + function close() { c0.close() s1.close() s0.close() @@ -542,16 +674,14 @@ describe('#mesh', function () { } }) - - it('single-custom', {parallel: false, timeout: 5555}, function (done) { + it('single-custom', { parallel: false, timeout: 5555 }, function(done) { var b0b, s0b - function custom_bases (seneca, options, bases, next) { + function custom_bases(seneca, options, bases, next) { next(['127.0.0.1:39901']) } - b0b = - Seneca({tag: 'b0b', log: 'silent', debug: {short_logs: true}}) + b0b = Seneca({ tag: 'b0b', log: 'silent', debug: { short_logs: true } }) .error(done) .use('..', { isbase: true, @@ -564,33 +694,43 @@ describe('#mesh', function () { active: true, find: custom_bases } - }}) + } + }) - s0b = - Seneca({tag: 's0b', log: 'silent', debug: {short_logs: true}}) + s0b = Seneca({ tag: 's0b', log: 'silent', debug: { short_logs: true } }) .error(done) - .add('a:1', function (msg) { this.good({x: msg.i}) }) + .add('a:1', function(msg) { + this.good({ x: msg.i }) + }) - b0b.ready(function () { - s0b.use('..', { - pin: 'a:1', - discover: { - custom: { - active: true, - find: custom_bases + b0b.ready(function() { + s0b + .use('..', { + pin: 'a:1', + discover: { + custom: { + active: true, + find: custom_bases + } } - }}) - .ready(function () { - s0b.act('role:mesh,get:members', function (err, out) { - if (err) { done(err) } + }) + .ready(function() { + s0b.act('role:mesh,get:members', function(err, out) { + if (err) { + done(err) + } Assert.equal(1, out.list.length) - b0b.act('a:1,i:0', function (err, out) { - if (err) { done(err) } + b0b.act('a:1,i:0', function(err, out) { + if (err) { + done(err) + } Assert.equal(0, out.x) - b0b.act('a:1,i:1', function (err, out) { - if (err) { done(err) } + b0b.act('a:1,i:1', function(err, out) { + if (err) { + done(err) + } Assert.equal(1, out.x) s0b.close() @@ -603,49 +743,61 @@ describe('#mesh', function () { }) }) - // Tests https://github.com/senecajs/seneca-mesh/issues/11 - it('canonical-pins', {parallel: false, timeout: 5555}, function (done) { - var b0 = Seneca({legacy:{transport:false}}).test(done).use('..', {base: true}) - var s0 = Seneca({legacy:{transport:false}}).test(done).use('..', {pin: 'a:1,b:2;c:3'}) - var s1 = Seneca({legacy:{transport:false}}).test(done).use('..', {pin: 'c:3;b:2,a:1'}) - var c0 = Seneca({legacy:{transport:false}}).test(done).use('..') - - s0.add('a:1,b:2', function (msg, reply) { reply({s: 0, x: msg.x}) }) - s1.add('a:1,b:2', function (msg, reply) { reply({s: 1, x: msg.x}) }) + it('canonical-pins', { parallel: false, timeout: 5555 }, function(done) { + var b0 = Seneca({ legacy: { transport: false } }) + .test(done) + .use('..', { base: true }) + var s0 = Seneca({ legacy: { transport: false } }) + .test(done) + .use('..', { pin: 'a:1,b:2;c:3' }) + var s1 = Seneca({ legacy: { transport: false } }) + .test(done) + .use('..', { pin: 'c:3;b:2,a:1' }) + var c0 = Seneca({ legacy: { transport: false } }).test(done).use('..') + + s0.add('a:1,b:2', function(msg, reply) { + reply({ s: 0, x: msg.x }) + }) + s1.add('a:1,b:2', function(msg, reply) { + reply({ s: 1, x: msg.x }) + }) - s0.add('c:3', function (msg, reply) { reply({s: 0, y: msg.y}) }) - s1.add('c:3', function (msg, reply) { reply({s: 1, y: msg.y}) }) + s0.add('c:3', function(msg, reply) { + reply({ s: 0, y: msg.y }) + }) + s1.add('c:3', function(msg, reply) { + reply({ s: 1, y: msg.y }) + }) - setTimeout(function () { + setTimeout(function() { c0 .gate() - .act('role:transport,type:balance,get:target-map', function (ignore, out) { + .act('role:transport,type:balance,get:target-map', function( + ignore, + out + ) { expect(out['a:1,b:2']['a:1,b:2'].targets.length).to.equal(2) expect(out['c:3']['c:3'].targets.length).to.equal(2) //console.dir(out,{depth:null}) }) - - .act('c:3,y:100', function (ignore, out) { - expect(out).to.equal({s: 0, y: 100}) + .act('c:3,y:100', function(ignore, out) { + expect(out).to.equal({ s: 0, y: 100 }) }) - - .act('c:3,y:200', function (ignore, out) { - expect(out).to.equal({s: 1, y: 200}) + .act('c:3,y:200', function(ignore, out) { + expect(out).to.equal({ s: 1, y: 200 }) }) - .act('c:3,y:300', function (ignore, out) { - expect(out).to.equal({s: 0, y: 300}) + .act('c:3,y:300', function(ignore, out) { + expect(out).to.equal({ s: 0, y: 300 }) }) - - .act('a:1,b:2,x:400', function (ignore, out) { - expect(out).to.equal({s: 0, x: 400}) + .act('a:1,b:2,x:400', function(ignore, out) { + expect(out).to.equal({ s: 0, x: 400 }) }) - .act('a:1,b:2,x:500', function (ignore, out) { - expect(out).to.equal({s: 1, x: 500}) + .act('a:1,b:2,x:500', function(ignore, out) { + expect(out).to.equal({ s: 1, x: 500 }) }) - - .act('a:1,b:2,x:600', function (ignore, out) { - expect(out).to.equal({s: 0, x: 600}) + .act('a:1,b:2,x:600', function(ignore, out) { + expect(out).to.equal({ s: 0, x: 600 }) c0.close() s0.close() @@ -658,33 +810,42 @@ describe('#mesh', function () { }) }) - -function make_rif () { +function make_rif() { var netif = { - lo: - [ { address: '127.0.0.1', + lo: [ + { + address: '127.0.0.1', netmask: '255.0.0.0', family: 'IPv4', mac: '00:00:00:00:00:00', - internal: true }, - { address: '::1', + internal: true + }, + { + address: '::1', netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff', family: 'IPv6', mac: '00:00:00:00:00:00', scopeid: 0, - internal: true } ], - eth0: - [ { address: '10.0.2.15', + internal: true + } + ], + eth0: [ + { + address: '10.0.2.15', netmask: '255.255.255.0', family: 'IPv4', mac: '08:00:27:1b:bc:e9', - internal: false }, - { address: 'fe80::a00:27ff:fe1b:bce9', + internal: false + }, + { + address: 'fe80::a00:27ff:fe1b:bce9', netmask: 'ffff:ffff:ffff:ffff::', family: 'IPv6', mac: '08:00:27:1b:bc:e9', scopeid: 2, - internal: false } ] + internal: false + } + ] } return Rif(netif)