twilio-video 2.24.0 → 3.0.0-preview.3

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.
Files changed (224) hide show
  1. package/CHANGELOG.md +120 -44
  2. package/README.md +1 -1
  3. package/dist/twilio-video.js +2075 -1804
  4. package/dist/twilio-video.min.js +21 -21
  5. package/es5/connect.js +136 -208
  6. package/es5/connect.js.map +1 -1
  7. package/es5/createlocaltrack.js +10 -49
  8. package/es5/createlocaltrack.js.map +1 -1
  9. package/es5/createlocaltracks.js +13 -38
  10. package/es5/createlocaltracks.js.map +1 -1
  11. package/es5/index.js +4 -4
  12. package/es5/index.js.map +1 -1
  13. package/es5/localparticipant.js +35 -33
  14. package/es5/localparticipant.js.map +1 -1
  15. package/es5/media/track/audiotrack.js +6 -15
  16. package/es5/media/track/audiotrack.js.map +1 -1
  17. package/es5/media/track/index.js +7 -15
  18. package/es5/media/track/index.js.map +1 -1
  19. package/es5/media/track/localaudiotrack.js +2 -32
  20. package/es5/media/track/localaudiotrack.js.map +1 -1
  21. package/es5/media/track/localdatatrack.js +4 -6
  22. package/es5/media/track/localdatatrack.js.map +1 -1
  23. package/es5/media/track/localmediatrack.js +1 -4
  24. package/es5/media/track/localmediatrack.js.map +1 -1
  25. package/es5/media/track/localvideotrack.js +1 -2
  26. package/es5/media/track/localvideotrack.js.map +1 -1
  27. package/es5/media/track/mediatrack.js +63 -49
  28. package/es5/media/track/mediatrack.js.map +1 -1
  29. package/es5/media/track/receiver.js +3 -2
  30. package/es5/media/track/receiver.js.map +1 -1
  31. package/es5/media/track/remoteaudiotrack.js +27 -9
  32. package/es5/media/track/remoteaudiotrack.js.map +1 -1
  33. package/es5/media/track/remoteaudiotrackpublication.js +28 -2
  34. package/es5/media/track/remoteaudiotrackpublication.js.map +1 -1
  35. package/es5/media/track/remotedatatrack.js +1 -1
  36. package/es5/media/track/remotedatatrack.js.map +1 -1
  37. package/es5/media/track/remotemediatrack.js +93 -24
  38. package/es5/media/track/remotemediatrack.js.map +1 -1
  39. package/es5/media/track/remotetrackpublication.js +87 -16
  40. package/es5/media/track/remotetrackpublication.js.map +1 -1
  41. package/es5/media/track/remotevideotrack.js +39 -11
  42. package/es5/media/track/remotevideotrack.js.map +1 -1
  43. package/es5/media/track/remotevideotrackpublication.js +28 -2
  44. package/es5/media/track/remotevideotrackpublication.js.map +1 -1
  45. package/es5/media/track/sender.js +1 -1
  46. package/es5/media/track/sender.js.map +1 -1
  47. package/es5/media/track/trackpublication.js +5 -6
  48. package/es5/media/track/trackpublication.js.map +1 -1
  49. package/es5/media/track/transceiver.js +6 -1
  50. package/es5/media/track/transceiver.js.map +1 -1
  51. package/es5/media/track/videotrack.js +32 -16
  52. package/es5/media/track/videotrack.js.map +1 -1
  53. package/es5/participant.js +50 -78
  54. package/es5/participant.js.map +1 -1
  55. package/es5/preflight/preflighttest.js +3 -3
  56. package/es5/preflight/preflighttest.js.map +1 -1
  57. package/es5/remoteparticipant.js +18 -9
  58. package/es5/remoteparticipant.js.map +1 -1
  59. package/es5/room.js +23 -18
  60. package/es5/room.js.map +1 -1
  61. package/es5/signaling/localparticipant.js +2 -4
  62. package/es5/signaling/localparticipant.js.map +1 -1
  63. package/es5/signaling/remotetrackpublication.js +13 -8
  64. package/es5/signaling/remotetrackpublication.js.map +1 -1
  65. package/es5/signaling/room.js +5 -6
  66. package/es5/signaling/room.js.map +1 -1
  67. package/es5/signaling/track.js.map +1 -1
  68. package/es5/signaling/v2/cancelableroomsignalingpromise.js +8 -4
  69. package/es5/signaling/v2/cancelableroomsignalingpromise.js.map +1 -1
  70. package/es5/signaling/v2/localparticipant.js +13 -25
  71. package/es5/signaling/v2/localparticipant.js.map +1 -1
  72. package/es5/signaling/v2/localtrackpublication.js +4 -13
  73. package/es5/signaling/v2/localtrackpublication.js.map +1 -1
  74. package/es5/signaling/v2/mediasignaling.js +1 -1
  75. package/es5/signaling/v2/mediasignaling.js.map +1 -1
  76. package/es5/signaling/v2/peerconnection.js +23 -10
  77. package/es5/signaling/v2/peerconnection.js.map +1 -1
  78. package/es5/signaling/v2/peerconnectionmanager.js +12 -0
  79. package/es5/signaling/v2/peerconnectionmanager.js.map +1 -1
  80. package/es5/signaling/v2/remoteparticipant.js +13 -5
  81. package/es5/signaling/v2/remoteparticipant.js.map +1 -1
  82. package/es5/signaling/v2/remotetrackpublication.js +12 -1
  83. package/es5/signaling/v2/remotetrackpublication.js.map +1 -1
  84. package/es5/signaling/v2/room.js +183 -112
  85. package/es5/signaling/v2/room.js.map +1 -1
  86. package/es5/signaling/v2/twilioconnectiontransport.js +3 -1
  87. package/es5/signaling/v2/twilioconnectiontransport.js.map +1 -1
  88. package/es5/signaling/v3/remoteparticipant.js +70 -0
  89. package/es5/signaling/v3/remoteparticipant.js.map +1 -0
  90. package/es5/signaling/v3/remotetrackpublication.js +249 -0
  91. package/es5/signaling/v3/remotetrackpublication.js.map +1 -0
  92. package/es5/signaling/v3/room.js +243 -0
  93. package/es5/signaling/v3/room.js.map +1 -0
  94. package/es5/signaling/v3/tracksubscriptionssignaling.js +73 -0
  95. package/es5/signaling/v3/tracksubscriptionssignaling.js.map +1 -0
  96. package/es5/stats/localtrackstats.js +1 -1
  97. package/es5/stats/localtrackstats.js.map +1 -1
  98. package/es5/stats/remoteaudiotrackstats.js +3 -2
  99. package/es5/stats/remoteaudiotrackstats.js.map +1 -1
  100. package/es5/stats/remotetrackstats.js +4 -3
  101. package/es5/stats/remotetrackstats.js.map +1 -1
  102. package/es5/stats/remotevideotrackstats.js +3 -2
  103. package/es5/stats/remotevideotrackstats.js.map +1 -1
  104. package/es5/stats/statsreport.js +2 -2
  105. package/es5/stats/statsreport.js.map +1 -1
  106. package/es5/stats/trackstats.js +9 -10
  107. package/es5/stats/trackstats.js.map +1 -1
  108. package/es5/twilioconnection.js +3 -4
  109. package/es5/twilioconnection.js.map +1 -1
  110. package/es5/util/constants.js +7 -1
  111. package/es5/util/constants.js.map +1 -1
  112. package/es5/util/eventobserver.js +2 -8
  113. package/es5/util/eventobserver.js.map +1 -1
  114. package/es5/util/index.js +77 -57
  115. package/es5/util/index.js.map +1 -1
  116. package/es5/util/log.js +32 -108
  117. package/es5/util/log.js.map +1 -1
  118. package/es5/util/validate.js +7 -35
  119. package/es5/util/validate.js.map +1 -1
  120. package/es5/webrtc/getstats.js +11 -9
  121. package/es5/webrtc/getstats.js.map +1 -1
  122. package/es5/webrtc/index.js +6 -1
  123. package/es5/webrtc/index.js.map +1 -1
  124. package/karma/makeconf.js +1 -11
  125. package/lib/connect.js +140 -223
  126. package/lib/createlocaltrack.js +10 -52
  127. package/lib/createlocaltracks.ts +15 -49
  128. package/lib/index.ts +6 -8
  129. package/lib/localparticipant.js +43 -37
  130. package/lib/media/track/audiotrack.js +6 -16
  131. package/lib/media/track/index.js +7 -16
  132. package/lib/media/track/localaudiotrack.js +1 -32
  133. package/lib/media/track/localdatatrack.js +5 -6
  134. package/lib/media/track/localmediatrack.js +1 -4
  135. package/lib/media/track/localvideotrack.js +1 -2
  136. package/lib/media/track/mediatrack.js +64 -60
  137. package/lib/media/track/receiver.js +3 -2
  138. package/lib/media/track/remoteaudiotrack.js +27 -9
  139. package/lib/media/track/remoteaudiotrackpublication.js +30 -2
  140. package/lib/media/track/remotedatatrack.js +1 -1
  141. package/lib/media/track/remotemediatrack.js +97 -26
  142. package/lib/media/track/remotetrackpublication.js +70 -16
  143. package/lib/media/track/remotevideotrack.js +40 -11
  144. package/lib/media/track/remotevideotrackpublication.js +30 -2
  145. package/lib/media/track/sender.js +1 -1
  146. package/lib/media/track/trackpublication.js +5 -7
  147. package/lib/media/track/transceiver.js +6 -1
  148. package/lib/media/track/videotrack.js +34 -22
  149. package/lib/participant.js +57 -76
  150. package/lib/preflight/preflighttest.ts +3 -3
  151. package/lib/remoteparticipant.js +18 -9
  152. package/lib/room.js +22 -19
  153. package/lib/signaling/localparticipant.js +2 -3
  154. package/lib/signaling/remotetrackpublication.js +13 -8
  155. package/lib/signaling/room.js +5 -7
  156. package/lib/signaling/track.js +0 -1
  157. package/lib/signaling/v2/cancelableroomsignalingpromise.js +8 -4
  158. package/lib/signaling/v2/localparticipant.js +13 -27
  159. package/lib/signaling/v2/localtrackpublication.js +4 -15
  160. package/lib/signaling/v2/mediasignaling.js +1 -1
  161. package/lib/signaling/v2/peerconnection.js +20 -10
  162. package/lib/signaling/v2/peerconnectionmanager.js +13 -0
  163. package/lib/signaling/v2/remoteparticipant.js +12 -5
  164. package/lib/signaling/v2/remotetrackpublication.js +9 -1
  165. package/lib/signaling/v2/room.js +185 -134
  166. package/lib/signaling/v2/twilioconnectiontransport.js +3 -3
  167. package/lib/signaling/v3/remoteparticipant.js +76 -0
  168. package/lib/signaling/v3/remotetrackpublication.js +246 -0
  169. package/lib/signaling/v3/room.js +255 -0
  170. package/lib/signaling/v3/tracksubscriptionssignaling.js +61 -0
  171. package/lib/stats/localtrackstats.js +1 -1
  172. package/lib/stats/remoteaudiotrackstats.js +3 -2
  173. package/lib/stats/remotetrackstats.js +4 -3
  174. package/lib/stats/remotevideotrackstats.js +3 -2
  175. package/lib/stats/statsreport.js +2 -2
  176. package/lib/stats/trackstats.js +9 -10
  177. package/lib/twilioconnection.js +3 -4
  178. package/lib/util/constants.js +8 -1
  179. package/lib/util/eventobserver.js +2 -8
  180. package/lib/util/index.js +79 -60
  181. package/lib/util/log.js +35 -126
  182. package/lib/util/validate.js +7 -42
  183. package/lib/webrtc/getstats.js +11 -9
  184. package/lib/webrtc/index.js +7 -1
  185. package/package.json +5 -22
  186. package/tsconfig.json +0 -4
  187. package/tsdef/AudioTrack.d.ts +1 -1
  188. package/tsdef/LocalAudioTrack.d.ts +1 -4
  189. package/tsdef/LocalDataTrack.d.ts +0 -1
  190. package/tsdef/LocalTrackOptions.d.ts +0 -6
  191. package/tsdef/LocalVideoTrack.d.ts +1 -2
  192. package/tsdef/RemoteAudioTrack.d.ts +11 -1
  193. package/tsdef/RemoteAudioTrackPublication.d.ts +8 -0
  194. package/tsdef/RemoteParticipant.d.ts +1 -1
  195. package/tsdef/RemoteTrackPublication.d.ts +4 -1
  196. package/tsdef/RemoteVideoTrack.d.ts +11 -1
  197. package/tsdef/RemoteVideoTrackPublication.d.ts +8 -0
  198. package/tsdef/Room.d.ts +1 -1
  199. package/tsdef/Track.d.ts +7 -1
  200. package/tsdef/VideoTrack.d.ts +1 -1
  201. package/tsdef/index.d.ts +4 -9
  202. package/tsdef/twilio-video-tests.ts +2 -8
  203. package/tsdef/types.d.ts +8 -63
  204. package/es5/dynamicImport.js +0 -9
  205. package/es5/media/track/es5/index.js +0 -7
  206. package/es5/media/track/es5/index.js.map +0 -1
  207. package/es5/media/track/es5/localaudiotrack.js +0 -14
  208. package/es5/media/track/es5/localaudiotrack.js.map +0 -1
  209. package/es5/media/track/es5/localdatatrack.js +0 -14
  210. package/es5/media/track/es5/localdatatrack.js.map +0 -1
  211. package/es5/media/track/es5/localvideotrack.js +0 -14
  212. package/es5/media/track/es5/localvideotrack.js.map +0 -1
  213. package/es5/media/track/noisecancellationimpl.js +0 -228
  214. package/es5/media/track/noisecancellationimpl.js.map +0 -1
  215. package/es5/noisecancellationadapter.js +0 -155
  216. package/es5/noisecancellationadapter.js.map +0 -1
  217. package/lib/dynamicImport.js +0 -9
  218. package/lib/media/track/es5/index.js +0 -7
  219. package/lib/media/track/es5/localaudiotrack.js +0 -17
  220. package/lib/media/track/es5/localdatatrack.js +0 -18
  221. package/lib/media/track/es5/localvideotrack.js +0 -18
  222. package/lib/media/track/noisecancellationimpl.ts +0 -176
  223. package/lib/noisecancellationadapter.ts +0 -134
  224. package/tsdef/AudioProcessor.d.ts +0 -65
