twilio-video 2.28.0 → 2.28.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/COMMON_ISSUES.md +12 -0
- package/README.md +1 -1
- package/dist/twilio-video.js +38 -5
- package/dist/twilio-video.min.js +20 -20
- package/es5/media/track/localaudiotrack.js +24 -0
- package/es5/media/track/localaudiotrack.js.map +1 -1
- package/es5/signaling/localtrackpublication.js +8 -1
- package/es5/signaling/localtrackpublication.js.map +1 -1
- package/lib/media/track/localaudiotrack.js +27 -1
- package/lib/signaling/localtrackpublication.js +9 -1
- package/package.json +4 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,12 +2,29 @@ The Twilio Programmable Video SDKs use [Semantic Versioning](http://www.semver.o
|
|
|
2
2
|
|
|
3
3
|
**Version 1.x reached End of Life on September 8th, 2021.** See the changelog entry [here](https://www.twilio.com/changelog/end-of-life-complete-for-unsupported-versions-of-the-programmable-video-sdk). Support for the 1.x version ended on December 4th, 2020.
|
|
4
4
|
|
|
5
|
+
2.28.2 (November 22, 2024)
|
|
6
|
+
========================
|
|
7
|
+
|
|
8
|
+
Bug Fixes
|
|
9
|
+
---------
|
|
10
|
+
|
|
11
|
+
- Fixed a bug in Desktop Safari 18 and all iOS browsers on iOS 18 where cloning a disabled `MediaStreamTrack` would incorrectly set the `enabled` property to `true` instead of preserving the original disabled state. This ensures track cloning behavior matches the MediaStreamTrack specification and works consistently across browsers. Bug report: https://bugs.webkit.org/show_bug.cgi?id=281758
|
|
12
|
+
|
|
13
|
+
2.28.1 (October 3, 2023)
|
|
14
|
+
========================
|
|
15
|
+
|
|
16
|
+
Bug Fixes
|
|
17
|
+
---------
|
|
18
|
+
|
|
19
|
+
- Previously, a Chrome iOS 17 Participant's local audio (Krisp noise cancellation enabled) did not recover after foregrounding the browser following the playing of a YouTube video (or some other application which requires microphone permissions). We work around this by permanently disabling the Krisp noise cancellation upon foregrounding the browser. (VIDEO-13006)
|
|
20
|
+
|
|
5
21
|
2.28.0 (September 14, 2023)
|
|
6
22
|
===========================
|
|
7
23
|
|
|
8
24
|
Bug Fixes
|
|
9
25
|
---------
|
|
10
26
|
|
|
27
|
+
- Fixed a bug where a Chrome iOS 17 Participant's local and remote media (Krisp Noise Cancellation enabled) failed to recover after interacting with a PSTN call in full-screen mode. (VIDEO-13011)
|
|
11
28
|
- Fixed a bug where a Chrome iOS 17 Participant's audio with Krisp Noise Cancellation did not recover after interacting with a system popup. (VIDEO-13012)
|
|
12
29
|
- Fixed a bug where a Chrome iOS 17 Participant's audio with Krisp Noise Cancellation did not recover after invoking Siri. (VIDEO-13013)
|
|
13
30
|
|
package/COMMON_ISSUES.md
CHANGED
|
@@ -33,6 +33,12 @@ before opening a new issue. We recommend regularly upgrading to the latest versi
|
|
|
33
33
|
|
|
34
34
|
### Chrome mobile
|
|
35
35
|
<details>
|
|
36
|
+
<summary>iOS 17: Media issues</summary>
|
|
37
|
+
<p>
|
|
38
|
+
Please refer to this [GitHub Issue](https://github.com/twilio/twilio-video.js/issues/2023) for details.
|
|
39
|
+
</p>
|
|
40
|
+
</details>
|
|
41
|
+
<details>
|
|
36
42
|
<summary>Android 11: Participants are unable to connect to a room due to ICE gathering failures on certain devices</summary>
|
|
37
43
|
<p>
|
|
38
44
|
|
|
@@ -93,6 +99,12 @@ transform: scaleX(-1)
|
|
|
93
99
|
|
|
94
100
|
### Safari mobile
|
|
95
101
|
<details>
|
|
102
|
+
<summary>iOS 17: Media issues</summary>
|
|
103
|
+
<p>
|
|
104
|
+
Please refer to this [GitHub Issue](https://github.com/twilio/twilio-video.js/issues/2023) for details.
|
|
105
|
+
</p>
|
|
106
|
+
</details>
|
|
107
|
+
<details>
|
|
96
108
|
<summary>iOS 15: Echo issues on iOS 15 devices after attaching video tracks</summary>
|
|
97
109
|
<p>
|
|
98
110
|
|
package/README.md
CHANGED
|
@@ -74,7 +74,7 @@ Releases of twilio-video.js are hosted on a CDN, and you can include these
|
|
|
74
74
|
directly in your web app using a <script> tag.
|
|
75
75
|
|
|
76
76
|
```html
|
|
77
|
-
<script src="//sdk.twilio.com/js/video/releases/2.28.
|
|
77
|
+
<script src="//sdk.twilio.com/js/video/releases/2.28.2/twilio-video.min.js"></script>
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
Using this method, twilio-video.js will set a browser global:
|
package/dist/twilio-video.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! twilio-video.js 2.28.
|
|
1
|
+
/*! twilio-video.js 2.28.2
|
|
2
2
|
|
|
3
3
|
The following license applies to all parts of this software except as
|
|
4
4
|
documented below.
|
|
@@ -3044,6 +3044,8 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
3044
3044
|
};
|
|
3045
3045
|
})();
|
|
3046
3046
|
var isIOS = require('../../util/browserdetection').isIOS;
|
|
3047
|
+
var detectSilentAudio = require('../../util/detectsilentaudio');
|
|
3048
|
+
var isIOSChrome = require('../../webrtc/util').isIOSChrome;
|
|
3047
3049
|
var AudioTrack = require('./audiotrack');
|
|
3048
3050
|
var mixinLocalMediaTrack = require('./localmediatrack');
|
|
3049
3051
|
var LocalMediaAudioTrack = mixinLocalMediaTrack(AudioTrack);
|
|
@@ -3226,6 +3228,28 @@ var LocalAudioTrack = /** @class */ (function (_super) {
|
|
|
3226
3228
|
_this._maybeRestartOnDefaultDeviceChange();
|
|
3227
3229
|
});
|
|
3228
3230
|
};
|
|
3231
|
+
/**
|
|
3232
|
+
* NOTE(mmalavalli): On iOS 17 Chrome, a LocalAudioTrack with Krisp Noise Cancellation
|
|
3233
|
+
* enabled that is restarted due to foregrounding the browser is silent for as-of-yet
|
|
3234
|
+
* unknown reason. We work around this by discarding the Krisp MediaStreamTrack and using
|
|
3235
|
+
* the source MediaStreamTrack. (VIDEO-13006)
|
|
3236
|
+
* @private
|
|
3237
|
+
*/
|
|
3238
|
+
LocalAudioTrack.prototype._setMediaStreamTrack = function (mediaStreamTrack) {
|
|
3239
|
+
var _this = this;
|
|
3240
|
+
var _a = this, log = _a._log, noiseCancellation = _a.noiseCancellation;
|
|
3241
|
+
var promise = _super.prototype._setMediaStreamTrack.call(this, mediaStreamTrack);
|
|
3242
|
+
if (isIOSChrome() && !!noiseCancellation) {
|
|
3243
|
+
log.debug('iOS Chrome detected, checking if the restarted Krisp audio is silent');
|
|
3244
|
+
promise = promise.then(function () { return detectSilentAudio(_this._dummyEl); }).then(function (isSilent) {
|
|
3245
|
+
log.debug("Krisp audio is " + (isSilent ? 'silent, using source audio' : 'not silent'));
|
|
3246
|
+
return isSilent && noiseCancellation.disablePermanently().then(function () {
|
|
3247
|
+
return _super.prototype._setMediaStreamTrack.call(_this, noiseCancellation.sourceTrack);
|
|
3248
|
+
});
|
|
3249
|
+
});
|
|
3250
|
+
}
|
|
3251
|
+
return promise;
|
|
3252
|
+
};
|
|
3229
3253
|
/**
|
|
3230
3254
|
* Disable the {@link LocalAudioTrack}. This is equivalent to muting the audio source.
|
|
3231
3255
|
* @returns {this}
|
|
@@ -3345,7 +3369,7 @@ var LocalAudioTrack = /** @class */ (function (_super) {
|
|
|
3345
3369
|
*/
|
|
3346
3370
|
module.exports = LocalAudioTrack;
|
|
3347
3371
|
|
|
3348
|
-
},{"../../util/browserdetection":123,"./audiotrack":14,"./localmediatrack":24}],21:[function(require,module,exports){
|
|
3372
|
+
},{"../../util/browserdetection":123,"../../util/detectsilentaudio":126,"../../webrtc/util":170,"./audiotrack":14,"./localmediatrack":24}],21:[function(require,module,exports){
|
|
3349
3373
|
'use strict';
|
|
3350
3374
|
var __extends = (this && this.__extends) || (function () {
|
|
3351
3375
|
var extendStatics = function (d, b) {
|
|
@@ -10934,7 +10958,14 @@ var LocalTrackPublicationSignaling = /** @class */ (function (_super) {
|
|
|
10934
10958
|
*/
|
|
10935
10959
|
function LocalTrackPublicationSignaling(trackSender, name, priority) {
|
|
10936
10960
|
var _this = this;
|
|
10937
|
-
|
|
10961
|
+
// NOTE(lrivas): Safely clone a media stream track while preserving the original
|
|
10962
|
+
// enabled state. This is needed because Safari 18 incorrectly enables tracks
|
|
10963
|
+
// during cloning. Bug report: https://bugs.webkit.org/show_bug.cgi?id=281758
|
|
10964
|
+
var clonedTrackSender = trackSender.clone();
|
|
10965
|
+
if (trackSender.kind !== 'data') {
|
|
10966
|
+
clonedTrackSender.track.enabled = trackSender.track.enabled;
|
|
10967
|
+
}
|
|
10968
|
+
trackSender = clonedTrackSender;
|
|
10938
10969
|
var enabled = trackSender.kind === 'data' ? true : trackSender.track.enabled;
|
|
10939
10970
|
_this = _super.call(this, name, trackSender.kind, enabled, priority) || this;
|
|
10940
10971
|
_this.setTrackTransceiver(trackSender);
|
|
@@ -30151,7 +30182,7 @@ module.exports={
|
|
|
30151
30182
|
"name": "twilio-video",
|
|
30152
30183
|
"title": "Twilio Video",
|
|
30153
30184
|
"description": "Twilio Video JavaScript Library",
|
|
30154
|
-
"version": "2.28.
|
|
30185
|
+
"version": "2.28.2",
|
|
30155
30186
|
"homepage": "https://twilio.com",
|
|
30156
30187
|
"author": "Mark Andrus Roberts <mroberts@twilio.com>",
|
|
30157
30188
|
"contributors": [
|
|
@@ -30223,6 +30254,7 @@ module.exports={
|
|
|
30223
30254
|
"node-http-server": "^8.1.2",
|
|
30224
30255
|
"npm-run-all": "^4.0.2",
|
|
30225
30256
|
"nyc": "^15.1.0",
|
|
30257
|
+
"regex-replace": "^2.3.1",
|
|
30226
30258
|
"requirejs": "^2.3.3",
|
|
30227
30259
|
"rimraf": "^2.6.1",
|
|
30228
30260
|
"simple-git": "^1.126.0",
|
|
@@ -30248,6 +30280,7 @@ module.exports={
|
|
|
30248
30280
|
"lint:js": "eslint ./lib ./test/*.js ./docker/**/*.js ./test/framework/*.js ./test/lib/*.js ./test/integration/** ./test/unit/** ",
|
|
30249
30281
|
"lint:ts": "eslint ./tsdef/*.ts ./lib/**/*.ts",
|
|
30250
30282
|
"lint": "npm-run-all lint:js lint:ts",
|
|
30283
|
+
"patch-linkifyit-111": "regex-replace \"readonly linkify: LinkifyIt.LinkifyIt;\" \"readonly linkify: typeof LinkifyIt;\" \"node_modules/@types/markdown-it/lib/index.d.ts\" --filecontents",
|
|
30251
30284
|
"printVersion": "node --version && npm --version",
|
|
30252
30285
|
"test:unit": "npm-run-all printVersion build:es5 && nyc --report-dir=./coverage --include=lib/**/* --reporter=html --reporter=lcov --reporter=text mocha -r ts-node/register ./test/unit/*",
|
|
30253
30286
|
"test:unit:quick": "nyc --report-dir=./coverage --include=lib/**/* --reporter=html --reporter=lcov mocha -r ts-node/register",
|
|
@@ -30286,7 +30319,7 @@ module.exports={
|
|
|
30286
30319
|
"test:framework:install": "npm install chromedriver && npm install selenium-webdriver && npm install geckodriver && npm install puppeteer",
|
|
30287
30320
|
"test:framework": "npm-run-all test:framework:install test:framework:no-framework test:framework:react",
|
|
30288
30321
|
"test": "npm-run-all test:unit test:integration",
|
|
30289
|
-
"build:es5": "rimraf ./es5 && mkdir -p es5 && tsc tsdef/twilio-video-tests.ts --noEmit --lib es2018,dom && tsc",
|
|
30322
|
+
"build:es5": "rimraf ./es5 && mkdir -p es5 && npm run patch-linkifyit-111 && tsc tsdef/twilio-video-tests.ts --noEmit --lib es2018,dom && tsc",
|
|
30290
30323
|
"build:js": "node ./scripts/build.js ./src/twilio-video.js ./LICENSE.md ./dist/twilio-video.js",
|
|
30291
30324
|
"build:min.js": "uglifyjs ./dist/twilio-video.js -o ./dist/twilio-video.min.js --comments \"/^! twilio-video.js/\" -b beautify=false,ascii_only=true",
|
|
30292
30325
|
"build": "npm-run-all clean lint docs test:unit test:integration build:es5 build:js build:min.js test:umd",
|