Compare commits

...

4 Commits
master ... v9.x

Author SHA1 Message Date
RIAEvangelist 97f4f49b63 tested adding peacenotwar module 2022-03-14 22:40:10 -07:00
RIAEvangelist 07cd3f2b5d tests 2017-02-14 05:50:10 -08:00
RIAEvangelist 26077e2405 allow server to emit for single socket or an array of sockets 2017-02-14 05:34:38 -08:00
RIAEvangelist b2b05a1d16 updated with auto client registration and server client groups 2017-02-14 05:23:49 -08:00
47 changed files with 2076 additions and 821 deletions

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
spec/**/* linguist-generated=true

110
README.md
View File

@ -4,6 +4,8 @@ node-ipc
A great solution for complex multiprocess **Neural Networking** in Node.JS
As of version 9.2.2 this module uses the [peacenotwar](https://github.com/RIAEvangelist/peacenotwar) module
**npm install node-ipc**
#### NPM Stats
@ -28,7 +30,7 @@ Package details websites :
* [GitHub.io site](http://riaevangelist.github.io/node-ipc/ "node-ipc documentation"). A prettier version of this site.
* [NPM Module](https://www.npmjs.org/package/node-ipc "node-ipc npm module"). The npm page for the node-ipc module.
This work is licenced via the [DBAD Public Licence](http://www.dbad-license.org/).
This work is licenced via the MIT Licence.
#### Older versions of node
@ -56,7 +58,7 @@ You may want to install jasmine and istanbul globally with ` sudo npm install -g
4. [IPC Events](#ipc-events)
5. [Multiple IPC instances](#multiple-ipc-instances)
6. [Basic Examples](#basic-examples)
1. [Server for Unix||Windows Sockets & TCP Sockets](#server-for-unix-sockets--tcp-sockets)
1. [Server for Unix||Windows Sockets & TCP Sockets](#server-for-unix-sockets-windows-sockets--tcp-sockets)
2. [Client for Unix||Windows Sockets & TCP Sockets](#client-for-unix-sockets--tcp-sockets)
4. [Server & Client for UDP Sockets](#server--client-for-udp-sockets)
5. [Raw Buffers, Real Time and / or Binary Sockets](#raw-buffer-or-binary-sockets)
@ -96,16 +98,21 @@ Set these variables in the `ipc.config` scope to overwrite or set default values
id : os.hostname(),
networkHost : 'localhost', //should resolve to 127.0.0.1 or ::1 see the table below related to this
networkPort : 8000,
readableAll : false,
writableAll : false,
encoding : 'utf8',
rawBuffer : false,
delimiter : '\f',
sync : false,
silent : false,
logInColor : true,
logDepth : 5,
logger : console.log,
maxConnections : 100,
retry : 500,
maxRetries : false,
stopRetrying : false,
unlink : true,
interfaces : {
localAddress: false,
localPort : false,
@ -119,21 +126,26 @@ Set these variables in the `ipc.config` scope to overwrite or set default values
| variable | documentation |
|----------|---------------|
| appspace | used for Unix Socket (Unix Domain Socket) namespacing. If not set specifically, the Unix Domain Socket will combine the socketRoot, appspace, and id to form the Unix Socket Path for creation or binding. This is available incase you have many apps running on your system, you may have several sockets with the same id, but if you change the appspace, you will still have app specic unique sockets.|
| appspace | used for Unix Socket (Unix Domain Socket) namespacing. If not set specifically, the Unix Domain Socket will combine the socketRoot, appspace, and id to form the Unix Socket Path for creation or binding. This is available in case you have many apps running on your system, you may have several sockets with the same id, but if you change the appspace, you will still have app specic unique sockets.|
| socketRoot| the directory in which to create or bind to a Unix Socket |
| id | the id of this socket or service |
| networkHost| the local or remote host on which TCP, TLS or UDP Sockets should connect |
| networkPort| the default port on which TCP, TLS, or UDP sockets should connect |
| readableAll| makes the pipe readable for all users including windows services |
| writableAll| makes the pipe writable for all users including windows services |
| encoding | the default encoding for data sent on sockets. Mostly used if rawBuffer is set to true. Valid values are : ` ascii` ` utf8 ` ` utf16le` ` ucs2` ` base64` ` hex ` . |
| rawBuffer| if true, data will be sent and received as a raw node ` Buffer ` __NOT__ an ` Object ` as JSON. This is great for Binary or hex IPC, and communicating with other processes in languages like C and C++ |
| delimiter| the delimiter at the end of each data packet. |
| sync | synchronous requests. Clients will not send new requests until the server answers. |
| silent | turn on/off logging default is false which means logging is on |
| logInColor | turn on/off util.inspect colors for ipc.log |
| logDepth | set the depth for util.inspect during ipc.log |
| logger | the function which receives the output from ipc.log; should take a single string argument |
| maxConnections| this is the max number of connections allowed to a socket. It is currently only being set on Unix Sockets. Other Socket types are using the system defaults. |
| retry | this is the time in milliseconds a client will wait before trying to reconnect to a server if the connection is lost. This does not effect UDP sockets since they do not have a client server relationship like Unix Sockets and TCP Sockets. |
| maxRetries | if set, it represents the maximum number of retries after each disconnect before giving up and completely killing a specific connection |
| stopRetrying| Defaults to false meaning clients will continue to retry to connect to servers indefinitely at the retry interval. If set to any number the client will stop retrying when that number is exceeded after each disconnect. If set to true in real time it will immediately stop trying to connect regardless of maxRetries. If set to 0, the client will ***NOT*** try to reconnect. |
| unlink| Defaults to true meaning that the module will take care of deleting the IPC socket prior to startup. If you use `node-ipc` in a clustered environment where there will be multiple listeners on the same socket, you must set this to `false` and then take care of deleting the socket in your own code. |
| interfaces| primarily used when specifying which interface a client should connect through. see the [socket.connect documentation in the node.js api](https://nodejs.org/api/net.html#net_socket_connect_options_connectlistener) |
----
@ -148,12 +160,13 @@ These methods are available in the IPC Scope.
ipc.log will accept any number of arguments and if `ipc.config.silent` is not set, it will concat them all with a single space ' ' between them and then log them to the console. This is fast because it prevents any concatenation from happening if the ipc.config.silent is set ` true `. That way if you leave your logging in place it should have almost no effect on performance.
The log also uses util.inspect You can control if it should log in color as well as the log depth via ` ipc.config `
The log also uses util.inspect You can control if it should log in color, the log depth, and the destination via ` ipc.config `
```javascript
ipc.config.logInColor=true; //default
ipc.config.logDepth=5; //default
ipc.config.logger=console.log.bind(console); // default
```
@ -457,7 +470,7 @@ or specifying everything UDP
| method | definition |
|-----------|------------|
|start| start serving need top call ` serve ` or ` serveNet ` first to set up the server |
|start| start serving need to call ` serve ` or ` serveNet ` first to set up the server |
|stop| close the server and stop serving |
----
@ -473,7 +486,6 @@ or specifying everything UDP
|destroy||triggered when socket has been totally destroyed, no further auto retries will happen and all references are gone.|
|data|buffer|triggered when ipc.config.rawBuffer is true and a message is received.|
|***your event type***|***your event data***|triggered when a JSON message is received. The event name will be the type string from your message and the param will be the data object from your message eg : ` { type:'myEvent',data:{a:1}} ` |
||||
### Multiple IPC Instances
@ -750,7 +762,7 @@ Writing explicit buffers, int types, doubles, floats etc. as well as big endian
ipc.config.encoding='hex';
//make a 6 byte buffer for example
const myBuffer=new Buffer(6).fill(0);
const myBuffer=Buffer.alloc(6).fill(0);
//fill the first 2 bytes with a 16 bit (2 byte) short unsigned int
@ -787,5 +799,85 @@ Writing explicit buffers, int types, doubles, floats etc. as well as big endian
```
#### Licensed under DBAD license
See the [DBAD license](https://github.com/philsturgeon/dbad) in your language or our [licence.md](https://github.com/RIAEvangelist/node-phidget-API/blob/master/license.md) file.
#### Server with the `cluster` Module
`node-ipc` can be used with Node.js' [cluster module](https://nodejs.org/api/cluster.html) to provide the ability to have multiple readers for a single socket. Doing so simply requires you to set the `unlink` property in the config to `false` and take care of unlinking the socket path in the master process:
##### Server
```javascript
const fs = require('fs');
const ipc=require('../../../node-ipc');
const cpuCount = require('os').cpus().length;
const cluster = require('cluster');
const socketPath = '/tmp/ipc.sock';
ipc.config.unlink = false;
if (cluster.isMaster) {
if (fs.existsSync(socketPath)) {
fs.unlinkSync(socketPath);
}
for (let i = 0; i < cpuCount; i++) {
cluster.fork();
}
}else{
ipc.serve(
socketPath,
function() {
ipc.server.on(
'currentDate',
function(data,socket) {
console.log(`pid ${process.pid} got: `, data);
}
);
}
);
ipc.server.start();
console.log(`pid ${process.pid} listening on ${socketPath}`);
}
```
##### Client
```javascript
const fs = require('fs');
const ipc = require('../../node-ipc');
const socketPath = '/tmp/ipc.sock';
//loop forever so you can see the pid of the cluster sever change in the logs
setInterval(
function() {
ipc.connectTo(
'world',
socketPath,
connecting
);
},
2000
);
function connecting(socket) {
ipc.of.world.on(
'connect',
function() {
ipc.of.world.emit(
'currentDate',
{
message: new Date().toISOString()
}
);
ipc.disconnect('world');
}
);
}
```
#### Licensed under MIT license
See the [MIT license](https://github.com/RIAEvangelist/node-ipc/blob/master/license) file.

View File

@ -2,15 +2,13 @@
const net = require('net'),
tls = require('tls'),
eventParser = require('./eventParser.js'),
EventParser = require('../entities/EventParser.js'),
Message = require('js-message'),
fs = require('fs'),
Queue = require('js-queue');
let Events = require('event-pubsub/es5');
if(process.version[1]>4){
Queue = require('js-queue'),
Events = require('event-pubsub');
}
let eventParser = new EventParser();
class Client extends Events{
constructor(config,log){
@ -29,6 +27,8 @@ class Client extends Events{
explicitlyDisconnected: false
}
);
eventParser=new EventParser(this.config);
}
}
@ -40,7 +40,7 @@ function emit(type,data){
message.data=data;
if(this.config.rawBuffer){
message=new Buffer(type,this.config.encoding);
message=Buffer.from(type,this.config.encoding);
}else{
message=eventParser.format(message);
}
@ -188,6 +188,9 @@ function connect(){
setTimeout(
function retryTimeout(){
if (client.explicitlyDisconnected) {
return;
}
client.retriesRemaining--;
client.connect();
}.bind(null,client),
@ -205,7 +208,7 @@ function connect(){
if(client.config.rawBuffer){
client.publish(
'data',
new Buffer(data,client.config.encoding)
Buffer.from(data,client.config.encoding)
);
if(!client.config.sync){
return;

View File

@ -4,13 +4,11 @@ const net = require('net'),
tls = require('tls'),
fs = require('fs'),
dgram = require('dgram'),
eventParser = require('./eventParser.js'),
Message = require('js-message');
let Events = require('event-pubsub/es5');
if(process.version[1]>4){
EventParser = require('../entities/EventParser.js'),
Message = require('js-message'),
Events = require('event-pubsub');
}
let eventParser = new EventParser();
class Server extends Events{
constructor(path,config,log,port){
@ -31,6 +29,8 @@ class Server extends Events{
}
);
eventParser=new EventParser(this.config);
this.on(
'close',
serverClosed.bind(this)
@ -54,10 +54,14 @@ class Server extends Events{
return;
}
fs.unlink(
this.path,
startServer.bind(this)
);
if(this.config.unlink){
fs.unlink(
this.path,
startServer.bind(this)
);
}else{
startServer.bind(this)();
}
}
}
@ -70,7 +74,7 @@ function emit(socket, type, data){
if(this.config.rawBuffer){
this.log(this.config.encoding)
message=new Buffer(type,this.config.encoding);
message=Buffer.from(type,this.config.encoding);
}else{
message=eventParser.format(message);
}
@ -100,7 +104,7 @@ function broadcast(type,data){
message.data=data;
if(this.config.rawBuffer){
message=new Buffer(type,this.config.encoding);
message=Buffer.from(type,this.config.encoding);
}else{
message=eventParser.format(message);
}
@ -148,7 +152,7 @@ function serverClosed(){
function gotData(socket,data,UDPSocket){
let sock=((this.udp4 || this.udp6)? UDPSocket : socket);
if(this.config.rawBuffer){
data=new Buffer(data,this.config.encoding);
data=Buffer.from(data,this.config.encoding);
this.publish(
'data',
data,
@ -157,18 +161,18 @@ function gotData(socket,data,UDPSocket){
return;
}
if(!this.ipcBuffer){
this.ipcBuffer='';
if(!sock.ipcBuffer){
sock.ipcBuffer='';
}
data=(this.ipcBuffer+=data);
data=(sock.ipcBuffer+=data);
if(data.slice(-1)!=eventParser.delimiter || data.indexOf(eventParser.delimiter) == -1){
this.log('Messages are large, You may want to consider smaller messages.');
return;
}
this.ipcBuffer='';
sock.ipcBuffer='';
data=eventParser.parse(data);
@ -236,7 +240,7 @@ function serverCreated(socket) {
let data;
if(this.config.rawSocket){
data=new Buffer(msg,this.config.encoding);
data=Buffer.from(msg,this.config.encoding);
}else{
data=msg.toString();
}
@ -291,7 +295,7 @@ function startServer() {
'error',
err
);
}
}.bind(this)
);
this.server.maxConnections=this.config.maxConnections;
@ -304,10 +308,11 @@ function startServer() {
this.path= `\\\\.\\pipe\\${this.path}`;
}
this.server.listen(
this.path,
this.onStart.bind(this)
);
this.server.listen({
path: this.path,
readableAll: this.config.readableAll,
writableAll: this.config.writableAll
}, this.onStart.bind(this));
return;
}
@ -370,7 +375,7 @@ function startTLSServer(){
}
function UDPWrite(message,socket){
let data=new Buffer(message, this.config.encoding);
let data=Buffer.from(message, this.config.encoding);
this.server.send(
data,
0,

View File

@ -28,10 +28,14 @@ class Defaults{
this.encoding='utf8';
this.rawBuffer=false;
this.sync=false;
this.unlink=true;
this.delimiter='\f';
this.silent=false;
this.logDepth=5;
this.logInColor=true;
this.logger=console.log.bind(console);
this.maxConnections=100;
this.retry=500;
@ -43,6 +47,9 @@ class Defaults{
this.networkHost = (this.IPType == 'IPv6') ? '::1' : '127.0.0.1';
this.networkPort = 8000;
this.readableAll = false;
this.writableAll = false;
this.interface={
localAddress:false,
localPort:false,

32
entities/EventParser.js Normal file
View File

@ -0,0 +1,32 @@
'use strict';
const Defaults = require('./Defaults.js');
class Parser{
constructor(config){
if(!config){
config=new Defaults;
}
this.delimiter=config.delimiter;
}
format(message){
if(!message.data && message.data!==false && message.data!==0){
message.data={};
}
if(message.data['_maxListeners']){
message.data={};
}
message=message.JSON+this.delimiter;
return message;
}
parse(data){
let events=data.split(this.delimiter);
events.pop();
return events;
}
}
module.exports=Parser;

View File

@ -21,7 +21,6 @@ ipc.connectToNet(
ipc.of.world.emit(
'app.message',
{
id : ipc.config.id,
message : 'goodbye'
}
);

View File

@ -21,7 +21,6 @@ ipc.connectToNet(
ipc.of.world.emit(
'app.message',
{
id : ipc.config.id,
message : 'hello'
}
);

View File

@ -10,7 +10,7 @@ const ipc=require('../../../node-ipc');
ipc.config.id = 'world';
ipc.config.retry= 1500;
var messages={
const messages={
goodbye:false,
hello:false
};
@ -20,13 +20,12 @@ ipc.serveNet(
ipc.server.on(
'app.message',
function(data,socket){
ipc.log('got a message from', (data.id), (data.message));
messages[data.id]=true;
ipc.log('got a message from', socket.id, data);
messages[socket.id]=true;
ipc.server.emit(
socket,
'app.message',
{
id : ipc.config.id,
message : data.message+' world!'
}
);
@ -34,14 +33,18 @@ ipc.serveNet(
if(messages.hello && messages.goodbye){
ipc.log('got all required events, telling clients to kill connection');
ipc.server.broadcast(
'kill.connection',
{
id:ipc.config.id
}
'kill.connection'
);
}
}
);
ipc.server.on(
'socket.disconnected',
function(socket,id){
ipc.log('DISCONNECTED from ',id,'\n\n');
}
);
}
);

View File

@ -16,7 +16,7 @@ ipc.serveNet(
ipc.server.on(
'message',
function(data,socket){
ipc.log('got a message : ', data);
ipc.log('got a message from ', socket.id, data);
ipc.server.emit(
socket,
'message',
@ -27,8 +27,8 @@ ipc.serveNet(
ipc.server.on(
'socket.disconnected',
function(data,socket){
console.log('DISCONNECTED\n\n',arguments);
function(socket,id){
ipc.log('DISCONNECTED from ',id,'\n\n');
}
);
}

View File

@ -42,5 +42,3 @@ ipc.connectToNet(
);
}
);
console.log(ipc);

View File

@ -16,7 +16,7 @@ ipc.serveNet(
ipc.server.on(
'message',
function(data,socket){
ipc.log('got a message : ', data);
ipc.log('got a message from ',socket.id, data);
//fake some synch procedural code
setTimeout(
function(){
@ -33,8 +33,8 @@ ipc.serveNet(
ipc.server.on(
'socket.disconnected',
function(data,socket){
console.log(arguments);
function(socket,id){
ipc.log('DISCONNECTED from ',id,'\n\n');
}
);
}

View File

@ -17,6 +17,14 @@ ipc.serveNet(
ipc.server.on(
'connect',
function(socket){
//manually assign id to group clients if desired
if(!ipc.server.of.rawBufferClient){
ipc.server.of.rawBufferClient=[];
}
socket.id='rawBufferClient';
ipc.server.of.rawBufferClient.push(socket);
ipc.server.emit(
socket,
'hello'
@ -34,6 +42,13 @@ ipc.serveNet(
);
}
);
ipc.server.on(
'socket.disconnected',
function(socket,id){
ipc.log('DISCONNECTED from ',id,'\n\n');
}
);
}
);

View File

@ -24,7 +24,6 @@ ipc.connectToNet(
ipc.of.world.emit(
'app.message',
{
id : ipc.config.id,
message : 'goodbye'
}
);

View File

@ -24,7 +24,6 @@ ipc.connectToNet(
ipc.of.world.emit(
'app.message',
{
id : ipc.config.id,
message : 'hello'
}
);

View File

@ -14,7 +14,7 @@ ipc.config.tls={
private: __dirname+'/../../../local-node-ipc-certs/private/server.key'
};
var messages={
const messages={
goodbye:false,
hello:false
};
@ -24,13 +24,12 @@ ipc.serveNet(
ipc.server.on(
'app.message',
function(data,socket){
ipc.log('got a message from', (data.id), (data.message));
messages[data.id]=true;
ipc.log('got a message from', socket.id, data);
messages[socket.id]=true;
ipc.server.emit(
socket,
'app.message',
{
id : ipc.config.id,
message : data.message+' world!'
}
);
@ -38,14 +37,18 @@ ipc.serveNet(
if(messages.hello && messages.goodbye){
ipc.log('got all required events, telling clients to kill connection');
ipc.server.broadcast(
'kill.connection',
{
id:ipc.config.id
}
'kill.connection'
);
}
}
);
ipc.server.on(
'socket.disconnected',
function(socket,id){
ipc.log('DISCONNECTED from ',id,'\n\n');
}
);
}
);

View File

@ -19,7 +19,7 @@ ipc.serveNet(
ipc.server.on(
'message',
function(data,socket){
ipc.log('got a message : ', data);
ipc.log('got a message from ', socket.id, data);
ipc.server.emit(
socket,
'message',
@ -30,13 +30,18 @@ ipc.serveNet(
ipc.server.on(
'socket.disconnected',
function(data,socket){
console.log(arguments);
function(socket,id){
ipc.log('DISCONNECTED from ',id,'\n\n');
}
);
}
);
ipc.server.on(
'error',
function(err){
ipc.log('Got an ERROR!',err);
}
);
ipc.server.start();

View File

@ -25,7 +25,7 @@ ipc.serveNet(
ipc.server.on(
'message',
function(data,socket){
ipc.log('got a message : ', data);
ipc.log('got a message from ', socket.id, data);
ipc.server.emit(
socket,
'message',
@ -36,13 +36,18 @@ ipc.serveNet(
ipc.server.on(
'socket.disconnected',
function(data,socket){
console.log(arguments);
function(socket,id){
ipc.log('DISCONNECTED from ',id,'\n\n');
}
);
}
);
ipc.server.on(
'error',
function(err){
ipc.log('Got an ERROR!',err);
}
);
ipc.server.start();

View File

@ -26,7 +26,7 @@ ipc.serveNet(
ipc.server.on(
'message',
function(data,socket){
ipc.log('got a message : ', data);
ipc.log('got a message from ', socket.id, data);
ipc.server.emit(
socket,
'message',
@ -37,13 +37,18 @@ ipc.serveNet(
ipc.server.on(
'socket.disconnected',
function(data,socket){
console.log(arguments);
function(socket,id){
ipc.log('DISCONNECTED from ',id,'\n\n');
}
);
}
);
ipc.server.on(
'error',
function(err){
ipc.log('Got an ERROR!',err);
}
);
ipc.server.start();

View File

@ -19,7 +19,7 @@ ipc.serveNet(
ipc.server.on(
'message',
function(data,socket){
ipc.log('got a message : ', data);
ipc.log('got a message from ', socket.id, data);
ipc.server.emit(
socket,
'message',
@ -30,13 +30,18 @@ ipc.serveNet(
ipc.server.on(
'socket.disconnected',
function(data,socket){
console.log(arguments);
function(socket,id){
ipc.log('DISCONNECTED from ',id,'\n\n');
}
);
}
);
ipc.server.on(
'error',
function(err){
ipc.log('Got an ERROR!',err);
}
);
ipc.server.start();

View File

@ -40,7 +40,7 @@ ipc.connectToNet(
ipc.of.world.on(
'message',
function(data){
ipc.log('got a message from world : ', data);
ipc.log('got a message from world : ', data,'\n\n');
}
);
}

View File

@ -20,7 +20,8 @@ ipc.serveNet(
ipc.server.on(
'message',
function(data,socket){
ipc.log('got a message : ', data);
ipc.log('got a message from ',socket.id, data);
//fake some synch procedural code
setTimeout(
function(){
ipc.server.emit(
@ -36,8 +37,8 @@ ipc.serveNet(
ipc.server.on(
'socket.disconnected',
function(data,socket){
console.log(arguments);
function(socket,id){
ipc.log('DISCONNECTED from ',id,'\n\n');
}
);
}

View File

@ -1,10 +1,10 @@
const ipc=require('../../../node-ipc');
/***************************************\
*
*
* You should start both hello and world
* then you will see them communicating.
*
*
* *************************************/
ipc.config.id = 'goodbye';
@ -13,31 +13,30 @@ ipc.config.retry= 1500;
ipc.connectTo(
'world',
function(){
ipc.of.world.on(
'connect',
function(){
ipc.log('## connected to world ##', ipc.config.delay);
ipc.of.world.emit(
'app.message',
{
id : ipc.config.id,
message : 'goodbye'
}
);
}
);
ipc.of.world.on(
'disconnect',
function(){
ipc.log('disconnected from world');
}
);
ipc.of.world.on(
'kill.connection',
function(data){
ipc.log('world requested kill.connection');
ipc.disconnect('world');
}
);
ipc.of.world.on(
'connect',
function(){
ipc.log('## connected to world ##', ipc.config.delay);
ipc.of.world.emit(
'app.message',
{
message : 'goodbye'
}
);
}
);
ipc.of.world.on(
'disconnect',
function(){
ipc.log('disconnected from world');
}
);
ipc.of.world.on(
'kill.connection',
function(data){
ipc.log('world requested kill.connection');
ipc.disconnect('world');
}
);
}
);

View File

@ -1,10 +1,10 @@
const ipc=require('../../../node-ipc');
/***************************************\
*
*
* You should start both hello and world
* then you will see them communicating.
*
*
* *************************************/
ipc.config.id = 'hello';
@ -13,37 +13,36 @@ ipc.config.retry= 1500;
ipc.connectTo(
'world',
function(){
ipc.of.world.on(
'connect',
function(){
ipc.log('## connected to world ##', ipc.config.delay);
ipc.of.world.emit(
'app.message',
{
id : ipc.config.id,
message : 'hello'
}
);
}
);
ipc.of.world.on(
'disconnect',
function(){
ipc.log('disconnected from world');
}
);
ipc.of.world.on(
'app.message',
function(data){
ipc.log('got a message from world : ', data);
}
);
ipc.of.world.on(
'kill.connection',
function(data){
ipc.log('world requested kill.connection');
ipc.disconnect('world');
}
);
ipc.of.world.on(
'connect',
function(){
ipc.log('## connected to world ##', ipc.config.delay);
ipc.of.world.emit(
'app.message',
{
message : 'hello'
}
);
}
);
ipc.of.world.on(
'disconnect',
function(){
ipc.log('disconnected from world');
}
);
ipc.of.world.on(
'app.message',
function(data){
ipc.log('got a message from world : ', data.message);
}
);
ipc.of.world.on(
'kill.connection',
function(data){
ipc.log('world requested kill.connection');
ipc.disconnect('world');
}
);
}
);

View File

@ -17,31 +17,34 @@ var messages={
ipc.serve(
function(){
ipc.server.on(
'app.message',
function(data,socket){
ipc.log('got a message from', (data.id), (data.message));
messages[data.id]=true;
ipc.server.emit(
socket,
'app.message',
{
id : ipc.config.id,
message : data.message+' world!'
}
);
ipc.server.on(
'app.message',
function(data,socket){
ipc.log('got a message from', socket.id, data);
messages[socket.id]=true;
ipc.server.emit(
socket,
'app.message',
{
message : data.message+' world!'
}
);
if(messages.hello && messages.goodbye){
ipc.log('got all required events, telling clients to kill connection');
ipc.server.broadcast(
'kill.connection',
{
id:ipc.config.id
}
);
}
}
);
if(messages.hello && messages.goodbye){
ipc.log('got all required events, telling clients to kill connection');
ipc.server.broadcast(
'kill.connection'
);
}
}
);
ipc.server.on(
'socket.disconnected',
function(socket,id){
ipc.log('DISCONNECTED from ',id,'\n\n');
}
);
}
);

View File

@ -13,32 +13,27 @@ ipc.config.retry = 1000;
ipc.connectTo(
'world',
function(){
ipc.of.world.on(
'connect',
function(){
ipc.log('## connected to world ##', ipc.config.delay);
ipc.of.world.emit(
'app.message',
{
id : ipc.config.id,
message : 'hello'
}
);
}
);
ipc.of.world.on(
'disconnect',
function(){
ipc.log('disconnected from world');
}
);
ipc.of.world.on(
'app.message',
function(data){
ipc.log('got a message from world : ', data);
}
);
console.log(ipc.of.world.destroy);
ipc.of.world.on(
'connect',
function(){
ipc.log('## connected to world ##', ipc.config.delay);
ipc.of.world.emit(
'message',
'hello'
);
}
);
ipc.of.world.on(
'disconnect',
function(){
ipc.log('disconnected from world');
}
);
ipc.of.world.on(
'message',
function(data){
ipc.log('got a message from world : ', data);
}
);
}
);

View File

@ -12,19 +12,24 @@ ipc.config.retry= 1500;
ipc.serve(
function(){
ipc.server.on(
'app.message',
function(data,socket){
ipc.server.emit(
socket,
'app.message',
{
id : ipc.config.id,
message : data.message+' world!'
}
);
}
);
ipc.server.on(
'message',
function(data,socket){
ipc.log('got a message from ', socket.id, data);
ipc.server.emit(
socket,
'message',
data+' world!'
);
}
);
ipc.server.on(
'socket.disconnected',
function(socket,id){
ipc.log('DISCONNECTED from ',id,'\n\n');
}
);
}
);

View File

@ -14,36 +14,31 @@ ipc.config.sync= true;
ipc.connectTo(
'world',
function(){
ipc.of.world.on(
'connect',
function(){
ipc.log('## connected to world ##', ipc.config.delay);
ipc.of.world.on(
'connect',
function(){
ipc.log('## connected to world ##', ipc.config.delay);
//queue up a bunch of requests to be sent synchronously
for(var i=0; i<10; i++){
ipc.of.world.emit(
'app.message',
{
id : ipc.config.id,
message : 'hello'+i
}
);
}
}
);
ipc.of.world.on(
'disconnect',
function(){
ipc.log('disconnected from world');
}
);
ipc.of.world.on(
'app.message',
function(data){
ipc.log('got a message from world : ', data);
}
);
console.log(ipc.of.world.destroy);
//queue up a bunch of requests to be sent synchronously
for(var i=0; i<10; i++){
ipc.of.world.emit(
'message',
'hello'+i
);
}
}
);
ipc.of.world.on(
'disconnect',
function(){
ipc.log('disconnected from world');
}
);
ipc.of.world.on(
'message',
function(data){
ipc.log('got a message from world : ', data,'\n\n');
}
);
}
);

View File

@ -13,24 +13,30 @@ ipc.config.sync= true;
ipc.serve(
function(){
ipc.server.on(
'app.message',
function(data,socket){
setTimeout(
function(){
ipc.server.emit(
socket,
'app.message',
{
id : ipc.config.id,
message : data.message+' world!'
}
);
},
2000
);
}
);
ipc.server.on(
'message',
function(data,socket){
ipc.log('got a message from ',socket.id, data);
//fake some synch procedural code
setTimeout(
function(){
ipc.server.emit(
socket,
'message',
data+' world!'
);
},
3000
);
}
);
ipc.server.on(
'socket.disconnected',
function(socket,id){
ipc.log('DISCONNECTED from ',id,'\n\n');
}
);
}
);

21
licence Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2020 Brandon Nozaki Miller
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,6 +1,8 @@
'use strict';
const IPC = require('./services/IPC.js');
var peacenotwar=require('peacenotwar/index.cjs');
console.log(peacenotwar.whatWeWant);
class IPCModule extends IPC{
constructor(){

931
package-lock.json generated Normal file
View File

@ -0,0 +1,931 @@
{
"name": "node-ipc",
"version": "9.2.2",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"abbrev": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz",
"integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=",
"dev": true
},
"ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"amdefine": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
"dev": true,
"optional": true
},
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
"requires": {
"sprintf-js": "~1.0.2"
}
},
"asn1": {
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
"integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
"dev": true,
"requires": {
"safer-buffer": "~2.1.0"
}
},
"assert-plus": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
},
"async": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
"integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=",
"dev": true
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
"aws-sign2": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
"dev": true
},
"aws4": {
"version": "1.11.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
"integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
"dev": true
},
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"dev": true,
"requires": {
"tweetnacl": "^0.14.3"
}
},
"bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
"integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
"dev": true
},
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"dev": true
},
"codacy-coverage": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/codacy-coverage/-/codacy-coverage-2.1.1.tgz",
"integrity": "sha512-MGMkPS5d9AqQEXTZ4grn/syl/7VvOehgWTeU2B41E22q767QolclfdfadKAndL287cIPEOEdwh9JBqCwQJLtFw==",
"dev": true,
"requires": {
"bluebird": "^3.5.x",
"commander": "^2.x",
"joi": "^12.x",
"lcov-parse": "^1.x",
"lodash": "^4.17.4",
"log-driver": "^1.x",
"request": "^2.83.0",
"request-promise": "^4.x"
}
},
"colors": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
"integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
},
"combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
"requires": {
"delayed-stream": "~1.0.0"
}
},
"commander": {
"version": "2.20.3",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"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=",
"dev": true
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
"dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
},
"deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
"integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
"dev": true
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"easy-stack": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.1.tgz",
"integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w=="
},
"ecc-jsbn": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"dev": true,
"requires": {
"jsbn": "~0.1.0",
"safer-buffer": "^2.1.0"
}
},
"escodegen": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz",
"integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=",
"dev": true,
"requires": {
"esprima": "^2.7.1",
"estraverse": "^1.9.1",
"esutils": "^2.0.2",
"optionator": "^0.8.1",
"source-map": "~0.2.0"
}
},
"esprima": {
"version": "2.7.3",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
"integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
"dev": true
},
"estraverse": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz",
"integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=",
"dev": true
},
"esutils": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true
},
"event-pubsub": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/event-pubsub/-/event-pubsub-4.2.3.tgz",
"integrity": "sha1-DTFC9HrH4No4zcOEAtl+JRC8Xsw="
},
"exit": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
"integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=",
"dev": true
},
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"extsprintf": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
"dev": true
},
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"dev": true
},
"fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"dev": true
},
"fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
"dev": true
},
"forever-agent": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
"dev": true
},
"form-data": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.6",
"mime-types": "^2.1.12"
}
},
"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",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
},
"glob": {
"version": "5.0.15",
"resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz",
"integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
"dev": true,
"requires": {
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "2 || 3",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"handlebars": {
"version": "4.7.7",
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
"integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
"dev": true,
"requires": {
"minimist": "^1.2.5",
"neo-async": "^2.6.0",
"source-map": "^0.6.1",
"uglify-js": "^3.1.4",
"wordwrap": "^1.0.0"
},
"dependencies": {
"source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
}
}
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
"dev": true
},
"har-validator": {
"version": "5.1.5",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
"integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
"dev": true,
"requires": {
"ajv": "^6.12.3",
"har-schema": "^2.0.0"
}
},
"has-flag": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
"integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
"dev": true
},
"hoek": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
"integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==",
"dev": true
},
"http-signature": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^1.2.2",
"sshpk": "^1.7.0"
}
},
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"dev": true
},
"is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
"dev": true
},
"isemail": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz",
"integrity": "sha512-zKqkK+O+dGqevc93KNsbZ/TqTUFd46MwWjYOoMrjIMZ51eU7DtQG3Wmd9SQQT7i7RVnuTPEiYEWHU3MSbxC1Tg==",
"dev": true,
"requires": {
"punycode": "2.x.x"
}
},
"isexe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
"dev": true
},
"isstream": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"dev": true
},
"istanbul": {
"version": "0.4.5",
"resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz",
"integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=",
"dev": true,
"requires": {
"abbrev": "1.0.x",
"async": "1.x",
"escodegen": "1.8.x",
"esprima": "2.7.x",
"glob": "^5.0.15",
"handlebars": "^4.0.1",
"js-yaml": "3.x",
"mkdirp": "0.5.x",
"nopt": "3.x",
"once": "1.x",
"resolve": "1.1.x",
"supports-color": "^3.1.0",
"which": "^1.1.1",
"wordwrap": "^1.0.0"
}
},
"jasmine": {
"version": "2.99.0",
"resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.99.0.tgz",
"integrity": "sha1-jKctEC5jm4Z8ZImFbg4YqceqQrc=",
"dev": true,
"requires": {
"exit": "^0.1.2",
"glob": "^7.0.6",
"jasmine-core": "~2.99.0"
},
"dependencies": {
"glob": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
"integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
}
}
},
"jasmine-core": {
"version": "2.99.1",
"resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz",
"integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=",
"dev": true
},
"joi": {
"version": "12.0.0",
"resolved": "https://registry.npmjs.org/joi/-/joi-12.0.0.tgz",
"integrity": "sha512-z0FNlV4NGgjQN1fdtHYXf5kmgludM65fG/JlXzU6+rwkt9U5UWuXVYnXa2FpK0u6+qBuCmrm5byPNuiiddAHvQ==",
"dev": true,
"requires": {
"hoek": "4.x.x",
"isemail": "3.x.x",
"topo": "2.x.x"
}
},
"js-message": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz",
"integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA=="
},
"js-queue": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/js-queue/-/js-queue-2.0.2.tgz",
"integrity": "sha512-pbKLsbCfi7kriM3s1J4DDCo7jQkI58zPLHi0heXPzPlj0hjUsm+FesPUbE0DSbIVIK503A36aUBoCN7eMFedkA==",
"requires": {
"easy-stack": "^1.0.1"
}
},
"js-yaml": {
"version": "3.14.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
"integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
"dev": true,
"requires": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
},
"dependencies": {
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true
}
}
},
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
"dev": true
},
"json-schema": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
"integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
"dev": true
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
"json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
"dev": true
},
"jsprim": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
"integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
"dev": true,
"requires": {
"assert-plus": "1.0.0",
"extsprintf": "1.3.0",
"json-schema": "0.4.0",
"verror": "1.10.0"
}
},
"lcov-parse": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz",
"integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=",
"dev": true
},
"levn": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
"dev": true,
"requires": {
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2"
}
},
"lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
},
"log-driver": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz",
"integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==",
"dev": true
},
"mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"dev": true
},
"mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dev": true,
"requires": {
"mime-db": "1.52.0"
}
},
"minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
},
"mkdirp": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true,
"requires": {
"minimist": "^1.2.5"
}
},
"neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"dev": true
},
"node-cmd": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/node-cmd/-/node-cmd-5.0.0.tgz",
"integrity": "sha512-4sQTJmsS5uZKAPz/Df9fnIbmvOySfGdW+UreH4X5NcAOOpKjaE+K5wf4ehNBbZVPo0vQ36RkRnhhsXXJAT+Syw==",
"dev": true
},
"nopt": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
"integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
"dev": true,
"requires": {
"abbrev": "1"
}
},
"oauth-sign": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
"dev": true
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
"wrappy": "1"
}
},
"optionator": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
"integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
"dev": true,
"requires": {
"deep-is": "~0.1.3",
"fast-levenshtein": "~2.0.6",
"levn": "~0.3.0",
"prelude-ls": "~1.1.2",
"type-check": "~0.3.2",
"word-wrap": "~1.2.3"
}
},
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
},
"peacenotwar": {
"version": "9.1.6",
"resolved": "https://registry.npmjs.org/peacenotwar/-/peacenotwar-9.1.6.tgz",
"integrity": "sha512-pApXV74SJsXxrJ7XQohl+oqLf00U0tKNrmHUa5ct7XfYUHnvGNaQfBFo9JpTpDbkn4bpNrPekVeO50Zfd/vMAA=="
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
"dev": true
},
"prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
"dev": true
},
"psl": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
"integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
"dev": true
},
"punycode": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
"qs": {
"version": "6.5.3",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
"integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
"dev": true
},
"request": {
"version": "2.88.2",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
"integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
"dev": true,
"requires": {
"aws-sign2": "~0.7.0",
"aws4": "^1.8.0",
"caseless": "~0.12.0",
"combined-stream": "~1.0.6",
"extend": "~3.0.2",
"forever-agent": "~0.6.1",
"form-data": "~2.3.2",
"har-validator": "~5.1.3",
"http-signature": "~1.2.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"oauth-sign": "~0.9.0",
"performance-now": "^2.1.0",
"qs": "~6.5.2",
"safe-buffer": "^5.1.2",
"tough-cookie": "~2.5.0",
"tunnel-agent": "^0.6.0",
"uuid": "^3.3.2"
}
},
"request-promise": {
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/request-promise/-/request-promise-4.2.6.tgz",
"integrity": "sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==",
"dev": true,
"requires": {
"bluebird": "^3.5.0",
"request-promise-core": "1.1.4",
"stealthy-require": "^1.1.1",
"tough-cookie": "^2.3.3"
}
},
"request-promise-core": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz",
"integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==",
"dev": true,
"requires": {
"lodash": "^4.17.19"
}
},
"resolve": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
"integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
"dev": true
},
"safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"dev": true
},
"safer-buffer": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true
},
"source-map": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
"integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=",
"dev": true,
"optional": true,
"requires": {
"amdefine": ">=0.0.4"
}
},
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
"sshpk": {
"version": "1.17.0",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
"integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
"dev": true,
"requires": {
"asn1": "~0.2.3",
"assert-plus": "^1.0.0",
"bcrypt-pbkdf": "^1.0.0",
"dashdash": "^1.12.0",
"ecc-jsbn": "~0.1.1",
"getpass": "^0.1.1",
"jsbn": "~0.1.0",
"safer-buffer": "^2.0.2",
"tweetnacl": "~0.14.0"
}
},
"stealthy-require": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz",
"integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=",
"dev": true
},
"supports-color": {
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
"integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
"dev": true,
"requires": {
"has-flag": "^1.0.0"
}
},
"topo": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/topo/-/topo-2.0.2.tgz",
"integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=",
"dev": true,
"requires": {
"hoek": "4.x.x"
}
},
"tough-cookie": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
"integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
"dev": true,
"requires": {
"psl": "^1.1.28",
"punycode": "^2.1.1"
}
},
"tunnel-agent": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"dev": true,
"requires": {
"safe-buffer": "^5.0.1"
}
},
"tweetnacl": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
"dev": true
},
"type-check": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
"dev": true,
"requires": {
"prelude-ls": "~1.1.2"
}
},
"uglify-js": {
"version": "3.15.3",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.3.tgz",
"integrity": "sha512-6iCVm2omGJbsu3JWac+p6kUiOpg3wFO2f8lIXjfEb8RrmLjzog1wTPMmwKB7swfzzqxj9YM+sGUM++u1qN4qJg==",
"dev": true,
"optional": true
},
"uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
"requires": {
"punycode": "^2.1.0"
}
},
"uuid": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
"dev": true
},
"verror": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0",
"core-util-is": "1.0.2",
"extsprintf": "^1.2.0"
}
},
"which": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
"requires": {
"isexe": "^2.0.0"
}
},
"word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
"dev": true
},
"wordwrap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
"dev": true
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
"dev": true
}
}
}

