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.
@@ -15,6 +15,8 @@ var __extends = (this && this.__extends) || (function () {
15
15
  };
16
16
  })();
17
17
  var isIOS = require('../../util/browserdetection').isIOS;
18
+ var detectSilentAudio = require('../../util/detectsilentaudio');
19
+ var isIOSChrome = require('../../webrtc/util').isIOSChrome;
18
20
  var AudioTrack = require('./audiotrack');
19
21
  var mixinLocalMediaTrack = require('./localmediatrack');
20
22
  var LocalMediaAudioTrack = mixinLocalMediaTrack(AudioTrack);
@@ -197,6 +199,28 @@ var LocalAudioTrack = /** @class */ (function (_super) {
197
199
  _this._maybeRestartOnDefaultDeviceChange();
198
200
  });
199
201
  };
202
+ /**
203
+ * NOTE(mmalavalli): On iOS 17 Chrome, a LocalAudioTrack with Krisp Noise Cancellation
204
+ * enabled that is restarted due to foregrounding the browser is silent for as-of-yet
205
+ * unknown reason. We work around this by discarding the Krisp MediaStreamTrack and using
206
+ * the source MediaStreamTrack. (VIDEO-13006)
207
+ * @private
208
+ */
209
+ LocalAudioTrack.prototype._setMediaStreamTrack = function (mediaStreamTrack) {
210
+ var _this = this;
211
+ var _a = this, log = _a._log, noiseCancellation = _a.noiseCancellation;
212
+ var promise = _super.prototype._setMediaStreamTrack.call(this, mediaStreamTrack);
213
+ if (isIOSChrome() && !!noiseCancellation) {
214
+ log.debug('iOS Chrome detected, checking if the restarted Krisp audio is silent');
215
+ promise = promise.then(function () { return detectSilentAudio(_this._dummyEl); }).then(function (isSilent) {
216
+ log.debug("Krisp audio is " + (isSilent ? 'silent, using source audio' : 'not silent'));
217
+ return isSilent && noiseCancellation.disablePermanently().then(function () {
218
+ return _super.prototype._setMediaStreamTrack.call(_this, noiseCancellation.sourceTrack);
219
+ });
220
+ });
221
+ }
222
+ return promise;
223
+ };
200
224
  /**
201
225
  * Disable the {@link LocalAudioTrack}. This is equivalent to muting the audio source.
202
226
  * @returns {this}
@@ -1 +1 @@
1
- {"version":3,"file":"localaudiotrack.js","sourceRoot":"","sources":["../../../lib/media/track/localaudiotrack.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"localaudiotrack.js","sourceRoot":"","sources":["../../../lib/media/track/localaudiotrack.js"],"names":[],"mappings":"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"}
@@ -32,7 +32,14 @@ var LocalTrackPublicationSignaling = /** @class */ (function (_super) {
32
32
  */
33
33
  function LocalTrackPublicationSignaling(trackSender, name, priority) {
34
34
  var _this = this;
35
- trackSender = trackSender.clone();
35
+ // NOTE(lrivas): Safely clone a media stream track while preserving the original
36
+ // enabled state. This is needed because Safari 18 incorrectly enables tracks
37
+ // during cloning. Bug report: https://bugs.webkit.org/show_bug.cgi?id=281758
38
+ var clonedTrackSender = trackSender.clone();
39
+ if (trackSender.kind !== 'data') {
40
+ clonedTrackSender.track.enabled = trackSender.track.enabled;
41
+ }
42
+ trackSender = clonedTrackSender;
36
43
  var enabled = trackSender.kind === 'data' ? true : trackSender.track.enabled;
37
44
  _this = _super.call(this, name, trackSender.kind, enabled, priority) || this;
38
45
  _this.setTrackTransceiver(trackSender);
@@ -1 +1 @@
1
- {"version":3,"file":"localtrackpublication.js","sourceRoot":"","sources":["../../lib/signaling/localtrackpublication.js"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;;;;;;;;;;;AAEb,IAAM,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAE1C;;;;GAIG;AACH;IAA6C,kDAAc;IACzD;;;;;;;OAOG;IACH,wCAAY,WAAW,EAAE,IAAI,EAAE,QAAQ;QAAvC,iBAeC;QAdC,WAAW,GAAG,WAAW,CAAC,KAAK,EAAE,CAAC;QAClC,IAAM,OAAO,GAAG,WAAW,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;QAC/E,QAAA,kBAAM,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAC;QACjD,KAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,CAAC,gBAAgB,CAAC,KAAI,EAAE;YAC5B,gBAAgB,EAAE;gBAChB,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,IAAI;aACf;YACD,EAAE,EAAE;gBACF,UAAU,EAAE,IAAI;gBAChB,KAAK,EAAE,WAAW,CAAC,EAAE;aACtB;SACF,CAAC,CAAC;;IACL,CAAC;IAMD,sBAAI,2DAAe;QAJnB;;;WAGG;aACH;YACE,OAAO,IAAI,CAAC,gBAAgB,CAAC;QAC/B,CAAC;;;OAAA;IAED;;;;;;OAMG;IACH,+CAAM,GAAN,UAAO,OAAO;QACZ,OAAO,GAAG,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACxD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC9C,OAAO,iBAAM,MAAM,YAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,sDAAa,GAAb,UAAc,KAAK;QACjB,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACtB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,oDAAW,GAAX,UAAY,QAAQ;QAClB,IAAI,IAAI,CAAC,gBAAgB,KAAK,QAAQ,EAAE;YACtC,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACtB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,+CAAM,GAAN,UAAO,GAAG;QACR,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC;SACb;QACD,OAAO,iBAAM,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,6CAAI,GAAJ;QACE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IACH,qCAAC;AAAD,CAAC,AA3FD,CAA6C,cAAc,GA2F1D;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,WAAW,EAAE,KAAK;IAClC,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,IAAI,WAAW,CAAC,MAAM,EAAE;QACnD,OAAO,KAAK,CAAC;KACd;IACD,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC;IAC3B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,8BAA8B,CAAC"}
1
+ {"version":3,"file":"localtrackpublication.js","sourceRoot":"","sources":["../../lib/signaling/localtrackpublication.js"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  const { isIOS } = require('../../util/browserdetection');
4
+ const detectSilentAudio = require('../../util/detectsilentaudio');
5
+ const { isIOSChrome } = require('../../webrtc/util');
4
6
  const AudioTrack = require('./audiotrack');
5
7
  const mixinLocalMediaTrack = require('./localmediatrack');
6
8
 
@@ -162,7 +164,7 @@ class LocalAudioTrack extends LocalMediaAudioTrack {
162
164
  /**
163
165
  * @private
164
166
  */
165
- _reacquireTrack(constraints) {
167
+ _reacquireTrack(constraints) {
166
168
  this._log.debug('_reacquireTrack: ', constraints);
167
169
  if (this.noiseCancellation) {
168
170
  return this.noiseCancellation.reacquireTrack(() => {
@@ -188,6 +190,30 @@ class LocalAudioTrack extends LocalMediaAudioTrack {
188
190
  });
189
191
  }
190
192
 
193
+ /**
194
+ * NOTE(mmalavalli): On iOS 17 Chrome, a LocalAudioTrack with Krisp Noise Cancellation
195
+ * enabled that is restarted due to foregrounding the browser is silent for as-of-yet
196
+ * unknown reason. We work around this by discarding the Krisp MediaStreamTrack and using
197
+ * the source MediaStreamTrack. (VIDEO-13006)
198
+ * @private
199
+ */
200
+ _setMediaStreamTrack(mediaStreamTrack) {
201
+ const { _log: log, noiseCancellation } = this;
202
+ let promise = super._setMediaStreamTrack.call(this, mediaStreamTrack);
203
+
204
+ if (isIOSChrome() && !!noiseCancellation) {
205
+ log.debug('iOS Chrome detected, checking if the restarted Krisp audio is silent');
206
+ promise = promise.then(() => detectSilentAudio(this._dummyEl)).then(isSilent => {
207
+ log.debug(`Krisp audio is ${isSilent ? 'silent, using source audio' : 'not silent'}`);
208
+ return isSilent && noiseCancellation.disablePermanently().then(() => {
209
+ return super._setMediaStreamTrack.call(this, noiseCancellation.sourceTrack);
210
+ });
211
+ });
212
+ }
213
+
214
+ return promise;
215
+ }
216
+
191
217
  /**
192
218
  * Disable the {@link LocalAudioTrack}. This is equivalent to muting the audio source.
193
219
  * @returns {this}
@@ -17,7 +17,15 @@ class LocalTrackPublicationSignaling extends TrackSignaling {
17
17
  * @param {Track.Priority} priority - initial {@link Track.Priority}
18
18
  */
19
19
  constructor(trackSender, name, priority) {
20
- trackSender = trackSender.clone();
20
+ // NOTE(lrivas): Safely clone a media stream track while preserving the original
21
+ // enabled state. This is needed because Safari 18 incorrectly enables tracks
22
+ // during cloning. Bug report: https://bugs.webkit.org/show_bug.cgi?id=281758
23
+ const clonedTrackSender = trackSender.clone();
24
+ if (trackSender.kind !== 'data') {
25
+ clonedTrackSender.track.enabled = trackSender.track.enabled;
26
+ }
27
+ trackSender = clonedTrackSender;
28
+
21
29
  const enabled = trackSender.kind === 'data' ? true : trackSender.track.enabled;
22
30
  super(name, trackSender.kind, enabled, priority);
23
31
  this.setTrackTransceiver(trackSender);
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "twilio-video",
3
3
  "title": "Twilio Video",
4
4
  "description": "Twilio Video JavaScript Library",
5
- "version": "2.28.0",
5
+ "version": "2.28.2",
6
6
  "homepage": "https://twilio.com",
7
7
  "author": "Mark Andrus Roberts <mroberts@twilio.com>",
8
8
  "contributors": [
@@ -74,6 +74,7 @@
74
74
  "node-http-server": "^8.1.2",
75
75
  "npm-run-all": "^4.0.2",
76
76
  "nyc": "^15.1.0",
77
+ "regex-replace": "^2.3.1",
77
78
  "requirejs": "^2.3.3",
78
79
  "rimraf": "^2.6.1",
79
80
  "simple-git": "^1.126.0",
@@ -99,6 +100,7 @@
99
100
  "lint:js": "eslint ./lib ./test/*.js ./docker/**/*.js ./test/framework/*.js ./test/lib/*.js ./test/integration/** ./test/unit/** ",
100
101
  "lint:ts": "eslint ./tsdef/*.ts ./lib/**/*.ts",
101
102
  "lint": "npm-run-all lint:js lint:ts",
103
+ "patch-linkifyit-111": "regex-replace \"readonly linkify: LinkifyIt.LinkifyIt;\" \"readonly linkify: typeof LinkifyIt;\" \"node_modules/@types/markdown-it/lib/index.d.ts\" --filecontents",
102
104
  "printVersion": "node --version && npm --version",
103
105
  "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/*",
104
106
  "test:unit:quick": "nyc --report-dir=./coverage --include=lib/**/* --reporter=html --reporter=lcov mocha -r ts-node/register",
@@ -137,7 +139,7 @@
137
139
  "test:framework:install": "npm install chromedriver && npm install selenium-webdriver && npm install geckodriver && npm install puppeteer",
138
140
  "test:framework": "npm-run-all test:framework:install test:framework:no-framework test:framework:react",
139
141
  "test": "npm-run-all test:unit test:integration",
140
- "build:es5": "rimraf ./es5 && mkdir -p es5 && tsc tsdef/twilio-video-tests.ts --noEmit --lib es2018,dom && tsc",
142
+ "build:es5": "rimraf ./es5 && mkdir -p es5 && npm run patch-linkifyit-111 && tsc tsdef/twilio-video-tests.ts --noEmit --lib es2018,dom && tsc",
141
143
  "build:js": "node ./scripts/build.js ./src/twilio-video.js ./LICENSE.md ./dist/twilio-video.js",
142
144
  "build:min.js": "uglifyjs ./dist/twilio-video.js -o ./dist/twilio-video.min.js --comments \"/^! twilio-video.js/\" -b beautify=false,ascii_only=true",
143
145
  "build": "npm-run-all clean lint docs test:unit test:integration build:es5 build:js build:min.js test:umd",