package/CHANGELOG.md CHANGED
@@ -1,66 +1,142 @@
1
- The Twilio Programmable Video SDKs use [Semantic Versioning](http://www.semver.org/). Twilio supports version N-1 for 12 months after the first GA release of version N. We recommend you upgrade to the latest version as soon as possible to avoid any breaking changes. Version 2.x is the lastest Video JavaScript SDK.
1
+ The Twilio Programmable Video SDKs use [Semantic Versioning](http://www.semver.org/). Twilio supports version N-1 for 12 months after the first GA release of version N. We recommend you upgrade to the latest version as soon as possible to avoid any breaking changes. Version 2.x is the latest Video JavaScript SDK.
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
+ 3.0.0-preview.3 (August 31, 2022)
6
+ =================================
5
7
 
6
- 2.24.0 (August 22, 2022)
7
- ========================
8
-
9
- New Features
10
- ------------
8
+ Breaking Changes
9
+ ----------------
11
10
 
12
- - The support for twilio approved 3rd party noise cancellation solutions is now **generally available**.
11
+ - The LocalTrack constructors that do not require the `new` operator have been removed. Please use the es6 classes that
12
+ are exported in the `Video` namespace. (VIDEO-10893)
13
+ - The deprecated ConnectOptions property `dscpTagging` has been removed. Use `enableDscp` instead. (VIDEO-10893)
14
+ - The deprecated ConnectOptions property `eventListener` has been removed. You can listen for the signaling events by
15
+ intercepting the Logger's messages as shown [here](#2100-december-10-2020). (VIDEO-10893)
16
+ - The deprecated ConnectOptions properties `abortOnIceServersTimeout` and `iceServersTimeout` have been removed. (VIDEO-10893)
17
+ - The deprecated VideoBandwidthProfile properties `maxTracks` and `renderDimensions` have been removed. (VIDEO-10893)
18
+ - Fixed the RemoteAudioTrack and RemoteVideoTrack property `mediaStreamTrack`'s type, which is supposed to be
19
+ `MediaStreamTrack | null`. (VIDEO-10893)
20
+ - The `id` property has been removed from the LocalTrack classes. Use the `name` property instead. (VIDEO-10893)
21
+ - The `trackId` and `ssrc` properties have been removed from the TrackStats class. (VIDEO-10893)
22
+ - The `maxAudioBitrate` and `maxVideoBitrate` properties in ConnectOptions and EncodingParameters now accept values
23
+ in **kiliobits per second (kbps)**, as opposed to bits per second (bps) earlier. (VIDEO-10893)
24
+ - The `maxSubscriptionBitrate` property in VideoBandwidthProfile now accepts values in **kiliobits per second (kbps)**,
25
+ as opposed to bits per second (bps) earlier. (VIDEO-10893)
26
+ - The deprecated ConnectOptions property `logLevel` has been removed. Use the `Video.Logger` interface instead as shown
27
+ [here](#2100-december-10-2020). (VIDEO-10893)
13
28
 
14
29
  Bug Fixes
15
30
  ---------
16
31
 
17
- - Fixed an issue where input media track was not stopped, after `localAudioTrack.stop()` when using noiseCancellation (VIDEO-11047)
18
- - Added versioning support for noise cancellation plugin. This SDK will require noise cancellation plugin to be version 1.0.0 or greater. (VIDEO-11087)
32
+ - Fixed a bug where sometimes `Room.getStats()` returned statistics for unsubscribed RemoteTracks. (VIDEO-11199)
33
+ - Fixed a bug where sometimes the SDK generated a TypeError in the browser console. (VIDEO-11203)
19
34
 
20
- 2.23.0 (July 28, 2022)
21
- ======================
35
+ 3.0.0-preview.2 (August 18, 2022)
36
+ =================================
37
+
38
+ Changes
39
+ -------
40
+
41
+ - `Room.getStats()`, which was broken in `3.0.0-preview.1`, has been fixed in this release. Note that the values reported
42
+ are best-effort approximations based off of the raw WebRTC statistics. (VIDEO-8756)
43
+
44
+ 3.0.0-preview.1 (July 25, 2022)
45
+ ===============================
22
46
 
23
47
  New Features
24
48
  ------------
25
49
 
26
- - This release adds private beta support for 3rd party noise cancellation solution. You need to host twilio approved 3rd party plugin on your web server to enable noise cancellation. Please fill out [this form](https://forms.gle/eeFyoGJj1mgMrxN88) to request access to the 3rd party plugin.
27
-
28
- Once you get the access to the plugin, You can install it from npm with:
29
- ```
30
- npm install <noise_cancellation_plugin>
31
- ```
50
+ **Large Rooms Pilot**
51
+
52
+ twilio-video.js now allows you to create and join a [Large Group Room](https://www.twilio.com/docs/video/large-group-rooms),
53
+ which supports a large number of Participants (> 50). This feature is in pilot, and requires that your account be enabled
54
+ in order to use it. **Note that the following API changes apply only for Large Rooms, and not for non-large Group Rooms and
55
+ Peer-to-Peer Rooms**.
56
+
57
+ - An audio and video RemoteTrack will now have an additional property called `switchOffReason`, which describes the
58
+ [reason](https://sdk.stage.twilio.com/js/video/releases/3.0.0-preview.1/docs/global.html#TrackSwitchOffReason) for
59
+ it being switched off. The `switchedOff` event will also have this reason string as a second argument. (VIDEO-8670, VIDEO-8748)
60
+ - An audio or video RemoteTrack's `mediaStreamTrack` is set to `null` whenever it is switched off. When it is switched
61
+ on, it is set to a MediaStreamTrack. (VIDEO-8668, VIDEO-8745)
62
+ - When the `switchOffReason` changes for an already switched off audio or video RemoteTrack, the `switchedOff` event is
63
+ raised. (VIDEO-8668, VIDEO-8745)
64
+ - A RemoteAudioTrack of a Participant that is not active in the Large Room will now be switched off. (VIDEO-8668)
65
+ - A RemoteVideoTrack will now be switched off if the number of switched on RemoteVideoTracks reached the limit set by the media server. (VIDEO-8745)
66
+ - Renamed BandwidthProfileOptions to BandwidthProfile. (VIDEO-8754)
67
+ - Renamed VideoBandwidthProfileOptions to VideoBandwidthProfile. (VIDEO-8753)
68
+ - The `isEnabled` property of the RemoteTrack is deprecated and scheduled for removal. Alternatively, you can determine if
69
+ a RemoteTrack is enabled by using the following expression. (VIDEO-8742, VIDEO-8750)
70
+ ```js
71
+ const isEnabled = remoteTrack.switchOffReason !== 'disabled-by-publisher';
72
+ ```
73
+ - The `disabled` and `enabled` events of the RemoteTrack are deprecated and scheduled for removal. Alternatively, you can
74
+ handle the `switchedOff` and `switchedOn` events as shown below. (VIDEO-8742, VIDEO-8750)
75
+ ```js
76
+ let recentSwitchOffReason = remoteTrack.switchOffReason;
32
77
 
33
- Once installed, you need to host the contents of `./node_modules/<noise_cancellation_plugin>/dist/` from your web server. We recommend that you add plugin version number to the hosted path to ensure that browser does not use [stale version](https://www.keycdn.com/support/what-is-cache-busting) when its updated. You need to pass the path to the hosted files to `twilio-video` sdk when creating audio track as shown in the example below. The example below assumes that you have hosted the files at `/noise_cancellation_plugin/1.0.0/dist` on your web server.
78
+ remoteTrack.on('switchedOff', switchOffReason => {
79
+ recentSwitchOffReason = switchOffReason;
80
+ if (switchOffReason === 'disabled-by-publisher') {
81
+ /* The RemoteTrack is disabled. */
82
+ }
83
+ });
34
84
 
35
- ```ts
36
- const { connect, createLocalAudioTrack } = require('twilio-video');
37
-
38
- // create a local audio track and have it use
39
- // @twilio/krisp-audio-plugin for noise cancellation processing.
40
- const localAudioTrack = await Video.createLocalAudioTrack({
41
- noiseCancellationOptions: {
42
- vendor: 'krisp',
43
- sdkAssetsPath: '/noise_cancellation_plugin/1.0.0/dist'
44
- }
45
- });
85
+ remoteTrack.on('switchedOn', () => {
86
+ if (recentSwitchOffReason === 'disabled-by-publisher') {
87
+ /* The RemoteTrack is enabled. */
88
+ }
89
+ recentSwitchOffReason = null;
90
+ });
91
+ ```
92
+ - The `isTrackEnabled` property of the RemoteTrackPublication is deprecated and scheduled for removal. Alternatively, you
93
+ can determine if a RemoteTrackPublication is enabled by using the following expression. (VIDEO-8743, VIDEO-8751)
94
+ ```js
95
+ const { track } = remoteTrackPublication;
96
+ const isTrackEnabled = !(track && track.switchOffReason === 'disabled-by-publisher');
97
+ ```
98
+ `isTrackEnabled` is now only valid for RemoteTracks that are subscribed to, and defaults to `true` for unsubscribed
99
+ RemoteTracks.
100
+ - The `trackDisabled` and `trackEnabled` events of the RemoteTrack are deprecated and scheduled for removal. Alternatively,
101
+ you can handle the `trackSwitchedOff` and `trackSwitchedOn` events as shown below. (VIDEO-8743, VIDEO-8751)
102
+ ```js
103
+ const { track } = remoteTrackPublication;
104
+ let recentSwitchOffReason = track ? track.switchOffReason : null;
46
105
 
47
- // publish the track to a room
48
- const room = await connect( token, {
49
- tracks: [localAudioTrack]
50
- // ... any other connect options
51
- });
106
+ remoteTrackPublication.on('trackSwitchedOff', (track, switchOffReason) => {
107
+ recentSwitchOffReason = switchOffReason;
108
+ if (switchOffReason === 'disabled-by-publisher') {
109
+ /* The RemoteTrack is disabled. */
110
+ }
111
+ });
52
112
 
53
- // you can enable/disable noise cancellation at runtime
54
- // using noiseCancellation interface exposed by localAudioTrack
55
- function updateNoiseCancellation(enable: boolean) {
56
- const noiseCancellation = localAudioTrack.noiseCancellation;
113
+ remoteTrackPublication.on('trackSwitchedOn', (track) => {
114
+ if (recentSwitchOffReason === 'disabled-by-publisher') {
115
+ /* The RemoteTrack is enabled. */
116
+ }
117
+ recentSwitchOffReason = null;
118
+ });
119
+ ```
120
+ The `trackDisabled` and `trackEnabled` events are now only fired for subscribed RemoteTracks.
121
+ - Any audio and video Tracks shared while joining the Room will **no longer** be guaranteed to be published by the time
122
+ the CancelablePromise returned by `connect()` is resolved. The application will now have to listen to the "trackPublished"
123
+ event on the LocalParticipant. (VIDEO-8817)
124
+ ```js
125
+ const room = await connect('token', {
126
+ audio: true,
127
+ video: true,
128
+ room: 'my-large-room'
129
+ });
57
130
 
58
- if (noiseCancellation) {
59
- enable ? noiseCancellation.enable() : noiseCancellation.disable();
60
- }
61
- }
131
+ room.localParticipant.on('trackPublished', publication => {
132
+ console.log(`Successfully published ${publication.kind} Track`);
133
+ });
134
+ ```
135
+ - `Room.getStats()` is broken, and will be fixed in an upcoming release. For now, the Track-level stats returned by this
136
+ method will not be accurate.
137
+ - [PSTN Participants](https://www.twilio.com/docs/video/adding-programmable-voice-participants-video-rooms) cannot connect
138
+ to Large Rooms.
62
139
 
63
- ```
64
140
  2.22.2 (July 25, 2022)
65
141
  ======================
66
142
 
@@ -68,7 +144,7 @@ Changes
68
144
  -------
69
145
 
70
146
  - `isSupported` flag now returns `false` if the browser does not support the Unified Plan SDP format. (VIDEO-10307)
71
-
147
+
72
148
  The following is a list of browsers with Unified Plan as the default SDP format.
73
149
  - Chrome 72+
74
150
  - Safari 12.1+
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 &lt;script&gt; tag.
75
75
 
76
76
  ```html
77
- <script src="//sdk.twilio.com/js/video/releases/2.24.0/twilio-video.min.js"></script>
77
+ <script src="//sdk.twilio.com/js/video/releases/3.0.0-preview.3/twilio-video.min.js"></script>
78
78
 
79
79
  ```
80
80