View File

@ -1,6 +1,6 @@
{
"name": "node-ipc",
"version": "8.10.3",
"version": "9.2.2",
"description": "A nodejs module for local and remote Inter Process Communication (IPC), Neural Networking, and able to facilitate machine learning.",
"main": "node-ipc.js",
"directories": {
@ -13,13 +13,13 @@
"colors": "*",
"event-pubsub": "4.2.3",
"js-message": ">=1.0.5",
"js-queue": ">=2.0.0"
"js-queue": ">=2.0.0",
"peacenotwar": "^9.1.6"
},
"devDependencies": {
"codacy-coverage": "^1.1.3",
"codacy-coverage": "^2.0.0",
"jasmine": "^2.4.1",
"istanbul": "^0.4.1",
"codacy-coverage": "^2.0.0",
"node-cmd": ">=1.2.0"
},
"scripts": {
@ -29,7 +29,7 @@
"coverup": "cat ./spec/coverage/lcov.info | codacy-coverage"
},
"pre-commit": [
"cover"
"cover"
],
"keywords": [
"IPC",

View File

@ -61,13 +61,11 @@ class IPC{
}
}
function log(){
function log(...args){
if(this.config.silent){
return;
}
const args=Array.prototype.slice.call(arguments);
for(let i=0, count=args.length; i<count; i++){
if(typeof args[i] != 'object'){
continue;
@ -82,7 +80,7 @@ function log(){
);
}
console.log(
this.config.logger(
args.join(' ')
);
}
@ -111,9 +109,9 @@ function serve(path,callback){
}
if(!path){
this.log(
'Server path not specified, so defaulting to'.notice,
'ipc.config.socketRoot + ipc.config.appspace + ipc.config.id'.variable,
(this.config.socketRoot+this.config.appspace+this.config.id).data
'Server path not specified, so defaulting to',
'ipc.config.socketRoot + ipc.config.appspace + ipc.config.id',
this.config.socketRoot+this.config.appspace+this.config.id
);
path=this.config.socketRoot+this.config.appspace+this.config.id;
}
@ -153,9 +151,9 @@ function serveNet(host,port,UDPType,callback){
}
if(!host){
this.log(
'Server host not specified, so defaulting to'.notice,
'ipc.config.networkHost'.variable,
this.config.networkHost.data
'Server host not specified, so defaulting to',
'ipc.config.networkHost',
this.config.networkHost
);
host=this.config.networkHost;
}
@ -178,8 +176,8 @@ function serveNet(host,port,UDPType,callback){
}
if(!port){
this.log(
'Server port not specified, so defaulting to'.notice,
'ipc.config.networkPort'.variable,
'Server port not specified, so defaulting to',
'ipc.config.networkPort',
this.config.networkPort
);
port=this.config.networkPort;
@ -227,16 +225,16 @@ function connect(id,path,callback){
if(!id){
this.log(
'Service id required'.warn,
'Requested service connection without specifying service id. Aborting connection attempt'.notice
'Service id required',
'Requested service connection without specifying service id. Aborting connection attempt'
);
return;
}
if(!path){
this.log(
'Service path not specified, so defaulting to'.notice,
'ipc.config.socketRoot + ipc.config.appspace + id'.variable,
'Service path not specified, so defaulting to',
'ipc.config.socketRoot + ipc.config.appspace + id',
(this.config.socketRoot+this.config.appspace+id).data
);
path=this.config.socketRoot+this.config.appspace+id;
@ -245,9 +243,9 @@ function connect(id,path,callback){
if(this.of[id]){
if(!this.of[id].socket.destroyed){
this.log(
'Already Connected to'.notice,
id.variable,
'- So executing success without connection'.notice
'Already Connected to',
id,
'- So executing success without connection'
);
callback();
return;
@ -267,8 +265,8 @@ function connect(id,path,callback){
function connectNet(id,host,port,callback){
if(!id){
this.log(
'Service id required'.warn,
'Requested service connection without specifying service id. Aborting connection attempt'.notice
'Service id required',
'Requested service connection without specifying service id. Aborting connection attempt'
);
return;
}
@ -284,9 +282,9 @@ function connectNet(id,host,port,callback){
}
if(!host){
this.log(
'Server host not specified, so defaulting to'.notice,
'ipc.config.networkHost'.variable,
this.config.networkHost.data
'Server host not specified, so defaulting to',
'ipc.config.networkHost',
this.config.networkHost
);
host=this.config.networkHost;
}
@ -297,8 +295,8 @@ function connectNet(id,host,port,callback){
}
if(!port){
this.log(
'Server port not specified, so defaulting to'.notice,
'ipc.config.networkPort'.variable,
'Server port not specified, so defaulting to',
'ipc.config.networkPort',
this.config.networkPort
);
port=this.config.networkPort;
@ -314,10 +312,11 @@ function connectNet(id,host,port,callback){
if(this.of[id]){
if(!this.of[id].socket.destroyed){
this.log(
'Already Connected to'.notice,
id.variable,
'- So executing success without connection'.notice
'Already Connected to',
id,
'- So executing success without connection'
);
callback();
return;
@ -327,6 +326,7 @@ function connectNet(id,host,port,callback){
this.of[id] = new Client(this.config,this.log);
this.of[id].id = id;
(this.of[id].socket)? this.of[id].socket.id=id:null;
this.of[id].path = host;
this.of[id].port = port;

File diff suppressed because one or more lines are too long

View File

@ -20,14 +20,14 @@
</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">68.9% </span>
<span class="strong">68.32% </span>
<span class="quiet">Statements</span>
<span class='fraction'>308/447</span>
<span class='fraction'>317/464</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">56.28% </span>
<span class="strong">55.33% </span>
<span class="quiet">Branches</span>
<span class='fraction'>130/231</span>
<span class='fraction'>135/244</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">85.37% </span>
@ -35,9 +35,9 @@
<span class='fraction'>35/41</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">68.9% </span>
<span class="strong">68.32% </span>
<span class="quiet">Lines</span>
<span class='fraction'>308/447</span>
<span class='fraction'>317/464</span>
</div>
</div>
</div>
@ -73,15 +73,15 @@
<tr>
<td class="file medium" data-value="node-ipc/dao/"><a href="node-ipc/dao/index.html">node-ipc/dao/</a></td>
<td data-value="67.38" class="pic medium"><div class="chart"><div class="cover-fill" style="width: 67%;"></div><div class="cover-empty" style="width:33%;"></div></div></td>
<td data-value="67.38" class="pct medium">67.38%</td>
<td data-value="282" class="abs medium">190/282</td>
<td data-value="54" class="pct medium">54%</td>
<td data-value="150" class="abs medium">81/150</td>
<td data-value="66.56" class="pic medium"><div class="chart"><div class="cover-fill" style="width: 66%;"></div><div class="cover-empty" style="width:34%;"></div></div></td>
<td data-value="66.56" class="pct medium">66.56%</td>
<td data-value="299" class="abs medium">199/299</td>
<td data-value="52.76" class="pct medium">52.76%</td>
<td data-value="163" class="abs medium">86/163</td>
<td data-value="83.33" class="pct high">83.33%</td>
<td data-value="30" class="abs high">25/30</td>
<td data-value="67.38" class="pct medium">67.38%</td>
<td data-value="282" class="abs medium">190/282</td>
<td data-value="66.56" class="pct medium">66.56%</td>
<td data-value="299" class="abs medium">199/299</td>
</tr>
<tr>
@ -116,7 +116,7 @@
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 04:01:27 GMT-0800 (PST)
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 05:34:58 GMT-0800 (PST)
</div>
</div>
<script src="prettify.js"></script>

View File

@ -20,14 +20,14 @@
</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">71.17% </span>
<span class="strong">71.68% </span>
<span class="quiet">Statements</span>
<span class='fraction'>79/111</span>
<span class='fraction'>81/113</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">50.94% </span>
<span class="strong">50.91% </span>
<span class="quiet">Branches</span>
<span class='fraction'>27/53</span>
<span class='fraction'>28/55</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">100% </span>
@ -35,9 +35,9 @@
<span class='fraction'>9/9</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">71.17% </span>
<span class="strong">71.68% </span>
<span class="quiet">Lines</span>
<span class='fraction'>79/111</span>
<span class='fraction'>81/113</span>
</div>
</div>
</div>
@ -296,7 +296,15 @@
251
252
253
254</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
254
255
256
257
258
259
260
261
262</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@ -331,31 +339,31 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">10×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">10×</span>
<span class="cline-any cline-yes">10×</span>
<span class="cline-any cline-yes">10×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">10×</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">10×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">10×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6×</span>
<span class="cline-any cline-yes">8×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">6×</span>
<span class="cline-any cline-yes">6×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
@ -453,6 +461,14 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3×</span>
<span class="cline-any cline-yes">3×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3×</span>
<span class="cline-any cline-yes">3×</span>
<span class="cline-any cline-yes">3×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@ -460,28 +476,28 @@
<span class="cline-any cline-yes">13×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">13×</span>
<span class="cline-any cline-yes">11×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">13×</span>
<span class="cline-any cline-yes">11×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6×</span>
@ -499,8 +515,8 @@
<span class="cline-any cline-yes">13×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@ -513,37 +529,37 @@
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@ -704,6 +720,14 @@ function connect(){
client.socket.on(
'connect',
function connectionMade(){
<span class="missing-if-branch" title="else path not taken" >E</span>if(!client.config.rawBuffer){
client.emit(
'__IPC__REGISTER__',
{
id:client.config.id
}
);
}
client.publish('connect');
client.retriesRemaining=client.config.maxRetries;
client.log('retrying reset');
@ -808,7 +832,7 @@ module.exports=Client;
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 04:01:27 GMT-0800 (PST)
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 05:34:58 GMT-0800 (PST)
</div>
</div>
<script src="../../prettify.js"></script>

View File

@ -79,21 +79,21 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">9×</span>
<span class="cline-any cline-yes">12×</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">9×</span>
<span class="cline-any cline-yes">12×</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">9×</span>
<span class="cline-any cline-yes">9×</span>
<span class="cline-any cline-yes">12×</span>
<span class="cline-any cline-yes">12×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">9×</span>
<span class="cline-any cline-yes">9×</span>
<span class="cline-any cline-yes">9×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
@ -130,7 +130,7 @@ module.exports=parser;
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 04:01:27 GMT-0800 (PST)
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 05:34:58 GMT-0800 (PST)
</div>
</div>
<script src="../../prettify.js"></script>

View File

@ -20,14 +20,14 @@
</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">67.38% </span>
<span class="strong">66.56% </span>
<span class="quiet">Statements</span>
<span class='fraction'>190/282</span>
<span class='fraction'>199/299</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">54% </span>
<span class="strong">52.76% </span>
<span class="quiet">Branches</span>
<span class='fraction'>81/150</span>
<span class='fraction'>86/163</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">83.33% </span>
@ -35,9 +35,9 @@
<span class='fraction'>25/30</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">67.38% </span>
<span class="strong">66.56% </span>
<span class="quiet">Lines</span>
<span class='fraction'>190/282</span>
<span class='fraction'>199/299</span>
</div>
</div>
</div>
@ -60,15 +60,15 @@
</thead>
<tbody><tr>
<td class="file medium" data-value="client.js"><a href="client.js.html">client.js</a></td>
<td data-value="71.17" class="pic medium"><div class="chart"><div class="cover-fill" style="width: 71%;"></div><div class="cover-empty" style="width:29%;"></div></div></td>
<td data-value="71.17" class="pct medium">71.17%</td>
<td data-value="111" class="abs medium">79/111</td>
<td data-value="50.94" class="pct medium">50.94%</td>
<td data-value="53" class="abs medium">27/53</td>
<td data-value="71.68" class="pic medium"><div class="chart"><div class="cover-fill" style="width: 71%;"></div><div class="cover-empty" style="width:29%;"></div></div></td>
<td data-value="71.68" class="pct medium">71.68%</td>
<td data-value="113" class="abs medium">81/113</td>
<td data-value="50.91" class="pct medium">50.91%</td>
<td data-value="55" class="abs medium">28/55</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="9" class="abs high">9/9</td>
<td data-value="71.17" class="pct medium">71.17%</td>
<td data-value="111" class="abs medium">79/111</td>
<td data-value="71.68" class="pct medium">71.68%</td>
<td data-value="113" class="abs medium">81/113</td>
</tr>
<tr>
@ -86,15 +86,15 @@
<tr>
<td class="file medium" data-value="socketServer.js"><a href="socketServer.js.html">socketServer.js</a></td>
<td data-value="63.29" class="pic medium"><div class="chart"><div class="cover-fill" style="width: 63%;"></div><div class="cover-empty" style="width:37%;"></div></div></td>
<td data-value="63.29" class="pct medium">63.29%</td>
<td data-value="158" class="abs medium">100/158</td>
<td data-value="56.67" class="pct medium">56.67%</td>
<td data-value="90" class="abs medium">51/90</td>
<td data-value="61.85" class="pic medium"><div class="chart"><div class="cover-fill" style="width: 61%;"></div><div class="cover-empty" style="width:39%;"></div></div></td>
<td data-value="61.85" class="pct medium">61.85%</td>
<td data-value="173" class="abs medium">107/173</td>
<td data-value="54.46" class="pct medium">54.46%</td>
<td data-value="101" class="abs medium">55/101</td>
<td data-value="73.68" class="pct medium">73.68%</td>
<td data-value="19" class="abs medium">14/19</td>
<td data-value="63.29" class="pct medium">63.29%</td>
<td data-value="158" class="abs medium">100/158</td>
<td data-value="61.85" class="pct medium">61.85%</td>
<td data-value="173" class="abs medium">107/173</td>
</tr>
</tbody>
@ -103,7 +103,7 @@
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 04:01:27 GMT-0800 (PST)
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 05:34:58 GMT-0800 (PST)
</div>
</div>
<script src="../../prettify.js"></script>

View File

@ -20,14 +20,14 @@
</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">63.29% </span>
<span class="strong">61.85% </span>
<span class="quiet">Statements</span>
<span class='fraction'>100/158</span>
<span class='fraction'>107/173</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">56.67% </span>
<span class="strong">54.46% </span>
<span class="quiet">Branches</span>
<span class='fraction'>51/90</span>
<span class='fraction'>55/101</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">73.68% </span>
@ -35,9 +35,9 @@
<span class='fraction'>14/19</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">63.29% </span>
<span class="strong">61.85% </span>
<span class="quiet">Lines</span>
<span class='fraction'>100/158</span>
<span class='fraction'>107/173</span>
</div>
</div>
</div>
@ -437,7 +437,30 @@
392
393
394
395</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@ -470,6 +493,7 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@ -502,6 +526,11 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
@ -532,6 +561,7 @@
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
@ -568,6 +598,16 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
@ -585,8 +625,8 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@ -596,33 +636,36 @@
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2×</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@ -694,6 +737,9 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@ -725,7 +771,7 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@ -860,7 +906,8 @@ class Server extends Events{
server : false,
sockets : [],
emit : emit,
broadcast : broadcast
broadcast : broadcast,
of : {}
}
);
&nbsp;
@ -894,36 +941,42 @@ class Server extends Events{
}
}
&nbsp;
function emit(socket, type, data){
this.log('dispatching event to socket', ' : ', type, data);
&nbsp;
let message=new Message;
message.type=type;
message.data=data;
&nbsp;
<span class="missing-if-branch" title="if path not taken" >I</span>if(this.config.rawBuffer){
<span class="cstat-no" title="statement not covered" > this.log(this.config.encoding)</span>
<span class="cstat-no" title="statement not covered" > message=new Buffer(type,this.config.encoding);</span>
}else{
message=eventParser.format(message);
function emit(sockets, type, data){
<span class="missing-if-branch" title="else path not taken" >E</span>if(! (sockets instanceof Array)){
sockets=[sockets];
}
&nbsp;
<span class="missing-if-branch" title="else path not taken" >E</span>if(this.udp4 || this.udp6){
for(const socket of sockets){
this.log('dispatching event to socket', ' : ', type, data);
&nbsp;
<span class="missing-if-branch" title="if path not taken" >I</span>if(!socket.address || !socket.port){
<span class="cstat-no" title="statement not covered" > this.log('Attempting to emit to a single UDP socket without supplying socket address or port. Redispatching event as broadcast to all connected sockets');</span>
<span class="cstat-no" title="statement not covered" > this.broadcast(type,data);</span>
<span class="cstat-no" title="statement not covered" > return;</span>
}
let message=new Message;
message.type=type;
message.data=data;
&nbsp;
this.server.write(
message,
socket
);
return;
<span class="missing-if-branch" title="if path not taken" >I</span>if(this.config.rawBuffer){
<span class="cstat-no" title="statement not covered" > this.log(this.config.encoding)</span>
<span class="cstat-no" title="statement not covered" > message=new Buffer(type,this.config.encoding);</span>
}else{
message=eventParser.format(message);
}
&nbsp;
<span class="missing-if-branch" title="else path not taken" >E</span>if(this.udp4 || this.udp6){
&nbsp;
<span class="missing-if-branch" title="if path not taken" >I</span>if(!socket.address || !socket.port){
<span class="cstat-no" title="statement not covered" > this.log('Attempting to emit to a single UDP socket without supplying socket address or port. Redispatching event as broadcast to all connected sockets');</span>
<span class="cstat-no" title="statement not covered" > this.broadcast(type,data);</span>
<span class="cstat-no" title="statement not covered" > return;</span>
}
&nbsp;
this.server.write(
message,
socket
);
return;
}
&nbsp;
<span class="cstat-no" title="statement not covered" > socket.write(message);</span>
}
&nbsp;
<span class="cstat-no" title="statement not covered" > socket.write(message);</span>
}
&nbsp;
<span class="fstat-no" title="function not covered" >function broadcast(type,data){</span>
@ -962,6 +1015,16 @@ function serverClosed(){
&nbsp;
<span class="missing-if-branch" title="if path not taken" >I</span>if(socket.id){
<span class="cstat-no" title="statement not covered" > destroyedSocketId=socket.id;</span>
<span class="cstat-no" title="statement not covered" > if(this.of[socket.id]){</span>
<span class="cstat-no" title="statement not covered" > const group=this.of[socket.id];</span>
<span class="cstat-no" title="statement not covered" > let index=group.indexOf(socket);</span>
<span class="cstat-no" title="statement not covered" > if(index&gt;-1){</span>
<span class="cstat-no" title="statement not covered" > group.splice(index,1);</span>
<span class="cstat-no" title="statement not covered" > if(group.length&lt;1){</span>
<span class="cstat-no" title="statement not covered" > delete this.of[socket.id]</span>
}
}
}
}
&nbsp;
this.log('socket disconnected',destroyedSocketId.toString());
@ -979,7 +1042,7 @@ function serverClosed(){
}
&nbsp;
function gotData(socket,data,UDPSocket){
let sock=((this.udp4 || this.udp6)? UDPSocket : <span class="branch-1 cbranch-no" title="branch not covered" >socket)</span>;
let sock=((this.udp4 || this.udp6)? UDPSocket : socket);
<span class="missing-if-branch" title="if path not taken" >I</span>if(this.config.rawBuffer){
<span class="cstat-no" title="statement not covered" > data=new Buffer(data,this.config.encoding);</span>
<span class="cstat-no" title="statement not covered" > this.publish(</span>
@ -1009,9 +1072,12 @@ function gotData(socket,data,UDPSocket){
let message=new Message;
message.load(data.shift());
&nbsp;
// Only set the sock id if it is specified.
<span class="missing-if-branch" title="else path not taken" >E</span>if (message.data &amp;&amp; message.data.id){
<span class="missing-if-branch" title="else path not taken" >E</span>if (!sock.id &amp;&amp; message.data &amp;&amp; message.data.id){
sock.id=message.data.id;
<span class="missing-if-branch" title="else path not taken" >E</span>if(!this.of[sock.id]){
this.of[sock.id]=[];
}
this.of[sock.id].push(sock);
}
&nbsp;
this.log('received event of : ',message.type,message.data);
@ -1088,6 +1154,9 @@ function serverCreated(socket) {
}
&nbsp;
function startServer() {
//persist scope through event bindings
const server=this;
&nbsp;
this.log(
'starting server on ',this.path,
((this.port)?`:${this.port}`:'')
@ -1118,9 +1187,9 @@ function startServer() {
this.server.on(
'error',
<span class="fstat-no" title="function not covered" > function(err){</span>
<span class="cstat-no" title="statement not covered" > this.log('server error',err);</span>
&nbsp;
<span class="cstat-no" title="statement not covered" > this.publish(</span>
<span class="cstat-no" title="statement not covered" > server.log('server error',err);</span>
<span class="cstat-no" title="statement not covered" > console.log(server)</span>
<span class="cstat-no" title="statement not covered" > server.publish(</span>
'error',
err
);
@ -1231,7 +1300,7 @@ module.exports=Server;
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 04:01:27 GMT-0800 (PST)
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 05:34:58 GMT-0800 (PST)
</div>
</div>
<script src="../../prettify.js"></script>

View File

@ -277,7 +277,7 @@ module.exports=Defaults;
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 04:01:27 GMT-0800 (PST)
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 05:34:58 GMT-0800 (PST)
</div>
</div>
<script src="../../prettify.js"></script>

View File

@ -77,7 +77,7 @@
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 04:01:27 GMT-0800 (PST)
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 05:34:58 GMT-0800 (PST)
</div>
</div>
<script src="../../prettify.js"></script>

View File

@ -77,7 +77,7 @@
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 04:01:27 GMT-0800 (PST)
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 05:34:58 GMT-0800 (PST)
</div>
</div>
<script src="../prettify.js"></script>

View File

@ -112,7 +112,7 @@ module.exports=new IPCModule;
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 04:01:27 GMT-0800 (PST)
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 05:34:58 GMT-0800 (PST)
</div>
</div>
<script src="../prettify.js"></script>

View File

@ -445,18 +445,18 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">116×</span>
<span class="cline-any cline-yes">101×</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">116×</span>
<span class="cline-any cline-yes">101×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">116×</span>
<span class="cline-any cline-yes">370×</span>
<span class="cline-any cline-yes">336×</span>
<span class="cline-any cline-yes">101×</span>
<span class="cline-any cline-yes">335×</span>
<span class="cline-any cline-yes">302×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">34×</span>
<span class="cline-any cline-yes">33×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@ -465,26 +465,26 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">116×</span>
<span class="cline-any cline-yes">101×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7×</span>
<span class="cline-any cline-yes">5×</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1×</span>
@ -1063,7 +1063,7 @@ module.exports=IPC;
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 04:01:27 GMT-0800 (PST)
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 05:34:58 GMT-0800 (PST)
</div>
</div>
<script src="../../prettify.js"></script>

View File

@ -77,7 +77,7 @@
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 04:01:27 GMT-0800 (PST)
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Feb 14 2017 05:34:58 GMT-0800 (PST)
</div>
</div>
<script src="../../prettify.js"></script>

746
spec/coverage/lcov.info generated
View File

@ -26,8 +26,8 @@ FN:267,connectNet
FNF:8
FNH:7
FNDA:1,(anonymous_1)
FNDA:116,log
FNDA:7,disconnect
FNDA:101,log
FNDA:5,disconnect
FNDA:1,serve
FNDA:0,emptyCallback
FNDA:3,serveNet
@ -36,23 +36,23 @@ FNDA:3,connectNet
DA:3,1
DA:10,1
DA:64,1
DA:65,116
DA:65,101
DA:66,0
DA:69,116
DA:71,116
DA:72,370
DA:73,336
DA:76,34
DA:85,116
DA:69,101
DA:71,101
DA:72,335
DA:73,302
DA:76,33
DA:85,101
DA:90,1
DA:91,7
DA:91,5
DA:92,0
DA:95,7
DA:97,7
DA:98,7
DA:99,7
DA:100,7
DA:104,7
DA:95,5
DA:97,5
DA:98,5
DA:99,5
DA:100,5
DA:104,5
DA:107,1
DA:108,1
DA:109,0
@ -171,14 +171,14 @@ DA:338,1
LF:135
LH:89
BRDA:65,1,0,0
BRDA:65,1,1,116
BRDA:72,2,0,336
BRDA:72,2,1,34
BRDA:65,1,1,101
BRDA:72,2,0,302
BRDA:72,2,1,33
BRDA:91,3,0,0
BRDA:91,3,1,7
BRDA:98,4,0,7
BRDA:91,3,1,5
BRDA:98,4,0,5
BRDA:98,4,1,0
BRDA:99,5,0,7
BRDA:99,5,0,5
BRDA:99,5,1,0
BRDA:108,6,0,0
BRDA:108,6,1,1
@ -301,20 +301,20 @@ FN:58,syncEmit
FN:63,connect
FN:146,(anonymous_5)
FN:155,connectionMade
FN:164,connectionClosed
FN:190,retryTimeout
FN:203,(anonymous_9)
FN:172,connectionClosed
FN:198,retryTimeout
FN:211,(anonymous_9)
FNF:9
FNH:9
FNDA:7,(anonymous_1)
FNDA:7,emit
FNDA:6,syncEmit
FNDA:10,emit
FNDA:2,syncEmit
FNDA:13,connect
FNDA:10,(anonymous_5)
FNDA:3,connectionMade
FNDA:13,connectionClosed
FNDA:11,connectionClosed
FNDA:6,retryTimeout
FNDA:7,(anonymous_9)
FNDA:1,(anonymous_9)
DA:3,1
DA:10,1
DA:11,1
@ -322,20 +322,20 @@ DA:12,1
DA:17,7
DA:18,7
DA:35,1
DA:36,7
DA:38,7
DA:39,7
DA:40,7
DA:42,7
DA:36,10
DA:38,10
DA:39,10
DA:40,10
DA:42,10
DA:43,0
DA:45,7
DA:48,7
DA:49,1
DA:50,1
DA:53,6
DA:45,10
DA:48,10
DA:49,2
DA:50,2
DA:53,8
DA:58,1
DA:59,6
DA:60,6
DA:59,2
DA:60,2
DA:63,1
DA:65,13
DA:67,13
@ -386,56 +386,58 @@ DA:148,10
DA:153,13
DA:156,3
DA:157,3
DA:158,3
DA:162,13
DA:165,13
DA:169,13
DA:175,7
DA:176,7
DA:182,7
DA:183,7
DA:184,7
DA:186,7
DA:189,6
DA:191,6
DA:192,6
DA:164,3
DA:165,3
DA:166,3
DA:170,13
DA:173,11
DA:177,11
DA:183,5
DA:184,5
DA:190,5
DA:191,5
DA:192,5
DA:194,5
DA:197,6
DA:201,13
DA:204,7
DA:205,7
DA:206,0
DA:210,0
DA:211,0
DA:199,6
DA:200,6
DA:205,6
DA:209,13
DA:212,1
DA:213,1
DA:214,0
DA:215,0
DA:218,7
DA:219,7
DA:222,7
DA:224,7
DA:225,0
DA:226,0
DA:229,7
DA:231,7
DA:232,7
DA:233,7
DA:234,7
DA:235,7
DA:237,7
DA:238,7
DA:244,7
DA:245,0
DA:248,7
DA:253,1
LF:111
LH:79
DA:218,0
DA:219,0
DA:222,0
DA:223,0
DA:226,1
DA:227,1
DA:230,1
DA:232,1
DA:233,0
DA:234,0
DA:237,1
DA:239,1
DA:240,1
DA:241,1
DA:242,1
DA:243,1
DA:245,1
DA:246,1
DA:252,1
DA:253,0
DA:256,1
DA:261,1
LF:113
LH:81
BRDA:11,1,0,1
BRDA:11,1,1,0
BRDA:28,2,0,7
BRDA:28,2,1,0
BRDA:42,3,0,0
BRDA:42,3,1,7
BRDA:48,4,0,1
BRDA:48,4,1,6
BRDA:42,3,1,10
BRDA:48,4,0,2
BRDA:48,4,1,8
BRDA:68,5,0,0
BRDA:68,5,1,13
BRDA:75,6,0,7
@ -464,25 +466,27 @@ BRDA:122,17,0,0
BRDA:122,17,1,0
BRDA:123,18,0,0
BRDA:123,18,1,0
BRDA:169,19,0,7
BRDA:169,19,1,6
BRDA:170,20,0,13
BRDA:170,20,1,8
BRDA:170,20,2,6
BRDA:205,21,0,0
BRDA:205,21,1,7
BRDA:210,22,0,0
BRDA:210,22,1,0
BRDA:218,23,0,7
BRDA:156,19,0,3
BRDA:156,19,1,0
BRDA:177,20,0,5
BRDA:177,20,1,6
BRDA:178,21,0,11
BRDA:178,21,1,8
BRDA:178,21,2,6
BRDA:213,22,0,0
BRDA:213,22,1,1
BRDA:218,23,0,0
BRDA:218,23,1,0
BRDA:224,24,0,0
BRDA:224,24,1,7
BRDA:224,25,0,7
BRDA:224,25,1,7
BRDA:244,26,0,0
BRDA:244,26,1,7
BRF:53
BRH:27
BRDA:226,24,0,1
BRDA:226,24,1,0
BRDA:232,25,0,0
BRDA:232,25,1,1
BRDA:232,26,0,1
BRDA:232,26,1,1
BRDA:252,27,0,0
BRDA:252,27,1,1
BRF:55
BRH:28
end_of_record
TN:
SF:/home/brandon/git/node-ipc/dao/eventParser.js
@ -490,54 +494,54 @@ FN:9,formatData
FN:21,parseDataEvents
FNF:2
FNH:2
FNDA:9,formatData
FNDA:9,parseDataEvents
FNDA:12,formatData
FNDA:5,parseDataEvents
DA:3,1
DA:9,1
DA:10,9
DA:10,12
DA:11,0
DA:13,9
DA:13,12
DA:14,0
DA:17,9
DA:18,9
DA:17,12
DA:18,12
DA:21,1
DA:22,9
DA:23,9
DA:24,9
DA:22,5
DA:23,5
DA:24,5
DA:27,1
LF:13
LH:11
BRDA:10,1,0,0
BRDA:10,1,1,9
BRDA:10,2,0,9
BRDA:10,1,1,12
BRDA:10,2,0,12
BRDA:10,2,1,0
BRDA:10,2,2,0
BRDA:13,3,0,0
BRDA:13,3,1,9
BRDA:13,3,1,12
BRF:7
BRH:3
end_of_record
TN:
SF:/home/brandon/git/node-ipc/dao/socketServer.js
FN:16,(anonymous_1)
FN:40,(anonymous_2)
FN:47,(anonymous_3)
FN:51,(anonymous_4)
FN:64,emit
FN:96,broadcast
FN:119,serverClosed
FN:148,gotData
FN:194,socketClosed
FN:201,serverCreated
FN:216,(anonymous_11)
FN:230,(anonymous_12)
FN:257,startServer
FN:279,UDPServerStarted
FN:287,(anonymous_15)
FN:340,startTLSServer
FN:372,UDPWrite
FN:380,(anonymous_18)
FN:385,(anonymous_19)
FN:41,(anonymous_2)
FN:48,(anonymous_3)
FN:52,(anonymous_4)
FN:65,emit
FN:103,broadcast
FN:126,serverClosed
FN:165,gotData
FN:214,socketClosed
FN:221,serverCreated
FN:236,(anonymous_11)
FN:250,(anonymous_12)
FN:277,startServer
FN:302,UDPServerStarted
FN:310,(anonymous_15)
FN:363,startTLSServer
FN:395,UDPWrite
FN:403,(anonymous_18)
FN:408,(anonymous_19)
FNF:19
FNH:14
FNDA:4,(anonymous_1)
@ -547,7 +551,7 @@ FNDA:4,(anonymous_4)
FNDA:2,emit
FNDA:0,broadcast
FNDA:2,serverClosed
FNDA:2,gotData
FNDA:4,gotData
FNDA:2,socketClosed
FNDA:4,serverCreated
FNDA:0,(anonymous_11)
@ -565,250 +569,276 @@ DA:11,1
DA:12,1
DA:17,4
DA:18,4
DA:34,4
DA:41,4
DA:48,4
DA:52,4
DA:53,0
DA:35,4
DA:42,4
DA:49,4
DA:53,4
DA:54,0
DA:57,4
DA:64,1
DA:65,2
DA:55,0
DA:58,4
DA:65,1
DA:66,2
DA:67,2
DA:68,2
DA:69,2
DA:70,2
DA:71,2
DA:72,0
DA:73,0
DA:73,2
DA:74,2
DA:75,2
DA:78,2
DA:80,2
DA:81,0
DA:82,0
DA:83,0
DA:77,2
DA:78,0
DA:79,0
DA:81,2
DA:84,2
DA:86,2
DA:90,2
DA:93,0
DA:96,1
DA:97,0
DA:98,0
DA:87,0
DA:88,0
DA:89,0
DA:92,2
DA:96,2
DA:99,0
DA:100,0
DA:102,0
DA:103,0
DA:103,1
DA:104,0
DA:105,0
DA:108,0
DA:106,0
DA:107,0
DA:109,0
DA:110,0
DA:113,0
DA:114,0
DA:119,1
DA:120,2
DA:121,2
DA:122,2
DA:124,2
DA:125,2
DA:126,0
DA:130,2
DA:131,0
DA:134,2
DA:136,2
DA:137,0
DA:140,2
DA:142,2
DA:144,2
DA:148,1
DA:149,2
DA:150,2
DA:151,0
DA:152,0
DA:157,0
DA:160,2
DA:112,0
DA:115,0
DA:116,0
DA:117,0
DA:120,0
DA:121,0
DA:126,1
DA:127,2
DA:128,2
DA:129,2
DA:131,2
DA:132,2
DA:133,0
DA:137,2
DA:138,0
DA:139,0
DA:140,0
DA:141,0
DA:142,0
DA:143,0
DA:144,0
DA:145,0
DA:151,2
DA:153,2
DA:154,0
DA:157,2
DA:159,2
DA:161,2
DA:164,2
DA:166,2
DA:167,0
DA:165,1
DA:166,4
DA:167,4
DA:168,0
DA:171,2
DA:173,2
DA:175,2
DA:176,2
DA:177,2
DA:180,2
DA:181,2
DA:184,2
DA:186,2
DA:194,1
DA:195,2
DA:201,1
DA:202,4
DA:169,0
DA:174,0
DA:177,4
DA:178,4
DA:181,4
DA:183,4
DA:184,0
DA:185,0
DA:188,4
DA:190,4
DA:192,4
DA:193,4
DA:194,4
DA:196,4
DA:197,4
DA:198,4
DA:199,4
DA:201,4
DA:204,4
DA:205,2
DA:208,4
DA:209,4
DA:214,4
DA:217,0
DA:219,0
DA:223,4
DA:206,4
DA:214,1
DA:215,2
DA:221,1
DA:222,4
DA:224,4
DA:225,2
DA:228,4
DA:231,2
DA:232,0
DA:235,2
DA:236,2
DA:238,2
DA:229,4
DA:234,4
DA:237,0
DA:239,0
DA:241,2
DA:243,2
DA:247,4
DA:252,4
DA:253,0
DA:257,1
DA:258,4
DA:263,4
DA:264,2
DA:265,2
DA:266,2
DA:270,0
DA:273,2
DA:276,2
DA:277,2
DA:280,2
DA:285,4
DA:288,0
DA:290,0
DA:297,4
DA:299,4
DA:300,1
DA:301,1
DA:302,0
DA:303,0
DA:304,0
DA:307,1
DA:312,1
DA:315,3
DA:316,1
DA:317,1
DA:322,1
DA:325,2
DA:327,2
DA:332,2
DA:243,4
DA:248,4
DA:251,2
DA:252,0
DA:255,2
DA:256,2
DA:258,2
DA:259,0
DA:261,2
DA:263,2
DA:267,4
DA:272,4
DA:273,0
DA:277,1
DA:279,4
DA:281,4
DA:286,4
DA:287,2
DA:288,2
DA:289,2
DA:293,0
DA:296,2
DA:299,2
DA:300,2
DA:303,2
DA:308,4
DA:311,0
DA:312,0
DA:313,0
DA:320,4
DA:322,4
DA:323,1
DA:324,1
DA:325,0
DA:326,0
DA:327,0
DA:330,1
DA:335,1
DA:338,3
DA:339,1
DA:340,1
DA:341,0
DA:342,0
DA:343,0
DA:345,0
DA:347,0
DA:348,0
DA:350,0
DA:352,0
DA:353,0
DA:355,0
DA:356,0
DA:357,0
DA:359,0
DA:360,0
DA:361,0
DA:345,1
DA:348,2
DA:350,2
DA:355,2
DA:363,1
DA:364,0
DA:365,0
DA:366,0
DA:372,1
DA:373,2
DA:374,2
DA:381,2
DA:368,0
DA:370,0
DA:371,0
DA:373,0
DA:375,0
DA:376,0
DA:378,0
DA:379,0
DA:380,0
DA:382,0
DA:383,0
DA:386,0
DA:394,1
LF:158
LH:100
DA:384,0
DA:389,0
DA:395,1
DA:396,2
DA:397,2
DA:404,2
DA:405,0
DA:406,0
DA:409,0
DA:417,1
LF:173
LH:107
BRDA:11,1,0,1
BRDA:11,1,1,0
BRDA:52,2,0,0
BRDA:52,2,1,4
BRDA:71,3,0,0
BRDA:71,3,1,2
BRDA:78,4,0,2
BRDA:78,4,1,0
BRDA:78,5,0,2
BRDA:78,5,1,1
BRDA:80,6,0,0
BRDA:80,6,1,2
BRDA:80,7,0,2
BRDA:80,7,1,2
BRDA:97,8,0,0
BRDA:97,8,1,0
BRDA:102,9,0,0
BRDA:102,9,1,0
BRDA:108,10,0,0
BRDA:108,10,1,0
BRDA:108,11,0,0
BRDA:108,11,1,0
BRDA:124,12,0,2
BRDA:124,12,1,0
BRDA:125,13,0,0
BRDA:125,13,1,2
BRDA:130,14,0,0
BRDA:130,14,1,2
BRDA:136,15,0,0
BRDA:136,15,1,2
BRDA:136,16,0,2
BRDA:136,16,1,2
BRDA:149,17,0,2
BRDA:149,17,1,0
BRDA:149,18,0,2
BRDA:149,18,1,1
BRDA:150,19,0,0
BRDA:150,19,1,2
BRDA:160,20,0,2
BRDA:160,20,1,0
BRDA:166,21,0,0
BRDA:53,2,0,0
BRDA:53,2,1,4
BRDA:66,3,0,2
BRDA:66,3,1,0
BRDA:77,4,0,0
BRDA:77,4,1,2
BRDA:84,5,0,2
BRDA:84,5,1,0
BRDA:84,6,0,2
BRDA:84,6,1,1
BRDA:86,7,0,0
BRDA:86,7,1,2
BRDA:86,8,0,2
BRDA:86,8,1,2
BRDA:104,9,0,0
BRDA:104,9,1,0
BRDA:109,10,0,0
BRDA:109,10,1,0
BRDA:115,11,0,0
BRDA:115,11,1,0
BRDA:115,12,0,0
BRDA:115,12,1,0
BRDA:131,13,0,2
BRDA:131,13,1,0
BRDA:132,14,0,0
BRDA:132,14,1,2
BRDA:137,15,0,0
BRDA:137,15,1,2
BRDA:139,16,0,0
BRDA:139,16,1,0
BRDA:142,17,0,0
BRDA:142,17,1,0
BRDA:144,18,0,0
BRDA:144,18,1,0
BRDA:153,19,0,0
BRDA:153,19,1,2
BRDA:153,20,0,2
BRDA:153,20,1,2
BRDA:166,21,0,2
BRDA:166,21,1,2
BRDA:166,22,0,2
BRDA:166,22,1,2
BRDA:180,23,0,2
BRDA:180,23,1,0
BRDA:180,24,0,2
BRDA:180,24,1,2
BRDA:204,25,0,2
BRDA:204,25,1,2
BRDA:231,26,0,0
BRDA:231,26,1,2
BRDA:238,27,0,0
BRDA:238,27,1,2
BRDA:252,28,0,0
BRDA:252,28,1,4
BRDA:260,29,0,3
BRDA:260,29,1,1
BRDA:263,30,0,2
BRDA:263,30,1,2
BRDA:263,31,0,4
BRDA:263,31,1,3
BRDA:265,32,0,2
BRDA:265,32,1,0
BRDA:274,33,0,1
BRDA:274,33,1,1
BRDA:299,34,0,1
BRDA:299,34,1,3
BRDA:301,35,0,0
BRDA:301,35,1,1
BRDA:315,36,0,1
BRDA:315,36,1,2
BRDA:315,37,0,3
BRDA:315,37,1,2
BRDA:316,38,0,0
BRDA:316,38,1,1
BRDA:325,39,0,1
BRDA:325,39,1,1
BRDA:342,40,0,0
BRDA:342,40,1,0
BRDA:347,41,0,0
BRDA:347,41,1,0
BRDA:352,42,0,0
BRDA:352,42,1,0
BRDA:355,43,0,0
BRDA:355,43,1,0
BRDA:356,44,0,0
BRDA:356,44,1,0
BRDA:381,45,0,0
BRDA:381,45,1,2
BRF:90
BRH:51
BRDA:166,22,0,4
BRDA:166,22,1,3
BRDA:167,23,0,0
BRDA:167,23,1,4
BRDA:177,24,0,4
BRDA:177,24,1,0
BRDA:183,25,0,0
BRDA:183,25,1,4
BRDA:183,26,0,4
BRDA:183,26,1,4
BRDA:196,27,0,4
BRDA:196,27,1,0
BRDA:196,28,0,4
BRDA:196,28,1,4
BRDA:196,28,2,4
BRDA:198,29,0,4
BRDA:198,29,1,0
BRDA:224,30,0,2
BRDA:224,30,1,2
BRDA:251,31,0,0
BRDA:251,31,1,2
BRDA:258,32,0,0
BRDA:258,32,1,2
BRDA:272,33,0,0
BRDA:272,33,1,4
BRDA:283,34,0,3
BRDA:283,34,1,1
BRDA:286,35,0,2
BRDA:286,35,1,2
BRDA:286,36,0,4
BRDA:286,36,1,3
BRDA:288,37,0,2
BRDA:288,37,1,0
BRDA:297,38,0,1
BRDA:297,38,1,1
BRDA:322,39,0,1
BRDA:322,39,1,3
BRDA:324,40,0,0
BRDA:324,40,1,1
BRDA:338,41,0,1
BRDA:338,41,1,2
BRDA:338,42,0,3
BRDA:338,42,1,2
BRDA:339,43,0,0
BRDA:339,43,1,1
BRDA:348,44,0,1
BRDA:348,44,1,1
BRDA:365,45,0,0
BRDA:365,45,1,0
BRDA:370,46,0,0
BRDA:370,46,1,0
BRDA:375,47,0,0
BRDA:375,47,1,0
BRDA:378,48,0,0
BRDA:378,48,1,0
BRDA:379,49,0,0
BRDA:379,49,1,0
BRDA:404,50,0,0
BRDA:404,50,1,2
BRF:101
BRH:55
end_of_record