New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

koa-ws

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

koa-ws - npm Package Compare versions

Comparing version 0.1.2 to 0.1.3

10

package.json
{
"name": "koa-ws",
"version": "0.1.2",
"version": "0.1.3",
"keywords": [

@@ -27,7 +27,2 @@ "koa",

},
"config": {
"travis-cov": {
"threshold": 70
}
},
"dependencies": {

@@ -49,6 +44,7 @@ "co": "^3.1.0",

"koa": "^0.8.2",
"koa-generic-session": "^1.2.0",
"mocha": "^1.21.4",
"mocha-lcov-reporter": "0.0.1",
"travis-cov": "^0.2.5"
"supertest": "^0.13.0"
}
}

@@ -82,6 +82,5 @@ (function(){

// Add helper handlers for the folowing events
if (client._socket) {
if (typeof client._socket === 'undefined') {
['open', 'close', 'message']
.forEach(function (type, i) {
return;
if (!client['on' + type]) {

@@ -106,3 +105,3 @@ client['on' + type] = function () {

if (typeof arguments[1] === 'object') {
if (typeof arguments[1] !== 'function' && typeof arguments[1] !== 'undefined') {
payload.params = arguments[1];

@@ -146,2 +145,3 @@ if (typeof arguments[2] === 'function') {

payload = messageQueue.shift();
debug('Sending message: %o', payload);
client.send(JSON.stringify(payload));

@@ -155,4 +155,11 @@ }

debug('Incoming message: %o', payload);
if (payload.result && payload.id && awaitingResults[payload.id]) {
debug('Got result for id %s, sending to callback', payload.id);
if (payload.error && payload.id && awaitingResults[payload.id]) {
debug('Got error for id %s, code %s: %s', payload.id, payload.error.code, payload.error.message);
awaitingResults[payload.id].apply(client, [payload.error]);
} else if (payload.error) {
debug('Error %s: %s', payload.error.code, payload.error.message);
//client.emit('error', payload.error);
//console.error('Error %s: %s', payload.error.code, payload.error.message);
} else if (payload.id && awaitingResults[payload.id]) {
debug('Got result for id %s: %s', payload.id, payload.results);
awaitingResults[payload.id].apply(client, [null, payload.result]);

@@ -164,4 +171,2 @@ } else if (payload.method && Array.isArray(callbacks[payload.method])) {

}
} else if (payload.error) {
console.error('Error %s: %s', payload.error.code, payload.error.message);
}

@@ -168,0 +173,0 @@ });

@@ -119,5 +119,15 @@ var co = require('co');

var request = {
currentId: payload.id,
method: payload.method,
params: payload.params,
session: socket.session
};
request.error = socket.error.bind(request);
request.result = socket.result.bind(request);
request.respond = socket.result.bind(request);
if (!payload.jsonrpc && payload.jsonrpc !== '2.0') {
debug('Wrong protocol: %s', payload.jsonrpc);
socket.error(-32600, 'Invalid Request');
socket.error.apply(request, [-32600, 'Invalid Request']);
return;

@@ -128,9 +138,9 @@ }

debug('Missing method: %o', payload);
socket.error(-32600, 'Invalid Request');
socket.error.apply(request, [-32600, 'Invalid Request']);
return;
}
if (payload.params && (typeof payload.params !== 'object' || !Array.isArray(payload.params))) {
if (typeof payload.params !== 'undefined' && typeof payload.params !== 'object' && !Array.isArray(payload.params)) {
debug('Invalid params: %o', payload.params);
socket.error(-32602, 'Invalid params');
socket.error.apply(request, [-32602, 'Invalid params']);
return;

@@ -142,11 +152,2 @@ }

if (typeof methods[payload.method] === 'function') {
var request = {
currentId: payload.id,
method: payload.method,
params: payload.params,
session: socket.session
};
request.error = socket.error.bind(request);
request.result = socket.result.bind(request);
request.respond = socket.result.bind(request);
try {

@@ -156,7 +157,7 @@ methods[payload.method].apply(request);

debug('Internal error: %s', e.stack);
socket.error(-32603, 'Internal error').apply(request);
socket.error.apply(request, [-32603, 'Internal error']);
}
} else {
debug('Method not found: %s', payload.method, payload.params);
socket.error(-32601, 'Method not found');
socket.error.apply(request, [-32601, 'Method not found']);
}

@@ -176,3 +177,3 @@ });

(co(function* () {
socket.session = yield _this.app.sessionStore.get(sessionId);
socket.session = yield _this.app.sessionStore.get('koa:sess:' + sessionId);
socket.respond('session', socket.session);

@@ -179,0 +180,0 @@ })());

@@ -5,6 +5,17 @@ var fs = require('fs');

var request = require('supertest');
var koa = require('koa');
var http = require('http');
var session = require('koa-generic-session');
var app = koa();
app.keys = ['foo', 'bar'];
app.sessionStore = new session.MemoryStore();
app.use(session({
store: app.sessionStore,
allowEmpty: true
}));
app.use(function* (next) {
this.session.testing = true;
if (this.path === '/') {

@@ -50,2 +61,5 @@ this.set('Content-Type', 'text/html');

});
request(app.server)
.get('/');
});

@@ -83,2 +97,45 @@

it ('should return error -32700 parse error', function (done) {
client.once('message', function (payload) {
var payload = JSON.parse(payload);
expect(payload.error.code).to.be.equal(-32700);
done();
});
client.send({ foo: 'bar' });
});
it ('should return error -32600 invalid request', function (done) {
client.once('message', function (payload) {
var payload = JSON.parse(payload);
expect(payload.error.code).to.be.equal(-32600);
done();
});
client.send(JSON.stringify({ foo: 'bar' }));
});
it ('should return error -32602 invalid params', function (done) {
client.method('hello', 'world!', function (err, payload) {
expect(err.code).to.be.equal(-32602);
done();
});
});
it ('should return error -32601 method not found', function (done) {
client.method('foo', function (err, payload) {
expect(err.code).to.be.equal(-32601);
done();
});
});
it ('should serve the client library at /koaws.js', function (done) {
request(app.server)
.get('/koaws.js')
.expect(200)
.expect('Content-Type', 'application/javascript')
.end(function (err, res) {
if (err) throw err;
done();
});
});
});
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