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

@twilio/webrtc

Package Overview
Dependencies
Maintainers
1
Versions
34
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@twilio/webrtc - npm Package Compare versions

Comparing version 1.0.3 to 1.1.0

17

CHANGELOG.md

@@ -0,1 +1,18 @@

1.1.0 (October 24, 2017)
========================
New Features
------------
- Adds Chrome support for getting and setting `maxPacketLifeTime` on
RTCDataChannels by remapping the legacy property `maxRetransmitTime` to
`maxPacketLifeTime`. (JSDK-1572)
Bug Fixes
---------
- Fixed a bug where our `getStats` function returned
StandardizedTrackStatsReports of the wrong kind in the members of
StandardizedTrackStatsResponse. (JSKD-1605)
1.0.3 (October 13, 2017)

@@ -2,0 +19,0 @@ ========================

2

lib/getstats.js

@@ -72,3 +72,3 @@ /* global webkitRTCPeerConnection, mozRTCPeerConnection */

}).filter(function(track) {
return track;
return track && track.kind === kind;
});

@@ -75,0 +75,0 @@ }

@@ -1,2 +0,2 @@

/* globals RTCSessionDescription, webkitRTCPeerConnection */
/* globals RTCDataChannel, RTCSessionDescription, webkitRTCPeerConnection */
'use strict';

@@ -38,3 +38,4 @@

var onsignalingstatechange = null;
util.interceptEvent(this, 'datachannel');
util.interceptEvent(this, 'signalingstatechange');

