diff --git a/.gitignore b/.gitignore index 947371b..b512c09 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -node_modules -run_dev.sh \ No newline at end of file +node_modules \ No newline at end of file diff --git a/dev.sh b/dev.sh deleted file mode 100644 index 50f3152..0000000 --- a/dev.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -echo "Starting in dev mode" - -rm run_dev.sh -jq -r ".apps[0].env | keys[]" ./process.json | while read key ; do - echo -n "$key=\"">> run_dev.sh - echo -n "$(jq ".apps[0].env.$key" ./process.json)" >> run_dev.sh - echo -n "\" ">> run_dev.sh -done -echo -n " node services/bluetooth" >> run_dev.sh - -#cat run_dev.sh -sh run_dev.sh \ No newline at end of file diff --git a/docs.sh b/docs.sh deleted file mode 100644 index a4c254c..0000000 --- a/docs.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -libs="./lib/*" -for l in $libs -do - echo "Generating documentation for $l" - ./node_modules/.bin/jsdoc2md $l/index.js > $l/Readme.md -done \ No newline at end of file diff --git a/hardware/intval3_0_prototype.psd b/hardware/intval3_0_prototype.psd deleted file mode 100644 index 8743617..0000000 Binary files a/hardware/intval3_0_prototype.psd and /dev/null differ diff --git a/hardware/intval3_0_prototype_mask.png b/hardware/intval3_0_prototype_mask.png deleted file mode 100644 index fe78994..0000000 Binary files a/hardware/intval3_0_prototype_mask.png and /dev/null differ diff --git a/hardware/intval_3_prototype.fzz b/hardware/intval_3_prototype.fzz deleted file mode 100644 index 6eab757..0000000 Binary files a/hardware/intval_3_prototype.fzz and /dev/null differ diff --git a/hardware/intval_3_prototype_etch_copper_top.pdf b/hardware/intval_3_prototype_etch_copper_top.pdf deleted file mode 100644 index 02acaa2..0000000 Binary files a/hardware/intval_3_prototype_etch_copper_top.pdf and /dev/null differ diff --git a/index.js b/index.js index 4356b13..f1c5f69 100644 --- a/index.js +++ b/index.js @@ -1,16 +1,16 @@ 'use strict' -const restify = require('restify') -const log = require('./lib/log')('main') -const fs = require('fs') - const ble = require('./lib/blootstrap') const intval = require('./lib/intval') +const restify = require('restify') +const logger = require('winston') +const fs = require('fs') +const pin = {} const PACKAGE = require('./package.json') const PORT = process.env.PORT || 6699 const APPNAME = PACKAGE.name -const INDEXPATH = './app/www/index.html' +const INDEX = fs.readFileSync('./app/www/index.html', 'utf8') let app = restify.createServer({ name: APPNAME, @@ -25,30 +25,24 @@ function createServer () { app.post('/sequence', () => {}) app.get('/status', rStatus) app.listen(PORT, () => { - log.info('server', { name : APPNAME, port : PORT }) + console.log(`${APPNAME} listening on port ${PORT}!`) }) } function rFrame (req, res, next) { - intval.frame() res.send({}) return next() } function rStatus (req, res, next) { const obj = intval.status() - res.send(obj) + res.send({}) return next() } function index (req, res, next) { - fs.readFile(INDEXPATH, (err, data) => { - if (err) { - return next(err) - } - res.end(data) - next() - }, 'utf8') + res.end(INDEX) + return next() } diff --git a/lib/blootstrap/Readme.md b/lib/blootstrap/Readme.md deleted file mode 100644 index a96ceb5..0000000 --- a/lib/blootstrap/Readme.md +++ /dev/null @@ -1,18 +0,0 @@ - - -## Blootstrap -Class representing the bluetooth interface - -**Kind**: global class - - -### blootstrap.on(eventName, callback) -Binds functions to events that are triggered by BLE messages - -**Kind**: instance method of [Blootstrap](#Blootstrap) - -| Param | Type | Description | -| --- | --- | --- | -| eventName | string | Name of the event to to bind | -| callback | function | Invoked when the event is triggered | - diff --git a/lib/blootstrap/index.js b/lib/blootstrap/index.js index f015ff7..33d9da0 100644 --- a/lib/blootstrap/index.js +++ b/lib/blootstrap/index.js @@ -1,42 +1,29 @@ 'use strict' const ipc = require('node-ipc') -const log = require('../log')('ble') function capitalize (s) { return s[0].toUpperCase() + s.slice(1) } -/** Class representing the bluetooth interface */ class Blootstrap { constructor () { this._onData = () => {} ipc.connectTo('blootstrap_ble', () => { ipc.of.blootstrap_ble.on('connect', () => { - log.info('connect', `Connected to the blootstrap_ble service`) + ipc.log(`Connected to the blootstrap_ble service`) }) ipc.of.blootstrap_ble.on('data', data => { const str = data.toString() - log.info('data', str) + ipc.log(str) this._onData(str) }) ipc.of.blootstrap_ble.on('disconnect', () => { - log.info('disconnect', `Disconnected from the blootstrap_ble service`) - }) - ipc.of.blootstrap_ble.on('error', (err) => { - if (err.code === 'EACCES') { - log.warn('error', `Cannot access ipc`) - } + ipc.log(`Disconnected from the blootstrap_ble service`) }) }) } - /** - * Binds functions to events that are triggered by BLE messages - * - * @param {string} eventName Name of the event to to bind - * @param {function} callback Invoked when the event is triggered - */ on (eventName, callback) { this[`_on${capitalize(eventName)}`] = callback } diff --git a/lib/intval/Readme.md b/lib/intval/Readme.md deleted file mode 100644 index 967573a..0000000 --- a/lib/intval/Readme.md +++ /dev/null @@ -1,123 +0,0 @@ - - -## Intval -Class representing the intval3 features - -**Kind**: global class - -* [Intval](#Intval) - * [._declarePins()](#Intval+_declarePins) - * [._undeclarePins()](#Intval+_undeclarePins) - * [._startFwd()](#Intval+_startFwd) - * [._startBwd()](#Intval+_startBwd) - * [._stop()](#Intval+_stop) - * [._watchMicro(err, val)](#Intval+_watchMicro) - * [._watchRelease(err, val)](#Intval+_watchRelease) - * [.setDir([dir])](#Intval+setDir) - * [.frame([dir], [time])](#Intval+frame) - * [.sequence()](#Intval+sequence) - - - -### intval._declarePins() -(internal function) Declares all Gpio pins that will be used - -**Kind**: instance method of [Intval](#Intval) - - -### intval._undeclarePins() -(internal function) Undeclares all Gpio in event of uncaught error -that interupts the node process - -**Kind**: instance method of [Intval](#Intval) - - -### intval._startFwd() -Start motor in forward direction by setting correct pins in h-bridge - -**Kind**: instance method of [Intval](#Intval) - - -### intval._startBwd() -Start motor in backward direction by setting correct pins in h-bridge - -**Kind**: instance method of [Intval](#Intval) - - -### intval._stop() -Stop motor by setting both motor pins to 0 (LOW) - -**Kind**: instance method of [Intval](#Intval) - - -### intval._watchMicro(err, val) -Callback for watching relese switch state changes. -Using GPIO 06 on Raspberry Pi Zero W. - -1) If closed AND frame active, start timer, set state primed to `true`. -1) If opened AND frame active, stop frame - -Microswitch + 10K ohm resistor -* 1 === open -* 0 === closed - -**Kind**: instance method of [Intval](#Intval) - -| Param | Type | Description | -| --- | --- | --- | -| err | object | Error object present if problem reading pin | -| val | integer | Current value of the pin | - - - -### intval._watchRelease(err, val) -Callback for watching relese switch state changes. -Using GPIO 05 on Raspberry Pi Zero W. - -1) If closed, start timer. -2) If opened, check timer AND -3) If `press` (`NOW - this._state.release.time`) greater than minimum and less than `this._releaseSequence`, start frame -4) If `press` greater than `this._releaseSequence`, start sequence - -Button + 10K ohm resistor -* 1 === open -* 0 === closed - -**Kind**: instance method of [Intval](#Intval) - -| Param | Type | Description | -| --- | --- | --- | -| err | object | Error object present if problem reading pin | -| val | integer | Current value of the pin | - - - -### intval.setDir([dir]) -Set the default direction of the camera. -* forward = true -* backward = false - -**Kind**: instance method of [Intval](#Intval) - -| Param | Type | Default | Description | -| --- | --- | --- | --- | -| [dir] | boolean | true | Direction of the camera | - - - -### intval.frame([dir], [time]) -Begin a single frame with set variables or defaults - -**Kind**: instance method of [Intval](#Intval) - -| Param | Type | Default | Description | -| --- | --- | --- | --- | -| [dir] | boolean | "null" | (optional) Direction of the frame | -| [time] | integer | "null" | (optional) Exposure time, 0 = minimum | - - - -### intval.sequence() -Start a sequence of frames, using defaults or explicit instructions - -**Kind**: instance method of [Intval](#Intval) diff --git a/lib/intval/index.js b/lib/intval/index.js index 40d6124..fc2d553 100644 --- a/lib/intval/index.js +++ b/lib/intval/index.js @@ -1,272 +1,23 @@ 'use strict' -const log = require('../log')('intval') +const gpio = require('gpio') -let Gpio -try { - Gpio = require('onoff').Gpio -} catch (e) { - log.warn('Failed including Gpio, using sim') - Gpio = require('../../lib/onoffsim').Gpio -} - - -const PINS = { - fwd : { - pin : 13, - dir : 'out' - }, - bwd : { - pin : 19, - dir : 'out' - }, - micro : { - pin : 6, - dir : 'in', - edge : 'both' - }, - release : { - pin : 5, - dir : 'in', - edge : 'both' - } -} - -/** Class representing the intval3 features */ class Intval { constructor () { this._pin = {} - this._state = { - dir : true, //forward - frame : { - start : 0, //time frame started, timestamp - active : false, //should frame be running - time : 0, //length of frame, in ms - delay : 0, //delay before start of frame, in ms - - expected : 1000 //expected length of frame, in ms - }, - release : { - time: 0, - active : false //is pressed - }, - micro : { - time : 0, - primed : false //is ready to stop frame - } - } - - this._releaseMin = 50 - this._releaseSequence = 1000 - this._microDelay = 10 // delay after stop signal before stopping motors - this._declarePins() - process.on('SIGINT', this._undeclarePins) - process.on('uncaughtException', this._undeclarePins) } - /** - * (internal function) Declares all Gpio pins that will be used - * - */ _declarePins () { - let pin - for (let p in PINS) { - pin = PINS[p] - if (pin.edge) this._pin[p] = Gpio(pin.pin, pin.dir, pin.edge) - if (!pin.edge) this._pin[p] = Gpio(pin.pin, pin.dir) - log.info('_declarePins', { pin : pin.pin, dir : pin.dir, edge : pin.edge }) - } - this._pin.release.watch(this._watchRelease) - } - /** - * (internal function) Undeclares all Gpio in event of uncaught error - * that interupts the node process - * - */ - _undeclarePins () { - if (!this._pin) return process.exit() - log.warn('_undeclarePins', { pin : PINS.fwd.pin, val : 0, reason : 'exiting'}) - this._pin.fwd.writeSync(0) - log.warn('_undeclarePins', { pin : PINS.bwd.pin, val : 0, reason : 'exiting'}) - this._pin.bwd.writeSync(0) - this._pin.fwd.unexport() - this._pin.bwd.unexport() - this._pin.micro.unexport() - this._pin.release.unexport() - process.exit() - } - /** - * Start motor in forward direction by setting correct pins in h-bridge - * - */ - _startFwd () { - this._pin.fwd.writeSync(1) - this._pin.bwd.writeSync(0) - //start high-cpu watch - } - /** - * Start motor in backward direction by setting correct pins in h-bridge - * - */ - _startBwd () { - this._pin.fwd.writeSync(0) - this._pin.bwd.writeSync(1) - } - /** - * Stop motor by setting both motor pins to 0 (LOW) - * - */ - _stop () { - this._pin.fwd.writeSync(0) - this._pin.bwd.writeSync(0) - - let len = (+new Date()) - this._state.frame.start - - log.info(`Frame stopped ${len}ms`) - - this._pin.micro.unwatch() - this._state.frame.active = false - this._state.frame.start = 0 - } - /** - * Callback for watching relese switch state changes. - * Using GPIO 06 on Raspberry Pi Zero W. - * - * 1) If closed AND frame active, start timer, set state primed to `true`. - * 1) If opened AND frame active, stop frame - * - * Microswitch + 10K ohm resistor - * * 1 === open - * * 0 === closed - * - * - * @param {object} err Error object present if problem reading pin - * @param {integer} val Current value of the pin - * - */ - _watchMicro (err, val) { - const NOW = +new Date() - if (err) { - log.error('_watchMicro', err) - } - //determine when to stop - if (val === 0 && this._state.frame.active) { - if (!this._state.micro.primed) { - this._state.micro.primed = true - this._state.micro.time = NOW - log.info('Mircoswitch primed to stop motor') + this._pin.four = gpio.export(4, { + direction: 'out', + interval: 100, + ready : () => { + console.info(`Set pin 4 to OUTPUT`) } - } else if (val === 1 && this._state.frame.active) { - if (this._state.micro.primed) { - this._state.micro.primed = false - this._state.micro.time = 0 - setTimeout( () => { - log.info(`Stopped frame after ${NOW - this._state.micro.time}ms`) - }, this._microDelay) - } - } - } - /** - * Callback for watching relese switch state changes. - * Using GPIO 05 on Raspberry Pi Zero W. - * - * 1) If closed, start timer. - * 2) If opened, check timer AND - * 3) If `press` (`NOW - this._state.release.time`) greater than minimum and less than `this._releaseSequence`, start frame - * 4) If `press` greater than `this._releaseSequence`, start sequence - * - * Button + 10K ohm resistor - * * 1 === open - * * 0 === closed - * - * @param {object} err Error object present if problem reading pin - * @param {integer} val Current value of the pin - * - */ - _watchRelease (err, val) { - const NOW = +new Date() - let press = 0 - if (err) { - return log.error(err) - } - log.info(`Release switch val: ${val}`) - if (val === 0) { - //closed - if ((!this._state.release.active && this._state.release.time === 0) || (this._state.release.active && (NOW - this._state.release.time) > (this._releaseSequence * 10)) - ) { - this._state.release.time = NOW - this._state.release.active = true //maybe unncecessary - } - } else if (val === 1) { - //opened - if (this._state.release.active) { - press = NOW - this._state.release.time - if (press > this._releaseMin && press < this._releaseSequence) { - this.frame() - } else if (press >= this._releaseSequence) { - this.sequence() - } - log.info(`Release closed for ${press}ms`) - this._state.release.time = 0 - this._state.release.active = false - } - } - } - /** - * Set the default direction of the camera. - * * forward = true - * * backward = false - * - * @param {boolean} [dir=true] Direction of the camera - * - */ - setDir (val = true) { - if (typeof val !== 'boolean') { - return log.warn('Direction must be represented as either true or false') - } - this._state.dir = val - } - /** - * Begin a single frame with set variables or defaults - * - * @param {?boolean} [dir="null"] (optional) Direction of the frame - * @param {?integer} [time="null"] (optional) Exposure time, 0 = minimum - * - */ - frame (dir = null, time = null) { - if (dir === true || (dir === null && this._state.dir === true) ) { - dir = true - } else { - dir = false - } - - if (time === null && this._state.time !== 0) { - time = this._state.time - } else { - time = 0 - } - - this._state.frame.start = +new Date() - this._state.frame.active = true - this._pin.micro.watch(this._watchMicro) - - log.info('frame', {dir : dir, time : time}) - - if (dir) { - this._startFwd() - } else { - this._startBwd() - } - } - /** - * Start a sequence of frames, using defaults or explicit instructions - * - */ - sequence () { - log.info('sequence', `Started sequence`) + }) } status () { - return this._state + return {} } } diff --git a/lib/log/Readme.md b/lib/log/Readme.md deleted file mode 100644 index 61f4e44..0000000 --- a/lib/log/Readme.md +++ /dev/null @@ -1,13 +0,0 @@ - - -## createLog(label, filename) ⇒ object -createLog() - Returns a winston logger configured to service - -**Kind**: global function -**Returns**: object - Winston logger - -| Param | Type | Default | Description | -| --- | --- | --- | --- | -| label | string | | Label appearing on logger | -| filename | string | null | Optional file to write log to | - diff --git a/lib/log/index.js b/lib/log/index.js deleted file mode 100644 index 8527559..0000000 --- a/lib/log/index.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict' - -const winston = require('winston') - -/** -* createLog() - Returns a winston logger configured to service -* -* @param {string} label Label appearing on logger -* @param {string} filename Optional file to write log to -* @returns {object} Winston logger -*/ -function createLog (label, filename = null) { - const transports = [ new (winston.transports.Console)({ label : label }) ] - if (filename !== null) { - transports.push( new (winston.transports.File)({ label : label, filename : filename }) ) - } - return new (winston.Logger)({ - transports: transports - }) -} - -module.exports = createLog \ No newline at end of file diff --git a/lib/mscript/Readme.md b/lib/mscript/Readme.md deleted file mode 100644 index 611eefa..0000000 --- a/lib/mscript/Readme.md +++ /dev/null @@ -1,35 +0,0 @@ - - -## mscript -Object representing mscript parser - -**Kind**: global constant - -* [mscript](#mscript) - * [.arg(shrt, lng)](#mscript.arg) - * [.arg_pos(shrt, lng)](#mscript.arg_pos) - - - -### mscript.arg(shrt, lng) -Determine whether or not argument flag has been set - -**Kind**: static method of [mscript](#mscript) - -| Param | Type | Description | -| --- | --- | --- | -| shrt | string | Short flag name (ie `-a`) | -| lng | string | Long flag name (ie `--apple`) | - - - -### mscript.arg_pos(shrt, lng) -Determine position of flag, in argument array - -**Kind**: static method of [mscript](#mscript) - -| Param | Type | Description | -| --- | --- | --- | -| shrt | string | Short flag name (ie `-a`) | -| lng | string | Long flag name (ie `--apple`) | - diff --git a/lib/mscript/index.js b/lib/mscript/index.js deleted file mode 100644 index c12700e..0000000 --- a/lib/mscript/index.js +++ /dev/null @@ -1,441 +0,0 @@ -'use strict' - -let fs -let input; - -/** Object representing mscript parser */ -const mscript = {} - -/** -* Determine whether or not argument flag has been set -* -* -* @param {string} shrt Short flag name (ie `-a`) -* @param {string} lng Long flag name (ie `--apple`) -* -*/ -mscript.arg = function arg (shrt, lng) { - if (process.argv.indexOf(shrt) !== -1 || - process.argv.indexOf(lng) !== -1) { - return true - } - return false -} -/** -* Determine position of flag, in argument array -* -* -* @param {string} shrt Short flag name (ie `-a`) -* @param {string} lng Long flag name (ie `--apple`) -* -*/ -mscript.arg_pos = function arg_pos (shrt, lng) { - let pos = process.argv.indexOf(shrt) - if (pos === -1) { - pos = process.argv.indexOf(lng) - } - return pos -} - -mscript.black = '0,0,0' - -mscript.cmd = [ - 'CF', - 'PF', - 'BF', - 'CB', - 'PB', - 'BB', - 'D' -] -mscript.alts = { - 'CF' : ['CAMERA FORWARD', 'CAM FORWARD', 'C'], - 'PF' : ['PROJECTOR FORWARD', 'PROJ FORWARD', 'P'], - 'BF' : ['BLACK FORWARD'], - 'CB' : ['CAMERA BACKWARD', 'CAM BACKWARD', 'CAMERA BACK', 'CAM BACK'], - 'PB' : ['PROJECTOR FORWARD', 'PROJ FORWARD', 'PROJECTOR BACK', 'PROJ BACK'], - 'BB' : ['BLACK BACKWARD', 'BLACK BACK'], - 'L ' : ['LIGHT', 'COLOR', 'LAMP'] -} - -mscript.state = {} -//TODO: This will memory leak -mscript.state_clear = function state_clear () { - mscript.state = { - cam : 0, - proj : 0, - color : '', - loops : [], - rec : -1 - } -} - -mscript.alts_unique = function alts_unique () { - const ids = Object.keys(mscript.alts) - const all = [] - for (let i = 0; i < ids.length; i++) { - if (all.indexOf(ids[i]) === -1) { - all.push(ids[i]) - } else { - mscript.fail(1, "Can't parse") - } - } -} - -mscript.interpret = function interpret (text, callback) { - mscript.state_clear() - if (typeof text === 'undefined') { - mscript.fail(2, 'No input') - } - const lines = text.split('\n') - const arr = [] - const light = [] - const output = {} - - let two = '' - let target = 0 - let dist = 0 //? - let x - - //loop through all lines - for (let line of lines) { - //preprocess line - line = mscript.preprocess(line) - two = line.substring(0, 2) - - if (mscript.cmd.indexOf(two) !== -1) { - if (mscript.state.loops.length > 0) { - //hold generated arr in state loop array - mscript.state.loops[mscript.state.rec].arr.push.apply(mscript.state.loops[mscript.state.rec].arr, mscript.str_to_arr(line, two)) - mscript.state.loops[mscript.state.rec].light.push.apply(mscript.state.loops[mscript.state.rec].light, mscript.light_to_arr(line, two)) - } else { - arr.push.apply(arr, mscript.str_to_arr(line, two)) - light.push.apply(light, mscript.light_to_arr(line, two)) - } - - } else if (line.substring(0, 4) === 'LOOP') { - mscript.state.rec++ - mscript.state.loops[mscript.state.rec] = { - arr : [], - light : [], - cam : 0, - proj : 0, - cmd : line + '' - } - } else if (line.substring(0, 2) === 'L ') { - mscript.light_state(line) - } else if (line.substring(0, 3) === 'END') { - for (x = 0; x < mscript.loop_count(mscript.state.loops[mscript.state.rec].cmd); x++) { - if (mscript.state.rec === 0) { - arr.push.apply(arr, mscript.state.loops[mscript.state.rec].arr); - light.push.apply(light, mscript.state.loops[mscript.state.rec].light); - } else if (mscript.state.rec >= 1) { - mscript.state.loops[mscript.state.rec - 1].arr.push.apply(mscript.state.loops[mscript.state.rec - 1].arr, mscript.state.loops[mscript.state.rec].arr) - mscript.state.loops[mscript.state.rec - 1].light.push.apply(mscript.state.loops[mscript.state.rec - 1].light, mscript.state.loops[mscript.state.rec].light) - } - } - mscript.state_update('END', mscript.loop_count(mscript.state.loops[mscript.state.rec].cmd)); - delete mscript.state.loops[mscript.state.rec] - mscript.state.rec-- - } else if (line.substring(0, 3) === 'CAM') { //directly go to that frame (black?) - target = parseInt(line.split('CAM ')[1]) - if (mscript.state.loops.length > 0) { - if (target > mscript.state.cam) { - dist = target - mscript.state.cam - for (x = 0; x < dist; x++) { - mscript.state.loops[mscript.state.rec].arr.push('BF') - mscript.state.loops[mscript.state.rec].light.push(mscript.black) - mscript.state_update('BF') - } - } else { - dist = mscript.state.cam - target - for (x = 0; x < dist; x++) { - mscript.state.loops[mscript.state.rec].arr.push('BB') - mscript.state.loops[mscript.state.rec].light.push(mscript.black) - mscript.state_update('BB') - } - } - } else { - if (target > mscript.state.cam) { - dist = target - mscript.state.cam - for (x = 0; x < dist; x++) { - arr.push('BF') - light.push(mscript.black) - mscript.state_update('BF') - } - } else { - dist = mscript.state.cam - target - for (x = 0; x < dist; x++) { - arr.push('BB') - light.push(mscript.black) - mscript.state_update('BB') - } - } - } - } else if (line.substring(0, 4) === 'PROJ') { //directly go to that frame - target = parseInt(line.split('PROJ ')[1]) - if (mscript.state.loops.length > 0) { - if (target > mscript.state.proj) { - dist = target - mscript.state.proj - for (x = 0; x < dist; x++) { - mscript.state.loops[mscript.state.rec].arr.push('PF') - mscript.state.loops[mscript.state.rec].light.push('') - mscript.state_update('PF') - } - } else { - dist = mscript.state.proj - target - for (x = 0; x < dist; x++) { - mscript.state.loops[mscript.state.rec].arr.push('PB') - mscript.state.loops[mscript.state.rec].light.push('') - mscript.state_update('PB') - } - } - } else { - if (target > mscript.state.proj) { - dist = target - mscript.state.proj - for (x = 0; x < dist; x++) { - arr.push('PF') - light.push('') - mscript.state_update('PF') - } - } else { - dist = mscript.state.proj - target - for (x = 0; x < dist; x++) { - arr.push('PB') - light.push('') - mscript.state_update('PB'); - } - } - } - } else if (line.substring(0, 3) === 'SET') { //set that state - if (line.substring(0, 7) === 'SET CAM') { - mscript.state.cam = parseInt(line.split('SET CAM')[1]); - } else if (line.substring(0, 8) === 'SET PROJ') { - mscript.state.proj = parseInt(line.split('SET PROJ')[1]); - } - } else if (line.substring(0, 1) === '#' || line.substring(0, 2) === '//') { - //comments - //ignore while parsing - } - } - output.success = true - output.arr = arr - output.light = light - output.cam = mscript.state.cam - output.proj = mscript.state.proj - if (typeof callback !== 'undefined') { - //should only be invoked by running mscript.tests() - callback(output) - } else { - return mscript.output(output) - } -} - -mscript.preprocess = function preprocess (line) { - line = line.replace(/\t+/g, '') //strip tabs - line = line.trim() //remove excess whitespace before and after command - line = line.toUpperCase() - return line -} - -mscript.last_loop = function last_loop () { - return mscript.state.loops[mscript.state.loops.length - 1] -} - -mscript.parent_loop = function parent_loop () { - return mscript.state.loops[mscript.state.loops.length - 2] -} - -mscript.state_update = function state_update (cmd, val) { - if (cmd === 'END') { - for (var i = 0; i < val; i++) { - if (mscript.state.rec === 0) { - mscript.state.cam += mscript.state.loops[mscript.state.rec].cam - mscript.state.proj += mscript.state.loops[mscript.state.rec].proj - } else if (mscript.state.rec >= 1) { - mscript.state.loops[mscript.state.rec - 1].cam += mscript.state.loops[mscript.state.rec].cam - mscript.state.loops[mscript.state.rec - 1].proj += mscript.state.loops[mscript.state.rec].proj - } - } - } else if (cmd === 'CF') { - if (mscript.state.loops.length < 1) { - mscript.state.cam++ - } else { - mscript.state.loops[mscript.state.rec].cam++ - } - } else if (cmd === 'CB') { - if (mscript.state.loops.length < 1) { - mscript.state.cam-- - } else { - mscript.state.loops[mscript.state.rec].cam-- - } - } else if (cmd === 'PF') { - if (mscript.state.loops.length < 1) { - mscript.state.proj++ - } else { - mscript.state.loops[mscript.state.rec].proj++ - } - } else if (cmd === 'PB') { - if (mscript.state.loops.length < 1) { - mscript.state.proj-- - } else { - mscript.state.loops[mscript.state.rec].proj-- - } - } else if (cmd === 'BF') { - if (mscript.state.loops.length < 1) { - mscript.state.cam++ - } else { - mscript.state.loops[mscript.state.rec].cam++ - } - } else if (cmd === 'BB') { - if (mscript.state.loops.length < 1) { - mscript.state.cam-- - } else { - mscript.state.loops[mscript.state.rec].cam++ - } - } else if (cmd === 'L ') { - //TODO : ???? - } -} - -mscript.str_to_arr = function str_to_arr (str, cmd) { - const cnt = str.split(cmd) - let arr = [] - let c = parseInt(cnt[1]) - - if (cnt[1] === '') { - c = 1 - } else { - c = parseInt(cnt[1]) - } - for (var i = 0; i < c; i++) { - arr.push(cmd) - mscript.state_update(cmd) - } - return arr -} - -mscript.light_state = function light_state (str) { - //add parsers for other color spaces - const color = str.replace('L ', '').trim() - mscript.state.color = color -} - -mscript.light_to_arr = function light_to_arr (str, cmd) { - const cnt = str.split(cmd) - const arr = [] - let c = parseInt(cnt[1]) - - if (cnt[1] === '') { - c = 1 - } else { - c = parseInt(cnt[1]) - } - for (var i = 0; i < c; i++) { - if (cmd === 'CF' || cmd === 'CB') { - arr.push(mscript.state.color) - } else if (cmd === 'BF' || cmd === 'BB') { - arr.push(mscript.black) - } else { - arr.push('') - } - } - return arr -} - -mscript.loop_count = function loop_count (str) { - return parseInt(str.split('LOOP ')[1]) -} - -mscript.fail = function fail (code, reason) { - const obj = { success: false, error: true, msg : reason } - console.error(JSON.stringify(obj)) - if (process) process.exit() -} - -mscript.output = function output (data) { - let json = true; //default - if (mscript.arg('-j', '--json')) { - json = true - } - - if (mscript.arg('-t', '--text')) { - json = false - } - - if (json) { - console.log(JSON.stringify(data)) - } else { - var ids = Object.keys(data) - for (var i = 0; i < ids.length; i++) { - console.log(ids[i] + ': ' + data[ids[i]]) - } - } -} - -mscript.init = function init () { - if (mscript.arg('-t', '--tests')) { - return mscript.tests() - } - - if (mscript.arg('-v', '--verbose')) { - console.time('mscript') - } - - if (mscript.arg('-c', '--cam')) { - mscript.state.cam = parseInt(process.argv[mscript.arg_pos('-c', '--cam') + 1]) - } - - if (mscript.arg('-p', '--proj')) { - mscript.state.proj = parseInt(process.argv[mscript.arg_pos('-p', '--proj') + 1]) - } - - if (mscript.arg('-f', '--file')) { - input = process.argv[mscript.arg_pos('-f', '--file') + 1] - mscript.interpret(fs.readFileSync(input, 'utf8')) - } else { - mscript.interpret(input) - } - - if (mscript.arg('-v', '--verbose')) { - console.timeEnd('mscript') - } -}; - -if (typeof document === 'undefined' && typeof module !== 'undefined' && !module.parent) { - //node script - fs = require('fs') - input = process.argv[2] - mscript.init() -} else if (typeof module !== 'undefined' && module.parent) { - //module - fs = require('fs') - module.exports = mscript -} else { - //web -} - - -/* - -CAM # - go to camera frame # -PROJ # - go to projector frame # - -SET CAM # - sets camera count to # -SET PROJ # - sets projector count to # - -LOOP # - begin loop, can nest recursively, # times -END LOOP - (or END) closes loop - -L #RGB - sets light to rgb value - -FADE - -CF - Camera forwards -PF - Projector forwards -BF - Black forwards -CB - Camera backwards -PB - Projector backwards -BB - Black backwards - -*/ \ No newline at end of file diff --git a/lib/onoffsim/Readme.md b/lib/onoffsim/Readme.md deleted file mode 100644 index 144b474..0000000 --- a/lib/onoffsim/Readme.md +++ /dev/null @@ -1,20 +0,0 @@ - - -## onoffsim -Object representing a fake onoff Gpio class - -**Kind**: global constant - - -### onoffsim.Gpio(no, dir, additional) ⇒ object -Returns a Gpio class in the case of running on a dev machine - -**Kind**: static method of [onoffsim](#onoffsim) -**Returns**: object - Fake Gpio object - -| Param | Type | Description | -| --- | --- | --- | -| no | integer | Number of the GPIO pin | -| dir | string | Dirction of the pin, 'input' or 'output' | -| additional | string | Additional instructions for the GPIO pin, for 'input' type | - diff --git a/lib/onoffsim/index.js b/lib/onoffsim/index.js deleted file mode 100644 index 88b8c70..0000000 --- a/lib/onoffsim/index.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict' - -/** Object representing a fake onoff Gpio class */ -const onoffsim = { - /** - * Returns a Gpio class in the case of running on a dev machine - * - * @param {integer} no Number of the GPIO pin - * @param {string} dir Dirction of the pin, 'input' or 'output' - * @param {string} additional Additional instructions for the GPIO pin, for 'input' type - * @returns {object} Fake Gpio object - */ - Gpio : function (no, dir = 'in', additional = 'none') { - return { - no : no, - dir : dir, - additional : additional, - val : null, - watchFunc : null, - set : function (val) { - console.log(`onoffsim set ${this.no} to ${val}`) - }, - get : function () { - return this.val - }, - watch : function (cb) { - this.watchFunc = cb - }, - unexport : function () { - } - } - } -} - -module.exports = onoffsim \ No newline at end of file diff --git a/lib/wifi/Readme.md b/lib/wifi/Readme.md deleted file mode 100644 index af31581..0000000 --- a/lib/wifi/Readme.md +++ /dev/null @@ -1,102 +0,0 @@ - - -## Wifi -Class representing the wifi features - -**Kind**: global class - -* [Wifi](#Wifi) - * [.list(callback)](#Wifi+list) - * [._readConfigCb(err, data)](#Wifi+_readConfigCb) - * [._writeConfigCb(err)](#Wifi+_writeConfigCb) - * [._reconfigureCb(err, stdout, stderr)](#Wifi+_reconfigureCb) - * [._refreshCb(err, stdout, stderr)](#Wifi+_refreshCb) - * [.setNetwork(ssid, pwd, callback)](#Wifi+setNetwork) - * [.getNetwork(callback)](#Wifi+getNetwork) - - - -### wifi.list(callback) -List available wifi access points - -**Kind**: instance method of [Wifi](#Wifi) - -| Param | Type | Description | -| --- | --- | --- | -| callback | function | Function which gets invoked after list is returned | - - - -### wifi._readConfigCb(err, data) -(internal function) Invoked after config file is read, -then invokes file write on the config file - -**Kind**: instance method of [Wifi](#Wifi) - -| Param | Type | Description | -| --- | --- | --- | -| err | object | (optional) Error object only present if problem reading config file | -| data | string | Contents of the config file | - - - -### wifi._writeConfigCb(err) -(internal function) Invoked after config file is written, -then executes reconfiguration command - -**Kind**: instance method of [Wifi](#Wifi) - -| Param | Type | Description | -| --- | --- | --- | -| err | object | (optional) Error object only present if problem writing config file | - - - -### wifi._reconfigureCb(err, stdout, stderr) -(internal function) Invoked after reconfiguration command is complete - -**Kind**: instance method of [Wifi](#Wifi) - -| Param | Type | Description | -| --- | --- | --- | -| err | object | (optional) Error object only present if configuration command fails | -| stdout | string | Standard output from reconfiguration command | -| stderr | string | Error output from command if fails | - - - -### wifi._refreshCb(err, stdout, stderr) -(internal function) Invoked after wifi refresh command is complete - -**Kind**: instance method of [Wifi](#Wifi) - -| Param | Type | Description | -| --- | --- | --- | -| err | object | (optional) Error object only present if refresh command fails | -| stdout | string | Standard output from refresh command | -| stderr | string | Error output from command if fails | - - - -### wifi.setNetwork(ssid, pwd, callback) -Function which initializes the processes for adding a wifi access point authentication - -**Kind**: instance method of [Wifi](#Wifi) - -| Param | Type | Description | -| --- | --- | --- | -| ssid | string | SSID of network to configure | -| pwd | string | Password of access point, plaintext | -| callback | function | Function invoked after process is complete, or fails | - - - -### wifi.getNetwork(callback) -Executes command which gets the currently connected network - -**Kind**: instance method of [Wifi](#Wifi) - -| Param | Type | Description | -| --- | --- | --- | -| callback | function | Function which is invoked after command is completed | - diff --git a/lib/wifi/index.js b/lib/wifi/index.js index 2f236d2..f330df4 100644 --- a/lib/wifi/index.js +++ b/lib/wifi/index.js @@ -9,22 +9,15 @@ const refresh = '/sbin/ifdown wlan0 && /sbin/ifup --force wlan0' const iwlist = '/sbin/iwlist wlan0 scanning | grep "ESSID:"' const iwgetid = '/sbin/iwgetid' -const log = require('../log')('wifi') const exec = require('child_process').exec const fs = require('fs') -/** Class representing the wifi features */ -class Wifi { +class wifi { constructor () { this._callback = () => {} this._entry = null this._ssid = null } - /** - * List available wifi access points - * - * @param {function} callback Function which gets invoked after list is returned - */ list (callback) { exec(iwlist, (err, stdout, stderr) => { if (err) { @@ -44,13 +37,6 @@ class Wifi { return callback(null, output) }) } - /** - * (internal function) Invoked after config file is read, - * then invokes file write on the config file - * - * @param {object} err (optional) Error object only present if problem reading config file - * @param {string} data Contents of the config file - */ _readConfigCb (err, data) { if (err) { console.error(err) @@ -64,12 +50,6 @@ class Wifi { this._entry = null fs.writeFile(filePath, data, 'utf8', this._writeConfigCb) } - /** - * (internal function) Invoked after config file is written, - * then executes reconfiguration command - * - * @param {object} err (optional) Error object only present if problem writing config file - */ _writeConfigCb (err) { if (err) { console.error(err) @@ -77,13 +57,6 @@ class Wifi { } exec(reconfigure, this._reconfigureCb) } - /** - * (internal function) Invoked after reconfiguration command is complete - * - * @param {object} err (optional) Error object only present if configuration command fails - * @param {string} stdout Standard output from reconfiguration command - * @param {string} stderr Error output from command if fails - */ _reconfigureCb (err, stdout, stderr) { if (err) { console.error(err) @@ -92,13 +65,6 @@ class Wifi { console.log('Wifi reconfigured') exec(refresh, this._refreshCb) } - /** - * (internal function) Invoked after wifi refresh command is complete - * - * @param {object} err (optional) Error object only present if refresh command fails - * @param {string} stdout Standard output from refresh command - * @param {string} stderr Error output from command if fails - */ _refreshCb (err, stdout, stderr) { if (err) { console.error(err) @@ -108,24 +74,12 @@ class Wifi { //this._callback(null, { ssid : ssid, pwd : pwd.length }) this._callback = () => {} } - /** - * Function which initializes the processes for adding a wifi access point authentication - * - * @param {string} ssid SSID of network to configure - * @param {string} pwd Password of access point, plaintext - * @param {function} callback Function invoked after process is complete, or fails - */ setNetwork (ssid, pwd, callback) { this._entry = `network={\n\tssid="${ssid}"\n\tpsk="${pwd}"\n}\n` this._callback = callback this._ssid = ssid fs.readFile(filePath, 'utf8', this._readConfigCb) } - /** - * Executes command which gets the currently connected network - * - * @param {function} callback Function which is invoked after command is completed - */ getNetwork (callback) { exec(iwgetid, (err, stdout, stderr) => { if (err) { @@ -136,4 +90,4 @@ class Wifi { } } -module.exports = new Wifi() \ No newline at end of file +module.exports = new wifi() \ No newline at end of file diff --git a/nginx.conf b/nginx.conf index a89f37d..cc71e29 100644 --- a/nginx.conf +++ b/nginx.conf @@ -30,18 +30,19 @@ server { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; gzip on; - gzip_comp_level 9; - gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json; + gzip_comp_level 5; + gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json; } - #uncomment for static file servers + #uncomment for static file server #location /static/ { #uncomment to turn on caching #expires modified 1y; #access_log off; #add_header Cache-Control "public"; #gzip on; - #gzip_comp_level 9; - #gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json; - #alias /var/node/blootstrap/static/; + #gzip_comp_level 5; + #gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json; + #use project location + #alias /var/node/intval3/static/; #} -} \ No newline at end of file +} diff --git a/package-lock.json b/package-lock.json index bf33259..b93b75d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,65 +4,12 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "3.3.0" - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "ansi-escape-sequences": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-3.0.0.tgz", - "integrity": "sha1-HBg5S2r5t2/5pjUJ+kl2af0s5T4=", - "dev": true, - "requires": { - "array-back": "1.0.4" - } - }, - "app-usage-stats": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/app-usage-stats/-/app-usage-stats-0.5.1.tgz", - "integrity": "sha1-ZUfF25urCqX1ssVg6syK8g0KsTs=", - "dev": true, - "requires": { - "array-back": "1.0.4", - "home-path": "1.0.5", - "test-value": "2.1.0", - "usage-stats": "0.9.4" - } - }, - "array-back": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", - "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", - "dev": true, - "requires": { - "typical": "2.6.1" - } - }, "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "version": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" }, "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "async": { @@ -71,125 +18,57 @@ "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" }, "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "optional": true }, "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "version": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", "optional": true, "requires": { - "tweetnacl": "0.14.5" + "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" } }, - "bindings": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz", - "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE=" - }, "bleno": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/bleno/-/bleno-0.4.2.tgz", + "version": "https://registry.npmjs.org/bleno/-/bleno-0.4.2.tgz", "integrity": "sha1-IesK10O850eU45L0ph4TsHOT26o=", "requires": { - "bluetooth-hci-socket": "0.5.1", - "bplist-parser": "0.0.6", - "debug": "2.6.8" - } - }, - "bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM=", - "dev": true - }, - "bluetooth-hci-socket": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/bluetooth-hci-socket/-/bluetooth-hci-socket-0.5.1.tgz", - "integrity": "sha1-774hUk/Bz10/rl1RNl1WHUq77Qs=", - "optional": true, - "requires": { - "debug": "2.6.8", - "nan": "2.6.2", - "usb": "1.2.0" + "bplist-parser": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.0.6.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "xpc-connection": "https://registry.npmjs.org/xpc-connection/-/xpc-connection-0.1.4.tgz" } }, "bplist-parser": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.0.6.tgz", + "version": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.0.6.tgz", "integrity": "sha1-ONo0cYF9+dRKs4kuJ3B7u9daEbk=", "optional": true }, "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "optional": true, "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" + "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "concat-map": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" } }, "bunyan": { - "version": "1.8.12", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", + "version": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", "requires": { - "dtrace-provider": "0.8.5", - "moment": "2.18.1", - "mv": "2.1.1", - "safe-json-stringify": "1.0.4" - } - }, - "cache-point": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-0.4.1.tgz", - "integrity": "sha512-4TgWfe9SF+bUy5cCql8gWHqKNrviufNwSYxLjf2utB0pY4+bdcuFwMmY1hDB+67Gz/L1vmhFNhePAjJTFBtV+Q==", - "dev": true, - "requires": { - "array-back": "2.0.0", - "fs-then-native": "2.0.0", - "mkdirp2": "1.0.3" - }, - "dependencies": { - "array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, - "requires": { - "typical": "2.6.1" - } - } - } - }, - "catharsis": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", - "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", - "dev": true, - "requires": { - "underscore-contrib": "0.3.0" + "dtrace-provider": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.5.tgz", + "moment": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", + "mv": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "safe-json-stringify": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.4.tgz" } }, "clone-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.0.tgz", + "version": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.0.tgz", "integrity": "sha1-6uCiQT9VwJQvgYwin+/OhF1/Oxw=", "requires": { - "is-regexp": "1.0.0", - "is-supported-regexp-flag": "1.0.0" - } - }, - "collect-all": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.3.tgz", - "integrity": "sha512-0y0rBgoX8IzIjBAUnO73SEtSb4Mhk3IoceWJq5zZSxb9mWORhWH8xLYo4EDSOE1jRBk1LhmfjqWFFt10h/+MEA==", - "dev": true, - "requires": { - "stream-connect": "1.0.2", - "stream-via": "1.0.4" + "is-regexp": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "is-supported-regexp-flag": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.0.tgz" } }, "colors": { @@ -197,96 +76,13 @@ "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=" }, - "command-line-args": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz", - "integrity": "sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA==", - "dev": true, - "requires": { - "array-back": "2.0.0", - "find-replace": "1.0.3", - "typical": "2.6.1" - }, - "dependencies": { - "array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, - "requires": { - "typical": "2.6.1" - } - } - } - }, - "command-line-tool": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/command-line-tool/-/command-line-tool-0.7.0.tgz", - "integrity": "sha1-yoB5KuIGnPfKpWLAy8LNEYERIqA=", - "dev": true, - "requires": { - "ansi-escape-sequences": "3.0.0", - "array-back": "1.0.4", - "command-line-args": "4.0.7", - "command-line-usage": "4.0.1", - "typical": "2.6.1" - } - }, - "command-line-usage": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-4.0.1.tgz", - "integrity": "sha512-IqYzZuXizukrdhnbdUj2hh4iceycow+Jn10mER4lwU4IapYvl5ZzoRPsj5Yraew5oRk4yfFKMuULGvAfb5o29w==", - "dev": true, - "requires": { - "ansi-escape-sequences": "4.0.0", - "array-back": "2.0.0", - "table-layout": "0.4.2", - "typical": "2.6.1" - }, - "dependencies": { - "ansi-escape-sequences": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-4.0.0.tgz", - "integrity": "sha512-v+0wW9Wezwsyb0uF4aBVCjmSqit3Ru7PZFziGF0o2KwTvN2zWfTi3BRLq9EkJFdg3eBbyERXGTntVpBxH1J68Q==", - "dev": true, - "requires": { - "array-back": "2.0.0" - } - }, - "array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, - "requires": { - "typical": "2.6.1" - } - } - } - }, - "common-sequence": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-1.0.2.tgz", - "integrity": "sha1-MOB/P49vf5s97oVPILLTnu4Ibeg=", - "dev": true - }, "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "config-master": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/config-master/-/config-master-3.1.0.tgz", - "integrity": "sha1-ZnZjWQUFooO/JqSE1oSJ10xUhdo=", - "dev": true, - "requires": { - "walk-back": "2.0.1" - } + "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "optional": true }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cron": { @@ -298,32 +94,28 @@ } }, "csv": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/csv/-/csv-1.1.1.tgz", + "version": "https://registry.npmjs.org/csv/-/csv-1.1.1.tgz", "integrity": "sha1-2ZUtWbH5ZKevvN2ATWgYpzGZpHc=", "requires": { - "csv-generate": "1.0.0", - "csv-parse": "1.2.1", - "csv-stringify": "1.0.4", - "stream-transform": "0.1.2" + "csv-generate": "https://registry.npmjs.org/csv-generate/-/csv-generate-1.0.0.tgz", + "csv-parse": "https://registry.npmjs.org/csv-parse/-/csv-parse-1.2.1.tgz", + "csv-stringify": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-1.0.4.tgz", + "stream-transform": "https://registry.npmjs.org/stream-transform/-/stream-transform-0.1.2.tgz" } }, "csv-generate": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-1.0.0.tgz", + "version": "https://registry.npmjs.org/csv-generate/-/csv-generate-1.0.0.tgz", "integrity": "sha1-vVKIaFnQySXz5R9g86vtJi+hXK8=" }, "csv-parse": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-1.2.1.tgz", + "version": "https://registry.npmjs.org/csv-parse/-/csv-parse-1.2.1.tgz", "integrity": "sha1-kZnCPySQ2YxNmrKgFnsGknSYyd8=" }, "csv-stringify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-1.0.4.tgz", + "version": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-1.0.4.tgz", "integrity": "sha1-vBi6ua1M7zGV/SV5gLWLR5xC0+U=", "requires": { - "lodash.get": "4.4.2" + "lodash.get": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" } }, "cycle": { @@ -332,127 +124,53 @@ "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=" }, "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "version": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" } }, "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "version": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", "requires": { - "ms": "2.0.0" + "ms": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" } }, - "deep-extend": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.5.0.tgz", - "integrity": "sha1-bvSgmwX5iw41jW2T1Mo8rsZnKAM=", - "dev": true - }, - "defer-promise": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defer-promise/-/defer-promise-1.0.1.tgz", - "integrity": "sha1-HKb/7dvO8XFd16riXHYW+a4iky8=", - "dev": true - }, "detect-node": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "version": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=" }, - "dmd": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/dmd/-/dmd-3.0.6.tgz", - "integrity": "sha1-lMDg+4jRy2uCg3WVBT3nkZx1PCU=", - "dev": true, - "requires": { - "array-back": "1.0.4", - "cache-point": "0.4.1", - "common-sequence": "1.0.2", - "file-set": "1.1.1", - "handlebars": "3.0.3", - "marked": "0.3.6", - "object-get": "2.1.0", - "reduce-flatten": "1.0.1", - "reduce-unique": "1.0.0", - "reduce-without": "1.0.1", - "test-value": "2.1.0", - "walk-back": "3.0.0" - }, - "dependencies": { - "walk-back": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-3.0.0.tgz", - "integrity": "sha1-I1h4ejXakQMtrV6S+AsSNw2HlcU=", - "dev": true - } - } - }, "dtrace-provider": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.5.tgz", + "version": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.5.tgz", "integrity": "sha1-mOu6Ihr6xG4cOf02hY2Pk2dSS5I=", "optional": true, "requires": { - "nan": "2.6.2" + "nan": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz" } }, "easy-stack": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz", + "version": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz", "integrity": "sha1-EskbMIWjfwuqM26UhurEv5Tj54g=" }, "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "version": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", "optional": true, "requires": { - "jsbn": "0.1.1" - } - }, - "epoll": { - "version": "0.1.22", - "resolved": "https://registry.npmjs.org/epoll/-/epoll-0.1.22.tgz", - "integrity": "sha1-GrmmN8/xGiCXDIiLHKIXi2TPUpE=", - "requires": { - "bindings": "1.2.1", - "nan": "2.6.2" + "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" } }, "escape-regexp-component": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/escape-regexp-component/-/escape-regexp-component-1.0.2.tgz", + "version": "https://registry.npmjs.org/escape-regexp-component/-/escape-regexp-component-1.0.2.tgz", "integrity": "sha1-nGO20LJf8qiMOtvRjFthrMO5+qI=" }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "espree": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.1.7.tgz", - "integrity": "sha1-/V3ux2qXpRIKnNOnyxF3oJI7EdI=", - "dev": true, - "requires": { - "acorn": "3.3.0", - "acorn-jsx": "3.0.1" - } - }, "event-pubsub": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.3.0.tgz", - "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==" + "version": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.2.4.tgz", + "integrity": "sha1-Y0+2l/5AFNxQBHIthZQyuqISMlc=" }, "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "version": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "eyes": { @@ -460,167 +178,89 @@ "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=" }, - "file-set": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/file-set/-/file-set-1.1.1.tgz", - "integrity": "sha1-0+xwwIDsjxjyBLod4QZ4DJBWkms=", - "dev": true, - "requires": { - "array-back": "1.0.4", - "glob": "7.1.2" - }, - "dependencies": { - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - } - } - }, - "find-replace": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz", - "integrity": "sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A=", - "dev": true, - "requires": { - "array-back": "1.0.4", - "test-value": "2.1.0" - } - }, "formidable": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz", + "version": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz", "integrity": "sha1-lriIb3w8NQi5Mta9cMTTqI818ak=" }, - "fs-then-native": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fs-then-native/-/fs-then-native-2.0.0.tgz", - "integrity": "sha1-GaEk2U2QwiyOBF8ujdbr6jbUjGc=", - "dev": true - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "version": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { - "assert-plus": "1.0.0" + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" } }, "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "version": "https://registry.npmjs.org/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" + "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" } }, "gpio": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/gpio/-/gpio-0.2.7.tgz", + "version": "https://registry.npmjs.org/gpio/-/gpio-0.2.7.tgz", "integrity": "sha1-vzhsiJYe/QpPag/3FnrA/zmX6rk=" }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true, - "optional": true - }, "handle-thing": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "version": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=" }, - "handlebars": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-3.0.3.tgz", - "integrity": "sha1-DgllGi8Ps8lJFgWDcQ1VH5Lm0q0=", - "dev": true, - "requires": { - "optimist": "0.6.1", - "source-map": "0.1.43", - "uglify-js": "2.3.6" - } - }, - "home-path": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/home-path/-/home-path-1.0.5.tgz", - "integrity": "sha1-eIspgVsS1Tus9XVkhHbm+QQdEz8=", - "dev": true - }, "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "version": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "requires": { - "inherits": "2.0.3", - "obuf": "1.1.1", - "readable-stream": "2.3.3", - "wbuf": "1.7.2" + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "obuf": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "wbuf": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz" } }, "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "version": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" }, "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "version": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "jsprim": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "sshpk": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" + } } }, "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "optional": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "is-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "version": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=" }, "is-supported-regexp-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.0.tgz", + "version": "https://registry.npmjs.org/is-supported-regexp-flag/-/is-supported-regexp-flag-1.0.0.tgz", "integrity": "sha1-i1IMhfrnolM4LUsCZS4EVXbhO7g=" }, "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isstream": { @@ -629,214 +269,82 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "js-message": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz", + "version": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz", "integrity": "sha1-IwDSSxrwjondCVvBpMnJz8uJLRU=" }, "js-queue": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.0.tgz", + "version": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.0.tgz", "integrity": "sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug=", "requires": { - "easy-stack": "1.0.0" + "easy-stack": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz" } }, - "js2xmlparser": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-1.0.0.tgz", - "integrity": "sha1-WhcPLo1kds5FQF4EgjJCUTeC/jA=", - "dev": true - }, "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "version": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "optional": true }, - "jsdoc-75lb": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/jsdoc-75lb/-/jsdoc-75lb-3.6.0.tgz", - "integrity": "sha1-qAcRlSi0AJzLyrSbdSL2P+xs0L0=", - "dev": true, - "requires": { - "bluebird": "3.4.7", - "catharsis": "0.8.9", - "escape-string-regexp": "1.0.5", - "espree": "3.1.7", - "js2xmlparser": "1.0.0", - "klaw": "1.3.1", - "marked": "0.3.6", - "mkdirp": "0.5.1", - "requizzle": "0.2.1", - "strip-json-comments": "2.0.1", - "taffydb": "2.6.2", - "underscore": "1.8.3" - } - }, - "jsdoc-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-3.0.0.tgz", - "integrity": "sha1-DVJwAjX4Zb1Ki61evB77Vi/IrSo=", - "dev": true, - "requires": { - "array-back": "1.0.4", - "cache-point": "0.4.1", - "collect-all": "1.0.3", - "file-set": "1.1.1", - "fs-then-native": "2.0.0", - "jsdoc-75lb": "3.6.0", - "object-to-spawn-args": "1.1.1", - "temp-path": "1.0.0", - "walk-back": "2.0.1" - } - }, - "jsdoc-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-parse/-/jsdoc-parse-3.0.0.tgz", - "integrity": "sha1-JxUx2I8Z3yUgsWMqf2yYlEGof94=", - "dev": true, - "requires": { - "array-back": "1.0.4", - "lodash.omit": "4.5.0", - "lodash.pick": "4.4.0", - "reduce-extract": "1.0.0", - "sort-array": "1.1.2", - "test-value": "2.1.0" - } - }, - "jsdoc-to-markdown": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-3.0.0.tgz", - "integrity": "sha1-zIqU8fQSrB2kusFldHWwl17oFho=", - "dev": true, - "requires": { - "array-back": "1.0.4", - "command-line-tool": "0.7.0", - "config-master": "3.1.0", - "dmd": "3.0.6", - "jsdoc-api": "3.0.0", - "jsdoc-parse": "3.0.0", - "jsdoc2md-stats": "2.0.1", - "walk-back": "2.0.1" - } - }, - "jsdoc2md-stats": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jsdoc2md-stats/-/jsdoc2md-stats-2.0.1.tgz", - "integrity": "sha1-vYNDc0z+aeqAUKF5MSUSk/DZBHs=", - "dev": true, - "requires": { - "app-usage-stats": "0.5.1" - } - }, "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "version": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "version": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "json-schema": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "verror": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" } }, "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" }, "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "version": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" }, - "lodash.omit": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", - "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=", - "dev": true - }, - "lodash.padend": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", - "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=", - "dev": true - }, - "lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", - "dev": true - }, "lru-cache": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha1-Yi4y6CSItJJ5EUpPns9F581rulU=", "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "yallist": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" } }, - "marked": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", - "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", - "dev": true - }, "mime": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "version": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=" }, "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "version": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=" }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "optional": true, "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz" } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "optional": true }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "optional": true, "requires": { - "minimist": "0.0.8" + "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" } }, - "mkdirp2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.3.tgz", - "integrity": "sha1-zI3YJl8fBuLY9bELblL04FC+0hs=", - "dev": true - }, "moment": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", + "version": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=" }, "moment-timezone": { @@ -844,339 +352,191 @@ "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.13.tgz", "integrity": "sha1-mc5cfYJyYusPH3AgRBd/YHRde5A=", "requires": { - "moment": "2.18.1" + "moment": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz" } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "version": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "mv": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "version": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", "optional": true, "requires": { - "mkdirp": "0.5.1", - "ncp": "2.0.0", - "rimraf": "2.4.5" + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "ncp": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz" } }, "nan": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", - "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=" + "version": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "optional": true }, "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "version": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", "optional": true }, "negotiator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "version": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, "node-ipc": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.1.tgz", - "integrity": "sha512-FAyICv0sIRJxVp3GW5fzgaf9jwwRQxAKDJlmNFUL5hOy+W4X/I5AypyHoq0DXXbo9o/gt79gj++4cMr4jVWE/w==", + "version": "https://registry.npmjs.org/node-ipc/-/node-ipc-9.1.0.tgz", + "integrity": "sha1-rZd4NmcWX1lE6kHPBmGPHEvheSo=", "requires": { - "event-pubsub": "4.3.0", - "js-message": "1.0.5", - "js-queue": "2.0.0" + "event-pubsub": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.2.4.tgz", + "js-message": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz", + "js-queue": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.0.tgz" } }, - "object-get": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object-get/-/object-get-2.1.0.tgz", - "integrity": "sha1-ciu9tgA576R8rTxtws5RqFwCxa4=", - "dev": true - }, - "object-to-spawn-args": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-to-spawn-args/-/object-to-spawn-args-1.1.1.tgz", - "integrity": "sha1-d9qIJ/Bz0BHJ4bFz+JV4FHAkZ4U=", - "dev": true - }, "obuf": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "version": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=" }, "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "requires": { - "wrappy": "1.0.2" - } - }, - "onoff": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/onoff/-/onoff-1.1.7.tgz", - "integrity": "sha1-kZKHlby16QL+dVG9e7JVHZunZII=", - "requires": { - "epoll": "0.1.22" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dev": true, - "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" + "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" } }, "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "optional": true }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" }, "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "version": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "qs": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.0.tgz", - "integrity": "sha512-fjVFjW9yhqMhVGwRExCXLhJKrLlkYSaxNWdyc9rmHlrVZbk35YHH312dFd7191uQeXkI3mKLZTIbSvIeFwFemg==" + "version": "https://registry.npmjs.org/qs/-/qs-6.5.0.tgz", + "integrity": "sha1-jQSVTTZN7z78VbWgeT4eLIsebkk=" }, "readable-stream": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", "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" - } - }, - "reduce-extract": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/reduce-extract/-/reduce-extract-1.0.0.tgz", - "integrity": "sha1-Z/I4W+2mUGG19fQxJmLosIDKFSU=", - "dev": true, - "requires": { - "test-value": "1.1.0" - }, - "dependencies": { - "test-value": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/test-value/-/test-value-1.1.0.tgz", - "integrity": "sha1-oJE29y7AQ9J8iTcHwrFZv6196T8=", - "dev": true, - "requires": { - "array-back": "1.0.4", - "typical": "2.6.1" - } - } - } - }, - "reduce-flatten": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz", - "integrity": "sha1-JYx479FT3fk8tWEjf2EYTzaW4yc=", - "dev": true - }, - "reduce-unique": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/reduce-unique/-/reduce-unique-1.0.0.tgz", - "integrity": "sha1-flhrz4ek4ytter2Cd/rWzeyfSAM=", - "dev": true - }, - "reduce-without": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/reduce-without/-/reduce-without-1.0.1.tgz", - "integrity": "sha1-aK0OrRGFXJo31OglbBW7+Hly/Iw=", - "dev": true, - "requires": { - "test-value": "2.1.0" - } - }, - "req-then": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/req-then/-/req-then-0.6.4.tgz", - "integrity": "sha512-Uf7xsK1qPqPUetESHemNQ7nGtgOxngSFtlcAOOkx0lDAo+XRZpEA9QDrGBdyOfGq4b+a0z/D5gR2VJ+pp/dzBA==", - "dev": true, - "requires": { - "array-back": "2.0.0", - "defer-promise": "1.0.1", - "lodash.pick": "4.4.0", - "stream-read-all": "0.1.2", - "typical": "2.6.1" - }, - "dependencies": { - "array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, - "requires": { - "typical": "2.6.1" - } - } - } - }, - "requizzle": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz", - "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", - "dev": true, - "requires": { - "underscore": "1.6.0" - }, - "dependencies": { - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - } + "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" } }, "restify": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/restify/-/restify-5.2.0.tgz", + "version": "https://registry.npmjs.org/restify/-/restify-5.2.0.tgz", "integrity": "sha1-9xMxAu85WKVtpC92BBURKnigGCI=", "requires": { - "assert-plus": "1.0.0", - "bunyan": "1.8.12", - "clone-regexp": "1.0.0", - "csv": "1.1.1", - "dtrace-provider": "0.8.5", - "escape-regexp-component": "1.0.2", - "formidable": "1.1.1", - "http-signature": "1.2.0", - "lodash": "4.17.4", - "lru-cache": "4.1.1", - "mime": "1.3.6", - "negotiator": "0.6.1", - "once": "1.4.0", - "qs": "6.5.0", - "restify-errors": "4.3.0", - "semver": "5.4.1", - "spdy": "3.4.7", - "uuid": "3.1.0", - "vasync": "1.6.4", - "verror": "1.10.0" + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "bunyan": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", + "clone-regexp": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-1.0.0.tgz", + "csv": "https://registry.npmjs.org/csv/-/csv-1.1.1.tgz", + "dtrace-provider": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.5.tgz", + "escape-regexp-component": "https://registry.npmjs.org/escape-regexp-component/-/escape-regexp-component-1.0.2.tgz", + "formidable": "https://registry.npmjs.org/formidable/-/formidable-1.1.1.tgz", + "http-signature": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "lru-cache": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "mime": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "negotiator": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "qs": "https://registry.npmjs.org/qs/-/qs-6.5.0.tgz", + "restify-errors": "https://registry.npmjs.org/restify-errors/-/restify-errors-4.3.0.tgz", + "semver": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "spdy": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "uuid": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "vasync": "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz", + "verror": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + }, + "dependencies": { + "uuid": { + "version": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha1-PdPT55Crwk17DToDT/q6vijrvAQ=" + } } }, "restify-errors": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/restify-errors/-/restify-errors-4.3.0.tgz", + "version": "https://registry.npmjs.org/restify-errors/-/restify-errors-4.3.0.tgz", "integrity": "sha1-7JDzCTTX8xGRNRgd/DA+ML5gGr4=", "requires": { - "assert-plus": "1.0.0", - "lodash": "4.17.4", - "safe-json-stringify": "1.0.4", - "verror": "1.10.0" + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "safe-json-stringify": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.4.tgz", + "verror": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" } }, "rimraf": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", "optional": true, "requires": { - "glob": "6.0.4" + "glob": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz" } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=" }, "safe-json-stringify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.4.tgz", + "version": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.0.4.tgz", "integrity": "sha1-gaCY9Efku8P/MxKiQ1IbwGDvWRE=", "optional": true }, "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "version": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==" - }, - "sort-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-array/-/sort-array-1.1.2.tgz", - "integrity": "sha1-uImGBTwBcKf53mPxiknsecJMPmQ=", - "dev": true, - "requires": { - "array-back": "1.0.4", - "object-get": "2.1.0", - "typical": "2.6.1" - } - }, - "source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } + "version": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha1-4FnAnYVx8FQII3M0M1BdOi8AsY4=" }, "spdy": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "version": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", "requires": { - "debug": "2.6.8", - "handle-thing": "1.2.5", - "http-deceiver": "1.2.7", - "safe-buffer": "5.1.1", - "select-hose": "2.0.0", - "spdy-transport": "2.0.20" + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "handle-thing": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "http-deceiver": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "select-hose": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "spdy-transport": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz" } }, "spdy-transport": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", + "version": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", "requires": { - "debug": "2.6.8", - "detect-node": "2.0.3", - "hpack.js": "2.1.6", - "obuf": "1.1.1", - "readable-stream": "2.3.3", - "safe-buffer": "5.1.1", - "wbuf": "1.7.2" + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "detect-node": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "hpack.js": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "obuf": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "wbuf": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz" } }, "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "version": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" + "asn1": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "bcrypt-pbkdf": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "dashdash": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "ecc-jsbn": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "getpass": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" } }, "stack-trace": { @@ -1184,1345 +544,64 @@ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" }, - "stream-connect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz", - "integrity": "sha1-GLyB8u2zW4tdmoAJIAqYUxRCipc=", - "dev": true, - "requires": { - "array-back": "1.0.4" - } - }, - "stream-read-all": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/stream-read-all/-/stream-read-all-0.1.2.tgz", - "integrity": "sha512-KX42xBg853m+KnwRtwCKT95ShopAbY/MNKs2dBQ0WkNeuJdqgQYRtGRbTlxdx0L6t979h3z/wMq2eMSAu7Tygw==", - "dev": true - }, "stream-transform": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-0.1.2.tgz", + "version": "https://registry.npmjs.org/stream-transform/-/stream-transform-0.1.2.tgz", "integrity": "sha1-fY5rTgOsR4F3j4x5UXUBv7B2Kp8=" }, - "stream-via": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/stream-via/-/stream-via-1.0.4.tgz", - "integrity": "sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==", - "dev": true - }, "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "requires": { - "safe-buffer": "5.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "table-layout": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.2.tgz", - "integrity": "sha512-tygyl5+eSHj4chpq5Zfy6cpc7MOUBClAW9ozghFH7hg9bAUzShOYn+/vUzTRkKOSLJWKfgYtP2tAU2c0oAD8eg==", - "dev": true, - "requires": { - "array-back": "2.0.0", - "deep-extend": "0.5.0", - "lodash.padend": "4.6.1", - "typical": "2.6.1", - "wordwrapjs": "3.0.0" - }, - "dependencies": { - "array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, - "requires": { - "typical": "2.6.1" - } - } - } - }, - "taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", - "dev": true - }, - "temp-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/temp-path/-/temp-path-1.0.0.tgz", - "integrity": "sha1-JLFUOXOrRCiW2a02fdnL2/r+kYs=", - "dev": true - }, - "test-value": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", - "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=", - "dev": true, - "requires": { - "array-back": "1.0.4", - "typical": "2.6.1" + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" } }, "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "version": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "optional": true }, - "typical": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", - "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=", - "dev": true - }, - "uglify-js": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz", - "integrity": "sha1-+gmEdwtCi3qbKoBY9GNV0U/vIRo=", - "dev": true, - "optional": true, - "requires": { - "async": "0.2.10", - "optimist": "0.3.7", - "source-map": "0.1.43" - }, - "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", - "dev": true, - "optional": true - }, - "optimist": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", - "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", - "dev": true, - "optional": true, - "requires": { - "wordwrap": "0.0.3" - } - } - } - }, - "underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", - "dev": true - }, - "underscore-contrib": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz", - "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=", - "dev": true, - "requires": { - "underscore": "1.6.0" - }, - "dependencies": { - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - } - } - }, - "usage-stats": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/usage-stats/-/usage-stats-0.9.4.tgz", - "integrity": "sha512-u94pT+UDv+ZcjA5PT4KuMR67JL6VqeaQU6RN83Gf7yTqGrD/WqgCwhaj1DAKETR/KrteWXL0XZwlkDJuLJdtkg==", - "dev": true, - "requires": { - "array-back": "2.0.0", - "home-path": "1.0.5", - "mkdirp2": "1.0.3", - "req-then": "0.6.4", - "typical": "2.6.1", - "uuid": "3.1.0" - }, - "dependencies": { - "array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", - "dev": true, - "requires": { - "typical": "2.6.1" - } - } - } - }, - "usb": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/usb/-/usb-1.2.0.tgz", - "integrity": "sha1-q3LZeGoEcGiRmgJNCMehxbHmD0c=", - "optional": true, - "requires": { - "nan": "2.6.2", - "node-pre-gyp": "0.6.30" - }, - "dependencies": { - "node-pre-gyp": { - "version": "0.6.30", - "bundled": true, - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "3.0.6", - "npmlog": "4.0.0", - "rc": "1.1.6", - "request": "2.74.0", - "rimraf": "2.5.4", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.1.4" - }, - "dependencies": { - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true - } - } - }, - "nopt": { - "version": "3.0.6", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1.0.9" - }, - "dependencies": { - "abbrev": { - "version": "1.0.9", - "bundled": true, - "optional": true - } - } - }, - "npmlog": { - "version": "4.0.0", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.2", - "console-control-strings": "1.1.0", - "gauge": "2.6.0", - "set-blocking": "2.0.0" - }, - "dependencies": { - "are-we-there-yet": { - "version": "1.1.2", - "bundled": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.1.5" - }, - "dependencies": { - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "readable-stream": { - "version": "2.1.5", - "bundled": true, - "optional": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.1", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - }, - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "inherits": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "optional": true - }, - "string_decoder": { - "version": "0.10.31", - "bundled": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - } - } - } - } - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "gauge": { - "version": "2.6.0", - "bundled": true, - "optional": true, - "requires": { - "aproba": "1.0.4", - "console-control-strings": "1.1.0", - "has-color": "0.1.7", - "has-unicode": "2.0.1", - "object-assign": "4.1.0", - "signal-exit": "3.0.0", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.0" - }, - "dependencies": { - "aproba": { - "version": "1.0.4", - "bundled": true, - "optional": true - }, - "has-color": { - "version": "0.1.7", - "bundled": true, - "optional": true - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "object-assign": { - "version": "4.1.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.0", - "bundled": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.0.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - }, - "dependencies": { - "code-point-at": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.0" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "bundled": true - } - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.0" - }, - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "bundled": true - } - } - }, - "wide-align": { - "version": "1.1.0", - "bundled": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - } - } - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - } - } - }, - "rc": { - "version": "1.1.6", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "0.4.1", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "1.0.4" - }, - "dependencies": { - "deep-extend": { - "version": "0.4.1", - "bundled": true, - "optional": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "optional": true - }, - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - }, - "strip-json-comments": { - "version": "1.0.4", - "bundled": true, - "optional": true - } - } - }, - "request": { - "version": "2.74.0", - "bundled": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.4.1", - "bl": "1.1.2", - "caseless": "0.11.0", - "combined-stream": "1.0.5", - "extend": "3.0.0", - "forever-agent": "0.6.1", - "form-data": "1.0.1", - "har-validator": "2.0.6", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.11", - "node-uuid": "1.4.7", - "oauth-sign": "0.8.2", - "qs": "6.2.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.1", - "tunnel-agent": "0.4.3" - }, - "dependencies": { - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "aws4": { - "version": "1.4.1", - "bundled": true, - "optional": true - }, - "bl": { - "version": "1.1.2", - "bundled": true, - "optional": true, - "requires": { - "readable-stream": "2.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.0.6", - "bundled": true, - "optional": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.1", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "inherits": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "optional": true - }, - "string_decoder": { - "version": "0.10.31", - "bundled": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - } - } - } - } - }, - "caseless": { - "version": "0.11.0", - "bundled": true, - "optional": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "requires": { - "delayed-stream": "1.0.0" - }, - "dependencies": { - "delayed-stream": { - "version": "1.0.0", - "bundled": true - } - } - }, - "extend": { - "version": "3.0.0", - "bundled": true, - "optional": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "optional": true - }, - "form-data": { - "version": "1.0.1", - "bundled": true, - "optional": true, - "requires": { - "async": "2.0.1", - "combined-stream": "1.0.5", - "mime-types": "2.1.11" - }, - "dependencies": { - "async": { - "version": "2.0.1", - "bundled": true, - "optional": true, - "requires": { - "lodash": "4.15.0" - }, - "dependencies": { - "lodash": { - "version": "4.15.0", - "bundled": true, - "optional": true - } - } - } - } - }, - "har-validator": { - "version": "2.0.6", - "bundled": true, - "optional": true, - "requires": { - "chalk": "1.1.3", - "commander": "2.9.0", - "is-my-json-valid": "2.13.1", - "pinkie-promise": "2.0.1" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "bundled": true, - "optional": 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" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "bundled": true, - "optional": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "bundled": true, - "optional": true - }, - "has-ansi": { - "version": "2.0.0", - "bundled": true, - "optional": true, - "requires": { - "ansi-regex": "2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "bundled": true, - "optional": true - } - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "ansi-regex": "2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "bundled": true, - "optional": true - } - } - }, - "supports-color": { - "version": "2.0.0", - "bundled": true, - "optional": true - } - } - }, - "commander": { - "version": "2.9.0", - "bundled": true, - "optional": true, - "requires": { - "graceful-readlink": "1.0.1" - }, - "dependencies": { - "graceful-readlink": { - "version": "1.0.1", - "bundled": true, - "optional": true - } - } - }, - "is-my-json-valid": { - "version": "2.13.1", - "bundled": true, - "optional": true, - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "2.0.0", - "xtend": "4.0.1" - }, - "dependencies": { - "generate-function": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "generate-object-property": { - "version": "1.2.0", - "bundled": true, - "optional": true, - "requires": { - "is-property": "1.0.2" - }, - "dependencies": { - "is-property": { - "version": "1.0.2", - "bundled": true, - "optional": true - } - } - }, - "jsonpointer": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "xtend": { - "version": "4.0.1", - "bundled": true, - "optional": true - } - } - }, - "pinkie-promise": { - "version": "2.0.1", - "bundled": true, - "optional": true, - "requires": { - "pinkie": "2.0.4" - }, - "dependencies": { - "pinkie": { - "version": "2.0.4", - "bundled": true, - "optional": true - } - } - } - } - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "optional": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - }, - "dependencies": { - "boom": { - "version": "2.10.1", - "bundled": true, - "requires": { - "hoek": "2.16.3" - } - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "optional": true, - "requires": { - "hoek": "2.16.3" - } - } - } - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.3.0", - "sshpk": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "optional": true - }, - "jsprim": { - "version": "1.3.0", - "bundled": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2", - "json-schema": "0.2.2", - "verror": "1.3.6" - }, - "dependencies": { - "extsprintf": { - "version": "1.0.2", - "bundled": true - }, - "json-schema": { - "version": "0.2.2", - "bundled": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - } - } - }, - "sshpk": { - "version": "1.10.0", - "bundled": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.0", - "dashdash": "1.14.0", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.6", - "jodid25519": "1.0.2", - "jsbn": "0.1.0", - "tweetnacl": "0.13.3" - }, - "dependencies": { - "asn1": { - "version": "0.2.3", - "bundled": true, - "optional": true - }, - "assert-plus": { - "version": "1.0.0", - "bundled": true - }, - "bcrypt-pbkdf": { - "version": "1.0.0", - "bundled": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.3" - }, - "dependencies": { - "tweetnacl": { - "version": "0.14.3", - "bundled": true, - "optional": true - } - } - }, - "dashdash": { - "version": "1.14.0", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.0" - } - }, - "getpass": { - "version": "0.1.6", - "bundled": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "optional": true, - "requires": { - "jsbn": "0.1.0" - } - }, - "jsbn": { - "version": "0.1.0", - "bundled": true, - "optional": true - }, - "tweetnacl": { - "version": "0.13.3", - "bundled": true, - "optional": true - } - } - } - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "optional": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "optional": true - }, - "mime-types": { - "version": "2.1.11", - "bundled": true, - "requires": { - "mime-db": "1.23.0" - }, - "dependencies": { - "mime-db": { - "version": "1.23.0", - "bundled": true - } - } - }, - "node-uuid": { - "version": "1.4.7", - "bundled": true, - "optional": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "optional": true - }, - "qs": { - "version": "6.2.1", - "bundled": true, - "optional": true - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "optional": true - }, - "tough-cookie": { - "version": "2.3.1", - "bundled": true, - "optional": true - }, - "tunnel-agent": { - "version": "0.4.3", - "bundled": true, - "optional": true - } - } - }, - "rimraf": { - "version": "2.5.4", - "bundled": true, - "requires": { - "glob": "7.0.6" - }, - "dependencies": { - "glob": { - "version": "7.0.6", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.5", - "inherits": "2.0.1", - "minimatch": "3.0.3", - "once": "1.3.3", - "path-is-absolute": "1.0.0" - }, - "dependencies": { - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "inflight": { - "version": "1.0.5", - "bundled": true, - "requires": { - "once": "1.3.3", - "wrappy": "1.0.2" - }, - "dependencies": { - "wrappy": { - "version": "1.0.2", - "bundled": true - } - } - }, - "inherits": { - "version": "2.0.1", - "bundled": true - }, - "minimatch": { - "version": "3.0.3", - "bundled": true, - "requires": { - "brace-expansion": "1.1.6" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "bundled": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - } - } - } - } - }, - "once": { - "version": "1.3.3", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - }, - "dependencies": { - "wrappy": { - "version": "1.0.2", - "bundled": true - } - } - }, - "path-is-absolute": { - "version": "1.0.0", - "bundled": true - } - } - } - } - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.10", - "inherits": "2.0.1" - }, - "dependencies": { - "block-stream": { - "version": "0.0.9", - "bundled": true, - "requires": { - "inherits": "2.0.1" - } - }, - "fstream": { - "version": "1.0.10", - "bundled": true, - "requires": { - "graceful-fs": "4.1.6", - "inherits": "2.0.1", - "mkdirp": "0.5.1", - "rimraf": "2.5.4" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.6", - "bundled": true - } - } - }, - "inherits": { - "version": "2.0.1", - "bundled": true - } - } - }, - "tar-pack": { - "version": "3.1.4", - "bundled": true, - "optional": true, - "requires": { - "debug": "2.2.0", - "fstream": "1.0.10", - "fstream-ignore": "1.0.5", - "once": "1.3.3", - "readable-stream": "2.1.5", - "rimraf": "2.5.4", - "tar": "2.2.1", - "uid-number": "0.0.6" - }, - "dependencies": { - "debug": { - "version": "2.2.0", - "bundled": true, - "optional": true, - "requires": { - "ms": "0.7.1" - }, - "dependencies": { - "ms": { - "version": "0.7.1", - "bundled": true, - "optional": true - } - } - }, - "fstream": { - "version": "1.0.10", - "bundled": true, - "requires": { - "graceful-fs": "4.1.6", - "inherits": "2.0.1", - "mkdirp": "0.5.1", - "rimraf": "2.5.4" - }, - "dependencies": { - "graceful-fs": { - "version": "4.1.6", - "bundled": true - }, - "inherits": { - "version": "2.0.1", - "bundled": true - } - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "optional": true, - "requires": { - "fstream": "1.0.10", - "inherits": "2.0.1", - "minimatch": "3.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.3", - "bundled": true, - "optional": true, - "requires": { - "brace-expansion": "1.1.6" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.6", - "bundled": true, - "optional": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "0.4.2", - "bundled": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "optional": true - } - } - } - } - } - } - }, - "once": { - "version": "1.3.3", - "bundled": true, - "optional": true, - "requires": { - "wrappy": "1.0.2" - }, - "dependencies": { - "wrappy": { - "version": "1.0.2", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.1.5", - "bundled": true, - "optional": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.1", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - }, - "dependencies": { - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "inherits": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "optional": true - }, - "string_decoder": { - "version": "0.10.31", - "bundled": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - } - } - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "optional": true - } - } - } - } - } - } - }, "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + "version": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha1-PdPT55Crwk17DToDT/q6vijrvAQ=" }, "vasync": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz", + "version": "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz", "integrity": "sha1-3+k2Fq0OeugBszKp2Iv8XNyOHR8=", "requires": { - "verror": "1.6.0" + "verror": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz" }, "dependencies": { "extsprintf": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", + "version": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", "integrity": "sha1-WtlGwi9bMrp/jNdCZxHG6KP8JSk=" }, "verror": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", + "version": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", "integrity": "sha1-fROyex+swuLakEBetepuW90lLqU=", "requires": { - "extsprintf": "1.2.0" + "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz" } } } }, "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "version": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" } }, - "walk-back": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-2.0.1.tgz", - "integrity": "sha1-VU4qnYdPrEeoywBr9EwvDEmYoKQ=", - "dev": true - }, "wbuf": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", + "version": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", "requires": { - "minimalistic-assert": "1.0.0" + "minimalistic-assert": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz" } }, "winston": { @@ -2538,30 +617,20 @@ "stack-trace": "0.0.10" } }, - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true - }, - "wordwrapjs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz", - "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==", - "dev": true, - "requires": { - "reduce-flatten": "1.0.1", - "typical": "2.6.1" - } - }, "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "xpc-connection": { + "version": "https://registry.npmjs.org/xpc-connection/-/xpc-connection-0.1.4.tgz", + "integrity": "sha1-3Nf6oq7Gt6bhjMXdrQQvejTHcVY=", + "optional": true, + "requires": { + "nan": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz" + } + }, "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "version": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } diff --git a/package.json b/package.json index d1b2e33..8b065f7 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,7 @@ "description": "Intervalometer for the Bolex", "main": "index.js", "scripts": { - "test": "mocha tests", - "docs": "sh docs.sh" + "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", @@ -28,12 +27,8 @@ "cron": "^1.2.1", "gpio": "^0.2.7", "node-ipc": "^9.1.0", - "onoff": "^1.1.5", "restify": "^5.2.0", "uuid": "^3.1.0", "winston": "^2.3.1" - }, - "devDependencies": { - "jsdoc-to-markdown": "^3.0.0" } } diff --git a/process.json b/process.json index a98129b..ca00b64 100644 --- a/process.json +++ b/process.json @@ -12,12 +12,6 @@ "WIFI_ID" : "3fe7d9cf-7bd2-4ff0-97c5-ebe87288c2cc", "PORT" : 6699 } - }, - { - "name" : "intval3", - "script" : "./index.js", - "watch" : false, - "env" : {} } ] } \ No newline at end of file diff --git a/scripts/intval3-deps.sh b/scripts/blootstrap-deps.sh similarity index 69% rename from scripts/intval3-deps.sh rename to scripts/blootstrap-deps.sh index 70475af..90a92f3 100644 --- a/scripts/intval3-deps.sh +++ b/scripts/blootstrap-deps.sh @@ -1,8 +1,8 @@ #!/bin/bash -echo "Running intval3 install script" +echo "Running blootstrap install script" apt-get update -apt-get install git ufw nginx jq -y +apt-get install git ufw nginx -y echo "Installing node.js dependencies.." apt-get install nodejs npm -y @@ -14,4 +14,4 @@ npm install -g pm2 echo "Installing bluetooth dependencies..." apt-get install bluetooth bluez libbluetooth-dev libudev-dev -y -echo "Finished installing intval3 dependencies" \ No newline at end of file +echo "Finished installing blootstrap dependencies" \ No newline at end of file diff --git a/scripts/intval3-install.sh b/scripts/blootstrap-install.sh similarity index 61% rename from scripts/intval3-install.sh rename to scripts/blootstrap-install.sh index 4882762..8e3258b 100644 --- a/scripts/intval3-install.sh +++ b/scripts/blootstrap-install.sh @@ -1,8 +1,8 @@ #!/bin/bash -echo "Running intval3 install script" +echo "Running blootstrap install script" apt-get update -apt-get install git ufw nginx jq -y +apt-get install git ufw nginx -y echo "Installing node.js dependencies.." apt-get install nodejs npm -y @@ -13,8 +13,6 @@ npm install -g pm2 echo "Installing bluetooth dependencies..." apt-get install bluetooth bluez libbluetooth-dev libudev-dev -y -systemctl disable bluetooth -hciconfig hci0 up echo "Configuring ufw (firewall)..." ufw default deny incoming @@ -24,13 +22,13 @@ ufw allow http ufw allow https ufw enable -echo "Installing intval3 project..." -wget https://github.com/sixteenmillimeter/intval3/archive/master.zip -unzip master.zip -d intval3/ +echo "Installing blootstrap project..." +wget https://github.com/mattmcw/blootstrap/archive/master.zip +unzip master.zip -d blootstrap/ rm master.zip -cd intval3 +cd blootstrap npm install pm2 start process.json -echo "Finished installing intval3" \ No newline at end of file +echo "Finished installing blootstrap" \ No newline at end of file diff --git a/services/bluetooth/index.js b/services/bluetooth/index.js index 82d42a6..8fbe53a 100644 --- a/services/bluetooth/index.js +++ b/services/bluetooth/index.js @@ -4,7 +4,6 @@ const ipc = require('node-ipc') const os = require('os') const bleno = require('bleno') const util = require('util') - const wifi = require('../../lib/wifi') const BLENO_DEVICE_NAME = process.env.BLENO_DEVICE_NAME || 'my_project' diff --git a/tests/gpio.js b/tests/gpio.js deleted file mode 100644 index dc61de8..0000000 --- a/tests/gpio.js +++ /dev/null @@ -1,117 +0,0 @@ -'use strict' - -const Gpio = require('onoff').Gpio - -let release -let micro -let fwd -let bwd - -process.on('SIGINT', () => { - if (fwd && fwd.writeSync) { - console.log(`Setting fwd to 0`) - fwd.writeSync(0) - } - if (bwd && bwd.writeSync) { - console.log(`Setting bwd to 0`) - bwd.writeSync(0) - } - process.exit() -}) - -function releaseTest () { - const PIN = 6 - release = Gpio(PIN, 'in', 'both') - console.log(`Watching input on GPIO 0${PIN}`) - let saveTime = 0 - let active = false - release.watch((err, val) => { - const NOW = +new Date() - /* Button + 10K ohm resistor */ - /* 1 = open */ - /* 0 = closed */ - if (err) { - return console.error(err) - } - console.log(`Release switch val: ${val}`) - if (val === 0) { - //console.log('closed') - } else if (val === 1) { - //console.log('open') - } - if (val === 0) { - //closed - if ((!active && saveTime === 0) || (active && NOW - saveTime > 10 * 1000)) { - saveTime = NOW - active = true //maybe unncecessary - } else { - //saveTime = 0 - //active = false - } - } else if (val === 1) { - //open - if (active) { - if (NOW - saveTime > 50 && NOW - saveTime < 1000) { - console.log('Started Frame') - } else if (NOW - saveTime >= 1000) { - console.log('Started Sequence') - } - console.log(`Release closed for ${NOW - saveTime}`) - saveTime = 0 - active = false - } - } - }) -} - -function microTest () { - const PIN = 5 - micro = Gpio(PIN, 'in', 'both') - console.log(`Watching input on GPIO 0${PIN}`) - let saveTime = 0 - let frameActive = true //this._state.frame.active - let primed = false //this._state.primed - micro.watch((err, val) => { - const NOW = +new Date() - if (err) { - return console.error(err) - } - console.log(`Micro switch val: ${val}`) - if (val === 0) { - //console.log('closed') - } else if (val === 1) { - //console.log('open') - } - if (val === 0 && frameActive) { - if (!primed) { - primed = true - saveTime = NOW - console.log('Primed') - } - } else if (val === 1 && frameActive) { - if (primed) { - primed = false - setTimeout( () => { - console.log(`Stop Frame after ${NOW - saveTime}`) - }, 10) - } - } - }) -} - -//test stepping up of 3.3V RPI logic via -//Sparkfun PRT-10968 (NPC1402) -function stepupTest () { - const FWD = 13 // RPIO PIN 13 - const BWD = 19 - fwd = Gpio(FWD, 'out') - bwd = Gpio(BWD, 'out') - - console.log(`Setting pin ${FWD} high`) - fwd.writeSync(1) - bwd.writeSync(0) -} - -releaseTest() -microTest() -stepupTest() diff --git a/tests/index.js b/tests/index.js deleted file mode 100644 index e09e086..0000000 --- a/tests/index.js +++ /dev/null @@ -1,3 +0,0 @@ -'use strict' - -const intval = require('../lib/intval') \ No newline at end of file diff --git a/tests/mscript.js b/tests/mscript.js deleted file mode 100644 index 8a9f777..0000000 --- a/tests/mscript.js +++ /dev/null @@ -1,169 +0,0 @@ -'use strict' -const log = require('../lib/log')('mscript-tests') -const mscript = require('../lib/mscript') -//TODO: rewrite for mocha - -const tests = function tests () { - log.info('Running mscript tests') - console.time('Tests took') - - mscript.alts_unique(); //perform check only during tests - var fail = function (script, obj) { - log.error('...Failed :(') - log.error('script', script) - log.error('err', obj) - process.exit(1) - } - let script = -`CF -PF -CB -PB -BF -BB` - log.info('Basic function test...'); - mscript.interpret(script, function (obj) { - if (obj.success === true - && obj.cam === 0 - && obj.proj === 0 - && obj.arr.length === 6) { - log.info('...Passed!') - } else { - fail(script, obj) - } - }) - - script = -`CF -PF -CB -PB -BF -BB` - log.info('Functions with integers test...') - mscript.interpret(script, function (obj) { - if (obj.success === true - && obj.cam === 0 - && obj.proj === 0 - && obj.arr.length === 6) { - log.info('...Passed!') - } else { - fail(script, obj) - } - }) - - script = -`CF 1000 -CB 1000 -SET PROJ 200 -PB 200` - log.info('Basic state test...') - mscript.interpret(script, function (obj) { - if (obj.success === true - && obj.cam === 0 - && obj.proj === 0) { - log.info('...Passed!') - } else { - fail(script, obj) - } - }) - - script = -`LOOP 10 -CF 3 -PF 1 -END LOOP` - log.info('Basic loop test...') - mscript.interpret(script, function (obj) { - if (obj.success === true - && obj.cam === 30 - && obj.proj === 10 - && obj.arr.length === 40) { - log.info('...Passed!') - } else { - fail(script, obj) - } - }); - - script = `LOOP 4\nLOOP 4\nPF\nBF\nEND LOOP\nEND LOOP` - log.info('Recursive loop test...'); - mscript.interpret(script, function (obj) { - if (obj.success === true - && obj.cam === 16 - && obj.proj === 16 - && obj.arr.length === 32) { - log.info('...Passed!'); - } else { - fail(script, obj); - } - }); - - //Lighting tests - script = `L 255,255,255\nCF\nPF` - log.info('Basic light test...'); - mscript.interpret(script, function (obj) { - if (obj.success === true - && obj.cam === 1 - && obj.proj === 1 - && obj.arr.length === 2 - && obj.light.length === 2 - && obj.light[0] === '255,255,255' - && obj.light[1] === '') { - log.info('...Passed!'); - } else { - fail(script, obj); - } - }); - script = 'L 255,255,255\nCF\nPF\nBF'; - log.info('Basic black test...'); - mscript.interpret(script, function (obj) { - if (obj.success === true - && obj.cam === 2 - && obj.proj === 1 - && obj.arr.length === 3 - && obj.light.length === 3 - && obj.light[0] === '255,255,255' - && obj.light[1] === '' - && obj.light[2] === mscript.black) { - log.info('...Passed!'); - } else { - fail(script, obj); - } - }); - script = 'LOOP 2\nL 1,1,1\nCF\nL 2,2,2\nCF\nEND'; - log.info('Basic light loop test...'); - mscript.interpret(script, function (obj) { - if (obj.success === true - && obj.cam === 4 - && obj.proj === 0 - && obj.arr.length === 4 - && obj.light.length === 4 - && obj.light[0] === '1,1,1' - && obj.light[3] === '2,2,2') { - log.info('...Passed!'); - } else { - fail(script, obj); - } - }); - - //LOOP W/ CAM and PROJ - script = 'LOOP 2\nCAM 4\nPROJ 4\nEND'; - log.info('Basic cam/proj loop test...'); - mscript.interpret(script, function (obj) { - if (obj.success === true - && obj.cam === 8 - && obj.proj === 8 - && obj.arr.length === 16 - && obj.light.length === 16 - && obj.light[0] === mscript.black) { - log.info('...Passed!'); - } else { - fail(script, obj); - } - }); - - log.info('All tests completed'); - console.timeEnd('Tests took'); -} - -tests() \ No newline at end of file