parallel(buildTasks.map(pluck(0)), function(err, results) { if (err) { watcher.close(); return out.error(err); } out( '!{0x21BA,green} {0} !{grey}{1}ms', buildTasks.map(pluck(1)).join(' '), Date.now() - start ); // if we have a server instance, then close it if (server) { server.close(); } // if we have a create server function then create the server instance if (typeof createServer == 'function') { server = createServer(opts); server.listen((opts || {}).port || 3000, handleServerStart); } // replace the old rebuild rebuild = _rebuild; if (changed) { process.nextTick(rebuild); } });
return function(t) { var conn; var pending = connections.map(pluck('id')); function handleCallStart(peerId) { var peerIdx = pending.indexOf(peerId); t.ok(peerIdx >= 0, 'connected with ' + peerId); pending.splice(peerIdx, 1); console.log(pending); if (pending.length === 0) { conn.removeListener('call:started', handleCallStart); } } t.plan(connections.length + 1); conn = quickconnect(require('./signaling-server'), { room: roomId }); // create a new data channel conn.createDataChannel('test'); // wait for a connection to start on each of the existing channels if (pending.length > 0) { conn.on('call:started', handleCallStart); } connections.push(conn); t.pass('created new peer'); };
post('/people', { people: [{ name: 'Arnold Rimmer' }] }, function(err, res, body) { peopleIds = peopleIds.concat((body && body.people || []).map(pluck('id'))); t.ifError(err); t.equal(res.statusCode, 201); t.ok(peopleIds[1], 'id generated'); });
post('/people', { people: [{ name: 'Dave Lister' }] }, function(err, res, body) { peopleIds = (body && body.people || []).map(pluck('id')); t.ifError(err); t.equal(res.statusCode, 201); t.ok(peopleIds[0], 'id generated'); });
post('/posts', { posts: [{ title: 'Another post' }] }, function(err, res, body) { postIds = postIds.concat((body && body.posts || []).map(pluck('id'))); t.ifError(err); t.equal(res.statusCode, 201); t.ok(postIds[1], 'id generated'); });
post('/posts', { posts: [{ title: 'My experience with jsonapi' }] }, function(err, res, body) { postIds = (body && body.posts || []).map(pluck('id')); t.ifError(err); t.equal(res.statusCode, 201); t.ok(postIds[0], 'id generated'); });
get('/people/' + peopleIds.join(','), function(err, res, body) { t.ifError(err); t.equal(res.statusCode, 200); t.deepEqual((body && body.people || []).map(pluck('name')), [ 'Dave Lister', 'Arnold Rimmer' ]); });
get('/posts/' + postIds.join(','), function(err, res, body) { t.ifError(err); t.equal(res.statusCode, 200); t.deepEqual((body && body.posts || []).map(pluck('title')), [ 'My experience with jsonapi', 'Another post' ]); });
pull.collect(function(err, values) { if (err) { return; } // update the strategies db.strategies = db.strategies.concat(values.map(pluck('key'))); // for each of the strategies queue up a check operation db.strategies.forEach(function(value) { queue.add('checkStrategy', value); }); })
var detect = require('rtc-core/detect'); var findPlugin = require('rtc-core/plugin'); var PriorityQueue = require('priorityqueuejs'); var pluck = require('whisk/pluck'); var pluckSessionDesc = pluck('sdp', 'type'); // some validation routines var checkCandidate = require('rtc-validator/candidate'); // the sdp cleaner var sdpclean = require('rtc-sdpclean'); var parseSdp = require('rtc-sdp'); var PRIORITY_LOW = 100; var PRIORITY_WAIT = 1000; // priority order (lower is better) var DEFAULT_PRIORITIES = [ 'candidate', 'setLocalDescription', 'setRemoteDescription', 'createAnswer', 'createOffer' ]; // define event mappings var METHOD_EVENTS = { setLocalDescription: 'setlocaldesc', setRemoteDescription: 'setremotedesc', createOffer: 'offer', createAnswer: 'answer'