From 3015798068e6e4e1666c82ff8545d6aeabf38ad5 Mon Sep 17 00:00:00 2001 From: David Kebler Date: Thu, 18 Jan 2018 21:32:07 -0800 Subject: [PATCH] Nearly functional uci base module supports one each unix tcp sockets and clients in any combination with default and custom packet processing --- .eslintrc.js | 5 +- examples/.gitignore | 3 + examples/dual-server.mjs | 64 ++ examples/package-lock.json | 190 ++++ index.js | 8 - log.log | 15 + logfile.log | 34 + package-lock.json | 1690 ++++++++++++++++++++++++++++++++++-- package.json | 24 +- readme.md | 4 +- socket.log | 248 ++++++ src/base.mjs | 56 ++ src/device.mjs | 41 - src/i2c-device.js | 76 -- src/mbroker.mjs | 29 - src/message-bus.mjs | 41 - test/.gitignore | 1 + test/base.socket.mjs | 19 + test/base.test.mjs | 91 ++ test/device.test.mjs | 35 - test/log.log | 3 + 21 files changed, 2375 insertions(+), 302 deletions(-) create mode 100644 examples/.gitignore create mode 100644 examples/dual-server.mjs create mode 100644 examples/package-lock.json delete mode 100644 index.js create mode 100644 log.log create mode 100644 logfile.log create mode 100644 socket.log create mode 100644 src/base.mjs delete mode 100644 src/device.mjs delete mode 100644 src/i2c-device.js delete mode 100644 src/mbroker.mjs delete mode 100644 src/message-bus.mjs create mode 100644 test/.gitignore create mode 100644 test/base.socket.mjs create mode 100644 test/base.test.mjs delete mode 100644 test/device.test.mjs create mode 100644 test/log.log diff --git a/.eslintrc.js b/.eslintrc.js index 2bed546..7a59647 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -9,9 +9,10 @@ module.exports = { "node": true, "mocha": true }, + "parser": "babel-eslint", "parserOptions": { - "ecmaVersion": 2017, - "sourceType": "module" + "ecmaVersion": 2017 + ,"sourceType": "module" }, "extends": "eslint:recommended", "rules": { diff --git a/examples/.gitignore b/examples/.gitignore new file mode 100644 index 0000000..9ff939f --- /dev/null +++ b/examples/.gitignore @@ -0,0 +1,3 @@ +*.log +*.sock +/node_modules/ diff --git a/examples/dual-server.mjs b/examples/dual-server.mjs new file mode 100644 index 0000000..77f4a83 --- /dev/null +++ b/examples/dual-server.mjs @@ -0,0 +1,64 @@ +import Base from '../src/base' + +const USOCKET = __dirname + '/sample.sock' + +const delay = time => new Promise(res=>setTimeout(()=>res(),time)) + +; +(async () => { + + let app = new Base({com:'us,uc,ts,tc', tspp:'tcpProcess', id:'example', path: USOCKET, log:false}) + + // use an alternative packet processor for tcp + app.tcpProcess = async function (packet) { + if (!packet.cmd) return {error: 'no command in packet', packet: packet } + if (!this[packet.cmd]) return {error: 'no processing function supplied for command', packet: packet } + return await this.tcp[packet.cmd](packet) + } + + app.echo = async packet => { + packet.processed = true + packet.cmd = 'res' + console.log('ECHO!') + return packet + } + + app.tcp = {} + + app.tcp.echo = async packet => { + packet.processed = true + packet.info = 'via tcp processor and echo' + packet.cmd = 'res' + console.log('TCP ECHO!') + return packet + } + + app.write = async packet => { + console.log('packet with write command data received by server') + packet.cmd = 'res' + packet.processed = 'true' + packet.data = 'response from write' + return packet + } + + app.res = async packet => { + console.log('==============Packet returned from server==========') + console.dir(packet) + console.log('===========================') + } + + await app.init(app) + console.log('=============sending============') + let packet = {cmd:'echo', data:'some data to echo'} + app.send(packet) + // await delay(1000) + // packet = {cmd:'echo', data:'some MORE data to echo'} + // app.send(packet) + // // await delay(1000) + // packet = {cmd:'echo', data:'YET some data to echo'} + // app.send(packet) + + +})().catch(err => { + console.error('FATAL: UNABLE TO START SYSTEM!\n',err) +}) diff --git a/examples/package-lock.json b/examples/package-lock.json new file mode 100644 index 0000000..f4addda --- /dev/null +++ b/examples/package-lock.json @@ -0,0 +1,190 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@uci/socket": { + "version": "0.1.0", + "resolved": "http://trantor:8082/@uci%2fsocket/-/socket-0.1.0.tgz", + "integrity": "sha512-2PoTfjLyYxIEd7zeoJyD0yUyQtICYPJBlmMrMP3U46FLtwWRntVu3fXKa0/gbbQYIwcWd24OK5CNvDeNdoa6cw==", + "requires": { + "better-try-catch": "0.6.2", + "bunyan": "1.8.12", + "death": "1.1.0", + "simple-node-logger": "0.93.33" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "http://trantor:8082/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "better-try-catch": { + "version": "0.6.2", + "resolved": "http://trantor:8082/better-try-catch/-/better-try-catch-0.6.2.tgz", + "integrity": "sha512-Ihghrm64n0sMiqZxA959Fism7/eDVgszfaLFpotZGGmDJc0EbpymhpkuA/OuTQ/BKMWZA6I68v3TVcnHBp7hXQ==", + "requires": { + "is-promise": "2.1.0" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "http://trantor:8082/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "bunyan": { + "version": "1.8.12", + "resolved": "http://trantor:8082/bunyan/-/bunyan-1.8.12.tgz", + "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", + "requires": { + "dtrace-provider": "0.8.6", + "moment": "2.20.1", + "mv": "2.1.1", + "safe-json-stringify": "1.0.4" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "http://trantor:8082/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "death": { + "version": "1.1.0", + "resolved": "http://trantor:8082/death/-/death-1.1.0.tgz", + "integrity": "sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg=" + }, + "dtrace-provider": { + "version": "0.8.6", + "resolved": "http://trantor:8082/dtrace-provider/-/dtrace-provider-0.8.6.tgz", + "integrity": "sha1-QooiOv4DQl0s1tY0f99AxmkDVj0=", + "requires": { + "nan": "2.8.0" + } + }, + "glob": { + "version": "6.0.4", + "resolved": "http://trantor:8082/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "http://trantor:8082/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "http://trantor:8082/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "is-promise": { + "version": "2.1.0", + "resolved": "http://trantor:8082/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "lodash": { + "version": "4.17.4", + "resolved": "http://trantor:8082/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "minimatch": { + "version": "3.0.4", + "resolved": "http://trantor:8082/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "http://trantor:8082/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "http://trantor:8082/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "requires": { + "minimist": "0.0.8" + } + }, + "moment": { + "version": "2.20.1", + "resolved": "http://trantor:8082/moment/-/moment-2.20.1.tgz", + "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==" + }, + "mv": { + "version": "2.1.1", + "resolved": "http://trantor:8082/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "requires": { + "mkdirp": "0.5.1", + "ncp": "2.0.0", + "rimraf": "2.4.5" + } + }, + "nan": { + "version": "2.8.0", + "resolved": "http://trantor:8082/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=" + }, + "ncp": { + "version": "2.0.0", + "resolved": "http://trantor:8082/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" + }, + "once": { + "version": "1.4.0", + "resolved": "http://trantor:8082/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "http://trantor:8082/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "rimraf": { + "version": "2.4.5", + "resolved": "http://trantor:8082/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "requires": { + "glob": "6.0.4" + } + }, + "safe-json-stringify": { + "version": "1.0.4", + "resolved": "http://trantor:8082/safe-json-stringify/-/safe-json-stringify-1.0.4.tgz", + "integrity": "sha1-gaCY9Efku8P/MxKiQ1IbwGDvWRE=" + }, + "simple-node-logger": { + "version": "0.93.33", + "resolved": "http://trantor:8082/simple-node-logger/-/simple-node-logger-0.93.33.tgz", + "integrity": "sha512-ppFuaDeacR1Vu+cP17kwOWQsx5C1vbIRa54qm5WgZBzQ5eBue/GWsDd4sr++ITnWZIoIOvjx5kEm5AhP7IqU+Q==", + "requires": { + "lodash": "4.17.4", + "moment": "2.20.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "http://trantor:8082/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } +} diff --git a/index.js b/index.js deleted file mode 100644 index f84fe28..0000000 --- a/index.js +++ /dev/null @@ -1,8 +0,0 @@ -let opts = { - dirname: __dirname + '/src', - // http://stackoverflow.com/questions/2078915/a-regular-expression-to-exclude-a-word-string - filter: /^(?!index)([^\.].*)\.js?$/, - recursive: false, - merge: true // remove or comment to have each file in /lib be a prop/key in library...see node-require-all -} -module.exports = require('@uci/require-all')(opts) diff --git a/log.log b/log.log new file mode 100644 index 0000000..1880eed --- /dev/null +++ b/log.log @@ -0,0 +1,15 @@ +{"name":"uci-base-app","hostname":"trantor","pid":9197,"level":30,"msg":"listening","time":"2018-01-16T03:04:08.127Z","v":0} +{"name":"uci-base-app","hostname":"trantor","pid":9497,"level":30,"msg":"listening","time":"2018-01-16T03:04:52.793Z","v":0} +{"name":"uci-base-app","hostname":"trantor","pid":9782,"level":30,"packet":{"sender":"test consumer","cmd":"test","data":"some data"},"msg":"attempting to send packet to socket","time":"2018-01-16T03:06:19.485Z","v":0} +{"name":"uci-base-app","hostname":"trantor","pid":11066,"level":30,"msg":"listening","time":"2018-01-16T03:19:19.403Z","v":0} +{"name":"uci-base-app","hostname":"trantor","pid":11392,"level":30,"msg":"listening","time":"2018-01-16T03:20:21.646Z","v":0} +{"name":"uci-base-server","hostname":"trantor","pid":12527,"level":30,"socket":"/opt/sockets/samplecs.sock","msg":"socket created","time":"2018-01-16T03:29:27.556Z","v":0} +{"name":"uci-base-app","hostname":"trantor","pid":12517,"level":30,"msg":"listening","time":"2018-01-16T03:29:27.938Z","v":0} +{"name":"uci-base-server","hostname":"trantor","pid":12527,"level":30,"msg":"\nhe's dead jim","time":"2018-01-16T03:29:39.682Z","v":0} +{"name":"uci-base-server","hostname":"trantor","pid":12698,"level":30,"socket":"/opt/sockets/samplecs.sock","msg":"socket created","time":"2018-01-16T03:30:39.131Z","v":0} +{"name":"uci-base-server","hostname":"trantor","pid":12698,"level":30,"msg":"\nhe's dead jim","time":"2018-01-16T03:33:07.420Z","v":0} +{"name":"uci-base-server","hostname":"trantor","pid":13006,"level":30,"socket":"/opt/sockets/samplecs.sock","msg":"socket created","time":"2018-01-16T03:33:10.467Z","v":0} +{"name":"uci-base-app","hostname":"trantor","pid":12996,"level":30,"msg":"listening","time":"2018-01-16T03:33:10.839Z","v":0} +{"name":"uci-base-server","hostname":"trantor","pid":13006,"level":30,"msg":"\nhe's dead jim","time":"2018-01-16T03:36:53.278Z","v":0} +{"name":"uci-base-server","hostname":"trantor","pid":13393,"level":30,"socket":"/opt/sockets/samplecs.sock","msg":"socket created","time":"2018-01-16T03:36:55.038Z","v":0} +{"name":"uci-base-server","hostname":"trantor","pid":13393,"level":30,"msg":"\nhe's dead jim","time":"2018-01-16T03:36:55.410Z","v":0} diff --git a/logfile.log b/logfile.log new file mode 100644 index 0000000..4d87817 --- /dev/null +++ b/logfile.log @@ -0,0 +1,34 @@ +2018-01-09 17:54:43.869 INFO data packet received to socket + [object Object] +2018-01-09 17:55:22.848 INFO data packet received to socket + [object Object] +2018-01-09 18:41:52.123 INFO data packet received to socket + [object Object] +2018-01-09 18:42:38.934 INFO data packet received to socket + [object Object] +2018-01-09 18:42:57.304 INFO data packet received to socket + [object Object] +2018-01-09 18:44:28.169 INFO data packet received to socket + [object Object] +2018-01-09 19:07:47.858 INFO data packet received to socket + [object Object] +2018-01-10 07:59:53.339 INFO data packet received to socket + [object Object] +2018-01-10 08:02:14.987 INFO data packet received to socket + [object Object] +2018-01-10 08:08:42.623 INFO data packet received to socket + [object Object] +2018-01-10 08:09:11.630 INFO data packet received to socket + [object Object] +2018-01-10 08:46:34.958 INFO data packet received to socket + [object Object] +2018-01-10 08:47:00.072 INFO data packet received to socket + [object Object] +2018-01-10 08:47:19.323 INFO data packet received to socket + [object Object] +2018-01-10 08:50:28.428 INFO data packet received to socket + [object Object] +2018-01-10 08:54:18.476 INFO data packet received to socket + [object Object] +2018-01-10 08:56:12.612 INFO data packet received to socket + [object Object] diff --git a/package-lock.json b/package-lock.json index fa24af0..c043565 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,9 +1,79 @@ { - "name": "@uci/device", + "name": "@uci/base", "version": "0.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.36", + "resolved": "http://trantor:8082/@babel%2fcode-frame/-/code-frame-7.0.0-beta.36.tgz", + "integrity": "sha512-sW77BFwJ48YvQp3Gzz5xtAUiXuYOL2aMJKDwiaY3OcvdqBFurtYfOpSa4QrNyDxmOGRFSYzUpabU2m9QrlWE7w==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.36", + "resolved": "http://trantor:8082/@babel%2fhelper-function-name/-/helper-function-name-7.0.0-beta.36.tgz", + "integrity": "sha512-/SGPOyifPf20iTrMN+WdlY2MbKa7/o4j7B/4IAsdOusASp2icT+Wcdjf4tjJHaXNX8Pe9bpgVxLNxhRvcf8E5w==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.36", + "@babel/template": "7.0.0-beta.36", + "@babel/types": "7.0.0-beta.36" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.36", + "resolved": "http://trantor:8082/@babel%2fhelper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.36.tgz", + "integrity": "sha512-vPPcx2vsSoDbcyWr9S3nd0FM3B4hEXnt0p1oKpwa08GwK0fSRxa98MyaRGf8suk8frdQlG1P3mDrz5p/Rr3pbA==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.36" + } + }, + "@babel/template": { + "version": "7.0.0-beta.36", + "resolved": "http://trantor:8082/@babel%2ftemplate/-/template-7.0.0-beta.36.tgz", + "integrity": "sha512-mUBi90WRyZ9iVvlWLEdeo8gn/tROyJdjKNC4W5xJTSZL+9MS89rTJSqiaJKXIkxk/YRDL/g/8snrG/O0xl33uA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.36", + "@babel/types": "7.0.0-beta.36", + "babylon": "7.0.0-beta.36", + "lodash": "4.17.4" + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.36", + "resolved": "http://trantor:8082/@babel%2ftraverse/-/traverse-7.0.0-beta.36.tgz", + "integrity": "sha512-OTUb6iSKVR/98dGThRJ1BiyfwbuX10BVnkz89IpaerjTPRhDfMBfLsqmzxz5MiywUOW4M0Clta0o7rSxkfcuzw==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.36", + "@babel/helper-function-name": "7.0.0-beta.36", + "@babel/types": "7.0.0-beta.36", + "babylon": "7.0.0-beta.36", + "debug": "3.1.0", + "globals": "11.1.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "@babel/types": { + "version": "7.0.0-beta.36", + "resolved": "http://trantor:8082/@babel%2ftypes/-/types-7.0.0-beta.36.tgz", + "integrity": "sha512-PyAORDO9um9tfnrddXgmWN9e6Sq9qxraQIt5ynqBOSXKA5qvK1kUr+Q3nSzKFdzorsiK+oqcUnAFvEoKxv9D+Q==", + "dev": true, + "requires": { + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "2.0.0" + } + }, "@std/esm": { "version": "0.18.0", "resolved": "http://trantor:8082/@std%2fesm/-/esm-0.18.0.tgz", @@ -15,16 +85,97 @@ "resolved": "http://trantor:8082/@uci%2frequire-all/-/require-all-2.3.0.tgz", "integrity": "sha1-+ZdFba/qwxOxhIjGDvtKK8rEF7E=" }, + "@uci/socket": { + "version": "0.1.0", + "resolved": "http://trantor:8082/@uci%2fsocket/-/socket-0.1.0.tgz", + "integrity": "sha512-1edh4RPIs4EKE0n9yG6UkpIfTKl8KaJoRG1Uvx6TrpNXWruiCIrS8v8qgA1aclQeWY+kYpCYjEAE3qwgFkRoTg==", + "requires": { + "better-try-catch": "0.6.2", + "bunyan": "1.8.12", + "death": "1.1.0", + "simple-node-logger": "0.93.33" + } + }, + "@uci/utils": { + "version": "0.1.0", + "resolved": "http://trantor:8082/@uci%2futils/-/utils-0.1.0.tgz", + "integrity": "sha512-f6ogtWBQ+/CEchFMlZ08cBpTQj3rp/E1OF8kdmXAu+HBvgORKGPv0xm8VBEuGaNvTIgpF0FRJlt9m4AFBjaeZQ==", + "requires": { + "@uci/require-all": "2.3.0", + "bit-twiddle": "1.0.2", + "bitwise": "0.2.0", + "clone": "2.1.1", + "cson-parser": "1.3.5", + "debug": "2.6.9", + "deep-equal": "1.0.1", + "deep-extend": "0.4.2", + "del": "2.2.2", + "delay": "1.3.1", + "get-object": "0.2.0", + "glob": "7.1.2", + "p-debounce": "1.0.0", + "p-log": "1.0.0", + "p-reduce": "1.0.0", + "p-series": "1.0.0", + "p-waterfall": "1.0.0", + "parse-json": "2.2.0", + "precise-typeof": "1.0.2", + "purdy": "2.2.1", + "typechecker": "4.4.1", + "when": "3.7.8" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "http://trantor:8082/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "glob": { + "version": "7.1.2", + "resolved": "http://trantor:8082/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "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" + } + } + } + }, "abbrev": { "version": "1.0.9", "resolved": "http://trantor:8082/abbrev/-/abbrev-1.0.9.tgz", "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", "dev": true }, - "aggregation": { - "version": "1.2.1", - "resolved": "http://trantor:8082/aggregation/-/aggregation-1.2.1.tgz", - "integrity": "sha512-ircGD3HHEVFH44qVu2E+7W+Lm89UAtQdDX90C2G116MOa1cwMpS32E2jeNx2rCi4YzsYZcjamXcDzAkpdooizw==" + "acorn": { + "version": "5.3.0", + "resolved": "http://trantor:8082/acorn/-/acorn-5.3.0.tgz", + "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "http://trantor:8082/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": "http://trantor:8082/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } }, "ajv": { "version": "4.11.8", @@ -36,6 +187,12 @@ "json-stable-stringify": "1.0.1" } }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "http://trantor:8082/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, "align-text": { "version": "0.1.4", "resolved": "http://trantor:8082/align-text/-/align-text-0.1.4.tgz", @@ -53,6 +210,27 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "http://trantor:8082/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "http://trantor:8082/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "http://trantor:8082/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, "argparse": { "version": "1.0.9", "resolved": "http://trantor:8082/argparse/-/argparse-1.0.9.tgz", @@ -68,6 +246,24 @@ "integrity": "sha1-7L0W+JSbFXGDcRsb2jNPN4QBhas=", "dev": true }, + "array-union": { + "version": "1.0.2", + "resolved": "http://trantor:8082/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "http://trantor:8082/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, + "arrify": { + "version": "1.0.1", + "resolved": "http://trantor:8082/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + }, "asn1": { "version": "0.2.3", "resolved": "http://trantor:8082/asn1/-/asn1-0.2.3.tgz", @@ -81,9 +277,9 @@ "dev": true }, "assertion-error": { - "version": "1.0.2", - "resolved": "http://trantor:8082/assertion-error/-/assertion-error-1.0.2.tgz", - "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "version": "1.1.0", + "resolved": "http://trantor:8082/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, "async": { @@ -98,6 +294,11 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "auto-bind": { + "version": "1.1.0", + "resolved": "http://trantor:8082/auto-bind/-/auto-bind-1.1.0.tgz", + "integrity": "sha1-k7hk3H7gGjJigXddXHXKCnUeWWE=" + }, "aws-sign2": { "version": "0.6.0", "resolved": "http://trantor:8082/aws-sign2/-/aws-sign2-0.6.0.tgz", @@ -110,11 +311,68 @@ "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "dev": true }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "http://trantor:8082/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" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "http://trantor:8082/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://trantor:8082/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://trantor:8082/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-eslint": { + "version": "8.2.1", + "resolved": "http://trantor:8082/babel-eslint/-/babel-eslint-8.2.1.tgz", + "integrity": "sha512-RzdVOyWKQRUnLXhwLk+eKb4oyW+BykZSkpYwFhM4tnfzAG5OWfvG0w/uyzMp5XKEU0jN82+JefHr39bG2+KhRQ==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.36", + "@babel/traverse": "7.0.0-beta.36", + "@babel/types": "7.0.0-beta.36", + "babylon": "7.0.0-beta.36", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "1.0.0" + } + }, + "babylon": { + "version": "7.0.0-beta.36", + "resolved": "http://trantor:8082/babylon/-/babylon-7.0.0-beta.36.tgz", + "integrity": "sha512-rw4YdadGwajAMMRl6a5swhQ0JCOOFyaYCfJ0AsmNBD8uBD/r4J8mux7wBaqavvFKqUKQYWOzA1Speams4YDzsQ==", + "dev": true + }, "balanced-match": { "version": "1.0.0", "resolved": "http://trantor:8082/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "bcrypt-pbkdf": { "version": "1.0.1", @@ -126,6 +384,24 @@ "tweetnacl": "0.14.5" } }, + "better-try-catch": { + "version": "0.6.2", + "resolved": "http://trantor:8082/better-try-catch/-/better-try-catch-0.6.2.tgz", + "integrity": "sha512-Ihghrm64n0sMiqZxA959Fism7/eDVgszfaLFpotZGGmDJc0EbpymhpkuA/OuTQ/BKMWZA6I68v3TVcnHBp7hXQ==", + "requires": { + "is-promise": "2.1.0" + } + }, + "bit-twiddle": { + "version": "1.0.2", + "resolved": "http://trantor:8082/bit-twiddle/-/bit-twiddle-1.0.2.tgz", + "integrity": "sha1-DGwfq+KyPRcXPZpht7cJPrnhdp4=" + }, + "bitwise": { + "version": "0.2.0", + "resolved": "http://trantor:8082/bitwise/-/bitwise-0.2.0.tgz", + "integrity": "sha1-meXfv6TuHDIHPcJCJmdTwCXx4nY=" + }, "boom": { "version": "2.10.1", "resolved": "http://trantor:8082/boom/-/boom-2.10.1.tgz", @@ -139,7 +415,6 @@ "version": "1.1.8", "resolved": "http://trantor:8082/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" @@ -151,6 +426,32 @@ "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", "dev": true }, + "bunyan": { + "version": "1.8.12", + "resolved": "http://trantor:8082/bunyan/-/bunyan-1.8.12.tgz", + "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", + "requires": { + "dtrace-provider": "0.8.6", + "moment": "2.20.1", + "mv": "2.1.1", + "safe-json-stringify": "1.0.4" + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "http://trantor:8082/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "http://trantor:8082/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, "camelcase": { "version": "1.2.1", "resolved": "http://trantor:8082/camelcase/-/camelcase-1.2.1.tgz", @@ -181,7 +482,7 @@ "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", "dev": true, "requires": { - "assertion-error": "1.0.2", + "assertion-error": "1.1.0", "check-error": "1.0.2", "deep-eql": "3.0.1", "get-func-name": "2.0.0", @@ -198,12 +499,61 @@ "check-error": "1.0.2" } }, + "chalk": { + "version": "2.3.0", + "resolved": "http://trantor:8082/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" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "http://trantor:8082/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "http://trantor:8082/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, "check-error": { "version": "1.0.2", "resolved": "http://trantor:8082/check-error/-/check-error-1.0.2.tgz", "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", "dev": true }, + "circular-json": { + "version": "0.3.3", + "resolved": "http://trantor:8082/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "http://trantor:8082/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "1.0.1" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "http://trantor:8082/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, "cliui": { "version": "2.1.0", "resolved": "http://trantor:8082/cliui/-/cliui-2.1.0.tgz", @@ -225,12 +575,23 @@ } } }, + "clone": { + "version": "2.1.1", + "resolved": "http://trantor:8082/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=" + }, "co": { "version": "4.6.0", "resolved": "http://trantor:8082/co/-/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, + "code-point-at": { + "version": "1.1.0", + "resolved": "http://trantor:8082/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, "codecov": { "version": "3.0.0", "resolved": "http://trantor:8082/codecov/-/codecov-3.0.0.tgz", @@ -242,6 +603,26 @@ "urlgrey": "0.4.4" } }, + "coffee-script": { + "version": "1.12.7", + "resolved": "http://trantor:8082/coffee-script/-/coffee-script-1.12.7.tgz", + "integrity": "sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw==" + }, + "color-convert": { + "version": "1.9.1", + "resolved": "http://trantor:8082/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": "http://trantor:8082/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, "combined-stream": { "version": "1.0.5", "resolved": "http://trantor:8082/combined-stream/-/combined-stream-1.0.5.tgz", @@ -260,8 +641,18 @@ "concat-map": { "version": "0.0.1", "resolved": "http://trantor:8082/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "http://trantor:8082/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" + } }, "core-util-is": { "version": "1.0.2", @@ -278,6 +669,23 @@ "boom": "2.10.1" } }, + "cson-parser": { + "version": "1.3.5", + "resolved": "http://trantor:8082/cson-parser/-/cson-parser-1.3.5.tgz", + "integrity": "sha1-fsZ14DkUVTO/KmqFYHPxWZ2cLSQ=", + "requires": { + "coffee-script": "1.12.7" + } + }, + "d": { + "version": "1.0.0", + "resolved": "http://trantor:8082/d/-/d-1.0.0.tgz", + "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", + "dev": true, + "requires": { + "es5-ext": "0.10.37" + } + }, "dashdash": { "version": "1.14.1", "resolved": "http://trantor:8082/dashdash/-/dashdash-1.14.1.tgz", @@ -295,6 +703,11 @@ } } }, + "death": { + "version": "1.1.0", + "resolved": "http://trantor:8082/death/-/death-1.1.0.tgz", + "integrity": "sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg=" + }, "debug": { "version": "3.1.0", "resolved": "http://trantor:8082/debug/-/debug-3.1.0.tgz", @@ -320,28 +733,75 @@ "type-detect": "4.0.5" } }, + "deep-equal": { + "version": "1.0.1", + "resolved": "http://trantor:8082/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + }, + "deep-extend": { + "version": "0.4.2", + "resolved": "http://trantor:8082/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" + }, "deep-is": { "version": "0.1.3", "resolved": "http://trantor:8082/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "del": { + "version": "2.2.2", + "resolved": "http://trantor:8082/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "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" + } + }, + "delay": { + "version": "1.3.1", + "resolved": "http://trantor:8082/delay/-/delay-1.3.1.tgz", + "integrity": "sha1-oqimHHak1QtnD+KrLVHLA4Arupg=" + }, "delayed-stream": { "version": "1.0.0", "resolved": "http://trantor:8082/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "delimiter-stream": { + "version": "1.0.1", + "resolved": "http://trantor:8082/delimiter-stream/-/delimiter-stream-1.0.1.tgz", + "integrity": "sha1-XyUUUJNQcjq5lE2shvzYJ39TFBg=" + }, "diff": { "version": "3.3.1", "resolved": "http://trantor:8082/diff/-/diff-3.3.1.tgz", "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", "dev": true }, - "easy-stack": { - "version": "1.0.0", - "resolved": "http://trantor:8082/easy-stack/-/easy-stack-1.0.0.tgz", - "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=" + "doctrine": { + "version": "2.1.0", + "resolved": "http://trantor:8082/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "dtrace-provider": { + "version": "0.8.6", + "resolved": "http://trantor:8082/dtrace-provider/-/dtrace-provider-0.8.6.tgz", + "integrity": "sha1-QooiOv4DQl0s1tY0f99AxmkDVj0=", + "optional": true, + "requires": { + "nan": "2.8.0" + } }, "ecc-jsbn": { "version": "0.1.1", @@ -353,6 +813,89 @@ "jsbn": "0.1.1" } }, + "editions": { + "version": "1.3.3", + "resolved": "http://trantor:8082/editions/-/editions-1.3.3.tgz", + "integrity": "sha1-CQcQG92iD6w8vjNMJ8vQaI3Jmls=" + }, + "error-ex": { + "version": "1.3.1", + "resolved": "http://trantor:8082/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "requires": { + "is-arrayish": "0.2.1" + } + }, + "es5-ext": { + "version": "0.10.37", + "resolved": "http://trantor:8082/es5-ext/-/es5-ext-0.10.37.tgz", + "integrity": "sha1-DudB0Ui4AGm6J9AgOTdWryV978M=", + "dev": true, + "requires": { + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "http://trantor:8082/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-symbol": "3.1.1" + } + }, + "es6-map": { + "version": "0.1.5", + "resolved": "http://trantor:8082/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", + "es6-set": "0.1.5", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-set": { + "version": "0.1.5", + "resolved": "http://trantor:8082/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1", + "event-emitter": "0.3.5" + } + }, + "es6-symbol": { + "version": "3.1.1", + "resolved": "http://trantor:8082/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37" + } + }, + "es6-weak-map": { + "version": "2.0.2", + "resolved": "http://trantor:8082/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37", + "es6-iterator": "2.0.3", + "es6-symbol": "3.1.1" + } + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "http://trantor:8082/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -372,12 +915,206 @@ "source-map": "0.2.0" } }, + "escope": { + "version": "3.6.0", + "resolved": "http://trantor:8082/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "0.1.5", + "es6-weak-map": "2.0.2", + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "http://trantor:8082/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "eslint": { + "version": "3.19.0", + "resolved": "http://trantor:8082/eslint/-/eslint-3.19.0.tgz", + "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "chalk": "1.1.3", + "concat-stream": "1.6.0", + "debug": "2.6.9", + "doctrine": "2.1.0", + "escope": "3.6.0", + "espree": "3.5.2", + "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": "0.12.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": "1.2.1", + "progress": "1.1.8", + "require-uncached": "1.0.3", + "shelljs": "0.7.8", + "strip-bom": "3.0.0", + "strip-json-comments": "2.0.1", + "table": "3.8.3", + "text-table": "0.2.0", + "user-home": "2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "http://trantor:8082/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://trantor:8082/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "http://trantor:8082/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "http://trantor:8082/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "glob": { + "version": "7.1.2", + "resolved": "http://trantor:8082/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": "http://trantor:8082/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://trantor:8082/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "http://trantor:8082/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": "http://trantor:8082/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "http://trantor:8082/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "dev": true + }, + "espree": { + "version": "3.5.2", + "resolved": "http://trantor:8082/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "dev": true, + "requires": { + "acorn": "5.3.0", + "acorn-jsx": "3.0.1" + } + }, "esprima": { "version": "2.7.3", "resolved": "http://trantor:8082/esprima/-/esprima-2.7.3.tgz", "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", "dev": true }, + "esquery": { + "version": "1.0.0", + "resolved": "http://trantor:8082/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "http://trantor:8082/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "http://trantor:8082/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": "http://trantor:8082/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, "estraverse": { "version": "1.9.3", "resolved": "http://trantor:8082/estraverse/-/estraverse-1.9.3.tgz", @@ -390,10 +1127,21 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, - "event-pubsub": { - "version": "4.3.0", - "resolved": "http://trantor:8082/event-pubsub/-/event-pubsub-4.3.0.tgz", - "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==" + "event-emitter": { + "version": "0.3.5", + "resolved": "http://trantor:8082/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1.0.0", + "es5-ext": "0.10.37" + } + }, + "exit-hook": { + "version": "1.1.1", + "resolved": "http://trantor:8082/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true }, "extend": { "version": "3.0.1", @@ -413,6 +1161,38 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "figures": { + "version": "1.7.0", + "resolved": "http://trantor:8082/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5", + "object-assign": "4.1.1" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "http://trantor:8082/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" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "http://trantor:8082/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": "http://trantor:8082/forever-agent/-/forever-agent-0.6.1.tgz", @@ -433,15 +1213,38 @@ "fs.realpath": { "version": "1.0.0", "resolved": "http://trantor:8082/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "generate-function": { + "version": "2.0.0", + "resolved": "http://trantor:8082/generate-function/-/generate-function-2.0.0.tgz", + "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", "dev": true }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "http://trantor:8082/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "1.0.2" + } + }, "get-func-name": { "version": "2.0.0", "resolved": "http://trantor:8082/get-func-name/-/get-func-name-2.0.0.tgz", "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, + "get-object": { + "version": "0.2.0", + "resolved": "http://trantor:8082/get-object/-/get-object-0.2.0.tgz", + "integrity": "sha1-2S/31RkMZFMM2gVD2sY6PUf+jAw=", + "requires": { + "is-number": "2.1.0", + "isobject": "0.2.0" + } + }, "getpass": { "version": "0.1.7", "resolved": "http://trantor:8082/getpass/-/getpass-0.1.7.tgz", @@ -472,6 +1275,46 @@ "path-is-absolute": "1.0.1" } }, + "globals": { + "version": "11.1.0", + "resolved": "http://trantor:8082/globals/-/globals-11.1.0.tgz", + "integrity": "sha512-uEuWt9mqTlPDwSqi+sHjD4nWU/1N+q0fiWI9T1mZpD2UENqX20CFD5T/ziLZvztPaBKl7ZylUi1q6Qfm7E2CiQ==", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "http://trantor:8082/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "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" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "http://trantor:8082/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "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" + } + } + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "http://trantor:8082/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, "growl": { "version": "1.10.3", "resolved": "http://trantor:8082/growl/-/growl-1.10.3.tgz", @@ -517,6 +1360,20 @@ "har-schema": "1.0.5" } }, + "has-ansi": { + "version": "2.0.0", + "resolved": "http://trantor:8082/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-color": { + "version": "0.1.7", + "resolved": "http://trantor:8082/has-color/-/has-color-0.1.7.tgz", + "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=" + }, "has-flag": { "version": "1.0.0", "resolved": "http://trantor:8082/has-flag/-/has-flag-1.0.0.tgz", @@ -544,8 +1401,7 @@ "hoek": { "version": "2.16.3", "resolved": "http://trantor:8082/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", - "dev": true + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" }, "http-signature": { "version": "1.1.1", @@ -558,11 +1414,22 @@ "sshpk": "1.13.1" } }, + "ignore": { + "version": "3.3.7", + "resolved": "http://trantor:8082/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "http://trantor:8082/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "http://trantor:8082/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -571,13 +1438,146 @@ "inherits": { "version": "2.0.3", "resolved": "http://trantor:8082/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inquirer": { + "version": "0.12.0", + "resolved": "http://trantor:8082/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "ansi-regex": "2.1.1", + "chalk": "1.1.3", + "cli-cursor": "1.0.2", + "cli-width": "2.2.0", + "figures": "1.7.0", + "lodash": "4.17.4", + "readline2": "1.0.1", + "run-async": "0.1.0", + "rx-lite": "3.1.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "through": "2.3.8" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "http://trantor:8082/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://trantor:8082/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://trantor:8082/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "interpret": { + "version": "1.1.0", + "resolved": "http://trantor:8082/interpret/-/interpret-1.1.0.tgz", + "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", "dev": true }, + "invariant": { + "version": "2.2.2", + "resolved": "http://trantor:8082/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "http://trantor:8082/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + }, "is-buffer": { "version": "1.1.6", "resolved": "http://trantor:8082/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "http://trantor:8082/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-my-json-valid": { + "version": "2.17.1", + "resolved": "http://trantor:8082/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-number": { + "version": "2.1.0", + "resolved": "http://trantor:8082/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "requires": { + "kind-of": "3.2.2" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "http://trantor:8082/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "http://trantor:8082/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "http://trantor:8082/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "http://trantor:8082/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "is-property": { + "version": "1.0.2", + "resolved": "http://trantor:8082/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, + "is-resolvable": { + "version": "1.0.1", + "resolved": "http://trantor:8082/is-resolvable/-/is-resolvable-1.0.1.tgz", + "integrity": "sha512-y5CXYbzvB3jTnWAZH1Nl7ykUWb6T3BcTs56HUruwBf8MhF56n1HWqhDWnVFo8GHrUPDgvUUNVhrc2U8W7iqz5g==", "dev": true }, "is-typedarray": { @@ -586,12 +1586,28 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "isarray": { + "version": "1.0.0", + "resolved": "http://trantor:8082/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isemail": { + "version": "1.2.0", + "resolved": "http://trantor:8082/isemail/-/isemail-1.2.0.tgz", + "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo=" + }, "isexe": { "version": "2.0.0", "resolved": "http://trantor:8082/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "isobject": { + "version": "0.2.0", + "resolved": "http://trantor:8082/isobject/-/isobject-0.2.0.tgz", + "integrity": "sha1-o0MhkvObkQtfAsyYlIeDbscKqF4=" + }, "isstream": { "version": "0.1.2", "resolved": "http://trantor:8082/isstream/-/isstream-0.1.2.tgz", @@ -620,19 +1636,23 @@ "wordwrap": "1.0.0" } }, - "js-message": { - "version": "1.0.5", - "resolved": "http://trantor:8082/js-message/-/js-message-1.0.5.tgz", - "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=" - }, - "js-queue": { - "version": "2.0.0", - "resolved": "http://trantor:8082/js-queue/-/js-queue-2.0.0.tgz", - "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", + "joi": { + "version": "6.10.1", + "resolved": "http://trantor:8082/joi/-/joi-6.10.1.tgz", + "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", "requires": { - "easy-stack": "1.0.0" + "hoek": "2.16.3", + "isemail": "1.2.0", + "moment": "2.20.1", + "topo": "1.1.0" } }, + "js-tokens": { + "version": "3.0.2", + "resolved": "http://trantor:8082/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, "js-yaml": { "version": "3.10.0", "resolved": "http://trantor:8082/js-yaml/-/js-yaml-3.10.0.tgz", @@ -685,6 +1705,12 @@ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "http://trantor:8082/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, "jsprim": { "version": "1.4.1", "resolved": "http://trantor:8082/jsprim/-/jsprim-1.4.1.tgz", @@ -709,7 +1735,6 @@ "version": "3.2.2", "resolved": "http://trantor:8082/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, "requires": { "is-buffer": "1.1.6" } @@ -731,12 +1756,26 @@ "type-check": "0.3.2" } }, + "lodash": { + "version": "4.17.4", + "resolved": "http://trantor:8082/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, "longest": { "version": "1.0.1", "resolved": "http://trantor:8082/longest/-/longest-1.0.1.tgz", "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", "dev": true }, + "loose-envify": { + "version": "1.3.1", + "resolved": "http://trantor:8082/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, "mime-db": { "version": "1.30.0", "resolved": "http://trantor:8082/mime-db/-/mime-db-1.30.0.tgz", @@ -756,7 +1795,6 @@ "version": "3.0.4", "resolved": "http://trantor:8082/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "1.1.8" } @@ -771,7 +1809,6 @@ "version": "0.5.1", "resolved": "http://trantor:8082/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, "requires": { "minimist": "0.0.8" }, @@ -779,15 +1816,14 @@ "minimist": { "version": "0.0.8", "resolved": "http://trantor:8082/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } }, "mocha": { - "version": "4.0.1", - "resolved": "http://trantor:8082/mocha/-/mocha-4.0.1.tgz", - "integrity": "sha512-evDmhkoA+cBNiQQQdSKZa2b9+W2mpLoj50367lhy+Klnx9OV8XlCIhigUnn1gaTFLQCa0kdNhEGDr0hCXOQFDw==", + "version": "4.1.0", + "resolved": "http://trantor:8082/mocha/-/mocha-4.1.0.tgz", + "integrity": "sha512-0RVnjg1HJsXY2YFDoTNzcc1NKhYuXKRrBAG2gDygmJJA136Cs2QlRliZG1mA0ap7cuaT30mw16luAeln+4RiNA==", "dev": true, "requires": { "browser-stdout": "1.3.0", @@ -833,22 +1869,75 @@ } } }, + "moment": { + "version": "2.20.1", + "resolved": "http://trantor:8082/moment/-/moment-2.20.1.tgz", + "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==" + }, "ms": { "version": "2.0.0", "resolved": "http://trantor:8082/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "mute-stream": { + "version": "0.0.5", + "resolved": "http://trantor:8082/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", "dev": true }, - "node-ipc": { - "version": "9.1.1", - "resolved": "http://trantor:8082/node-ipc/-/node-ipc-9.1.1.tgz", - "integrity": "sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w==", + "mv": { + "version": "2.1.1", + "resolved": "http://trantor:8082/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "optional": true, "requires": { - "event-pubsub": "4.3.0", - "js-message": "1.0.5", - "js-queue": "2.0.0" + "mkdirp": "0.5.1", + "ncp": "2.0.0", + "rimraf": "2.4.5" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "http://trantor:8082/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "optional": true, + "requires": { + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "rimraf": { + "version": "2.4.5", + "resolved": "http://trantor:8082/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "optional": true, + "requires": { + "glob": "6.0.4" + } + } } }, + "nan": { + "version": "2.8.0", + "resolved": "http://trantor:8082/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "optional": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "http://trantor:8082/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "ncp": { + "version": "2.0.0", + "resolved": "http://trantor:8082/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "optional": true + }, "nopt": { "version": "3.0.6", "resolved": "http://trantor:8082/nopt/-/nopt-3.0.6.tgz", @@ -858,21 +1947,37 @@ "abbrev": "1.0.9" } }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "http://trantor:8082/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, "oauth-sign": { "version": "0.8.2", "resolved": "http://trantor:8082/oauth-sign/-/oauth-sign-0.8.2.tgz", "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", "dev": true }, + "object-assign": { + "version": "4.1.1", + "resolved": "http://trantor:8082/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, "once": { "version": "1.4.0", "resolved": "http://trantor:8082/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1.0.2" } }, + "onetime": { + "version": "1.1.0", + "resolved": "http://trantor:8082/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, "optimist": { "version": "0.6.1", "resolved": "http://trantor:8082/optimist/-/optimist-0.6.1.tgz", @@ -905,11 +2010,68 @@ "wordwrap": "1.0.0" } }, + "os-homedir": { + "version": "1.0.2", + "resolved": "http://trantor:8082/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "p-debounce": { + "version": "1.0.0", + "resolved": "http://trantor:8082/p-debounce/-/p-debounce-1.0.0.tgz", + "integrity": "sha1-y38svu/YegnrqGHhErZ1J+Yh4v0=" + }, + "p-log": { + "version": "1.0.0", + "resolved": "http://trantor:8082/p-log/-/p-log-1.0.0.tgz", + "integrity": "sha1-YoruvyDDzLvn1Cca3v1uTLucubI=", + "requires": { + "p-tap": "1.0.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "http://trantor:8082/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" + }, + "p-series": { + "version": "1.0.0", + "resolved": "http://trantor:8082/p-series/-/p-series-1.0.0.tgz", + "integrity": "sha1-fsnntEBswyBmKYpvmGDlXpGzbgc=", + "requires": { + "p-reduce": "1.0.0" + } + }, + "p-tap": { + "version": "1.0.0", + "resolved": "http://trantor:8082/p-tap/-/p-tap-1.0.0.tgz", + "integrity": "sha1-3E+ghhNehogib259zOpn2DItCN8=" + }, + "p-waterfall": { + "version": "1.0.0", + "resolved": "http://trantor:8082/p-waterfall/-/p-waterfall-1.0.0.tgz", + "integrity": "sha1-ftlLPOszMngjU69qrhGqn8I1uwA=", + "requires": { + "p-reduce": "1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "http://trantor:8082/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "requires": { + "error-ex": "1.3.1" + } + }, "path-is-absolute": { "version": "1.0.1", "resolved": "http://trantor:8082/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "http://trantor:8082/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" }, "pathval": { "version": "1.1.0", @@ -923,24 +2085,135 @@ "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", "dev": true }, + "pify": { + "version": "2.3.0", + "resolved": "http://trantor:8082/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "http://trantor:8082/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "http://trantor:8082/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "requires": { + "pinkie": "2.0.4" + } + }, + "pluralize": { + "version": "1.2.1", + "resolved": "http://trantor:8082/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, + "precise-typeof": { + "version": "1.0.2", + "resolved": "http://trantor:8082/precise-typeof/-/precise-typeof-1.0.2.tgz", + "integrity": "sha1-247UcP0IRw9e98mwjucNbdUjLws=", + "requires": { + "is-buffer": "1.1.6" + } + }, "prelude-ls": { "version": "1.1.2", "resolved": "http://trantor:8082/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "http://trantor:8082/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "http://trantor:8082/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, "punycode": { "version": "1.4.1", "resolved": "http://trantor:8082/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, + "purdy": { + "version": "2.2.1", + "resolved": "http://trantor:8082/purdy/-/purdy-2.2.1.tgz", + "integrity": "sha1-dnh1ZNoE+O9+lnKYe/HSGnJmmcQ=", + "requires": { + "chalk": "0.4.0", + "hoek": "2.16.3", + "joi": "6.10.1" + }, + "dependencies": { + "ansi-styles": { + "version": "1.0.0", + "resolved": "http://trantor:8082/ansi-styles/-/ansi-styles-1.0.0.tgz", + "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg=" + }, + "chalk": { + "version": "0.4.0", + "resolved": "http://trantor:8082/chalk/-/chalk-0.4.0.tgz", + "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=", + "requires": { + "ansi-styles": "1.0.0", + "has-color": "0.1.7", + "strip-ansi": "0.1.1" + } + }, + "strip-ansi": { + "version": "0.1.1", + "resolved": "http://trantor:8082/strip-ansi/-/strip-ansi-0.1.1.tgz", + "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE=" + } + } + }, "qs": { "version": "6.4.0", "resolved": "http://trantor:8082/qs/-/qs-6.4.0.tgz", "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", "dev": true }, + "readable-stream": { + "version": "2.3.3", + "resolved": "http://trantor:8082/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" + } + }, + "readline2": { + "version": "1.0.1", + "resolved": "http://trantor:8082/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "mute-stream": "0.0.5" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "http://trantor:8082/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "1.1.7" + } + }, "repeat-string": { "version": "1.6.1", "resolved": "http://trantor:8082/repeat-string/-/repeat-string-1.6.1.tgz", @@ -977,12 +2250,38 @@ "uuid": "3.1.0" } }, + "require-uncached": { + "version": "1.0.3", + "resolved": "http://trantor:8082/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": { "version": "1.1.7", "resolved": "http://trantor:8082/resolve/-/resolve-1.1.7.tgz", "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true }, + "resolve-from": { + "version": "1.0.1", + "resolved": "http://trantor:8082/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "http://trantor:8082/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + }, "right-align": { "version": "0.1.3", "resolved": "http://trantor:8082/right-align/-/right-align-0.1.3.tgz", @@ -993,12 +2292,98 @@ "align-text": "0.1.4" } }, + "rimraf": { + "version": "2.6.2", + "resolved": "http://trantor:8082/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "requires": { + "glob": "7.1.2" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "http://trantor:8082/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "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" + } + } + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "http://trantor:8082/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "1.4.0" + } + }, + "rx-lite": { + "version": "3.1.2", + "resolved": "http://trantor:8082/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, "safe-buffer": { "version": "5.1.1", "resolved": "http://trantor:8082/safe-buffer/-/safe-buffer-5.1.1.tgz", "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, + "safe-json-stringify": { + "version": "1.0.4", + "resolved": "http://trantor:8082/safe-json-stringify/-/safe-json-stringify-1.0.4.tgz", + "integrity": "sha1-gaCY9Efku8P/MxKiQ1IbwGDvWRE=", + "optional": true + }, + "shelljs": { + "version": "0.7.8", + "resolved": "http://trantor:8082/shelljs/-/shelljs-0.7.8.tgz", + "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", + "dev": true, + "requires": { + "glob": "7.1.2", + "interpret": "1.1.0", + "rechoir": "0.6.2" + }, + "dependencies": { + "glob": { + "version": "7.1.2", + "resolved": "http://trantor:8082/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" + } + } + } + }, + "simple-node-logger": { + "version": "0.93.33", + "resolved": "http://trantor:8082/simple-node-logger/-/simple-node-logger-0.93.33.tgz", + "integrity": "sha512-ppFuaDeacR1Vu+cP17kwOWQsx5C1vbIRa54qm5WgZBzQ5eBue/GWsDd4sr++ITnWZIoIOvjx5kEm5AhP7IqU+Q==", + "requires": { + "lodash": "4.17.4", + "moment": "2.20.1" + } + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "http://trantor:8082/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, "sntp": { "version": "1.0.9", "resolved": "http://trantor:8082/sntp/-/sntp-1.0.9.tgz", @@ -1048,12 +2433,53 @@ } } }, + "string-width": { + "version": "1.0.2", + "resolved": "http://trantor:8082/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "http://trantor:8082/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": "http://trantor:8082/stringstream/-/stringstream-0.0.5.tgz", "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", "dev": true }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "http://trantor:8082/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "http://trantor:8082/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "http://trantor:8082/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, "supports-color": { "version": "3.2.3", "resolved": "http://trantor:8082/supports-color/-/supports-color-3.2.3.tgz", @@ -1063,6 +2489,106 @@ "has-flag": "1.0.0" } }, + "table": { + "version": "3.8.3", + "resolved": "http://trantor:8082/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "ajv-keywords": "1.5.1", + "chalk": "1.1.3", + "lodash": "4.17.4", + "slice-ansi": "0.0.4", + "string-width": "2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "http://trantor:8082/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "http://trantor:8082/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://trantor:8082/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "http://trantor:8082/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "http://trantor:8082/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": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "http://trantor:8082/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + } + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "http://trantor:8082/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "http://trantor:8082/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "http://trantor:8082/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "http://trantor:8082/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "topo": { + "version": "1.1.0", + "resolved": "http://trantor:8082/topo/-/topo-1.1.0.tgz", + "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", + "requires": { + "hoek": "2.16.3" + } + }, "tough-cookie": { "version": "2.3.3", "resolved": "http://trantor:8082/tough-cookie/-/tough-cookie-2.3.3.tgz", @@ -1103,6 +2629,20 @@ "integrity": "sha512-N9IvkQslUGYGC24RkJk1ba99foK6TkwC2FHAEBlQFBP0RxQZS8ZpJuAZcwiY/w9ZJHFQb1aOXBI60OdxhTrwEQ==", "dev": true }, + "typechecker": { + "version": "4.4.1", + "resolved": "http://trantor:8082/typechecker/-/typechecker-4.4.1.tgz", + "integrity": "sha1-+XuV9RsDhBchLWd9RaNz7nvO1+Y=", + "requires": { + "editions": "1.3.3" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "http://trantor:8082/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, "uglify-js": { "version": "2.8.29", "resolved": "http://trantor:8082/uglify-js/-/uglify-js-2.8.29.tgz", @@ -1137,6 +2677,21 @@ "integrity": "sha1-iS/pWWCAXoVRnxzUOJ8stMu3ZS8=", "dev": true }, + "user-home": { + "version": "2.0.0", + "resolved": "http://trantor:8082/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "requires": { + "os-homedir": "1.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "http://trantor:8082/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, "uuid": { "version": "3.1.0", "resolved": "http://trantor:8082/uuid/-/uuid-3.1.0.tgz", @@ -1162,6 +2717,11 @@ } } }, + "when": { + "version": "3.7.8", + "resolved": "http://trantor:8082/when/-/when-3.7.8.tgz", + "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=" + }, "which": { "version": "1.3.0", "resolved": "http://trantor:8082/which/-/which-1.3.0.tgz", @@ -1187,7 +2747,21 @@ "wrappy": { "version": "1.0.2", "resolved": "http://trantor:8082/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write": { + "version": "0.2.1", + "resolved": "http://trantor:8082/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "xtend": { + "version": "4.0.1", + "resolved": "http://trantor:8082/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, "yargs": { diff --git a/package.json b/package.json index 204bb2f..8fc888d 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,12 @@ { - "name": "@uci/device", + "name": "@uci/base", "version": "0.1.0", "description": "Mutli Level/Transport Message/Event Classes", - "main": "index.js", + "main": "src/base.js", "scripts": { - "testw": "node -r @std/esm ./node_modules/.bin/_mocha ./test --compilers=mjs:@std/esm --reporter list --recursive --watch", - "test": "istanbul cover ./node_modules/.bin/_mocha --report lcovonly -- -R spec --recursive && codecov || true" + "testw": "mocha -r @std/esm test/*.test.mjs --watch --recurse --watch-extensions mjs", + "test": "mocha -r @std/esm test/*.test.mjs", + "testci": "istanbul cover ./node_modules/.bin/_mocha --report lcovonly -- -R spec --recursive && codecov || true" }, "author": "David Kebler", "license": "MIT", @@ -23,18 +24,21 @@ "url": "https://github.com/uCOMmandIt/message/issues" }, "homepage": "https://github.com/uCOMmandIt/message#readme", - "dependencies": { - "@uci/require-all": "^2.x", - "aggregation": "^1.2.1", - "node-ipc": "^9.1.1" - }, - "@std/esm": "cjs", + "@std/esm": "cjs", "devDependencies": { "@std/esm": "^0.18.0", + "babel-eslint": "^8.2.1", "chai": "^4.1.2", "chai-as-promised": "^7.1.1", "codecov": "^3.0.0", + "eslint": "^3.19.0", "istanbul": "^0.4.5", "mocha": "^4.0.1" + }, + "dependencies": { + "@uci/socket": "^0.1.0", + "@uci/utils": "^0.1.0", + "auto-bind": "^1.1.0", + "delimiter-stream": "^1.0.1" } } diff --git a/readme.md b/readme.md index b7c6d0f..b69021a 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -# uCOMmandIt Message and Event Classes +# uCOMmandIt Base Class for all Classes [![Build Status](https://img.shields.io/travis/uCOMmandIt/uci-pkg-template.svg?branch=master)](https://travis-ci.org/uCOMmandIt/uci-pkg-template) @@ -7,4 +7,4 @@ [![devDependencies](https://img.shields.io/david/dev/uCOMmandIt/uci-pkg-template.svg)](https://david-dm.org/uCOMmandIt/uci-pkg-template?type=dev) [![codecov](https://img.shields.io/codecov/c/github/uCOMmandIt/uci-pkg-template/master.svg)](https://codecov.io/gh/uCOMmandIt/uci-pkg-template) -Multi-level Protocol Messaging/Event base class for all UCI devices hardware and software including buses and user frontend, backend, etc. +Base Class extended for all UCI Classes diff --git a/socket.log b/socket.log new file mode 100644 index 0000000..a539ba1 --- /dev/null +++ b/socket.log @@ -0,0 +1,248 @@ +{"name":"example:ts","hostname":"trantor","pid":21731,"level":30,"socket":{"host":"127.0.0.1","port":8080},"msg":"socket created","time":"2018-01-19T03:44:08.666Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":21731,"level":30,"msg":"listening","time":"2018-01-19T03:44:08.667Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":21731,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T03:44:08.669Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":21731,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T03:44:08.669Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":21731,"level":30,"msg":"connecting","time":"2018-01-19T03:44:08.670Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":21731,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T03:44:08.670Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":21731,"level":30,"msg":"handshake done, connected","time":"2018-01-19T03:44:08.701Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":21731,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T03:44:08.702Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":21731,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T03:44:08.702Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":21731,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T03:45:03.804Z","v":0} +{"name":"example:us","hostname":"trantor","pid":21986,"level":30,"socket":{"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock"},"msg":"socket created","time":"2018-01-19T03:45:04.813Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":21986,"level":30,"msg":"listening","time":"2018-01-19T03:45:04.815Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":21986,"level":30,"socket":{"host":"127.0.0.1","port":8080},"msg":"socket created","time":"2018-01-19T03:45:04.814Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":21986,"level":30,"msg":"listening","time":"2018-01-19T03:45:04.815Z","v":0} +{"name":"example:us","hostname":"trantor","pid":21986,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T03:45:04.817Z","v":0} +{"name":"example:us","hostname":"trantor","pid":21986,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T03:45:04.817Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":21986,"level":30,"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock","msg":"connecting","time":"2018-01-19T03:45:04.818Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":21986,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T03:45:04.818Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":21986,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T03:45:04.817Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":21986,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T03:45:04.817Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":21986,"level":30,"msg":"connecting","time":"2018-01-19T03:45:04.818Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":21986,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T03:45:04.818Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":21986,"level":30,"msg":"handshake done, connected","time":"2018-01-19T03:45:04.850Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":21986,"level":30,"msg":"handshake done, connected","time":"2018-01-19T03:45:04.850Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":21986,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T03:45:04.851Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":21986,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T03:45:04.851Z","v":0} +{"name":"example:us","hostname":"trantor","pid":21986,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T03:45:04.851Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":21986,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T03:45:04.852Z","v":0} +{"name":"example:us","hostname":"trantor","pid":21986,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T03:48:28.606Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":21986,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T03:48:28.606Z","v":0} +{"name":"example:us","hostname":"trantor","pid":22228,"level":30,"socket":{"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock"},"msg":"socket created","time":"2018-01-19T03:48:30.313Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":22228,"level":30,"msg":"listening","time":"2018-01-19T03:48:30.314Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":22228,"level":30,"socket":{"host":"127.0.0.1","port":8080},"msg":"socket created","time":"2018-01-19T03:48:30.314Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":22228,"level":30,"msg":"listening","time":"2018-01-19T03:48:30.315Z","v":0} +{"name":"example:us","hostname":"trantor","pid":22228,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T03:48:30.316Z","v":0} +{"name":"example:us","hostname":"trantor","pid":22228,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T03:48:30.316Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":22228,"level":30,"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock","msg":"connecting","time":"2018-01-19T03:48:30.317Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":22228,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T03:48:30.317Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":22228,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T03:48:30.317Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":22228,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T03:48:30.317Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":22228,"level":30,"msg":"connecting","time":"2018-01-19T03:48:30.318Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":22228,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T03:48:30.318Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":22228,"level":30,"msg":"handshake done, connected","time":"2018-01-19T03:48:30.348Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":22228,"level":30,"msg":"handshake done, connected","time":"2018-01-19T03:48:30.348Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":22228,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T03:48:30.348Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":22228,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T03:48:30.349Z","v":0} +{"name":"example:us","hostname":"trantor","pid":22228,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T03:48:30.349Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":22228,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T03:48:30.350Z","v":0} +{"name":"example:us","hostname":"trantor","pid":22228,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T03:50:52.235Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":22228,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T03:50:52.236Z","v":0} +{"name":"example:us","hostname":"trantor","pid":22510,"level":30,"socket":{"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock"},"msg":"socket created","time":"2018-01-19T03:50:53.332Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":22510,"level":30,"msg":"listening","time":"2018-01-19T03:50:53.333Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":22510,"level":30,"socket":{"host":"127.0.0.1","port":8080},"msg":"socket created","time":"2018-01-19T03:50:53.333Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":22510,"level":30,"msg":"listening","time":"2018-01-19T03:50:53.334Z","v":0} +{"name":"example:us","hostname":"trantor","pid":22510,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T03:50:53.336Z","v":0} +{"name":"example:us","hostname":"trantor","pid":22510,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T03:50:53.336Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":22510,"level":30,"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock","msg":"connecting","time":"2018-01-19T03:50:53.337Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":22510,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T03:50:53.337Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":22510,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T03:50:53.337Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":22510,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T03:50:53.337Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":22510,"level":30,"msg":"connecting","time":"2018-01-19T03:50:53.338Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":22510,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T03:50:53.338Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":22510,"level":30,"msg":"handshake done, connected","time":"2018-01-19T03:50:53.368Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":22510,"level":30,"msg":"handshake done, connected","time":"2018-01-19T03:50:53.368Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":22510,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T03:50:53.369Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":22510,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T03:50:53.369Z","v":0} +{"name":"example:us","hostname":"trantor","pid":22510,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T03:50:53.369Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":22510,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T03:50:53.370Z","v":0} +{"name":"example:us","hostname":"trantor","pid":22510,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:22:11.024Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":22510,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:22:11.024Z","v":0} +{"name":"example:us","hostname":"trantor","pid":24716,"level":30,"socket":{"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock"},"msg":"socket created","time":"2018-01-19T04:22:13.170Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":24716,"level":30,"msg":"listening","time":"2018-01-19T04:22:13.172Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":24716,"level":30,"socket":{"host":"127.0.0.1","port":8080},"msg":"socket created","time":"2018-01-19T04:22:13.171Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":24716,"level":30,"msg":"listening","time":"2018-01-19T04:22:13.173Z","v":0} +{"name":"example:us","hostname":"trantor","pid":24716,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:22:13.174Z","v":0} +{"name":"example:us","hostname":"trantor","pid":24716,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:22:13.174Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":24716,"level":30,"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock","msg":"connecting","time":"2018-01-19T04:22:13.175Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":24716,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:22:13.175Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":24716,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:22:13.175Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":24716,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:22:13.175Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":24716,"level":30,"msg":"connecting","time":"2018-01-19T04:22:13.176Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":24716,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:22:13.176Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":24716,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:22:13.206Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":24716,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:22:13.206Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":24716,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:22:13.207Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":24716,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:22:13.207Z","v":0} +{"name":"example:us","hostname":"trantor","pid":24716,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:22:13.207Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":24716,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:22:13.208Z","v":0} +{"name":"example:us","hostname":"trantor","pid":24716,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:22:47.356Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":24716,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:22:47.357Z","v":0} +{"name":"example:us","hostname":"trantor","pid":24818,"level":30,"socket":{"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock"},"msg":"socket created","time":"2018-01-19T04:22:48.444Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":24818,"level":30,"msg":"listening","time":"2018-01-19T04:22:48.445Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":24818,"level":30,"msg":"listening","time":"2018-01-19T04:22:48.446Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":24818,"level":30,"socket":{"host":"127.0.0.1","port":8080},"msg":"socket created","time":"2018-01-19T04:22:48.445Z","v":0} +{"name":"example:us","hostname":"trantor","pid":24818,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:22:48.447Z","v":0} +{"name":"example:us","hostname":"trantor","pid":24818,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:22:48.447Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":24818,"level":30,"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock","msg":"connecting","time":"2018-01-19T04:22:48.448Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":24818,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:22:48.449Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":24818,"level":30,"msg":"connecting","time":"2018-01-19T04:22:48.449Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":24818,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:22:48.449Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":24818,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:22:48.448Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":24818,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:22:48.448Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":24818,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:22:48.479Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":24818,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:22:48.479Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":24818,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:22:48.480Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":24818,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:22:48.480Z","v":0} +{"name":"example:us","hostname":"trantor","pid":24818,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:22:48.481Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":24818,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:22:48.481Z","v":0} +{"name":"example:us","hostname":"trantor","pid":24818,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:24:12.269Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":24818,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:24:12.269Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25001,"level":30,"socket":{"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock"},"msg":"socket created","time":"2018-01-19T04:24:15.282Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25001,"level":30,"msg":"listening","time":"2018-01-19T04:24:15.283Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25001,"level":30,"socket":{"host":"127.0.0.1","port":8080},"msg":"socket created","time":"2018-01-19T04:24:15.283Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25001,"level":30,"msg":"listening","time":"2018-01-19T04:24:15.284Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25001,"level":30,"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock","msg":"connecting","time":"2018-01-19T04:24:15.286Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25001,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:24:15.287Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25001,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:24:15.285Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25001,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:24:15.285Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25001,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:24:15.286Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25001,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:24:15.286Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25001,"level":30,"msg":"connecting","time":"2018-01-19T04:24:15.287Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25001,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:24:15.287Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25001,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:24:15.317Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25001,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:24:15.317Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25001,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:24:15.318Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25001,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:24:15.318Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25001,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:24:15.319Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25001,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:24:15.319Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25001,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:25:37.308Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25001,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:25:37.309Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25165,"level":30,"socket":{"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock"},"msg":"socket created","time":"2018-01-19T04:25:39.013Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25165,"level":30,"socket":{"host":"127.0.0.1","port":8080},"msg":"socket created","time":"2018-01-19T04:25:39.014Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25165,"level":30,"msg":"listening","time":"2018-01-19T04:25:39.015Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25165,"level":30,"msg":"listening","time":"2018-01-19T04:25:39.014Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25165,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:25:39.016Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25165,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:25:39.016Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25165,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:25:39.017Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25165,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:25:39.017Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25165,"level":30,"msg":"connecting","time":"2018-01-19T04:25:39.018Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25165,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:25:39.018Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25165,"level":30,"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock","msg":"connecting","time":"2018-01-19T04:25:39.017Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25165,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:25:39.017Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25165,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:25:39.048Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25165,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:25:39.048Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25165,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:25:39.048Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25165,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:25:39.048Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25165,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:25:39.049Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25165,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:25:39.049Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25165,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:26:35.417Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25165,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:26:35.417Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25356,"level":30,"socket":{"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock"},"msg":"socket created","time":"2018-01-19T04:26:36.891Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25356,"level":30,"msg":"listening","time":"2018-01-19T04:26:36.893Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25356,"level":30,"socket":{"host":"127.0.0.1","port":8080},"msg":"socket created","time":"2018-01-19T04:26:36.892Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25356,"level":30,"msg":"listening","time":"2018-01-19T04:26:36.894Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25356,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:26:36.896Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25356,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:26:36.896Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25356,"level":30,"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock","msg":"connecting","time":"2018-01-19T04:26:36.897Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25356,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:26:36.897Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25356,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:26:36.897Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25356,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:26:36.897Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25356,"level":30,"msg":"connecting","time":"2018-01-19T04:26:36.898Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25356,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:26:36.898Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25356,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:26:36.928Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25356,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:26:36.928Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25356,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:26:36.928Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25356,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:26:36.929Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25356,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:26:36.929Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25356,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:26:36.929Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25356,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:29:04.611Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25356,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:29:04.611Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25541,"level":30,"socket":{"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock"},"msg":"socket created","time":"2018-01-19T04:29:06.035Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25541,"level":30,"msg":"listening","time":"2018-01-19T04:29:06.037Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25541,"level":30,"socket":{"host":"127.0.0.1","port":8080},"msg":"socket created","time":"2018-01-19T04:29:06.036Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25541,"level":30,"msg":"listening","time":"2018-01-19T04:29:06.037Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25541,"level":30,"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock","msg":"connecting","time":"2018-01-19T04:29:06.039Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25541,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:29:06.040Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25541,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:29:06.038Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25541,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:29:06.038Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25541,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:29:06.039Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25541,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:29:06.039Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25541,"level":30,"msg":"connecting","time":"2018-01-19T04:29:06.040Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25541,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:29:06.040Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25541,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:29:06.070Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25541,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:29:06.070Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":25541,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:29:06.071Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":25541,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:29:06.071Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25541,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:29:06.071Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25541,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:29:06.072Z","v":0} +{"name":"example:us","hostname":"trantor","pid":25541,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:36:21.048Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":25541,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:36:21.048Z","v":0} +{"name":"example:us","hostname":"trantor","pid":26135,"level":30,"socket":{"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock"},"msg":"socket created","time":"2018-01-19T04:36:22.965Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":26135,"level":30,"msg":"listening","time":"2018-01-19T04:36:22.967Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":26135,"level":30,"socket":{"host":"127.0.0.1","port":8080},"msg":"socket created","time":"2018-01-19T04:36:22.966Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":26135,"level":30,"msg":"listening","time":"2018-01-19T04:36:22.967Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":26135,"level":30,"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock","msg":"connecting","time":"2018-01-19T04:36:22.970Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":26135,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:36:22.970Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":26135,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:36:22.969Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":26135,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:36:22.969Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":26135,"level":30,"msg":"connecting","time":"2018-01-19T04:36:22.970Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":26135,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:36:22.971Z","v":0} +{"name":"example:us","hostname":"trantor","pid":26135,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:36:22.969Z","v":0} +{"name":"example:us","hostname":"trantor","pid":26135,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:36:22.969Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":26135,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:36:23.001Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":26135,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:36:23.001Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":26135,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:36:23.001Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":26135,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:36:23.002Z","v":0} +{"name":"example:us","hostname":"trantor","pid":26135,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:36:23.002Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":26135,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:36:23.003Z","v":0} +{"name":"example:us","hostname":"trantor","pid":26135,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:36:44.458Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":26135,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:36:44.458Z","v":0} +{"name":"example:us","hostname":"trantor","pid":26222,"level":30,"socket":{"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock"},"msg":"socket created","time":"2018-01-19T04:36:45.284Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":26222,"level":30,"msg":"listening","time":"2018-01-19T04:36:45.285Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":26222,"level":30,"socket":{"host":"127.0.0.1","port":8080},"msg":"socket created","time":"2018-01-19T04:36:45.285Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":26222,"level":30,"msg":"listening","time":"2018-01-19T04:36:45.286Z","v":0} +{"name":"example:us","hostname":"trantor","pid":26222,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:36:45.288Z","v":0} +{"name":"example:us","hostname":"trantor","pid":26222,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:36:45.288Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":26222,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:36:45.288Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":26222,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:36:45.288Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":26222,"level":30,"msg":"connecting","time":"2018-01-19T04:36:45.290Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":26222,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:36:45.290Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":26222,"level":30,"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock","msg":"connecting","time":"2018-01-19T04:36:45.289Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":26222,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:36:45.289Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":26222,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:36:45.320Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":26222,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:36:45.320Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":26222,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:36:45.320Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":26222,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:36:45.320Z","v":0} +{"name":"example:us","hostname":"trantor","pid":26222,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:36:45.321Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":26222,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:36:45.321Z","v":0} +{"name":"example:us","hostname":"trantor","pid":26222,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:40:46.019Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":26222,"level":30,"msg":"\nhe's dead jim","time":"2018-01-19T04:40:46.020Z","v":0} +{"name":"example:us","hostname":"trantor","pid":26643,"level":30,"socket":{"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock"},"msg":"socket created","time":"2018-01-19T04:41:16.401Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":26643,"level":30,"msg":"listening","time":"2018-01-19T04:41:16.403Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":26643,"level":30,"socket":{"host":"127.0.0.1","port":8080},"msg":"socket created","time":"2018-01-19T04:41:16.402Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":26643,"level":30,"msg":"listening","time":"2018-01-19T04:41:16.403Z","v":0} +{"name":"example:us","hostname":"trantor","pid":26643,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:41:16.405Z","v":0} +{"name":"example:us","hostname":"trantor","pid":26643,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:41:16.405Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":26643,"level":30,"path":"/home/david/AllData/hacking/active-dev-repos/uci/uci-base/examples/sample.sock","msg":"connecting","time":"2018-01-19T04:41:16.406Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":26643,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:41:16.406Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":26643,"level":30,"msg":"server: new consumer connecting","time":"2018-01-19T04:41:16.405Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":26643,"level":30,"msg":"Server: sending handshake to consumer","time":"2018-01-19T04:41:16.405Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":26643,"level":30,"msg":"connecting","time":"2018-01-19T04:41:16.406Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":26643,"level":30,"msg":"waiting for 30ms for handshake","time":"2018-01-19T04:41:16.407Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":26643,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:41:16.437Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":26643,"level":30,"msg":"handshake done, connected","time":"2018-01-19T04:41:16.437Z","v":0} +{"name":"example:uc","hostname":"trantor","pid":26643,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:41:16.437Z","v":0} +{"name":"example:tc","hostname":"trantor","pid":26643,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"attempting to send packet to socket","time":"2018-01-19T04:41:16.437Z","v":0} +{"name":"example:us","hostname":"trantor","pid":26643,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:41:16.438Z","v":0} +{"name":"example:ts","hostname":"trantor","pid":26643,"level":30,"packet":{"cmd":"echo","data":"some data to echo"},"msg":"Server: packet received to socket","time":"2018-01-19T04:41:16.438Z","v":0} diff --git a/src/base.mjs b/src/base.mjs new file mode 100644 index 0000000..a0c8d94 --- /dev/null +++ b/src/base.mjs @@ -0,0 +1,56 @@ +import { Socket, Consumer } from '../../uci-socket/src' +// import { Socket as TCPSocket, Consumer as TCPConsumer } from '@uci/tcp-socket' +import EventEmitter from 'events' +// import autoBind from 'auto-bind' + +export default class Base extends EventEmitter { + constructor(opts={}) { + super() + this.id = opts.id // a unique ecosystem wide id, could be generated + this.desc = opts.desc // additional details for humans + // attach unix socket OR consumer(default) only if path is supplied + this.socket = [] + this.consumer = [] + this.com = opts.com.split(/[,:|\s]+/) + this.com.forEach( sock => { + opts.name = this.id +':'+sock + switch (sock) { + case + 'us': + opts.spp = opts.uspp ? opts.uspp : opts.spp + this.socket.push(new Socket(opts.path,opts)) + break + case 'uc': + this.consumer.push(new Consumer(opts.path,opts)) + break + case 'ts': + opts.spp = opts.tspp ? opts.tspp : opts.spp + this.socket.push(new Socket(opts)) + break + case 'tc': + this.consumer.push(new Consumer(opts)) + } + }) + + // autoBind(this) + + } // end constructor + +// this override default echo processor needs command 'cmd' as a minimum. Will pass data and sender property + async processPacket(packet) { + if (!packet.cmd) return {error: 'no command in packet', packet: packet } + if (!this[packet.cmd]) return {error: 'no processing function supplied for command', packet: packet } + return await this[packet.cmd](packet) + } + + async init () { + await Promise.all(this.socket.map( sock => sock.create(this))) + return Promise.all(this.consumer.map( con => con.connect(this))) + } // init + + async send (packet) { + this.emit(packet.cmd, packet) + return await Promise.all(this.consumer.map(con => con.send(packet))) + } + +} // end class diff --git a/src/device.mjs b/src/device.mjs deleted file mode 100644 index d6194c6..0000000 --- a/src/device.mjs +++ /dev/null @@ -1,41 +0,0 @@ -// Every UCI device whether it be hardware or strictly software device has in common -// A means of communication to other devices whether they be on the same machine host, across a network or even within itself -// To - -import EventEmitter from 'events' -import IPC from 'node-ipc/services/IPC' -import aggregate from 'aggregation/es6' - -console.log(IPC) - - -export default class Device extends aggregate(EventEmitter,IPC) { - constructor(id, opts) { - super() - this.id = id //must be unique in entire messaging system - if (opts) { - this.transports = opts.transports - } - } - - async init() {} - - async listen(message) { - console.log(message) - } - - async send(message) { - console.log(message) - } - -} - -// # dc|intra|native|unix|tcp|mqtt -// # dc = direct call without messaging. -// # intra = within same process (standard node event emitter) -// # native = node child process using pipes -// # unix = unix socket on same host/machine -// # tcp = using -// # tls = secure TCP -// # udp -// # mqtt diff --git a/src/i2c-device.js b/src/i2c-device.js deleted file mode 100644 index e2c9425..0000000 --- a/src/i2c-device.js +++ /dev/null @@ -1,76 +0,0 @@ -'use strict' - -// ********************************** - -class Device { - // bus is i2c-bus bus object - constructor(bus, address, opts) { - this.bus = bus - this.address = address - if (opts) { - this.id = opts.id // must be unique within a bus - this.desc = opts.desc - this.channel = opts.channel // if using TAC9546A channel number on which device is attached - } - } - - async _setChannel() { - // console.log('before set',this.address,this.id,this.channel, this.bus.getState) - if (this.channel) { - if (!this.bus.address) { return Promise.reject('Channel set but no mux on bus')} - return this.bus.set(this.channel) - } - return Promise.resolve() // no channel for device either no mux or device is attached to mux bypass - } - - // for devices that need just a simple send of a byte without a register command - async receive() { - await this._setChannel() - return this.bus.receive(this.address) - } - - async send(cmd, byte) { - await this._setChannel() - return this.bus.send(this.address, cmd, byte) - } - - // for devices needing a buffer/stream - async readRaw(length, buffer) { - await this._setChannel() - return this.bus.readRaw(this.address, length, buffer) - } - - async writeRaw(length, buffer) { - await this._setChannel() - return this.bus.writeRaw(this.address, length, buffer) - } - - // both cmd and byte should be a single byte as a decimal or hex - async read(cmd) { - await this._setChannel() - // console.log('after set before read',this.address,this.id,this.channel,this.bus.getState) - return this.bus.read(this.address, cmd) - } - - async write(cmd, byte) { - await this._setChannel() - // console.log('after set, before write',this.address,this.id,this.channel,this.bus.getState) - return this.bus.write(this.address, cmd, byte) - } - - // for I2C devices that use a word length packackage - async read2(cmd) { - await this._setChannel() - return this.bus.read2(this.address, cmd) - } - - async write2(cmd, bytes) { - await this._setChannel() - return this.bus.write2(this.address, cmd, bytes) - } - -} - -module.exports = { - Device -} diff --git a/src/mbroker.mjs b/src/mbroker.mjs deleted file mode 100644 index 0f85ecc..0000000 --- a/src/mbroker.mjs +++ /dev/null @@ -1,29 +0,0 @@ -import ipc from 'node-ipc' -// const ipc = require('node-ipc') - -ipc.config.id = 'broker' -ipc.config.retry= 1500 - -ipc.serve( - function(){ - ipc.server.on( - 'device.req', - function(data,socket){ - if (data.message === 'understand') { - ipc.server.emit( - socket, - 'server.res', - { - id : ipc.config.id, - message : `Message from ${data.id} understood` - } - ) - } - } - ) - } -) - - - -ipc.server.start() diff --git a/src/message-bus.mjs b/src/message-bus.mjs deleted file mode 100644 index 2588def..0000000 --- a/src/message-bus.mjs +++ /dev/null @@ -1,41 +0,0 @@ -import ipc from 'node-ipc' - -const BROKER_ID = 'broker' - -ipc.config.id = 'somedevice' -ipc.config.retry = 1000 - -ipc.connectTo( - BROKER_ID, - function(){ - ipc.of[BROKER_ID].on( - 'connect', - function(){ - ipc.log(`connected to ${BROKER_ID}`) - ipc.of[BROKER_ID].emit( - 'device.req', - { - id : ipc.config.id, - message : 'understand' - } - ) - } - ) - // ipc.of.bus.on( - // 'disconnect', - // function(){ - // ipc.log('disconnected from bus') - // } - // ) - - // listen for bus - ipc.of[BROKER_ID].on( - 'server.res', - function(data){ - ipc.log('got a response from server : ', data) - } - ) - - // console.log(ipc.of.bus.destroy) - } -) diff --git a/test/.gitignore b/test/.gitignore new file mode 100644 index 0000000..2ccbe46 --- /dev/null +++ b/test/.gitignore @@ -0,0 +1 @@ +/node_modules/ diff --git a/test/base.socket.mjs b/test/base.socket.mjs new file mode 100644 index 0000000..443931f --- /dev/null +++ b/test/base.socket.mjs @@ -0,0 +1,19 @@ +import Base from '../src/base' +const USOCKET = '/opt/sockets/samplecs.sock' + +let server = new Base({id:'uci-base-server', desc:'socket server', usocket: true, path:USOCKET}) + +server.test = async (packet) => { + packet.processed = true + return packet +} + +; +(async () => { + +// using default packet processor + await server.usocket.create() + +})().catch(err => { + console.error('FATAL: UNABLE TO START SYSTEM!\n',err) +}) diff --git a/test/base.test.mjs b/test/base.test.mjs new file mode 100644 index 0000000..7d81873 --- /dev/null +++ b/test/base.test.mjs @@ -0,0 +1,91 @@ +import { spawn } from 'child_process' +import chai from 'chai' +import chaiAsPromised from 'chai-as-promised' +import Base from '../src/base' + +chai.use(chaiAsPromised) + +const expect = chai.expect + +const USOCKET = '/opt/sockets/samplecs.sock' + +const delay = time => new Promise(res=>setTimeout(()=>res(),time)) + +let app = new Base({id:'uci-base-app', desc:'a consumer app', path:USOCKET}) + +// app.ucpp = 'cprocessPacket' +// +// app.processPacket = async function (packet) { +// console.log('packet received from socket') +// console.dir(packet) +// app.emit('test2', packet) +// } + + +describe('Base Class', function () { + + it('Has an id', function () { + expect(app.id).to.equal('uci-base-app') + }) + + it('Has a description', function () { + expect(app.desc).to.equal('a consumer app') + }) + + it('Is basic emitter', function () { + app.on('etest',function(data){ + expect(data).to.equal('test') + }) + app.emit('etest', 'test') + }) + +}) + +; +(async () => { + + let socket={} + socket = spawn('node',['-r', '@std/esm', './test/base.socket']) + await delay(500) // wait for socket to get going + await app.init() + // + // let packet = {sender:'test consumer', cmd:'test', data:'some data'} + // app.test = (packet) =>{ + // console.dir('packet',packet) + // } + // app.send(packet) + // await delay(1000) + + socket.kill() + +})().catch(err => { + console.error('FATAL: UNABLE TO START SYSTEM!\n',err) +}) + + + +// describe('Base Class - sockets', function () { +// +// let socket={} +// +// before(async function(){ +// socket = spawn('node',['-r', '@std/esm', './test/base.socket']) +// await delay(500) // wait for socket to get going +// // await app.init() +// }) +// +// after(async function(){ +// socket.kill() +// }) +// +// it('Can communicate via unix socket', async function () { +// let packet = {sender:'test consumer', cmd:'test', data:'some data'} +// app.test = (packet) =>{ +// console.dir('packet',packet) +// // expect(packet.processed).to.equal(true) +// expect(packet.data).to.equal('some data') +// } +// app.send(packet) +// await delay(1000) +// }) +// }) diff --git a/test/device.test.mjs b/test/device.test.mjs deleted file mode 100644 index 9270c16..0000000 --- a/test/device.test.mjs +++ /dev/null @@ -1,35 +0,0 @@ -import chai from 'chai' -import chaiAsPromised from 'chai-as-promised' -import Device from '../src/device' - -chai.use(chaiAsPromised) - -const expect = chai.expect - -let device = new Device('test') - -describe('Device Class - ', function () { - - it('Has properties', function () { - expect(device.id).to.equal('test') - }) - - // function getAllMethodNames(obj) { - // let methods = new Set() - // while (obj = Reflect.getPrototypeOf(obj)) { - // let keys = Reflect.ownKeys(obj) - // keys.forEach((k) => methods.add(k)) - // } - // return methods - // } - // - // let methods = getAllMethodNames(device) - // console.log([...methods]) - - // it('Can write and read to actual device', function () { - // - // device.write(0x09, SET).then(expect(device.read(0x0A)).to.eventually.equal(SET)) - // .then(setTimeout(() => device.write(0x09, 0), 3000)) - // .catch(err => console.log('an error', err)) - // }) -}) diff --git a/test/log.log b/test/log.log new file mode 100644 index 0000000..ee973aa --- /dev/null +++ b/test/log.log @@ -0,0 +1,3 @@ +{"name":"uci-base-server","hostname":"trantor","pid":12374,"level":30,"socket":"/opt/sockets/samplecs.sock","msg":"already exists...deleting","time":"2018-01-16T03:28:36.376Z","v":0} +{"name":"uci-base-server","hostname":"trantor","pid":12374,"level":30,"socket":"/opt/sockets/samplecs.sock","msg":"socket created","time":"2018-01-16T03:28:36.378Z","v":0} +{"name":"uci-base-server","hostname":"trantor","pid":12374,"level":30,"msg":"\nhe's dead jim","time":"2018-01-16T03:28:39.265Z","v":0}