@@ -71,19 +72,2 @@ /* eslint new-cap:0 */

},
onsignalingstatechange: {
get: function() {
return onsignalingstatechange;
},
set: function(_onsignalingstatechange) {
if (onsignalingstatechange) {
this.removeEventListener('signalingstatechange', onsignalingstatechange);
}
if (typeof _onsignalingstatechange === 'function') {
onsignalingstatechange = _onsignalingstatechange;
this.addEventListener('signalingstatechange', onsignalingstatechange);
} else {
onsignalingstatechange = null;
}
}
},
remoteDescription: {

@@ -110,2 +94,7 @@ enumerable: true,

peerConnection.addEventListener('datachannel', function ondatachannel(event) {
shimDataChannel(event.channel);
self.dispatchEvent(event);
});
peerConnection.addEventListener('signalingstatechange', function onsignalingstatechange() {

@@ -230,2 +219,9 @@ if (!self._pendingLocalOffer && !self._pendingRemoteOffer) {

ChromeRTCPeerConnection.prototype.createDataChannel = function createDataChannel(label, dataChannelDict) {
dataChannelDict = shimDataChannelInit(dataChannelDict);
var dataChannel = this._peerConnection.createDataChannel(label, dataChannelDict);
shimDataChannel(dataChannel);
return dataChannel;
};
ChromeRTCPeerConnection.prototype.setLocalDescription = function setLocalDescription() {

@@ -386,2 +382,55 @@ var args = [].slice.call(arguments);

/**
* Check whether or not we need to apply our maxPacketLifeTime shim. We are
* pretty conservative: we'll only apply it if the legacy maxRetransmitTime
* property is available _and_ the standard maxPacketLifeTime property is _not_
* available (the thinking being that Chrome will land the standards-compliant
* property).
* @returns {boolean}
*/
function needsMaxPacketLifeTimeShim() {
return 'maxRetransmitTime' in RTCDataChannel.prototype
&& !('maxPacketLifeTime' in RTCDataChannel.prototype);
}
/**
* Shim an RTCDataChannelInit dictionary (if necessary). This function returns
* a copy of the original RTCDataChannelInit.
* @param {RTCDataChannelInit} dataChannelDict
* @returns {RTCDataChannelInit}
*/
function shimDataChannelInit(dataChannelDict) {
dataChannelDict = Object.assign({}, dataChannelDict);
if (needsMaxPacketLifeTimeShim() && 'maxPacketLifeTime' in dataChannelDict) {
dataChannelDict.maxRetransmitTime = dataChannelDict.maxPacketLifeTime;
}
return dataChannelDict;
}
/**
* Shim an RTCDataChannel (if necessary). This function mutates the
* RTCDataChannel.
* @param {RTCDataChannel} dataChannel
* @returns {RTCDataChannel}
*/
function shimDataChannel(dataChannel) {
Object.defineProperty(dataChannel, 'maxRetransmits', {
value: dataChannel.maxRetransmits === 65535
? null
: dataChannel.maxRetransmits
});
if (needsMaxPacketLifeTimeShim()) {
// NOTE(mroberts): We can rename `maxRetransmitTime` to `maxPacketLifeTime`.
//
// https://bugs.chromium.org/p/chromium/issues/detail?id=696681
//
Object.defineProperty(dataChannel, 'maxPacketLifeTime', {
value: dataChannel.maxRetransmitTime === 65535
? null
: dataChannel.maxRetransmitTime
});
}
return dataChannel;
}
module.exports = ChromeRTCPeerConnection;

@@ -42,3 +42,3 @@ /* globals mozRTCPeerConnection, RTCPeerConnection */

var onsignalingstatechange = null;
util.interceptEvent(this, 'signalingstatechange');

@@ -85,19 +85,2 @@ /* eslint new-cap:0 */

},
onsignalingstatechange: {
get: function() {
return onsignalingstatechange;
},
set: function(_onsignalingstatechange) {
if (onsignalingstatechange) {
this.removeEventListener('signalingstatechange', onsignalingstatechange);
}
if (typeof _onsignalingstatechange === 'function') {
onsignalingstatechange = _onsignalingstatechange;
this.addEventListener('signalingstatechange', onsignalingstatechange);
} else {
onsignalingstatechange = null;
}
}
},
signalingState: {

@@ -104,0 +87,0 @@ enumerable: true,

@@ -18,5 +18,6 @@ /* globals RTCPeerConnection, RTCSessionDescription */

var oniceconnectionstatechange = null;
var onsignalingstatechange = null;
var ontrack = null;
util.interceptEvent(this, 'datachannel');
util.interceptEvent(this, 'iceconnectionstatechange');
util.interceptEvent(this, 'signalingstatechange');
util.interceptEvent(this, 'track');

@@ -75,53 +76,2 @@ var trackMatcher = new TrackMatcher();

},
oniceconnectionstatechange: {
get: function() {
return oniceconnectionstatechange;
},
set: function(_oniceconnectionstatechange) {
if (oniceconnectionstatechange) {
this.removeEventListener('iceconnectionstatechange', oniceconnectionstatechange);
}
if (typeof _oniceconnectionstatechange === 'function') {
oniceconnectionstatechange = _oniceconnectionstatechange;
this.addEventListener('iceconnectionstatechange', oniceconnectionstatechange);
} else {
oniceconnectionstatechange = null;
}
}
},
onsignalingstatechange: {
get: function() {
return onsignalingstatechange;
},
set: function(_onsignalingstatechange) {
if (onsignalingstatechange) {
this.removeEventListener('signalingstatechange', onsignalingstatechange);
}
if (typeof _onsignalingstatechange === 'function') {
onsignalingstatechange = _onsignalingstatechange;
this.addEventListener('signalingstatechange', onsignalingstatechange);
} else {
onsignalingstatechange = null;
}
}
},
ontrack: {
get: function() {
return ontrack;
},
set: function(_ontrack) {
if (ontrack) {
this.removeEventListener('track', ontrack);
}
if (typeof _ontrack === 'function') {
ontrack = _ontrack;
this.addEventListener('track', ontrack);
} else {
ontrack = null;
}
}
},
iceConnectionState: {

@@ -168,2 +118,7 @@ enumerable: true,

peerConnection.addEventListener('datachannel', function ondatachannel(event) {
shimDataChannel(event.channel);
self.dispatchEvent(event);
});
peerConnection.addEventListener('iceconnectionstatechange', function oniceconnectionstatechange() {

@@ -260,2 +215,8 @@ if (self._isClosed) {

SafariRTCPeerConnection.prototype.createDataChannel = function createDataChannel(label, dataChannelDict) {
var dataChannel = this._peerConnection.createDataChannel(label, dataChannelDict);
shimDataChannel(dataChannel);
return dataChannel;
};
SafariRTCPeerConnection.prototype.setLocalDescription = function setLocalDescription(description) {

@@ -398,2 +359,22 @@ return setDescription(this, true, description);

/**
* Shim an RTCDataChannel. This function mutates the RTCDataChannel.
* @param {RTCDataChannel} dataChannel
* @returns {RTCDataChannel}
*/
function shimDataChannel(dataChannel) {
return Object.defineProperties(dataChannel, {
maxPacketLifeTime: {
value: dataChannel.maxPacketLifeTime === 65535
? null
: dataChannel.maxPacketLifeTime
},
maxRetransmits: {
value: dataChannel.maxRetransmits === 65535
? null
: dataChannel.maxRetransmits
}
});
}
module.exports = SafariRTCPeerConnection;

@@ -126,2 +126,29 @@ 'use strict';

/**
* Intercept an event that might otherwise be proxied on an EventTarget.
* @param {EventTarget} target
* @param {string} type
* @returns {void}
*/
function interceptEvent(target, type) {
var currentListener = null;
Object.defineProperty(target, 'on' + type, {
get: function() {
return currentListener;
},
set: function(newListener) {
if (currentListener) {
this.removeEventListener(type, currentListener);
}
if (typeof newListener === 'function') {
currentListener = newListener;
this.addEventListener(type, currentListener);
} else {
currentListener = null;
}
}
});
}
/**
* This is a function for turning a Promise into the kind referenced in the

@@ -212,9 +239,10 @@ * Legacy Interface Extensions section of the WebRTC spec.

module.exports.defer = defer;
module.exports.delegateMethods = delegateMethods;
module.exports.difference = difference;
module.exports.flatMap = flatMap;
module.exports.guessBrowser = guessBrowser;
module.exports.legacyPromise = legacyPromise;
module.exports.makeUUID = makeUUID;
module.exports.proxyProperties = proxyProperties;
exports.defer = defer;
exports.delegateMethods = delegateMethods;
exports.difference = difference;
exports.flatMap = flatMap;
exports.guessBrowser = guessBrowser;
exports.interceptEvent = interceptEvent;
exports.legacyPromise = legacyPromise;
exports.makeUUID = makeUUID;
exports.proxyProperties = proxyProperties;
{
"name": "@twilio/webrtc",
"version": "1.0.3",
"version": "1.1.0",
"description": "WebRTC-related APIs and shims used by twilio-video.js",

@@ -5,0 +5,0 @@ "scripts": {

@@ -75,2 +75,6 @@ twilio-webrtc.js

`MediaStreamTrack`.
* Adds support for getting and setting `maxPacketLifeTime` on RTCDataChannels by
remapping the legacy property `maxRetransmitTime` to `maxPacketLifeTime`. See
[this bug](https://bugs.chromium.org/p/chromium/issues/detail?id=696681) for
more information.

@@ -77,0 +81,0 @@ #### Firefox

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