Socket
Socket
Sign inDemoInstall

sneeze

Package Overview
Dependencies
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sneeze - npm Package Compare versions

Comparing version 0.10.0 to 1.0.0

37

package.json
{
"name": "sneeze",
"version": "0.10.0",
"version": "1.0.0",
"description": "Easily join SWIM networks",
"main": "sneeze.js",
"scripts": {
"test": "lab -P test -v -t 80 -r console -I URL,URLSearchParams,BigUint64Array,BigInt64Array,BigInt",
"coveralls": "lab -s -P test -r lcov -I URL,URLSearchParamsBigUint64Array,BigInt64Array,BigInt | coveralls",
"prettier": "prettier --write --no-semi --single-quote mesh.js"
"test": "lab -v -P test -t 80 -I SharedArrayBuffer,Atomics,URL,URLSearchParams,BigUint64Array,BigInt64Array,BigInt",
"coveralls": "lab -s test/use.test.js -r lcov | coveralls",
"coverage": "lab -v test/use.test.js -t 85 -r html > coverage.html",
"prettier": "prettier --write --no-semi --single-quote *.js lib/*.js test/*.js",
"clean": "rm -rf node_modules yarn.lock package-lock.json",
"repo-tag": "REPO_VERSION=`node -e \"console.log(require('./package').version)\"` && echo TAG: v$REPO_VERSION && git commit -a -m v$REPO_VERSION && git push && git tag v$REPO_VERSION && git push --tags;",
"repo-publish": "npm run prettier && npm test && npm run repo-tag && npm publish"
},

@@ -28,17 +32,18 @@ "repository": {

"dependencies": {
"ansi-escapes": "3.1",
"chalk": "2.4",
"jsonpath": "1.0",
"keypress": "0.2",
"ansi-escapes": "^3.1.0",
"chalk": "^2.4.2",
"jsonpath": "^1.0.0",
"keypress": "^0.2.1",
"lodash": "4.17",
"nid": "0.3",
"optioner": "1.1",
"pad": "2.1",
"swim": "0.6"
"nid": "^0.3.2",
"optioner": "^1.1.0",
"pad": "^2.1.0",
"static-eval": "^2.0.1",
"swim": "^0.6.0"
},
"devDependencies": {
"code": "4",
"lab": "14",
"coveralls": "3",
"prettier": "1"
"code": "^4.1.0",
"coveralls": "^3.0.2",
"lab": "^18.0.2",
"prettier": "^1.16.4"
},

@@ -45,0 +50,0 @@ "files": [

@@ -25,10 +25,9 @@ /*

var DEFAULT_HOST = module.exports.DEFAULT_HOST = '127.0.0.1'
var DEFAULT_PORT = module.exports.DEFAULT_PORT = 39999
var DEFAULT_HOST = (module.exports.DEFAULT_HOST = '127.0.0.1')
var DEFAULT_PORT = (module.exports.DEFAULT_PORT = 39999)
var optioner = Optioner({
isbase: false,
host: DEFAULT_HOST,
bases: Joi.array().default([DEFAULT_HOST+':'+DEFAULT_PORT]),
bases: Joi.array().default([DEFAULT_HOST + ':' + DEFAULT_PORT]),
retry_attempts: 22,

@@ -44,7 +43,7 @@ retry_min: 111,

// [include,exclude]
port_range: [40000,50000],
port_range: [40000, 50000],
monitor: {
active: false,
meta: ['route','config.pin']
meta: ['route', 'config.pin']
},

@@ -55,8 +54,7 @@

module.exports = function (options) {
return new Sneeze( options )
module.exports = function(options) {
return new Sneeze(options)
}
function Sneeze (options) {
function Sneeze(options) {
Events.EventEmitter.call(this)

@@ -70,24 +68,31 @@ var self = this

self.monitor = !!options.monitor.active ? make_monitor(self,options) : _.noop
self.monitor = !!options.monitor.active
? make_monitor(self, options)
: _.noop
self.log =
!!options.silent ? _.noop :
_.isFunction(options.log) ? options.log :
function () {
console.log.apply(null,_.flatten(
['SNEEZE', (''+Date.now()).substring(8), arguments]))
}
self.log = !!options.silent
? _.noop
: _.isFunction(options.log)
? options.log
: function() {
console.log.apply(
null,
_.flatten(['SNEEZE', ('' + Date.now()).substring(8), arguments])
)
}
self.makeport = _.isFunction(options.port) ? options.port :
function() {
var port = parseInt(options.port)
var pr = options.port_range
self.makeport = _.isFunction(options.port)
? options.port
: function() {
var port = parseInt(options.port)
var pr = options.port_range
port = !isNaN(port) ? port :
isbase ? DEFAULT_PORT :
pr[0] +
Math.floor(((pr[1]-pr[0])*Math.random()))
port = !isNaN(port)
? port
: isbase
? DEFAULT_PORT
: pr[0] + Math.floor((pr[1] - pr[0]) * Math.random())
return port
}
return port
}

@@ -97,7 +102,8 @@ var swim

self.join = function( meta ) {
self.join = function(meta) {
meta = meta || {}
var attempts = 0, max_attempts = options.retry_attempts, joined = false
var attempts = 0,
max_attempts = options.retry_attempts,
joined = false

@@ -114,8 +120,11 @@ function join() {

self.id = meta.identifier$ = null == options.identifier ?
host+'~'+
(incarnation+'~').substring(7)+
Nid()+'~'+
Package.version
: options.identifier
self.id = meta.identifier$ =
null == options.identifier
? host +
'~' +
(incarnation + '~').substring(7) +
Nid() +
'~' +
Package.version
: options.identifier

@@ -125,3 +134,3 @@ meta.tag$ = options.tag

var swim_opts = _.defaultsDeep(options.swim,{
var swim_opts = _.defaultsDeep(options.swim, {
codec: 'msgpack',

@@ -135,3 +144,3 @@ disseminationFactor: 22,

suspectTimeout: 999,
udp: {maxDgramSize: 2048},
udp: { maxDgramSize: 2048 }
})

@@ -142,13 +151,22 @@

meta: meta,
incarnation: incarnation,
incarnation: incarnation
}
var bases = _.compact(_.clone(options.bases))
if( isbase ) {
_.remove(bases,function(r) { return r === host })
if (isbase) {
_.remove(bases, function(r) {
return r === host
})
}
self.log(
'joining',
attempts,
host,
meta.identifier$,
meta.tag$,
bases,
swim_opts
)
self.log('joining',attempts,host,meta.identifier$,meta.tag$,bases,swim_opts)
swim = new Swim(swim_opts)

@@ -160,4 +178,7 @@

var wait = options.retry_min +
Math.floor(Math.random() * (options.retry_max-options.retry_min))
var wait =
options.retry_min +
Math.floor(
Math.random() * (options.retry_max - options.retry_min)
)

@@ -167,5 +188,4 @@ swim.net.removeAllListeners('error')

return
}
else if( err ) {
self.emit('error',err)
} else if (err) {
self.emit('error', err)
swim.net.removeAllListeners('error')

@@ -180,4 +200,7 @@ return

var wait = options.retry_min +
Math.floor(Math.random() * (options.retry_max-options.retry_min))
var wait =
options.retry_min +
Math.floor(
Math.random() * (options.retry_max - options.retry_min)
)

@@ -187,8 +210,7 @@ swim.net.removeAllListeners('error')

return
}
else if( err ) {
} else if (err) {
// first base node will see a JoinFailedError as there is
// nobody else out there
if( !isbase || 'JoinFailedError' !== err.name ) {
self.emit('error',err)
if (!isbase || 'JoinFailedError' !== err.name) {
self.emit('error', err)
swim.net.removeAllListeners('error')

@@ -203,3 +225,3 @@ return

_.each( swim.members(), updateinfo )
_.each(swim.members(), updateinfo)

@@ -214,8 +236,6 @@ swim.on(Swim.EventType.Update, function onUpdate(info) {

self.emit('ready')
})
function updateinfo( m ) {
function updateinfo(m) {
//console.log(m)

@@ -227,17 +247,17 @@

if( null != meta.tag$ && m.meta.tag$ !== meta.tag$ ) {
if (null != meta.tag$ && m.meta.tag$ !== meta.tag$) {
return
}
if( m.meta.identifier$ === meta.identifier$ ) {
if (m.meta.identifier$ === meta.identifier$) {
return
}
if( 0 === m.state ) {
add_node( m )
if (0 === m.state) {
add_node(m)
}
// Note: trigger happy
else if( 2 === m.state ) {
remove_node( m )
else if (2 === m.state) {
remove_node(m)
}

@@ -251,8 +271,6 @@ }

self.members = function() {
return _.clone( members )
return _.clone(members)
}
self.leave = function() {

@@ -264,4 +282,3 @@ swim && swim.leave()

function add_node( member ) {
function add_node(member) {
var meta = member.meta

@@ -271,8 +288,8 @@ var host = member.host

var prev = members[meta.identifier$]
if (prev &&
prev.incarnation === member.incarnation &&
prev.host === member.host &&
prev.meta.v$ === meta.v$
)
{
if (
prev &&
prev.incarnation === member.incarnation &&
prev.host === member.host &&
prev.meta.v$ === meta.v$
) {
return

@@ -286,4 +303,3 @@ }

function remove_node( member ) {
function remove_node(member) {
var meta = member.meta

@@ -302,7 +318,5 @@ var host = member.host

self.on('error',function(err){
self.log('ERROR',err)
self.on('error', function(err) {
self.log('ERROR', err)
})
})

@@ -312,6 +326,3 @@ }

function make_monitor (sneeze, options) {
function make_monitor(sneeze, options) {
var start = Date.now()

@@ -321,3 +332,3 @@ var allmembers = {}

function update (kind, member) {
function update(kind, member) {
var meta = member.meta

@@ -333,6 +344,5 @@ var host = member.host

m.state = member.state
m.meta = parse_meta(meta,options)
m.meta = parse_meta(meta, options)
m.tag = meta.tag$ || ''
}
else {
} else {
m = {

@@ -346,3 +356,3 @@ id: meta.identifier$,

rem: 0,
meta: parse_meta(meta,options)
meta: parse_meta(meta, options)
}

@@ -355,4 +365,4 @@ m[kind] += 1

allmembers[meta.identifier$] = m
sortedmembers = sortedmembers.filter(function (m) {
sortedmembers = sortedmembers.filter(function(m) {
return m.id != meta.identifier$

@@ -366,4 +376,3 @@ })

sneeze.on('add', function (meta, member) {
sneeze.on('add', function(meta, member) {
update('add', member)

@@ -374,3 +383,3 @@ //console.log('add',member)

sneeze.on('remove', function (meta, member) {
sneeze.on('remove', function(meta, member) {
update('rem', member)

@@ -381,10 +390,11 @@ //console.log('rem',member.meta)

var w = process.stdout.write.bind(process.stdout)
var states = {
0: 'A', 1: 'S', 2: 'F'
0: 'A',
1: 'S',
2: 'F'
}
var head = Chalk.bold
function render () {
function render() {
var size_host = 4

@@ -394,6 +404,6 @@ var size_meta = 4

sortedmembers.forEach(function (m) {
size_host = Math.max(size_host,m.host.length)
size_meta = Math.max(size_meta,m.meta.length)
size_tag = Math.max(size_tag,m.tag.length)
sortedmembers.forEach(function(m) {
size_host = Math.max(size_host, m.host.length)
size_meta = Math.max(size_meta, m.meta.length)
size_tag = Math.max(size_tag, m.tag.length)
})

@@ -405,28 +415,32 @@

w(AE.cursorHide)
w(AE.cursorUp(nm+2))
w(AE.cursorUp(nm + 2))
w(AE.eraseDown)
console.log(head([
Pad('host',size_host),
Pad(2,'a'),
Pad(2,'r'),
Pad(2,'s'),
Pad(8,'time'),
Pad('tag',size_tag),
Pad('meta',size_meta),
'id'
].join(' ')))
console.log(
head(
[
Pad('host', size_host),
Pad(2, 'a'),
Pad(2, 'r'),
Pad(2, 's'),
Pad(8, 'time'),
Pad('tag', size_tag),
Pad('meta', size_meta),
'id'
].join(' ')
)
)
sortedmembers.forEach(function (m,i) {
sortedmembers.forEach(function(m, i) {
var memline = [
Pad(m.host||'',size_host),
Pad(2,''+(m.add||0)),
Pad(2,''+(m.rem||0)),
Pad(2,''+(states[m.state]||'U')),
Pad(8,''+(m.when-start)),
Pad(m.tag||'',size_tag),
Pad(m.meta||'',size_meta),
Pad(m.host || '', size_host),
Pad(2, '' + (m.add || 0)),
Pad(2, '' + (m.rem || 0)),
Pad(2, '' + (states[m.state] || 'U')),
Pad(8, '' + (m.when - start)),
Pad(m.tag || '', size_tag),
Pad(m.meta || '', size_meta),
m.id
]
var lt = memline.join(' ')

@@ -440,6 +454,5 @@

Keypress(process.stdin)
process.stdin.on('keypress', function (ch, key) {
process.stdin.on('keypress', function(ch, key) {
if (key && key.ctrl && key.name == 'c') {

@@ -451,3 +464,3 @@ process.exit()

if ('p' === ch) {
sortedmembers = sortedmembers.filter(function (m) {
sortedmembers = sortedmembers.filter(function(m) {
if (2 === m.state) {

@@ -463,3 +476,3 @@ delete allmembers[m.id]

if (process.stdin.setRawMode){
if (process.stdin.setRawMode) {
process.stdin.setRawMode(true)

@@ -470,9 +483,8 @@ }

function parse_meta (meta, options) {
function parse_meta(meta, options) {
var out = []
options.monitor.meta.forEach(function (mf) {
var v = JP.value(meta,mf)
options.monitor.meta.forEach(function(mf) {
var v = JP.value(meta, mf)
if (null != v) {
out.push( Util.inspect(v).replace(/\s+/g,'') )
out.push(Util.inspect(v).replace(/\s+/g, ''))
}

@@ -479,0 +491,0 @@ })

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc