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

ably

Package Overview
Dependencies
Maintainers
1
Versions
191
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ably - npm Package Compare versions

Comparing version 1.0.7-pushbeta to 1.0.7-test-npm-git-dir-2

session.vim

3

browser/lib/transport/jsonptransport.js

@@ -170,4 +170,3 @@ var JSONPTransport = (function() {

if(!Http.Request) {
Http.Request = function(method, rest, uri, headers, params, body, callback) {
/* ignore method; always GET */
Http.Request = function(rest, uri, headers, params, body, callback) {
var req = createRequest(uri, headers, params, body, CometTransport.REQ_SEND, rest && rest.options.timeouts);

@@ -174,0 +173,0 @@ req.once('complete', callback);

@@ -52,3 +52,3 @@ var XHRRequest = (function() {

function XHRRequest(uri, headers, params, body, requestMode, timeouts, method) {
function XHRRequest(uri, headers, params, body, requestMode, timeouts) {
EventEmitter.call(this);

@@ -62,3 +62,2 @@ params = params || {};

this.body = body;
this.method = method ? method.toUpperCase() : (Utils.isEmptyArg(body) ? 'POST' : 'GET');
this.requestMode = requestMode;

@@ -72,3 +71,3 @@ this.timeouts = timeouts;

var createRequest = XHRRequest.createRequest = function(uri, headers, params, body, requestMode, timeouts, method) {
var createRequest = XHRRequest.createRequest = function(uri, headers, params, body, requestMode, timeouts) {
/* XHR requests are used either with the context being a realtime

@@ -78,3 +77,3 @@ * transport, or with timeouts passed in (for when used by a rest client),

timeouts = (this && this.timeouts) || timeouts || Defaults.TIMEOUTS;
return new XHRRequest(uri, headers, Utils.copy(params), body, requestMode, timeouts, method);
return new XHRRequest(uri, headers, Utils.copy(params), body, requestMode, timeouts);
};

@@ -104,3 +103,3 @@

body = this.body,
method = this.method,
method = Utils.isEmptyArg(body) ? 'GET' : 'POST',
headers = this.headers,

@@ -296,4 +295,4 @@ xhr = this.xhr = new XMLHttpRequest(),

Http.supportsAuthHeaders = true;
Http.Request = function(method, rest, uri, headers, params, body, callback) {
var req = createRequest(uri, headers, params, body, REQ_SEND, rest && rest.options.timeouts, method);
Http.Request = function(rest, uri, headers, params, body, callback) {
var req = createRequest(uri, headers, params, body, REQ_SEND, rest && rest.options.timeouts);
req.once('complete', callback);

@@ -300,0 +299,0 @@ req.exec();

@@ -25,5 +25,32 @@ var Http = (function() {

Http.get = function(rest, path, headers, params, callback) {
Http['do']('get', rest, path, headers, null, params, callback);
}
callback = callback || noop;
var uri = (typeof(path) == 'function') ? path : function(host) { return rest.baseUri(host) + path; };
var binary = (headers && headers.accept != 'application/json');
var hosts, connection = rest.connection;
if(connection && connection.state == 'connected')
hosts = [connection.connectionManager.host];
else
hosts = Defaults.getHosts(rest.options);
/* if there is only one host do it */
if(hosts.length == 1) {
Http.getUri(rest, uri(hosts[0]), headers, params, callback);
return;
}
/* so host is an array with preferred host plus at least one fallback */
var tryAHost = function(candidateHosts) {
Http.getUri(rest, uri(candidateHosts.shift()), headers, params, function(err) {
if(err && shouldFallback(err) && candidateHosts.length) {
/* use a fallback host if available */
tryAHost(candidateHosts);
return;
}
callback.apply(null, arguments);
});
}
tryAHost(hosts);
};
/**

@@ -38,3 +65,3 @@ * Perform an HTTP GET request for a given resolved URI

Http.getUri = function(rest, uri, headers, params, callback) {
Http.Request('get', rest, uri, headers, params, null, callback);
Http.Request(rest, uri, headers, params, null, callback || noop);
};

@@ -52,35 +79,2 @@

Http.post = function(rest, path, headers, body, params, callback) {
Http['do']('post', rest, path, headers, body, params, callback);
};
/**
* Perform an HTTP POST request for a given resolved URI
* @param rest
* @param the full path of the POST request
* @param headers optional hash of headers
* @param body object or buffer containing request body
* @param params optional hash of params
* @param callback (err, response)
*/
Http.postUri = function(rest, uri, headers, body, params, callback) {
Http.Request('post', rest, uri, headers, params, body, callback);
};
Http['delete'] = function(rest, path, headers, params, callback) {
Http['do']('delete', rest, path, headers, null, params, callback);
}
Http.deleteUri = function(rest, uri, headers, params, callback) {
Http.Request('delete', rest, uri, headers, params, null, callback);
};
Http.put = function(rest, path, headers, body, params, callback) {
Http['do']('put', rest, path, headers, body, params, callback);
};
Http.putUri = function(rest, uri, headers, body, params, callback) {
Http.Request('put', rest, uri, headers, params, body, callback);
};
Http['do'] = function(method, rest, path, headers, body, params, callback) {
callback = callback || noop;

@@ -98,3 +92,3 @@ var uri = (typeof(path) == 'function') ? path : function(host) { return rest.baseUri(host) + path; };

if(hosts.length == 1) {
Http.Request(method, rest, uri(hosts[0]), headers, params, body, callback);
Http.postUri(rest, uri(hosts[0]), headers, body, params, callback);
return;

@@ -105,3 +99,3 @@ }

var tryAHost = function(candidateHosts) {
Http.Request(method, rest, uri(candidateHosts.shift()), headers, params, body, function(err) {
Http.postUri(rest, uri(candidateHosts.shift()), headers, body, params, function(err) {
if(err && shouldFallback(err) && candidateHosts.length) {

@@ -117,2 +111,15 @@ tryAHost(candidateHosts);

/**
* Perform an HTTP POST request for a given resolved URI
* @param rest
* @param the full path of the POST request
* @param headers optional hash of headers
* @param body object or buffer containing request body
* @param params optional hash of params
* @param callback (err, response)
*/
Http.postUri = function(rest, uri, headers, body, params, callback) {
Http.Request(rest, uri, headers, params, body, callback || noop);
};
Http.supportsAuthHeaders = false;

@@ -119,0 +126,0 @@ Http.supportsLinkHeaders = false;

@@ -12,3 +12,2 @@ var Channel = (function() {

this.presence = new Presence(this);
this.push = new PushChannel(this);
this.setOptions(channelOptions);

@@ -87,3 +86,3 @@ }

format = rest.options.useBinaryProtocol ? 'msgpack' : 'json',
headers = Utils.defaultPostHeaders(format);
headers = Utils.copy(Utils.defaultPostHeaders(format));

@@ -90,0 +89,0 @@ if(rest.options.headers)

@@ -79,6 +79,6 @@ var Resource = (function() {

function logResponseHandler(callback, method, path, params) {
function logResponseHandler(callback, verb, path, params) {
return function(err, body, headers, unpacked, statusCode) {
if (err) {
Logger.logAction(Logger.LOG_MICRO, 'Resource.' + method + '()', 'Received Error; ' + urlFromPathAndParams(path, params) + '; Error: ' + Utils.inspectError(err));
Logger.logAction(Logger.LOG_MICRO, 'Resource.' + verb + '()', 'Received Error; ' + urlFromPathAndParams(path, params) + '; Error: ' + Utils.inspectError(err));
} else {

@@ -93,20 +93,4 @@ Logger.logAction(Logger.LOG_MICRO, 'Resource.' + verb + '()',

Resource.get = function(rest, path, origheaders, origparams, envelope, callback) {
Resource['do']('get', rest, path, null, origheaders, origparams, envelope, callback);
};
Resource.post = function(rest, path, body, origheaders, origparams, envelope, callback) {
Resource['do']('post', rest, path, body, origheaders, origparams, envelope, callback);
};
Resource['delete'] = function(rest, path, origheaders, origparams, envelope, callback) {
Resource['do']('delete', rest, path, null, origheaders, origparams, envelope, callback);
};
Resource.put = function(rest, path, body, origheaders, origparams, envelope, callback) {
Resource['do']('put', rest, path, body, origheaders, origparams, envelope, callback);
};
Resource['do'] = function(method, rest, path, body, origheaders, origparams, envelope, callback) {
if (Logger.shouldLog(Logger.LOG_MICRO)) {
callback = logResponseHandler(callback, method, path, origparams);
callback = logResponseHandler(callback, 'get', path, origparams);
}

@@ -119,8 +103,8 @@

function doRequest(headers, params) {
function doGet(headers, params) {
if (Logger.shouldLog(Logger.LOG_MICRO)) {
Logger.logAction(Logger.LOG_MICRO, 'Resource.' + method + '()', 'Sending; ' + urlFromPathAndParams(path, params));
Logger.logAction(Logger.LOG_MICRO, 'Resource.get()', 'Sending; ' + urlFromPathAndParams(path, params));
}
var args = [rest, path, headers, body, params, function(err, res, headers, unpacked, statusCode) {
Http.get(rest, path, headers, params, function(err, res, headers, unpacked, statusCode) {
if(err && Auth.isTokenErr(err)) {

@@ -134,3 +118,3 @@ /* token has expired, so get a new one */

/* retry ... */
withAuthDetails(rest, origheaders, origparams, callback, doRequest);
withAuthDetails(rest, origheaders, origparams, callback, doGet);
});

@@ -140,7 +124,18 @@ return;

callback(err, res, headers, unpacked, statusCode);
}];
if (!body) {
args.splice(3, 1);
}
});
}
withAuthDetails(rest, origheaders, origparams, callback, doGet);
};
Resource.post = function(rest, path, body, origheaders, origparams, envelope, callback) {
if (Logger.shouldLog(Logger.LOG_MICRO)) {
callback = logResponseHandler(callback, 'post', path, origparams);
}
if(envelope) {
callback = unenvelope(callback, envelope);
origparams['envelope'] = envelope;
}
function doPost(headers, params) {
if (Logger.shouldLog(Logger.LOG_MICRO)) {

@@ -152,11 +147,25 @@ var decodedBody = body;

} catch (decodeErr) {
Logger.logAction(Logger.LOG_MICRO, 'Resource.' + method + '()', 'Sending MsgPack Decoding Error: ' + Utils.inspectError(decodeErr));
Logger.logAction(Logger.LOG_MICRO, 'Resource.post()', 'Sending MsgPack Decoding Error: ' + Utils.inspectError(decodeErr));
}
}
Logger.logAction(Logger.LOG_MICRO, 'Resource.' + method + '()', 'Sending; ' + urlFromPathAndParams(path, params) + '; Body: ' + decodedBody);
Logger.logAction(Logger.LOG_MICRO, 'Resource.post()', 'Sending; ' + urlFromPathAndParams(path, params) + '; Body: ' + decodedBody);
}
Http[method].apply(this, args);
Http.post(rest, path, headers, body, params, function(err, res, headers, unpacked, statusCode) {
if(err && Auth.isTokenErr(err)) {
/* token has expired, so get a new one */
rest.auth.authorize(null, null, function(err) {
if(err) {
callback(err);
return;
}
/* retry ... */
withAuthDetails(rest, origheaders, origparams, callback, doPost);
});
return;
}
callback(err, res, headers, unpacked, statusCode);
});
}
withAuthDetails(rest, origheaders, origparams, callback, doRequest);
withAuthDetails(rest, origheaders, origparams, callback, doPost);
};

@@ -163,0 +172,0 @@

@@ -48,3 +48,2 @@ var Rest = (function() {

this.channels = new Channels(this);
this.push = new Push(this);
}

@@ -51,0 +50,0 @@

@@ -74,4 +74,2 @@ var Message = (function() {

}
if(this.extras)
result += '; extras=' + JSON.stringify(this.extras);
result += ']';

@@ -78,0 +76,0 @@ return result;

@@ -121,4 +121,2 @@ "use strict";

'<%= dirs.common %>/lib/types/stats.js',
'<%= dirs.common %>/lib/types/devicedetails.js',
'<%= dirs.common %>/lib/types/pushchannelsubscription.js',

@@ -142,4 +140,2 @@ '<%= dirs.common %>/lib/transport/connectionerror.js',

'<%= dirs.common %>/lib/client/connection.js',
'<%= dirs.common %>/lib/client/push.js',
'<%= dirs.common %>/lib/client/pushchannel.js',
'<%= dirs.common %>/lib/client/channel.js',

@@ -146,0 +142,0 @@ '<%= dirs.common %>/lib/client/realtimechannel.js',

@@ -67,5 +67,25 @@ "use strict";

Http.get = function(rest, path, headers, params, callback) {
Http['do']('get', rest, path, headers, null, params, callback);
}
var uri = (typeof(path) == 'function') ? path : function(host) { return rest.baseUri(host) + path; };
var hosts = Defaults.getHosts(rest.options);
/* see if we have one or more than one host */
if(hosts.length == 1) {
Http.getUri(rest, uri(hosts[0]), headers, params, callback);
return;
}
/* so host is an array with preferred host plus at least one fallback */
var tryAHost = function(candidateHosts) {
Http.getUri(rest, uri(candidateHosts.shift()), headers, params, function(err) {
if(err && shouldFallback(err) && candidateHosts.length) {
/* use a fallback host if available */
tryAHost(candidateHosts);
return;
}
callback.apply(null, arguments);
});
}
tryAHost(hosts);
};
/**

@@ -80,3 +100,13 @@ * Perform an HTTP GET request for a given resolved URI

Http.getUri = function(rest, uri, headers, params, callback) {
Http.doUri('get', rest, uri, headers, null, params, callback);
/* Will generally be making requests to one or two servers exclusively
* (Ably and perhaps an auth server), so for efficiency, use the
* foreverAgent to keep the TCP stream alive between requests where possible */
var agentOptions = (rest && rest.options.restAgentOptions) || Defaults.restAgentOptions;
var getOptions = {headers: headers, encoding: null, forever: true, agentOptions: agentOptions};
if(params)
getOptions.qs = params;
getOptions.uri = uri;
getOptions.timeout = (rest && rest.options.timeouts || Defaults.TIMEOUTS).httpRequestTimeout;
request.get(getOptions, handler(uri, params, callback));
};

@@ -94,35 +124,2 @@

Http.post = function(rest, path, headers, body, params, callback) {
Http['do']('post', rest, path, headers, body, params, callback);
};
/**
* Perform an HTTP POST request for a given resolved URI
* @param rest
* @param the full path of the POST request
* @param headers optional hash of headers
* @param body object or buffer containing request body
* @param params optional hash of params
* @param callback (err, response)
*/
Http.postUri = function(rest, uri, headers, body, params, callback) {
Http.doUri('post', rest, uri, headers, body, params, callback);
};
Http['delete'] = function(rest, path, headers, params, callback) {
Http['do']('delete', rest, path, headers, null, params, callback);
};
Http.deleteUri = function(rest, uri, headers, params, callback) {
Http.doUri('delete', rest, uri, headers, null, params, callback);
};
Http.put = function(rest, path, headers, body, params, callback) {
Http['do']('put', rest, path, headers, body, params, callback);
};
Http.putUri = function(rest, uri, headers, body, params, callback) {
Http.doUri('put', rest, uri, headers, body, params, callback);
};
Http['do'] = function(method, rest, path, headers, body, params, callback) {
var uri = (typeof(path) == 'function') ? path : function(host) { return rest.baseUri(host) + path; };

@@ -133,3 +130,3 @@ var hosts = Defaults.getHosts(rest.options);

if(hosts.length == 1) {
Http.doUri(method, rest, uri(hosts[0]), headers, body, params, callback);
Http.postUri(rest, uri(hosts[0]), headers, body, params, callback);
return;

@@ -139,3 +136,3 @@ }

var tryAHost = function(candidateHosts) {
Http.doUri(method, rest, uri(candidateHosts.shift()), headers, body, params, function(err) {
Http.postUri(rest, uri(candidateHosts.shift()), headers, body, params, function(err) {
if(err && shouldFallback(err) && candidateHosts.length) {

@@ -151,17 +148,20 @@ tryAHost(candidateHosts);

Http.doUri = function(method, rest, uri, headers, body, params, callback) {
/* Will generally be making requests to one or two servers exclusively
* (Ably and perhaps an auth server), so for efficiency, use the
* foreverAgent to keep the TCP stream alive between requests where possible */
/**
* Perform an HTTP POST request for a given resolved URI
* @param rest
* @param the full path of the POST request
* @param headers optional hash of headers
* @param body object or buffer containing request body
* @param params optional hash of params
* @param callback (err, response)
*/
Http.postUri = function(rest, uri, headers, body, params, callback) {
var agentOptions = (rest && rest.options.restAgentOptions) || Defaults.restAgentOptions;
var doOptions = {headers: headers, encoding: null, forever: true, agentOptions: agentOptions};
if (body) {
doOptions.body = body;
}
var postOptions = {headers: headers, body: body, encoding: null, forever: true, agentOptions: agentOptions};
if(params)
doOptions.qs = params;
postOptions.qs = params;
doOptions.uri = uri;
doOptions.timeout = (rest && rest.options.timeouts || Defaults.TIMEOUTS).httpRequestTimeout;
request[method](doOptions, handler(uri, params, callback));
postOptions.uri = uri;
postOptions.timeout = (rest && rest.options.timeouts || Defaults.TIMEOUTS).httpRequestTimeout;
request.post(postOptions, handler(uri, params, callback));
};

@@ -168,0 +168,0 @@

@@ -39,4 +39,2 @@ "use strict";

includeScript('../common/lib/types/stats.js');
includeScript('../common/lib/types/devicedetails.js');
includeScript('../common/lib/types/pushchannelsubscription.js');
includeScript('../common/lib/transport/connectionerror.js');

@@ -56,4 +54,2 @@ includeScript('../common/lib/transport/messagequeue.js');

includeScript('../common/lib/client/presence.js');
includeScript('../common/lib/client/push.js');
includeScript('../common/lib/client/pushchannel.js');
includeScript('../common/lib/client/channel.js');

@@ -60,0 +56,0 @@ includeScript('../common/lib/client/realtimechannel.js');

@@ -37,4 +37,2 @@ "use strict";

includeScript('../common/lib/types/stats.js');
includeScript('../common/lib/types/devicedetails.js');
includeScript('../common/lib/types/pushchannelsubscription.js');
includeScript('../common/lib/client/resource.js');

@@ -44,4 +42,2 @@ includeScript('../common/lib/client/paginatedresource.js');

includeScript('../common/lib/client/presence.js');
includeScript('../common/lib/client/push.js');
includeScript('../common/lib/client/pushchannel.js');
includeScript('../common/lib/client/channel.js');

@@ -55,3 +51,2 @@ includeScript('../common/lib/client/rest.js');

Rest.Http = context.Http;
Rest.Resource = context.Resource;
Rest.Utils = context.Utils;
{
"name": "ably",
"description": "Realtime client library for Ably.io, the realtime messaging service",
"version": "1.0.7-pushbeta",
"version": "1.0.7-test-npm-git-dir-2",
"main": "./nodejs/index.js",

@@ -6,0 +6,0 @@ "typings": "./browser/static/ably.d.ts",

@@ -517,3 +517,3 @@ # [Ably](https://www.ably.io)

## Releasing
## Release Process

@@ -524,2 +524,3 @@ - Make sure you have the closure compiler installed, needed to generate

- `grunt release:deploy`
- Visit https://github.com/ably/ably-js/tags and add release notes for the release including links to the changelog entry.

@@ -526,0 +527,0 @@ ## License

@@ -8,3 +8,3 @@ {

{
"capability": "{ \"cansubscribe:*\":[\"subscribe\"], \"canpublish:*\":[\"publish\"], \"canpublish:andpresence\":[\"presence\",\"publish\"], \"pushenabled:*\":[\"publish\",\"subscribe\",\"push-subscribe\"], \"pushenabled:admin:*\":[\"publish\",\"subscribe\",\"push-admin\"] }"
"capability": "{ \"cansubscribe:*\":[\"subscribe\"], \"canpublish:*\":[\"publish\"], \"canpublish:andpresence\":[\"presence\",\"publish\"] }"
},

@@ -19,4 +19,3 @@ {

"namespaces": [
{ "id": "persisted", "persisted": true },
{ "id": "pushenabled", "pushEnabled": true }
{ "id": "persisted", "persisted": true }
],

@@ -23,0 +22,0 @@ "channels": [

"use strict";
define(['ably', 'shared_helper', 'async'], function(Ably, helper, async) {
var currentTime, rest, exports = {},
_exports = {},
testClientId = 'clientId',
var exports = {},
displayError = helper.displayError,
utils = helper.Utils,
i = utils.inspect,
displayError = helper.displayError,
closeAndFinish = helper.closeAndFinish,
monitorConnection = helper.monitorConnection,
testOnAllTransports = helper.testOnAllTransports,
BufferUtils = Ably.Realtime.BufferUtils,
Crypto = Ably.Realtime.Crypto,
Message = Ably.Realtime.Message,
displayError = helper.displayError,
testResourcesPath = helper.testResourcesPath,
msgpack = (typeof(window) == 'object') ? Ably.msgpack : require('msgpack-js'),
mixin = helper.Utils.mixin,
utils = helper.Utils,
noop = function() {},
createPM = Ably.Realtime.ProtocolMessage.fromDeserialized,
simulateDroppedConnection = helper.simulateDroppedConnection,
availableTransports = helper.availableTransports;
testOnAllTransports = helper.testOnAllTransports;
exports.setuptmp = function(test) {
exports.setupMessage = function(test) {
test.expect(1);
helper.setupApp(function(err) {
if(err) {
test.ok(false, helper.displayError(err));
test.done();
return;
test.ok(false, displayError(err));
} else {
test.ok(true, 'setup app');
}
rest = helper.AblyRest();
rest.time(function(err, time) {
if(err) {
test.ok(false, helper.displayError(err));
} else {
currentTime = time;
test.ok(true, 'Obtained time via REST');
}
test.done();
});
});
};
function requestSync(realtime, channelName) {
realtime.connection.connectionManager.activeProtocol.transport.send({
action: 16,
channel: channelName
});
}
function attachChannels(channels, callback) {
async.map(channels, function(channel, cb) { channel.attach(cb); }, callback);
}
function compareMessage(one, two) {
if(one.encoding != two.encoding) return false;
if(typeof(one.data) == 'string' && typeof(two.data) == 'string') {
return one.data == two.data;
}
if(BufferUtils.isBuffer(one.data) && BufferUtils.isBuffer(two.data)) {
return (BufferUtils.bufferCompare(one.data, two.data) === 0);
}
return JSON.stringify(one.data) == JSON.stringify(two.data);
}
function testEachFixture(test, filename, channelName, testsPerFixture, fixtureTest) {
if(!Crypto) {
test.ok(false, 'Encryption not supported');
test.done();
return;
}
loadTestData(testResourcesPath + filename, function(err, testData) {
if(err) {
test.ok(false, 'Unable to get test assets; err = ' + displayError(err));
return;
}
var realtime = helper.AblyRealtime();
var key = BufferUtils.base64Decode(testData.key);
var iv = BufferUtils.base64Decode(testData.iv);
var channel = realtime.channels.get(channelName, {cipher: {key: key, iv: iv}});
test.expect(testData.items.length * testsPerFixture);
for(var i = 0; i < testData.items.length; i++) {
var item = testData.items[i];
/* read messages from test data */
var testMessage = Message.fromValues(item.encoded);
var encryptedMessage = Message.fromValues(item.encrypted);
/* decode (ie remove any base64 encoding). Will throw when
* it gets to the cipher part of the encoding, so wrap in try/catch */
try { Message.decode(testMessage); } catch(_) {}
try { Message.decode(encryptedMessage); } catch(_) {}
/* reset channel cipher, to ensure it uses the given iv */
channel.setOptions({cipher: {key: key, iv: iv}});
fixtureTest(channel.channelOptions, testMessage, encryptedMessage, item.msgpack);
}
closeAndFinish(test, realtime);
});
}
var publishIntervalHelper = function(currentMessageNum, channel, dataFn, onPublish){
return function(currentMessageNum) {
console.log('sending: ' + currentMessageNum);
channel.publish('event0', dataFn(), function() {
console.log('publish callback called');
onPublish();
});
};
},
publishAtIntervals = function(numMessages, channel, dataFn, onPublish){
for(var i = numMessages; i > 0; i--) {
setTimeout(publishIntervalHelper(i, channel, dataFn, onPublish), 2*i);
}
};
function _multiple_send(test, text, iterations, delay) {
if(!Crypto) {
test.ok(false, 'Encryption not supported');
test.done();
return;
}
var realtime = helper.AblyRealtime({ useBinaryProtocol: !text});
test.expect(iterations + 3);
var channelName = 'multiple_send_' + (text ? 'text_' : 'binary_') + iterations + '_' + delay,
channel = realtime.channels.get(channelName),
messageText = 'Test message (' + channelName + ')';
Crypto.generateRandomKey(128, function(err, key) {
channel.setOptions({cipher: {key: key}}, function(err) {
if(err) {
test.ok(false, 'Unable to set channel options; err = ' + displayError(err));
closeAndFinish(test, realtime);
return;
}
test.equal(channel.channelOptions.cipher.algorithm, 'aes');
test.equal(channel.channelOptions.cipher.keyLength, 128);
function sendAll(sendCb) {
var sent = 0;
var sendOnce = function() {
channel.publish('event0', messageText);
if(++sent == iterations) {
sendCb(null);
return;
}
setTimeout(sendOnce, delay);
};
sendOnce();
}
function recvAll(recvCb) {
var received = 0;
channel.subscribe('event0', function(msg) {
test.ok(msg.data == messageText);
if(++received == iterations)
recvCb(null);
});
}
async.parallel([sendAll, recvAll], function(err) {
if(err) {
test.ok(false, 'Error sending messages; err = ' + displayError(err));
}
test.ok('Verify all messages received');
closeAndFinish(test, realtime);
});
});
});
}
function extractClientIds(presenceSet) {
return utils.arrMap(presenceSet, function(presmsg) {
return presmsg.clientId;
}).sort();
}
function extractMember(presenceSet, clientId) {
return helper.arrFind(presenceSet, function(member) {
return member.clientId === clientId;
});
}
/***************************************************/
function extractClientIds(presenceSet) {
return utils.arrMap(presenceSet, function(presmsg) {
return presmsg.clientId;
}).sort();
}
function extractMember(presenceSet, clientId) {
return helper.arrFind(presenceSet, function(member) {
return member.clientId === clientId;
});
}
var rest, authToken, authToken2;
var testClientId = 'testclient', testClientId2 = 'testclient2';
var createListenerChannel = function(channelName, callback) {
var channel, realtime;
try {
realtime = helper.AblyRealtime();
realtime.connection.on('connected', function() {
console.log("Listener connected");
channel = realtime.channels.get(channelName);
channel.attach(function(err) {
console.log("Listener attached to channel " + channelName);
callback(err, realtime, channel);
});
});
} catch(err) {
callback(err, realtime);
}
};
var listenerFor = function(eventName, expectedClientId) {
return function(test, channel, callback) {
var presenceHandler = function(presmsg) {
if(this.event === eventName) {
test.ok(true, 'Presence ' + eventName + ' received');
if(expectedClientId !== undefined) {
test.equal(presmsg.clientId, expectedClientId, 'Verify correct clientId');
}
channel.presence.unsubscribe(presenceHandler);
callback();
}
};
channel.presence.subscribe(presenceHandler);
};
};
var runTestWithEventListener = function(test, channel, eventListener, testRunner) {
try {
createListenerChannel(channel, function(err, listenerRealtime, presenceChannel){
if(err) {
test.ok(false, displayError(err));
closeAndFinish(test, listenerRealtime);
return;
}
console.log("presenceChannel:", presenceChannel.name);
async.parallel([
function(cb) {
eventListener(test, presenceChannel, cb);
},
testRunner
], function(err, res) {
console.log("in callback, err = ", err);
if(err) {
test.ok(false, displayError(err));
}
// testRunner might or might not call back with an open realtime
var openConnections = (res[1] && res[1].close) ?
[listenerRealtime, res[1]] :
listenerRealtime;
closeAndFinish(test, openConnections);
});
});
} catch(e) {
test.ok(false, 'test failed with exception: ' + e.stack);
test.done();
}
};
exports.idle_transport_timeout = function(test) {
var realtime = helper.AblyRealtime({realtimeRequestTimeout: 100, log: {level: 4}}),
window.localStorage.removeItem('ably-transport-preference')
var realtime = helper.AblyRealtime({realtimeRequestTimeout: 100, transports: ['xhr_polling']}),
originalOnProtocolMessage;

@@ -300,5 +51,3 @@

return module.exports = helper.withTimeout(exports);
});
window.__karma__ = { base: '../' };
window.__karma__.files = {"browser/static/ably-commonjs.js":true,"browser/static/ably-commonjs.noencryption.js":true,"browser/static/ably-nativescript.js":true,"browser/static/ably-reactnative.js":true,"browser/static/ably.js":true,"browser/static/ably.min.js":true,"browser/static/ably.noencryption.js":true,"browser/static/ably.noencryption.min.js":true,"browser/lib/util/base64.js":true,"node_modules/async/lib/async.js":true,"spec/common/globals/environment.js":true,"spec/common/globals/named_dependencies.js":true,"spec/common/modules/client_module.js":true,"spec/common/modules/shared_helper.js":true,"spec/common/modules/testapp_manager.js":true,"spec/common/modules/testapp_module.js":true,"spec/common/ably-common/test-resources/crypto-data-128.json":true,"spec/common/ably-common/test-resources/crypto-data-256.json":true,"spec/common/ably-common/test-resources/messages-encoding.json":true,"spec/common/ably-common/test-resources/test-app-setup.json":true,"spec/support/browser_file_list.js":true,"spec/support/browser_setup.js":true,"spec/support/environment.vars.js":true,"spec/support/modules_helper.js":true,"spec/support/tear_down.js":true,"spec/support/test_helper.js":true,"spec/realtime/auth.test.js":true,"spec/realtime/channel.test.js":true,"spec/realtime/connection.test.js":true,"spec/realtime/connectivity.test.js":true,"spec/realtime/crypto.test.js":true,"spec/realtime/encoding.test.js":true,"spec/realtime/event_emitter.test.js":true,"spec/realtime/failure.test.js":true,"spec/realtime/history.test.js":true,"spec/realtime/init.test.js":true,"spec/realtime/message.test.js":true,"spec/realtime/presence.test.js":true,"spec/realtime/reauth.test.js":true,"spec/realtime/resume.test.js":true,"spec/realtime/sync.test.js":true,"spec/realtime/tmp.test.js":true,"spec/realtime/upgrade.test.js":true,"spec/rest/auth.test.js":true,"spec/rest/capability.test.js":true,"spec/rest/defaults.test.js":true,"spec/rest/history.test.js":true,"spec/rest/http.test.js":true,"spec/rest/init.test.js":true,"spec/rest/message.test.js":true,"spec/rest/presence.test.js":true,"spec/rest/push.test.js":true,"spec/rest/request.test.js":true,"spec/rest/stats.test.js":true,"spec/rest/time.test.js":true,"spec/browser/connection.test.js":true,"spec/browser/simple.test.js":true};
window.__karma__.files = {"browser/static/ably-commonjs.js":true,"browser/static/ably-commonjs.noencryption.js":true,"browser/static/ably-nativescript.js":true,"browser/static/ably-reactnative.js":true,"browser/static/ably.js":true,"browser/static/ably.min.js":true,"browser/static/ably.noencryption.js":true,"browser/static/ably.noencryption.min.js":true,"browser/lib/util/base64.js":true,"node_modules/async/lib/async.js":true,"spec/common/globals/environment.js":true,"spec/common/globals/named_dependencies.js":true,"spec/common/modules/client_module.js":true,"spec/common/modules/shared_helper.js":true,"spec/common/modules/testapp_manager.js":true,"spec/common/modules/testapp_module.js":true,"spec/common/ably-common/test-resources/crypto-data-128.json":true,"spec/common/ably-common/test-resources/crypto-data-256.json":true,"spec/common/ably-common/test-resources/messages-encoding.json":true,"spec/common/ably-common/test-resources/test-app-setup.json":true,"spec/support/browser_file_list.js":true,"spec/support/browser_setup.js":true,"spec/support/environment.vars.js":true,"spec/support/modules_helper.js":true,"spec/support/tear_down.js":true,"spec/support/test_helper.js":true,"spec/realtime/auth.test.js":true,"spec/realtime/channel.test.js":true,"spec/realtime/connection.test.js":true,"spec/realtime/connectivity.test.js":true,"spec/realtime/crypto.test.js":true,"spec/realtime/encoding.test.js":true,"spec/realtime/event_emitter.test.js":true,"spec/realtime/failure.test.js":true,"spec/realtime/history.test.js":true,"spec/realtime/init.test.js":true,"spec/realtime/message.test.js":true,"spec/realtime/presence.test.js":true,"spec/realtime/reauth.test.js":true,"spec/realtime/resume.test.js":true,"spec/realtime/sync.test.js":true,"spec/realtime/tmp.test.js":true,"spec/realtime/upgrade.test.js":true,"spec/rest/auth.test.js":true,"spec/rest/capability.test.js":true,"spec/rest/defaults.test.js":true,"spec/rest/history.test.js":true,"spec/rest/http.test.js":true,"spec/rest/init.test.js":true,"spec/rest/message.test.js":true,"spec/rest/presence.test.js":true,"spec/rest/request.test.js":true,"spec/rest/stats.test.js":true,"spec/rest/time.test.js":true,"spec/browser/connection.test.js":true,"spec/browser/simple.test.js":true};

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

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