first commit
This commit is contained in:
commit
071ca7cb36
31 changed files with 2128 additions and 0 deletions
13
README.md
Normal file
13
README.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
#node-ipc
|
||||
*a nodejs module for local and remote Inter Process Communication*
|
||||
|
||||
----
|
||||
#### Documentation coming soon
|
||||
----
|
||||
|
||||
#### Local IPC
|
||||
Uses Unix Sockets to give lightning fast communication and avoid the network card to reduce overhead and latency.
|
||||
|
||||
#### Remote IPC
|
||||
Uses ``not yet defined`` Sockets to give fastest possible communication across the network with the minimum overhead and latency.
|
||||
|
41
example/local/basic/hello-client.js
Normal file
41
example/local/basic/hello-client.js
Normal file
|
@ -0,0 +1,41 @@
|
|||
var ipc=require('../../../node-ipc');
|
||||
|
||||
/***************************************\
|
||||
*
|
||||
* You should start both hello and world
|
||||
* then you will see them communicating.
|
||||
*
|
||||
* *************************************/
|
||||
|
||||
ipc.config.id = 'hello';
|
||||
ipc.config.retry= 1500;
|
||||
|
||||
ipc.connectTo(
|
||||
'world',
|
||||
function(){
|
||||
ipc.of.world.on(
|
||||
'connect',
|
||||
function(){
|
||||
ipc.log('## connected to world ##'.rainbow, ipc.config.delay);
|
||||
ipc.of.world.emit(
|
||||
'message',
|
||||
'hello'
|
||||
)
|
||||
}
|
||||
);
|
||||
ipc.of.world.on(
|
||||
'disconnect',
|
||||
function(){
|
||||
ipc.log('disconnected from world'.notice);
|
||||
}
|
||||
);
|
||||
ipc.of.world.on(
|
||||
'message',
|
||||
function(data){
|
||||
ipc.log('got a message from world : '.debug, data);
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
console.log(ipc)
|
30
example/local/basic/world-server.js
Normal file
30
example/local/basic/world-server.js
Normal file
|
@ -0,0 +1,30 @@
|
|||
var ipc=require('../../../node-ipc');
|
||||
|
||||
/***************************************\
|
||||
*
|
||||
* You should start both hello and world
|
||||
* then you will see them communicating.
|
||||
*
|
||||
* *************************************/
|
||||
|
||||
ipc.config.id = 'world';
|
||||
ipc.config.retry= 1500;
|
||||
|
||||
ipc.serve(
|
||||
function(){
|
||||
ipc.server.on(
|
||||
'message',
|
||||
function(data,socket){
|
||||
ipc.log('got a message : '.debug, data);
|
||||
socket.emit(
|
||||
'message',
|
||||
data+' world!'
|
||||
);
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
ipc.server.start();
|
||||
|
||||
console.log(ipc)
|
103
lib/client.js
Normal file
103
lib/client.js
Normal file
|
@ -0,0 +1,103 @@
|
|||
var net = require('net'),
|
||||
eventParser = require('../lib/eventParser.js'),
|
||||
pubsub = require('event-pubsub');
|
||||
|
||||
function init(config,log){
|
||||
var client={
|
||||
config : config,
|
||||
socket : false,
|
||||
connect : connect,
|
||||
emit : emit,
|
||||
log : log
|
||||
}
|
||||
new pubsub(client);
|
||||
|
||||
return client;
|
||||
}
|
||||
|
||||
function emit(type,data){
|
||||
this.log('dispatching event to '.debug, this.id.variable, this.path.variable,' : ', type.data,',', data);
|
||||
if(!data)
|
||||
data=false;
|
||||
this.socket.write(
|
||||
eventParser.format(
|
||||
{
|
||||
type:type,
|
||||
data:data
|
||||
}
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
function connect(){
|
||||
//init client object for scope persistance especially inside of socket events.
|
||||
var client=this;
|
||||
|
||||
client.log('requested connection to '.debug, client.id.variable, client.path.variable);
|
||||
if(!this.path){
|
||||
client.log('\n\n######\nerror: '.error, client.id .info,' client has not specified socket path it wishes to connect to.'.error);
|
||||
return;
|
||||
}
|
||||
|
||||
client.socket = net.connect(
|
||||
{
|
||||
path:client.path
|
||||
}
|
||||
);
|
||||
|
||||
client.socket.setEncoding(this.config.encoding);
|
||||
|
||||
client.socket.on(
|
||||
'error',
|
||||
function(err){
|
||||
client.log('\n\n######\nerror: '.error, err);
|
||||
}
|
||||
);
|
||||
|
||||
client.socket.on(
|
||||
'connect',
|
||||
function(){
|
||||
client.trigger('connect');
|
||||
}
|
||||
);
|
||||
|
||||
client.socket.on(
|
||||
'close',
|
||||
function(){
|
||||
client.log('connection closed'.notice ,client.id.variable , client.path.variable);
|
||||
setTimeout(
|
||||
(
|
||||
function(client){
|
||||
return function(){
|
||||
client.connect();
|
||||
}
|
||||
}
|
||||
)(client),
|
||||
client.config.retry
|
||||
);
|
||||
|
||||
client.trigger('disconnect');
|
||||
}
|
||||
);
|
||||
|
||||
client.socket.on(
|
||||
'data',
|
||||
function(data) {
|
||||
client.log('## recieved events ##'.rainbow);
|
||||
var events = eventParser.parse(data);
|
||||
var eCount = events.length;
|
||||
for(var i=0; i<eCount; i++){
|
||||
var e=JSON.parse(
|
||||
events[i]
|
||||
);
|
||||
client.log('detected event of type '.debug, e.type.data, e.data);
|
||||
client.trigger(
|
||||
e.type,
|
||||
e.data
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
module.exports=init;
|
23
lib/eventParser.js
Normal file
23
lib/eventParser.js
Normal file
|
@ -0,0 +1,23 @@
|
|||
function formatData(data){
|
||||
if(!data.data)
|
||||
data.data={};
|
||||
if(data.data['_maxListeners'])
|
||||
delete data.data;
|
||||
|
||||
data=JSON.stringify(data)+parser.delimiter;
|
||||
return data;
|
||||
};
|
||||
|
||||
function parseDataEvents(data){
|
||||
var events=data.split(parser.delimiter);
|
||||
events.pop();
|
||||
return events;
|
||||
}
|
||||
|
||||
var parser={
|
||||
parse : parseDataEvents,
|
||||
format : formatData,
|
||||
delimiter : '\f'
|
||||
}
|
||||
|
||||
module.exports=parser;
|
212
lib/socketServer.js
Normal file
212
lib/socketServer.js
Normal file
|
@ -0,0 +1,212 @@
|
|||
var net = require('net'),
|
||||
fs = require('fs'),
|
||||
eventParser = require('../lib/eventParser.js'),
|
||||
pubsub = require('event-pubsub');
|
||||
|
||||
function emit(socket, type, data){
|
||||
if(!data)
|
||||
data=false;
|
||||
console.log(type,data)
|
||||
this.log('dispatching event to socket'.debug, ' : ', type.data, data);
|
||||
|
||||
socket.write(
|
||||
eventParser.format(
|
||||
{
|
||||
type:type,
|
||||
data:data
|
||||
}
|
||||
)
|
||||
);
|
||||
};
|
||||
|
||||
function broadcast(type,data){
|
||||
this.log('broadcasting event to '.debug, this.path.variable,' : ', type.data, data);
|
||||
if(!data)
|
||||
data=false;
|
||||
|
||||
var e=eventParser.format(
|
||||
{
|
||||
type:type,
|
||||
data:data
|
||||
}
|
||||
);
|
||||
|
||||
for(var i=0, count=this.sockets.length; i<count; i++){
|
||||
this.sockets[i].write(e);
|
||||
}
|
||||
};
|
||||
|
||||
function init(path,config,log){
|
||||
var server={
|
||||
config : config,
|
||||
path : path,
|
||||
log : log,
|
||||
server : false,
|
||||
sockets : [],
|
||||
emit : emit,
|
||||
broadcast : broadcast,
|
||||
define : {
|
||||
listen : {
|
||||
'get.events.broadcasting' : 'does not require any special paramaters',
|
||||
'get.events.listening' : 'does not require any special paramaters'
|
||||
},
|
||||
broadcast : {
|
||||
'events.broadcasting' : 'data.events is a JSON object of event definitions by type '+config.id+' will broadcast on '+path,
|
||||
'events.listening' : 'data.events is a JSON object of event definitions by type '+config.id+' is listening for on '+path
|
||||
}
|
||||
},
|
||||
onStart : function(socket){
|
||||
this.trigger(
|
||||
'start',
|
||||
socket
|
||||
);
|
||||
},
|
||||
start : function(){
|
||||
if(!this.path){
|
||||
console.log('Socket Server Path not specified, refusing to start'.warn);
|
||||
return;
|
||||
}
|
||||
|
||||
fs.unlink(
|
||||
this.path,
|
||||
(
|
||||
function(server){
|
||||
return function () {
|
||||
server.log('starting server on '.debug,server.path.variable);
|
||||
server.server=net.createServer(
|
||||
function(socket) {
|
||||
socket.setEncoding(server.config.encoding);
|
||||
server.log('## socket connection to server detected ##'.rainbow);
|
||||
socket.on(
|
||||
'close',
|
||||
function(socket){
|
||||
server.trigger(
|
||||
'close',
|
||||
socket
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
socket.on(
|
||||
'error',
|
||||
function(err){
|
||||
server.trigger('error',err);
|
||||
}
|
||||
);
|
||||
|
||||
socket.on(
|
||||
'data',
|
||||
function(data){
|
||||
data=eventParser.parse(data);
|
||||
|
||||
while(data.length>0){
|
||||
var e=JSON.parse(data.shift());
|
||||
server.log('recieved event of : '.debug,e.type.data,e.data);
|
||||
|
||||
server.sockets.push(socket);
|
||||
|
||||
server.trigger(
|
||||
e.type,
|
||||
e.data,
|
||||
socket
|
||||
);
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
server.trigger(
|
||||
'connect',
|
||||
socket
|
||||
);
|
||||
|
||||
server.trigger(
|
||||
'get.events.broadcasting',
|
||||
socket
|
||||
);
|
||||
|
||||
server.trigger(
|
||||
'get.events.listening',
|
||||
socket
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
server.server.listen(
|
||||
server.path,
|
||||
(
|
||||
function(server){
|
||||
return function(socket){
|
||||
server.onStart(socket)
|
||||
}
|
||||
}
|
||||
)(server)
|
||||
);
|
||||
|
||||
server.server.maxConnections=server.maxConnections;
|
||||
|
||||
}
|
||||
}
|
||||
)(this)
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
new pubsub(server);
|
||||
|
||||
server.on(
|
||||
'get.events.broadcasting',
|
||||
function(socket){
|
||||
server.emit(
|
||||
socket,
|
||||
'events.broadcasting',
|
||||
{
|
||||
id : server.config.id,
|
||||
events : server.define.broadcast
|
||||
}
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
server.on(
|
||||
'get.events.listening',
|
||||
function(socket){
|
||||
server.emit(
|
||||
socket,
|
||||
'events.listening',
|
||||
{
|
||||
id : server.config.id,
|
||||
events : server.define.listen,
|
||||
}
|
||||
);
|
||||
}
|
||||
)
|
||||
|
||||
server.on(
|
||||
'close',
|
||||
function(){
|
||||
for(var i=0, count=server.sockets.length; i<count; i++){
|
||||
var socket=server.sockets[i];
|
||||
|
||||
if(socket.readable)
|
||||
continue;
|
||||
|
||||
server.log('Socket disconnected'.notice);
|
||||
|
||||
socket.destroy();
|
||||
|
||||
delete server.sockets[i];
|
||||
|
||||
server.trigger(
|
||||
'socket.disconnected'
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
return server;
|
||||
}
|
||||
|
||||
module.exports=init;
|
124
node-ipc.js
Normal file
124
node-ipc.js
Normal file
|
@ -0,0 +1,124 @@
|
|||
var os = require('os'),
|
||||
colors = require('colors'),
|
||||
pubsub = require('event-pubsub'),
|
||||
eventParser = require('./lib/eventParser.js'),
|
||||
Client = require('./lib/client.js'),
|
||||
Server = require('./lib/socketServer.js'),
|
||||
socketPrefix= 'app.';
|
||||
|
||||
colors.setTheme(
|
||||
{
|
||||
good : 'green',
|
||||
notice : 'yellow',
|
||||
warn : 'red',
|
||||
error : 'redBG',
|
||||
debug : 'magenta',
|
||||
variable: 'cyan',
|
||||
data : 'blue'
|
||||
}
|
||||
);
|
||||
|
||||
var defaults={
|
||||
root : process.env.HOME,
|
||||
appspace : socketPrefix,
|
||||
socketRoot : '/tmp/',
|
||||
id : os.hostname(),
|
||||
encoding : 'utf8',
|
||||
silent : false,
|
||||
maxConnections : 100,
|
||||
retry : 500
|
||||
}
|
||||
|
||||
var ipc = {
|
||||
config : defaults,
|
||||
connectTo : connect,
|
||||
serve : serve,
|
||||
of : {},
|
||||
server : false,
|
||||
log : log
|
||||
}
|
||||
|
||||
function log(){
|
||||
if(ipc.config.silent)
|
||||
return;
|
||||
|
||||
console.log(
|
||||
Array.prototype.slice.call(arguments).join(' ')
|
||||
);
|
||||
}
|
||||
|
||||
function serve(path,callback){
|
||||
if(typeof path=='function'){
|
||||
callback=path;
|
||||
path=false;
|
||||
}
|
||||
if(!path){
|
||||
ipc.log(
|
||||
'Server path not specified, so defaulting to'.notice,
|
||||
'ipc.config.socketRoot + ipc.config.appspace + ipc.config.id'.variable,
|
||||
(ipc.config.socketRoot+ipc.config.appspace+ipc.config.id).data
|
||||
);
|
||||
path=ipc.config.socketRoot+ipc.config.appspace+ipc.config.id;
|
||||
}
|
||||
|
||||
ipc.server=new Server(
|
||||
path,
|
||||
ipc.config,
|
||||
log
|
||||
);
|
||||
|
||||
ipc.server.on(
|
||||
'start',
|
||||
callback
|
||||
);
|
||||
}
|
||||
|
||||
function connect(id,path,callback){
|
||||
if(typeof path == 'function'){
|
||||
callback=path;
|
||||
path=false;
|
||||
}
|
||||
|
||||
if(!callback)
|
||||
callback=function(){};
|
||||
|
||||
if(!id){
|
||||
ipc.log(
|
||||
'Service id required'.warn,
|
||||
'Requested service connection without specifying service id. Aborting connection attempt'.notice
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if(!path){
|
||||
ipc.log(
|
||||
'Service path not specified, so defaulting to'.notice,
|
||||
'ipc.config.socketRoot + ipc.config.appspace + id'.variable,
|
||||
(ipc.config.socketRoot+ipc.config.appspace+id).data
|
||||
);
|
||||
path=ipc.config.socketRoot+ipc.config.appspace+id;
|
||||
}
|
||||
|
||||
if(ipc.of[id]){
|
||||
if(!ipc.of[id].socket.destroyed){
|
||||
ipc.log(
|
||||
'Already Connected to'.notice,
|
||||
id.variable,
|
||||
'- So executing success without connection'.notice
|
||||
);
|
||||
callback();
|
||||
return;
|
||||
}
|
||||
ipc.of[id].destroy();
|
||||
}
|
||||
|
||||
ipc.of[id] = new Client(ipc.config,ipc.log);
|
||||
ipc.of[id].id = id;
|
||||
ipc.of[id].path = path;
|
||||
|
||||
ipc.of[id].connect();
|
||||
|
||||
callback();
|
||||
}
|
||||
|
||||
module.exports=ipc;
|
22
node_modules/colors/MIT-LICENSE.txt
generated
vendored
Normal file
22
node_modules/colors/MIT-LICENSE.txt
generated
vendored
Normal file
|
@ -0,0 +1,22 @@
|
|||
Copyright (c) 2010
|
||||
|
||||
Marak Squires
|
||||
Alexis Sellier (cloudhead)
|
||||
|
||||
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.
|
77
node_modules/colors/ReadMe.md
generated
vendored
Normal file
77
node_modules/colors/ReadMe.md
generated
vendored
Normal file
|
@ -0,0 +1,77 @@
|
|||
# colors.js - get color and style in your node.js console ( and browser ) like what
|
||||
|
||||
<img src="http://i.imgur.com/goJdO.png" border = "0"/>
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
npm install colors
|
||||
|
||||
## colors and styles!
|
||||
|
||||
- bold
|
||||
- italic
|
||||
- underline
|
||||
- inverse
|
||||
- yellow
|
||||
- cyan
|
||||
- white
|
||||
- magenta
|
||||
- green
|
||||
- red
|
||||
- grey
|
||||
- blue
|
||||
- rainbow
|
||||
- zebra
|
||||
- random
|
||||
|
||||
## Usage
|
||||
|
||||
``` js
|
||||
var colors = require('./colors');
|
||||
|
||||
console.log('hello'.green); // outputs green text
|
||||
console.log('i like cake and pies'.underline.red) // outputs red underlined text
|
||||
console.log('inverse the color'.inverse); // inverses the color
|
||||
console.log('OMG Rainbows!'.rainbow); // rainbow (ignores spaces)
|
||||
```
|
||||
|
||||
# Creating Custom themes
|
||||
|
||||
```js
|
||||
|
||||
var colors = require('colors');
|
||||
|
||||
colors.setTheme({
|
||||
silly: 'rainbow',
|
||||
input: 'grey',
|
||||
verbose: 'cyan',
|
||||
prompt: 'grey',
|
||||
info: 'green',
|
||||
data: 'grey',
|
||||
help: 'cyan',
|
||||
warn: 'yellow',
|
||||
debug: 'blue',
|
||||
error: 'red'
|
||||
});
|
||||
|
||||
// outputs red text
|
||||
console.log("this is an error".error);
|
||||
|
||||
// outputs yellow text
|
||||
console.log("this is a warning".warn);
|
||||
```
|
||||
|
||||
|
||||
### Contributors
|
||||
|
||||
Marak (Marak Squires)
|
||||
Alexis Sellier (cloudhead)
|
||||
mmalecki (Maciej Małecki)
|
||||
nicoreed (Nico Reed)
|
||||
morganrallen (Morgan Allen)
|
||||
JustinCampbell (Justin Campbell)
|
||||
ded (Dustin Diaz)
|
||||
|
||||
|
||||
#### , Marak Squires , Justin Campbell, Dustin Diaz (@ded)
|
342
node_modules/colors/colors.js
generated
vendored
Normal file
342
node_modules/colors/colors.js
generated
vendored
Normal file
|
@ -0,0 +1,342 @@
|
|||
/*
|
||||
colors.js
|
||||
|
||||
Copyright (c) 2010
|
||||
|
||||
Marak Squires
|
||||
Alexis Sellier (cloudhead)
|
||||
|
||||
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.
|
||||
|
||||
*/
|
||||
|
||||
var isHeadless = false;
|
||||
|
||||
if (typeof module !== 'undefined') {
|
||||
isHeadless = true;
|
||||
}
|
||||
|
||||
if (!isHeadless) {
|
||||
var exports = {};
|
||||
var module = {};
|
||||
var colors = exports;
|
||||
exports.mode = "browser";
|
||||
} else {
|
||||
exports.mode = "console";
|
||||
}
|
||||
|
||||
//
|
||||
// Prototypes the string object to have additional method calls that add terminal colors
|
||||
//
|
||||
var addProperty = function (color, func) {
|
||||
exports[color] = function (str) {
|
||||
return func.apply(str);
|
||||
};
|
||||
String.prototype.__defineGetter__(color, func);
|
||||
};
|
||||
|
||||
function stylize(str, style) {
|
||||
|
||||
var styles;
|
||||
|
||||
if (exports.mode === 'console') {
|
||||
styles = {
|
||||
//styles
|
||||
'bold' : ['\x1B[1m', '\x1B[22m'],
|
||||
'italic' : ['\x1B[3m', '\x1B[23m'],
|
||||
'underline' : ['\x1B[4m', '\x1B[24m'],
|
||||
'inverse' : ['\x1B[7m', '\x1B[27m'],
|
||||
'strikethrough' : ['\x1B[9m', '\x1B[29m'],
|
||||
//text colors
|
||||
//grayscale
|
||||
'white' : ['\x1B[37m', '\x1B[39m'],
|
||||
'grey' : ['\x1B[90m', '\x1B[39m'],
|
||||
'black' : ['\x1B[30m', '\x1B[39m'],
|
||||
//colors
|
||||
'blue' : ['\x1B[34m', '\x1B[39m'],
|
||||
'cyan' : ['\x1B[36m', '\x1B[39m'],
|
||||
'green' : ['\x1B[32m', '\x1B[39m'],
|
||||
'magenta' : ['\x1B[35m', '\x1B[39m'],
|
||||
'red' : ['\x1B[31m', '\x1B[39m'],
|
||||
'yellow' : ['\x1B[33m', '\x1B[39m'],
|
||||
//background colors
|
||||
//grayscale
|
||||
'whiteBG' : ['\x1B[47m', '\x1B[49m'],
|
||||
'greyBG' : ['\x1B[49;5;8m', '\x1B[49m'],
|
||||
'blackBG' : ['\x1B[40m', '\x1B[49m'],
|
||||
//colors
|
||||
'blueBG' : ['\x1B[44m', '\x1B[49m'],
|
||||
'cyanBG' : ['\x1B[46m', '\x1B[49m'],
|
||||
'greenBG' : ['\x1B[42m', '\x1B[49m'],
|
||||
'magentaBG' : ['\x1B[45m', '\x1B[49m'],
|
||||
'redBG' : ['\x1B[41m', '\x1B[49m'],
|
||||
'yellowBG' : ['\x1B[43m', '\x1B[49m']
|
||||
};
|
||||
} else if (exports.mode === 'browser') {
|
||||
styles = {
|
||||
//styles
|
||||
'bold' : ['<b>', '</b>'],
|
||||
'italic' : ['<i>', '</i>'],
|
||||
'underline' : ['<u>', '</u>'],
|
||||
'inverse' : ['<span style="background-color:black;color:white;">', '</span>'],
|
||||
'strikethrough' : ['<del>', '</del>'],
|
||||
//text colors
|
||||
//grayscale
|
||||
'white' : ['<span style="color:white;">', '</span>'],
|
||||
'grey' : ['<span style="color:gray;">', '</span>'],
|
||||
'black' : ['<span style="color:black;">', '</span>'],
|
||||
//colors
|
||||
'blue' : ['<span style="color:blue;">', '</span>'],
|
||||
'cyan' : ['<span style="color:cyan;">', '</span>'],
|
||||
'green' : ['<span style="color:green;">', '</span>'],
|
||||
'magenta' : ['<span style="color:magenta;">', '</span>'],
|
||||
'red' : ['<span style="color:red;">', '</span>'],
|
||||
'yellow' : ['<span style="color:yellow;">', '</span>'],
|
||||
//background colors
|
||||
//grayscale
|
||||
'whiteBG' : ['<span style="background-color:white;">', '</span>'],
|
||||
'greyBG' : ['<span style="background-color:gray;">', '</span>'],
|
||||
'blackBG' : ['<span style="background-color:black;">', '</span>'],
|
||||
//colors
|
||||
'blueBG' : ['<span style="background-color:blue;">', '</span>'],
|
||||
'cyanBG' : ['<span style="background-color:cyan;">', '</span>'],
|
||||
'greenBG' : ['<span style="background-color:green;">', '</span>'],
|
||||
'magentaBG' : ['<span style="background-color:magenta;">', '</span>'],
|
||||
'redBG' : ['<span style="background-color:red;">', '</span>'],
|
||||
'yellowBG' : ['<span style="background-color:yellow;">', '</span>']
|
||||
};
|
||||
} else if (exports.mode === 'none') {
|
||||
return str + '';
|
||||
} else {
|
||||
console.log('unsupported mode, try "browser", "console" or "none"');
|
||||
}
|
||||
return styles[style][0] + str + styles[style][1];
|
||||
}
|
||||
|
||||
function applyTheme(theme) {
|
||||
|
||||
//
|
||||
// Remark: This is a list of methods that exist
|
||||
// on String that you should not overwrite.
|
||||
//
|
||||
var stringPrototypeBlacklist = [
|
||||
'__defineGetter__', '__defineSetter__', '__lookupGetter__', '__lookupSetter__', 'charAt', 'constructor',
|
||||
'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf', 'charCodeAt',
|
||||
'indexOf', 'lastIndexof', 'length', 'localeCompare', 'match', 'replace', 'search', 'slice', 'split', 'substring',
|
||||
'toLocaleLowerCase', 'toLocaleUpperCase', 'toLowerCase', 'toUpperCase', 'trim', 'trimLeft', 'trimRight'
|
||||
];
|
||||
|
||||
Object.keys(theme).forEach(function (prop) {
|
||||
if (stringPrototypeBlacklist.indexOf(prop) !== -1) {
|
||||
console.log('warn: '.red + ('String.prototype' + prop).magenta + ' is probably something you don\'t want to override. Ignoring style name');
|
||||
}
|
||||
else {
|
||||
if (typeof(theme[prop]) === 'string') {
|
||||
addProperty(prop, function () {
|
||||
return exports[theme[prop]](this);
|
||||
});
|
||||
}
|
||||
else {
|
||||
addProperty(prop, function () {
|
||||
var ret = this;
|
||||
for (var t = 0; t < theme[prop].length; t++) {
|
||||
ret = exports[theme[prop][t]](ret);
|
||||
}
|
||||
return ret;
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Iterate through all default styles and colors
|
||||
//
|
||||
var x = ['bold', 'underline', 'strikethrough', 'italic', 'inverse', 'grey', 'black', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta', 'greyBG', 'blackBG', 'yellowBG', 'redBG', 'greenBG', 'blueBG', 'whiteBG', 'cyanBG', 'magentaBG'];
|
||||
x.forEach(function (style) {
|
||||
|
||||
// __defineGetter__ at the least works in more browsers
|
||||
// http://robertnyman.com/javascript/javascript-getters-setters.html
|
||||
// Object.defineProperty only works in Chrome
|
||||
addProperty(style, function () {
|
||||
return stylize(this, style);
|
||||
});
|
||||
});
|
||||
|
||||
function sequencer(map) {
|
||||
return function () {
|
||||
if (!isHeadless) {
|
||||
return this.replace(/( )/, '$1');
|
||||
}
|
||||
var exploded = this.split(""), i = 0;
|
||||
exploded = exploded.map(map);
|
||||
return exploded.join("");
|
||||
};
|
||||
}
|
||||
|
||||
var rainbowMap = (function () {
|
||||
var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta']; //RoY G BiV
|
||||
return function (letter, i, exploded) {
|
||||
if (letter === " ") {
|
||||
return letter;
|
||||
} else {
|
||||
return stylize(letter, rainbowColors[i++ % rainbowColors.length]);
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
exports.themes = {};
|
||||
|
||||
exports.addSequencer = function (name, map) {
|
||||
addProperty(name, sequencer(map));
|
||||
};
|
||||
|
||||
exports.addSequencer('rainbow', rainbowMap);
|
||||
exports.addSequencer('zebra', function (letter, i, exploded) {
|
||||
return i % 2 === 0 ? letter : letter.inverse;
|
||||
});
|
||||
|
||||
exports.setTheme = function (theme) {
|
||||
if (typeof theme === 'string') {
|
||||
try {
|
||||
exports.themes[theme] = require(theme);
|
||||
applyTheme(exports.themes[theme]);
|
||||
return exports.themes[theme];
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
return err;
|
||||
}
|
||||
} else {
|
||||
applyTheme(theme);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
addProperty('stripColors', function () {
|
||||
return ("" + this).replace(/\x1B\[\d+m/g, '');
|
||||
});
|
||||
|
||||
// please no
|
||||
function zalgo(text, options) {
|
||||
var soul = {
|
||||
"up" : [
|
||||
'̍', '̎', '̄', '̅',
|
||||
'̿', '̑', '̆', '̐',
|
||||
'͒', '͗', '͑', '̇',
|
||||
'̈', '̊', '͂', '̓',
|
||||
'̈', '͊', '͋', '͌',
|
||||
'̃', '̂', '̌', '͐',
|
||||
'̀', '́', '̋', '̏',
|
||||
'̒', '̓', '̔', '̽',
|
||||
'̉', 'ͣ', 'ͤ', 'ͥ',
|
||||
'ͦ', 'ͧ', 'ͨ', 'ͩ',
|
||||
'ͪ', 'ͫ', 'ͬ', 'ͭ',
|
||||
'ͮ', 'ͯ', '̾', '͛',
|
||||
'͆', '̚'
|
||||
],
|
||||
"down" : [
|
||||
'̖', '̗', '̘', '̙',
|
||||
'̜', '̝', '̞', '̟',
|
||||
'̠', '̤', '̥', '̦',
|
||||
'̩', '̪', '̫', '̬',
|
||||
'̭', '̮', '̯', '̰',
|
||||
'̱', '̲', '̳', '̹',
|
||||
'̺', '̻', '̼', 'ͅ',
|
||||
'͇', '͈', '͉', '͍',
|
||||
'͎', '͓', '͔', '͕',
|
||||
'͖', '͙', '͚', '̣'
|
||||
],
|
||||
"mid" : [
|
||||
'̕', '̛', '̀', '́',
|
||||
'͘', '̡', '̢', '̧',
|
||||
'̨', '̴', '̵', '̶',
|
||||
'͜', '͝', '͞',
|
||||
'͟', '͠', '͢', '̸',
|
||||
'̷', '͡', ' ҉'
|
||||
]
|
||||
},
|
||||
all = [].concat(soul.up, soul.down, soul.mid),
|
||||
zalgo = {};
|
||||
|
||||
function randomNumber(range) {
|
||||
var r = Math.floor(Math.random() * range);
|
||||
return r;
|
||||
}
|
||||
|
||||
function is_char(character) {
|
||||
var bool = false;
|
||||
all.filter(function (i) {
|
||||
bool = (i === character);
|
||||
});
|
||||
return bool;
|
||||
}
|
||||
|
||||
function heComes(text, options) {
|
||||
var result = '', counts, l;
|
||||
options = options || {};
|
||||
options["up"] = options["up"] || true;
|
||||
options["mid"] = options["mid"] || true;
|
||||
options["down"] = options["down"] || true;
|
||||
options["size"] = options["size"] || "maxi";
|
||||
text = text.split('');
|
||||
for (l in text) {
|
||||
if (is_char(l)) {
|
||||
continue;
|
||||
}
|
||||
result = result + text[l];
|
||||
counts = {"up" : 0, "down" : 0, "mid" : 0};
|
||||
switch (options.size) {
|
||||
case 'mini':
|
||||
counts.up = randomNumber(8);
|
||||
counts.min = randomNumber(2);
|
||||
counts.down = randomNumber(8);
|
||||
break;
|
||||
case 'maxi':
|
||||
counts.up = randomNumber(16) + 3;
|
||||
counts.min = randomNumber(4) + 1;
|
||||
counts.down = randomNumber(64) + 3;
|
||||
break;
|
||||
default:
|
||||
counts.up = randomNumber(8) + 1;
|
||||
counts.mid = randomNumber(6) / 2;
|
||||
counts.down = randomNumber(8) + 1;
|
||||
break;
|
||||
}
|
||||
|
||||
var arr = ["up", "mid", "down"];
|
||||
for (var d in arr) {
|
||||
var index = arr[d];
|
||||
for (var i = 0 ; i <= counts[index]; i++) {
|
||||
if (options[index]) {
|
||||
result = result + soul[index][randomNumber(soul[index].length)];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return heComes(text);
|
||||
}
|
||||
|
||||
|
||||
// don't summon zalgo
|
||||
addProperty('zalgo', function () {
|
||||
return zalgo(this);
|
||||
});
|
76
node_modules/colors/example.html
generated
vendored
Normal file
76
node_modules/colors/example.html
generated
vendored
Normal file
|
@ -0,0 +1,76 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html lang="en-us">
|
||||
<head>
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
<title>Colors Example</title>
|
||||
<script src="colors.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
||||
var test = colors.red("hopefully colorless output");
|
||||
|
||||
document.write('Rainbows are fun!'.rainbow + '<br/>');
|
||||
document.write('So '.italic + 'are'.underline + ' styles! '.bold + 'inverse'.inverse); // styles not widely supported
|
||||
document.write('Chains are also cool.'.bold.italic.underline.red); // styles not widely supported
|
||||
//document.write('zalgo time!'.zalgo);
|
||||
document.write(test.stripColors);
|
||||
document.write("a".grey + " b".black);
|
||||
|
||||
document.write("Zebras are so fun!".zebra);
|
||||
|
||||
document.write(colors.rainbow('Rainbows are fun!'));
|
||||
document.write("This is " + "not".strikethrough + " fun.");
|
||||
|
||||
document.write(colors.italic('So ') + colors.underline('are') + colors.bold(' styles! ') + colors.inverse('inverse')); // styles not widely supported
|
||||
document.write(colors.bold(colors.italic(colors.underline(colors.red('Chains are also cool.'))))); // styles not widely supported
|
||||
//document.write(colors.zalgo('zalgo time!'));
|
||||
document.write(colors.stripColors(test));
|
||||
document.write(colors.grey("a") + colors.black(" b"));
|
||||
|
||||
colors.addSequencer("america", function(letter, i, exploded) {
|
||||
if(letter === " ") return letter;
|
||||
switch(i%3) {
|
||||
case 0: return letter.red;
|
||||
case 1: return letter.white;
|
||||
case 2: return letter.blue;
|
||||
}
|
||||
});
|
||||
|
||||
colors.addSequencer("random", (function() {
|
||||
var available = ['bold', 'underline', 'italic', 'inverse', 'grey', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta'];
|
||||
|
||||
return function(letter, i, exploded) {
|
||||
return letter === " " ? letter : letter[available[Math.round(Math.random() * (available.length - 1))]];
|
||||
};
|
||||
})());
|
||||
|
||||
document.write("AMERICA! F--K YEAH!".america);
|
||||
document.write("So apparently I've been to Mars, with all the little green men. But you know, I don't recall.".random);
|
||||
|
||||
//
|
||||
// Custom themes
|
||||
//
|
||||
|
||||
colors.setTheme({
|
||||
silly: 'rainbow',
|
||||
input: 'grey',
|
||||
verbose: 'cyan',
|
||||
prompt: 'grey',
|
||||
info: 'green',
|
||||
data: 'grey',
|
||||
help: 'cyan',
|
||||
warn: 'yellow',
|
||||
debug: 'blue',
|
||||
error: 'red'
|
||||
});
|
||||
|
||||
// outputs red text
|
||||
document.write("this is an error".error);
|
||||
|
||||
// outputs yellow text
|
||||
document.write("this is a warning".warn);
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
77
node_modules/colors/example.js
generated
vendored
Normal file
77
node_modules/colors/example.js
generated
vendored
Normal file
|
@ -0,0 +1,77 @@
|
|||
var colors = require('./colors');
|
||||
|
||||
//colors.mode = "browser";
|
||||
|
||||
var test = colors.red("hopefully colorless output");
|
||||
console.log('Rainbows are fun!'.rainbow);
|
||||
console.log('So '.italic + 'are'.underline + ' styles! '.bold + 'inverse'.inverse); // styles not widely supported
|
||||
console.log('Chains are also cool.'.bold.italic.underline.red); // styles not widely supported
|
||||
//console.log('zalgo time!'.zalgo);
|
||||
console.log(test.stripColors);
|
||||
console.log("a".grey + " b".black);
|
||||
console.log("Zebras are so fun!".zebra);
|
||||
console.log('background color attack!'.black.whiteBG)
|
||||
|
||||
//
|
||||
// Remark: .strikethrough may not work with Mac OS Terminal App
|
||||
//
|
||||
console.log("This is " + "not".strikethrough + " fun.");
|
||||
console.log(colors.rainbow('Rainbows are fun!'));
|
||||
console.log(colors.italic('So ') + colors.underline('are') + colors.bold(' styles! ') + colors.inverse('inverse')); // styles not widely supported
|
||||
console.log(colors.bold(colors.italic(colors.underline(colors.red('Chains are also cool.'))))); // styles not widely supported
|
||||
//console.log(colors.zalgo('zalgo time!'));
|
||||
console.log(colors.stripColors(test));
|
||||
console.log(colors.grey("a") + colors.black(" b"));
|
||||
|
||||
colors.addSequencer("america", function(letter, i, exploded) {
|
||||
if(letter === " ") return letter;
|
||||
switch(i%3) {
|
||||
case 0: return letter.red;
|
||||
case 1: return letter.white;
|
||||
case 2: return letter.blue;
|
||||
}
|
||||
});
|
||||
|
||||
colors.addSequencer("random", (function() {
|
||||
var available = ['bold', 'underline', 'italic', 'inverse', 'grey', 'yellow', 'red', 'green', 'blue', 'white', 'cyan', 'magenta'];
|
||||
|
||||
return function(letter, i, exploded) {
|
||||
return letter === " " ? letter : letter[available[Math.round(Math.random() * (available.length - 1))]];
|
||||
};
|
||||
})());
|
||||
|
||||
console.log("AMERICA! F--K YEAH!".america);
|
||||
console.log("So apparently I've been to Mars, with all the little green men. But you know, I don't recall.".random);
|
||||
|
||||
//
|
||||
// Custom themes
|
||||
//
|
||||
|
||||
// Load theme with JSON literal
|
||||
colors.setTheme({
|
||||
silly: 'rainbow',
|
||||
input: 'grey',
|
||||
verbose: 'cyan',
|
||||
prompt: 'grey',
|
||||
info: 'green',
|
||||
data: 'grey',
|
||||
help: 'cyan',
|
||||
warn: 'yellow',
|
||||
debug: 'blue',
|
||||
error: 'red'
|
||||
});
|
||||
|
||||
// outputs red text
|
||||
console.log("this is an error".error);
|
||||
|
||||
// outputs yellow text
|
||||
console.log("this is a warning".warn);
|
||||
|
||||
// outputs grey text
|
||||
console.log("this is an input".input);
|
||||
|
||||
// Load a theme from file
|
||||
colors.setTheme('./themes/winston-dark.js');
|
||||
|
||||
console.log("this is an input".input);
|
||||
|
29
node_modules/colors/package.json
generated
vendored
Normal file
29
node_modules/colors/package.json
generated
vendored
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"name": "colors",
|
||||
"description": "get colors in your node.js console like what",
|
||||
"version": "0.6.2",
|
||||
"author": {
|
||||
"name": "Marak Squires"
|
||||
},
|
||||
"homepage": "https://github.com/Marak/colors.js",
|
||||
"bugs": {
|
||||
"url": "https://github.com/Marak/colors.js/issues"
|
||||
},
|
||||
"keywords": [
|
||||
"ansi",
|
||||
"terminal",
|
||||
"colors"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "http://github.com/Marak/colors.js.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.1.90"
|
||||
},
|
||||
"main": "colors",
|
||||
"readme": "# colors.js - get color and style in your node.js console ( and browser ) like what\n\n<img src=\"http://i.imgur.com/goJdO.png\" border = \"0\"/>\n\n\n## Installation\n\n npm install colors\n\n## colors and styles!\n\n- bold\n- italic\n- underline\n- inverse\n- yellow\n- cyan\n- white\n- magenta\n- green\n- red\n- grey\n- blue\n- rainbow\n- zebra\n- random\n\n## Usage\n\n``` js\nvar colors = require('./colors');\n\nconsole.log('hello'.green); // outputs green text\nconsole.log('i like cake and pies'.underline.red) // outputs red underlined text\nconsole.log('inverse the color'.inverse); // inverses the color\nconsole.log('OMG Rainbows!'.rainbow); // rainbow (ignores spaces)\n```\n\n# Creating Custom themes\n\n```js\n\nvar colors = require('colors');\n\ncolors.setTheme({\n silly: 'rainbow',\n input: 'grey',\n verbose: 'cyan',\n prompt: 'grey',\n info: 'green',\n data: 'grey',\n help: 'cyan',\n warn: 'yellow',\n debug: 'blue',\n error: 'red'\n});\n\n// outputs red text\nconsole.log(\"this is an error\".error);\n\n// outputs yellow text\nconsole.log(\"this is a warning\".warn);\n```\n\n\n### Contributors \n\nMarak (Marak Squires)\nAlexis Sellier (cloudhead)\nmmalecki (Maciej Małecki)\nnicoreed (Nico Reed)\nmorganrallen (Morgan Allen)\nJustinCampbell (Justin Campbell)\nded (Dustin Diaz)\n\n\n#### , Marak Squires , Justin Campbell, Dustin Diaz (@ded)\n",
|
||||
"readmeFilename": "ReadMe.md",
|
||||
"_id": "colors@0.6.2",
|
||||
"_from": "colors@"
|
||||
}
|
70
node_modules/colors/test.js
generated
vendored
Normal file
70
node_modules/colors/test.js
generated
vendored
Normal file
|
@ -0,0 +1,70 @@
|
|||
var assert = require('assert'),
|
||||
colors = require('./colors');
|
||||
|
||||
var s = 'string';
|
||||
|
||||
function a(s, code) {
|
||||
return '\x1B[' + code.toString() + 'm' + s + '\x1B[39m';
|
||||
}
|
||||
|
||||
function aE(s, color, code) {
|
||||
assert.equal(s[color], a(s, code));
|
||||
assert.equal(colors[color](s), a(s, code));
|
||||
assert.equal(s[color], colors[color](s));
|
||||
assert.equal(s[color].stripColors, s);
|
||||
assert.equal(s[color].stripColors, colors.stripColors(s));
|
||||
}
|
||||
|
||||
function h(s, color) {
|
||||
return '<span style="color:' + color + ';">' + s + '</span>';
|
||||
}
|
||||
|
||||
var stylesColors = ['white', 'black', 'blue', 'cyan', 'green', 'magenta', 'red', 'yellow'];
|
||||
var stylesAll = stylesColors.concat(['bold', 'italic', 'underline', 'inverse', 'rainbow']);
|
||||
|
||||
colors.mode = 'console';
|
||||
assert.equal(s.bold, '\x1B[1m' + s + '\x1B[22m');
|
||||
assert.equal(s.italic, '\x1B[3m' + s + '\x1B[23m');
|
||||
assert.equal(s.underline, '\x1B[4m' + s + '\x1B[24m');
|
||||
assert.equal(s.strikethrough, '\x1B[9m' + s + '\x1B[29m');
|
||||
assert.equal(s.inverse, '\x1B[7m' + s + '\x1B[27m');
|
||||
assert.ok(s.rainbow);
|
||||
aE(s, 'white', 37);
|
||||
aE(s, 'grey', 90);
|
||||
aE(s, 'black', 30);
|
||||
aE(s, 'blue', 34);
|
||||
aE(s, 'cyan', 36);
|
||||
aE(s, 'green', 32);
|
||||
aE(s, 'magenta', 35);
|
||||
aE(s, 'red', 31);
|
||||
aE(s, 'yellow', 33);
|
||||
assert.equal(s, 'string');
|
||||
|
||||
colors.setTheme({error:'red'});
|
||||
|
||||
assert.equal(typeof("astring".red),'string');
|
||||
assert.equal(typeof("astring".error),'string');
|
||||
|
||||
colors.mode = 'browser';
|
||||
assert.equal(s.bold, '<b>' + s + '</b>');
|
||||
assert.equal(s.italic, '<i>' + s + '</i>');
|
||||
assert.equal(s.underline, '<u>' + s + '</u>');
|
||||
assert.equal(s.strikethrough, '<del>' + s + '</del>');
|
||||
assert.equal(s.inverse, '<span style="background-color:black;color:white;">' + s + '</span>');
|
||||
assert.ok(s.rainbow);
|
||||
stylesColors.forEach(function (color) {
|
||||
assert.equal(s[color], h(s, color));
|
||||
assert.equal(colors[color](s), h(s, color));
|
||||
});
|
||||
|
||||
assert.equal(typeof("astring".red),'string');
|
||||
assert.equal(typeof("astring".error),'string');
|
||||
|
||||
colors.mode = 'none';
|
||||
stylesAll.forEach(function (style) {
|
||||
assert.equal(s[style], s);
|
||||
assert.equal(colors[style](s), s);
|
||||
});
|
||||
|
||||
assert.equal(typeof("astring".red),'string');
|
||||
assert.equal(typeof("astring".error),'string');
|
12
node_modules/colors/themes/winston-dark.js
generated
vendored
Normal file
12
node_modules/colors/themes/winston-dark.js
generated
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
module['exports'] = {
|
||||
silly: 'rainbow',
|
||||
input: 'black',
|
||||
verbose: 'cyan',
|
||||
prompt: 'grey',
|
||||
info: 'green',
|
||||
data: 'grey',
|
||||
help: 'cyan',
|
||||
warn: 'yellow',
|
||||
debug: 'blue',
|
||||
error: 'red'
|
||||
};
|
12
node_modules/colors/themes/winston-light.js
generated
vendored
Normal file
12
node_modules/colors/themes/winston-light.js
generated
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
module['exports'] = {
|
||||
silly: 'rainbow',
|
||||
input: 'grey',
|
||||
verbose: 'cyan',
|
||||
prompt: 'grey',
|
||||
info: 'green',
|
||||
data: 'grey',
|
||||
help: 'cyan',
|
||||
warn: 'yellow',
|
||||
debug: 'blue',
|
||||
error: 'red'
|
||||
};
|
24
node_modules/event-pubsub/LICENSE
generated
vendored
Normal file
24
node_modules/event-pubsub/LICENSE
generated
vendored
Normal file
|
@ -0,0 +1,24 @@
|
|||
This is free and unencumbered software released into the public domain.
|
||||
|
||||
Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||
distribute this software, either in source code form or as a compiled
|
||||
binary, for any purpose, commercial or non-commercial, and by any
|
||||
means.
|
||||
|
||||
In jurisdictions that recognize copyright laws, the author or authors
|
||||
of this software dedicate any and all copyright interest in the
|
||||
software to the public domain. We make this dedication for the benefit
|
||||
of the public at large and to the detriment of our heirs and
|
||||
successors. We intend this dedication to be an overt act of
|
||||
relinquishment in perpetuity of all present and future rights to this
|
||||
software under copyright law.
|
||||
|
||||
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 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.
|
||||
|
||||
For more information, please refer to <http://unlicense.org>
|
61
node_modules/event-pubsub/README.md
generated
vendored
Normal file
61
node_modules/event-pubsub/README.md
generated
vendored
Normal file
|
@ -0,0 +1,61 @@
|
|||
Event PubSub
|
||||
============
|
||||
|
||||
Pubsub events for Node and the browser allowing event scoping and multiple scopes.
|
||||
Easy for any developer level. No frills, just high speed pubsub events!
|
||||
|
||||
---
|
||||
### Basic Examples
|
||||
---
|
||||
#### Node
|
||||
|
||||
var events = new require('../../event-pubsub.js')();
|
||||
|
||||
events.on(
|
||||
'hello',
|
||||
function(data){
|
||||
console.log('hello event recieved ', data);
|
||||
}
|
||||
);
|
||||
|
||||
events.on(
|
||||
'*',
|
||||
function(type){
|
||||
console.log('Catch all detected event type of : ',type, '. List of all the sent arguments ',arguments);
|
||||
}
|
||||
);
|
||||
|
||||
/************************************\
|
||||
* trigger events for testing
|
||||
* **********************************/
|
||||
events.trigger(
|
||||
'hello',
|
||||
'world'
|
||||
);
|
||||
|
||||
#### Browser
|
||||
##### HTML
|
||||
|
||||
var events = new require('../../event-pubsub.js')();
|
||||
|
||||
events.on(
|
||||
'hello',
|
||||
function(data){
|
||||
console.log('hello event recieved ', data);
|
||||
}
|
||||
);
|
||||
|
||||
events.on(
|
||||
'*',
|
||||
function(type){
|
||||
console.log('Catch all detected event type of : ',type, '. List of all the sent arguments ',arguments);
|
||||
}
|
||||
);
|
||||
|
||||
/************************************\
|
||||
* trigger events for testing
|
||||
* **********************************/
|
||||
events.trigger(
|
||||
'hello',
|
||||
'world'
|
||||
);
|
109
node_modules/event-pubsub/event-pubsub-browser.js
generated
vendored
Normal file
109
node_modules/event-pubsub/event-pubsub-browser.js
generated
vendored
Normal file
|
@ -0,0 +1,109 @@
|
|||
window.pubsub=(
|
||||
function(){
|
||||
|
||||
function sub(type,handler){
|
||||
checkScope.apply(this);
|
||||
|
||||
if(!this._events_[type])
|
||||
this._events_[type]=[];
|
||||
|
||||
this._events_[type].push(handler);
|
||||
}
|
||||
|
||||
function unsub(type,handler){
|
||||
checkScope.apply(this);
|
||||
|
||||
if(!this._events_[type])
|
||||
return;
|
||||
|
||||
if(!handler){
|
||||
delete this._events_[type];
|
||||
return;
|
||||
}
|
||||
|
||||
for(var i=0,
|
||||
count=this._events_[type].length;
|
||||
i<count;
|
||||
i++){
|
||||
|
||||
if(this._events_[type][i]==handler)
|
||||
delete this._events_[type][i];
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
function pub(type){
|
||||
checkScope.apply(this);
|
||||
|
||||
if(this._events_['*'] && type!='*'){
|
||||
var params=Array.prototype.slice.call(arguments);
|
||||
params.unshift('*');
|
||||
this.trigger.apply(this,params);
|
||||
}
|
||||
|
||||
if(!this._events_[type])
|
||||
return;
|
||||
|
||||
for(var i=0,
|
||||
events=this._events_[type],
|
||||
count=events.length,
|
||||
args=Array.prototype.slice.call(arguments,1);
|
||||
i<count;
|
||||
i++){
|
||||
events[i].apply(this, args);
|
||||
}
|
||||
}
|
||||
|
||||
function checkScope(){
|
||||
if(!this._events_)
|
||||
this._events_={};
|
||||
}
|
||||
|
||||
function init(scope){
|
||||
if(!scope)
|
||||
return {
|
||||
on:sub,
|
||||
off:unsub,
|
||||
trigger:pub
|
||||
};
|
||||
|
||||
scope.on=(
|
||||
function(scope){
|
||||
return function(){
|
||||
sub.apply(
|
||||
scope,
|
||||
Array.prototype.slice.call(arguments)
|
||||
);
|
||||
}
|
||||
}
|
||||
)(scope);
|
||||
|
||||
scope.off=(
|
||||
function(scope){
|
||||
return function(){
|
||||
unsub.apply(
|
||||
scope,
|
||||
Array.prototype.slice.call(arguments)
|
||||
);
|
||||
}
|
||||
}
|
||||
)(scope);
|
||||
|
||||
scope.trigger=(
|
||||
function(scope){
|
||||
return function(){
|
||||
pub.apply(
|
||||
scope,
|
||||
Array.prototype.slice.call(arguments)
|
||||
);
|
||||
}
|
||||
}
|
||||
)(scope);
|
||||
|
||||
scope._events_={};
|
||||
}
|
||||
|
||||
return init;
|
||||
|
||||
}
|
||||
)();
|
103
node_modules/event-pubsub/event-pubsub.js
generated
vendored
Normal file
103
node_modules/event-pubsub/event-pubsub.js
generated
vendored
Normal file
|
@ -0,0 +1,103 @@
|
|||
function sub(type,handler){
|
||||
checkScope.apply(this);
|
||||
|
||||
if(!this._events_[type])
|
||||
this._events_[type]=[];
|
||||
|
||||
this._events_[type].push(handler);
|
||||
}
|
||||
|
||||
function unsub(type,handler){
|
||||
checkScope.apply(this);
|
||||
|
||||
if(!this._events_[type])
|
||||
return;
|
||||
|
||||
if(!handler){
|
||||
delete this._events_[type];
|
||||
return;
|
||||
}
|
||||
|
||||
for(var i=0,
|
||||
count=this._events_[type].length;
|
||||
i<count;
|
||||
i++){
|
||||
|
||||
if(this._events_[type][i]==handler)
|
||||
delete this._events_[type][i];
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
function pub(type){
|
||||
checkScope.apply(this);
|
||||
|
||||
if(this._events_['*'] && type!='*'){
|
||||
var params=Array.prototype.slice.call(arguments);
|
||||
params.unshift('*');
|
||||
this.trigger.apply(this,params);
|
||||
}
|
||||
|
||||
if(!this._events_[type])
|
||||
return;
|
||||
|
||||
for(var i=0,
|
||||
events=this._events_[type],
|
||||
count=events.length,
|
||||
args=Array.prototype.slice.call(arguments,1);
|
||||
i<count;
|
||||
i++){
|
||||
events[i].apply(this, args);
|
||||
}
|
||||
}
|
||||
|
||||
function checkScope(){
|
||||
if(!this._events_)
|
||||
this._events_={};
|
||||
}
|
||||
|
||||
function init(scope){
|
||||
if(!scope)
|
||||
return {
|
||||
on:sub,
|
||||
off:unsub,
|
||||
trigger:pub
|
||||
};
|
||||
|
||||
scope.on=(
|
||||
function(scope){
|
||||
return function(){
|
||||
sub.apply(
|
||||
scope,
|
||||
Array.prototype.slice.call(arguments)
|
||||
);
|
||||
}
|
||||
}
|
||||
)(scope);
|
||||
|
||||
scope.off=(
|
||||
function(scope){
|
||||
return function(){
|
||||
unsub.apply(
|
||||
scope,
|
||||
Array.prototype.slice.call(arguments)
|
||||
);
|
||||
}
|
||||
}
|
||||
)(scope);
|
||||
|
||||
scope.trigger=(
|
||||
function(scope){
|
||||
return function(){
|
||||
pub.apply(
|
||||
scope,
|
||||
Array.prototype.slice.call(arguments)
|
||||
);
|
||||
}
|
||||
}
|
||||
)(scope);
|
||||
|
||||
scope._events_={};
|
||||
}
|
||||
|
||||
module.exports=init
|
15
node_modules/event-pubsub/examples/browser/basic.html
generated
vendored
Normal file
15
node_modules/event-pubsub/examples/browser/basic.html
generated
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Basic PubSub Example</title>
|
||||
<script src='../../event-pubsub-browser.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<ul id='events'>
|
||||
<li>
|
||||
<h1>PubSub Basic Events Example</h1>
|
||||
</li>
|
||||
</ul>
|
||||
<script src='basic.js'></script>
|
||||
</body>
|
||||
</html>
|
73
node_modules/event-pubsub/examples/browser/basic.js
generated
vendored
Normal file
73
node_modules/event-pubsub/examples/browser/basic.js
generated
vendored
Normal file
|
@ -0,0 +1,73 @@
|
|||
var events = new window.pubsub();
|
||||
|
||||
/************************************\
|
||||
*
|
||||
* The events var was instantiated
|
||||
* as it's own scope
|
||||
*
|
||||
* **********************************/
|
||||
|
||||
events.on(
|
||||
'hello',
|
||||
function(data){
|
||||
eventLog.log('hello event recieved ', data);
|
||||
}
|
||||
);
|
||||
|
||||
events.on(
|
||||
'hello',
|
||||
function(data){
|
||||
eventLog.log('Second handler listening to hello event got',data);
|
||||
events.trigger(
|
||||
'world',
|
||||
{
|
||||
type:'myObject',
|
||||
data:{
|
||||
x:'YAY, Objects!'
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
);
|
||||
|
||||
events.on(
|
||||
'world',
|
||||
function(data){
|
||||
eventLog.log('World event got',data);
|
||||
}
|
||||
);
|
||||
|
||||
/**********************************\
|
||||
*
|
||||
* Demonstrate * event (on all events)
|
||||
* remove this for less verbose
|
||||
* example
|
||||
*
|
||||
* ********************************/
|
||||
events.on(
|
||||
'*',
|
||||
function(type){
|
||||
eventLog.log('Catch all detected event type of : ',type, '. List of all the sent arguments ',arguments);
|
||||
}
|
||||
);
|
||||
|
||||
/*******************************\
|
||||
*
|
||||
* Prep HTML for logging
|
||||
*
|
||||
* *****************************/
|
||||
var eventLog=document.getElementById('events');
|
||||
//not using console.log incase it doesn't work in some browser. *TLDT (Too lazy didn't test)*
|
||||
eventLog.log=_log_;
|
||||
function _log_ (){
|
||||
var events=Array.prototype.slice.call(arguments),
|
||||
newEvent=document.createElement('li');
|
||||
|
||||
newEvent.innerHTML=events.join(' ');
|
||||
this.appendChild(newEvent);
|
||||
}
|
||||
|
||||
events.trigger(
|
||||
'hello',
|
||||
'world'
|
||||
);
|
15
node_modules/event-pubsub/examples/browser/multipleScopes.html
generated
vendored
Normal file
15
node_modules/event-pubsub/examples/browser/multipleScopes.html
generated
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Basic PubSub Example</title>
|
||||
<script src='../../event-pubsub-browser.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<ul id='events'>
|
||||
<li>
|
||||
<h1>PubSub Multiple Event Scopes Example</h1>
|
||||
</li>
|
||||
</ul>
|
||||
<script src='multipleScopes.js'></script>
|
||||
</body>
|
||||
</html>
|
103
node_modules/event-pubsub/examples/browser/multipleScopes.js
generated
vendored
Normal file
103
node_modules/event-pubsub/examples/browser/multipleScopes.js
generated
vendored
Normal file
|
@ -0,0 +1,103 @@
|
|||
/************************************\
|
||||
* instantiating myEvents scope
|
||||
* **********************************/
|
||||
var myEvents=new window.pubsub();
|
||||
|
||||
/************************************\
|
||||
* instantiating myEvents2 scope
|
||||
* **********************************/
|
||||
var myEvents2=new window.pubsub();
|
||||
|
||||
|
||||
/************************************\
|
||||
* binding myEvents events
|
||||
* **********************************/
|
||||
myEvents.on(
|
||||
'hello',
|
||||
function(data){
|
||||
eventLog.log('myEvents hello event recieved ', data);
|
||||
}
|
||||
);
|
||||
|
||||
myEvents.on(
|
||||
'hello',
|
||||
function(data){
|
||||
eventLog.log('Second handler listening to myEvents hello event got',data);
|
||||
myEvents.trigger(
|
||||
'world',
|
||||
{
|
||||
type:'myObject',
|
||||
data:{
|
||||
x:'YAY, Objects!'
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
);
|
||||
|
||||
myEvents.on(
|
||||
'world',
|
||||
function(data){
|
||||
eventLog.log('myEvents World event got',data);
|
||||
}
|
||||
);
|
||||
|
||||
/**********************************\
|
||||
*
|
||||
* Demonstrate * event (on all events)
|
||||
* remove this for less verbose
|
||||
* example
|
||||
*
|
||||
* ********************************/
|
||||
myEvents.on(
|
||||
'*',
|
||||
function(type){
|
||||
eventLog.log('myEvents Catch all detected event type of : ',type, '. List of all the sent arguments ',arguments);
|
||||
}
|
||||
);
|
||||
|
||||
/************************************\
|
||||
* binding myEvents2 events
|
||||
* **********************************/
|
||||
myEvents2.on(
|
||||
'hello',
|
||||
function(data){
|
||||
eventLog.log('myEvents2 Hello event should never be called ', data);
|
||||
}
|
||||
);
|
||||
|
||||
myEvents2.on(
|
||||
'world',
|
||||
function(data){
|
||||
eventLog.log('myEvents2 World event ',data);
|
||||
}
|
||||
);
|
||||
|
||||
/*******************************\
|
||||
*
|
||||
* Prep HTML for logging
|
||||
*
|
||||
* *****************************/
|
||||
var eventLog=document.getElementById('events');
|
||||
//not using console.log incase it doesn't work in some browser. *TLDT (Too lazy didn't test)*
|
||||
eventLog.log=_log_;
|
||||
function _log_ (){
|
||||
var events=Array.prototype.slice.call(arguments),
|
||||
newEvent=document.createElement('li');
|
||||
|
||||
newEvent.innerHTML=events.join(' ');
|
||||
this.appendChild(newEvent);
|
||||
}
|
||||
|
||||
/************************************\
|
||||
* trigger events for testing
|
||||
* **********************************/
|
||||
myEvents.trigger(
|
||||
'hello',
|
||||
'world'
|
||||
);
|
||||
|
||||
myEvents2.trigger(
|
||||
'world',
|
||||
'is round'
|
||||
);
|
15
node_modules/event-pubsub/examples/browser/objectScope.html
generated
vendored
Normal file
15
node_modules/event-pubsub/examples/browser/objectScope.html
generated
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Basic PubSub Example</title>
|
||||
<script src='../../event-pubsub-browser.js'></script>
|
||||
</head>
|
||||
<body>
|
||||
<ul id='events'>
|
||||
<li>
|
||||
<h1>PubSub Events inside of and using an Object as the scope Example</h1>
|
||||
</li>
|
||||
</ul>
|
||||
<script src='objectScope.js'></script>
|
||||
</body>
|
||||
</html>
|
73
node_modules/event-pubsub/examples/browser/objectScope.js
generated
vendored
Normal file
73
node_modules/event-pubsub/examples/browser/objectScope.js
generated
vendored
Normal file
|
@ -0,0 +1,73 @@
|
|||
/************************************\
|
||||
*
|
||||
* The events var was instantiated
|
||||
* as it's own scope
|
||||
*
|
||||
* **********************************/
|
||||
|
||||
var thing={
|
||||
id:'my thing'
|
||||
}
|
||||
/******************************\
|
||||
*
|
||||
* Create events in the scope
|
||||
* of the "thing" object
|
||||
*
|
||||
* ****************************/
|
||||
new window.pubsub(thing);
|
||||
|
||||
thing.on(
|
||||
'getID',
|
||||
function(){
|
||||
eventLog.log('things id is : ',this.id);
|
||||
}
|
||||
);
|
||||
|
||||
thing.on(
|
||||
'setID',
|
||||
function(id){
|
||||
eventLog.log('setting id to : ',id);
|
||||
this.id=id;
|
||||
this.trigger('getID');
|
||||
}
|
||||
);
|
||||
|
||||
/**********************************\
|
||||
*
|
||||
* Demonstrate * event (on all events)
|
||||
* remove this for less verbose
|
||||
* example
|
||||
*
|
||||
* ********************************/
|
||||
thing.on(
|
||||
'*',
|
||||
function(type){
|
||||
eventLog.log('Catch all detected event type of : ',type, '. List of all the sent arguments ',arguments);
|
||||
}
|
||||
);
|
||||
|
||||
/*******************************\
|
||||
*
|
||||
* Prep HTML for logging
|
||||
*
|
||||
* *****************************/
|
||||
var eventLog=document.getElementById('events');
|
||||
//not using console.log incase it doesn't work in some browser. *TLDT (Too lazy didn't test)*
|
||||
eventLog.log=_log_;
|
||||
function _log_ (){
|
||||
var events=Array.prototype.slice.call(arguments),
|
||||
newEvent=document.createElement('li');
|
||||
|
||||
newEvent.innerHTML=events.join(' ');
|
||||
this.appendChild(newEvent);
|
||||
}
|
||||
|
||||
/************************************\
|
||||
* trigger events for testing
|
||||
* **********************************/
|
||||
thing.trigger('getID');
|
||||
|
||||
thing.trigger(
|
||||
'setID',
|
||||
'your thing'
|
||||
)
|
60
node_modules/event-pubsub/examples/node/basic.js
generated
vendored
Normal file
60
node_modules/event-pubsub/examples/node/basic.js
generated
vendored
Normal file
|
@ -0,0 +1,60 @@
|
|||
var events = new require('../../event-pubsub.js')();
|
||||
|
||||
/************************************\
|
||||
*
|
||||
* The events var was instantiated
|
||||
* as it's own scope
|
||||
*
|
||||
* **********************************/
|
||||
|
||||
events.on(
|
||||
'hello',
|
||||
function(data){
|
||||
console.log('hello event recieved ', data);
|
||||
}
|
||||
);
|
||||
|
||||
events.on(
|
||||
'hello',
|
||||
function(data){
|
||||
console.log('Second handler listening to hello event got',data);
|
||||
events.trigger(
|
||||
'world',
|
||||
{
|
||||
type:'myObject',
|
||||
data:{
|
||||
x:'YAY, Objects!'
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
);
|
||||
|
||||
events.on(
|
||||
'world',
|
||||
function(data){
|
||||
console.log('World event got',data);
|
||||
}
|
||||
);
|
||||
|
||||
/**********************************\
|
||||
*
|
||||
* Demonstrate * event (on all events)
|
||||
* remove this for less verbose
|
||||
* example
|
||||
*
|
||||
* ********************************/
|
||||
events.on(
|
||||
'*',
|
||||
function(type){
|
||||
console.log('Catch all detected event type of : ',type, '. List of all the sent arguments ',arguments);
|
||||
}
|
||||
);
|
||||
|
||||
/************************************\
|
||||
* trigger events for testing
|
||||
* **********************************/
|
||||
events.trigger(
|
||||
'hello',
|
||||
'world'
|
||||
);
|
90
node_modules/event-pubsub/examples/node/multipleScopes.js
generated
vendored
Normal file
90
node_modules/event-pubsub/examples/node/multipleScopes.js
generated
vendored
Normal file
|
@ -0,0 +1,90 @@
|
|||
var pubsub = require('../../event-pubsub.js');
|
||||
|
||||
/************************************\
|
||||
* instantiating myEvents scope
|
||||
* **********************************/
|
||||
var myEvents=new pubsub();
|
||||
|
||||
/************************************\
|
||||
* instantiating myEvents2 scope
|
||||
* **********************************/
|
||||
var myEvents2=new pubsub();
|
||||
|
||||
|
||||
/************************************\
|
||||
* binding myEvents events
|
||||
* **********************************/
|
||||
myEvents.on(
|
||||
'hello',
|
||||
function(data){
|
||||
console.log('myEvents hello event recieved ', data);
|
||||
}
|
||||
);
|
||||
|
||||
myEvents.on(
|
||||
'hello',
|
||||
function(data){
|
||||
console.log('Second handler listening to myEvents hello event got',data);
|
||||
myEvents.trigger(
|
||||
'world',
|
||||
{
|
||||
type:'myObject',
|
||||
data:{
|
||||
x:'YAY, Objects!'
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
);
|
||||
|
||||
myEvents.on(
|
||||
'world',
|
||||
function(data){
|
||||
console.log('myEvents World event got',data);
|
||||
}
|
||||
);
|
||||
|
||||
/**********************************\
|
||||
*
|
||||
* Demonstrate * event (on all events)
|
||||
* remove this for less verbose
|
||||
* example
|
||||
*
|
||||
* ********************************/
|
||||
myEvents.on(
|
||||
'*',
|
||||
function(type){
|
||||
console.log('myEvents Catch all detected event type of : ',type, '. List of all the sent arguments ',arguments);
|
||||
}
|
||||
);
|
||||
|
||||
/************************************\
|
||||
* binding myEvents2 events
|
||||
* **********************************/
|
||||
myEvents2.on(
|
||||
'hello',
|
||||
function(data){
|
||||
console.log('myEvents2 Hello event should never be called ', data);
|
||||
}
|
||||
);
|
||||
|
||||
myEvents2.on(
|
||||
'world',
|
||||
function(data){
|
||||
console.log('myEvents2 World event ',data);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
/************************************\
|
||||
* trigger events for testing
|
||||
* **********************************/
|
||||
myEvents.trigger(
|
||||
'hello',
|
||||
'world'
|
||||
);
|
||||
|
||||
myEvents2.trigger(
|
||||
'world',
|
||||
'is round'
|
||||
);
|
56
node_modules/event-pubsub/examples/node/objectScope.js
generated
vendored
Normal file
56
node_modules/event-pubsub/examples/node/objectScope.js
generated
vendored
Normal file
|
@ -0,0 +1,56 @@
|
|||
var pubsub = require('../../event-pubsub.js');
|
||||
|
||||
/************************************\
|
||||
*
|
||||
* The events var was instantiated
|
||||
* as it's own scope
|
||||
*
|
||||
* **********************************/
|
||||
|
||||
var thing={
|
||||
id:'my thing'
|
||||
}
|
||||
/******************************\
|
||||
*
|
||||
* Create events in the scope
|
||||
* of the "thing" object
|
||||
*
|
||||
* ****************************/
|
||||
new pubsub(thing);
|
||||
|
||||
thing.on(
|
||||
'getID',
|
||||
function(){
|
||||
console.log('things id is : ',this.id);
|
||||
}
|
||||
);
|
||||
|
||||
thing.on(
|
||||
'setID',
|
||||
function(id){
|
||||
console.log('setting id to : ',id);
|
||||
this.id=id;
|
||||
this.trigger('getID');
|
||||
}
|
||||
);
|
||||
|
||||
/**********************************\
|
||||
*
|
||||
* Demonstrate * event (on all events)
|
||||
* remove this for less verbose
|
||||
* example
|
||||
*
|
||||
* ********************************/
|
||||
thing.on(
|
||||
'*',
|
||||
function(type){
|
||||
console.log('Catch all detected event type of : ',type, '. List of all the sent arguments ',arguments);
|
||||
}
|
||||
);
|
||||
|
||||
thing.trigger('getID');
|
||||
|
||||
thing.trigger(
|
||||
'setID',
|
||||
'your thing'
|
||||
)
|
35
node_modules/event-pubsub/package.json
generated
vendored
Normal file
35
node_modules/event-pubsub/package.json
generated
vendored
Normal file
|
@ -0,0 +1,35 @@
|
|||
{
|
||||
"name": "event-pubsub",
|
||||
"version": "1.0.2",
|
||||
"description": "Pubsub events for Node and the browser allowing event scoping and multiple scopes. Easy for any developer level. No frills, just high speed pubsub events!",
|
||||
"main": "event-pubsub.js",
|
||||
"directories": {
|
||||
"example": "examples"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/RIAEvangelist/event-pubsub.git"
|
||||
},
|
||||
"keywords": [
|
||||
"event",
|
||||
"events",
|
||||
"pubsub",
|
||||
"node",
|
||||
"browser"
|
||||
],
|
||||
"author": {
|
||||
"name": "Brandon Nozaki Miller"
|
||||
},
|
||||
"license": "Unlicense",
|
||||
"bugs": {
|
||||
"url": "https://github.com/RIAEvangelist/event-pubsub/issues"
|
||||
},
|
||||
"homepage": "https://github.com/RIAEvangelist/event-pubsub",
|
||||
"readme": "Event PubSub\n============\n\nPubsub events for Node and the browser allowing event scoping and multiple scopes. \nEasy for any developer level. No frills, just high speed pubsub events!\n\n---\n### Basic Examples\n---\n#### Node\n\n var events = new require('../../event-pubsub.js')();\n\n events.on(\n 'hello',\n function(data){\n console.log('hello event recieved ', data);\n }\n );\n \n events.on(\n '*',\n function(type){\n console.log('Catch all detected event type of : ',type, '. List of all the sent arguments ',arguments);\n }\n );\n \n /************************************\\\n * trigger events for testing\n * **********************************/\n events.trigger(\n 'hello',\n 'world'\n );\n\n#### Browser\n##### HTML\n\n var events = new require('../../event-pubsub.js')();\n\n events.on(\n 'hello',\n function(data){\n console.log('hello event recieved ', data);\n }\n );\n \n events.on(\n '*',\n function(type){\n console.log('Catch all detected event type of : ',type, '. List of all the sent arguments ',arguments);\n }\n );\n \n /************************************\\\n * trigger events for testing\n * **********************************/\n events.trigger(\n 'hello',\n 'world'\n );\n",
|
||||
"readmeFilename": "README.md",
|
||||
"_id": "event-pubsub@1.0.2",
|
||||
"_from": "event-pubsub@"
|
||||
}
|
33
package.json
Normal file
33
package.json
Normal file
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"name": "node-ipc",
|
||||
"version": "0.0.2",
|
||||
"description": "A nodejs module for local and remote Inter Process Communication (IPC) uses Unix Sockets for local communication avoiding the network card for lower overhead and latency. ## Solid but, ### Still under development and lacking documentation, but useable.",
|
||||
"main": "node-ipc.js",
|
||||
"directories": {
|
||||
"example": "example"
|
||||
},
|
||||
"dependencies": {
|
||||
"event-pubsub": "~1.0.2",
|
||||
"colors": "~0.6.2"
|
||||
},
|
||||
"devDependencies": {},
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [
|
||||
"IPC",
|
||||
"inter",
|
||||
"process",
|
||||
"communication",
|
||||
"unix",
|
||||
"sockets",
|
||||
"threaded",
|
||||
"communication",
|
||||
"multi",
|
||||
"process",
|
||||
"shared",
|
||||
"memory"
|
||||
],
|
||||
"author": "Brandon Nozaki Miller",
|
||||
"license": "Unlicenced"
|
||||
}
|
Loading…
Reference in a new issue