@microsoft/live-share-media 1.3.1 → 1.4.1

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 (343) hide show
  1. package/bin/LiveMediaSession.d.ts.map +1 -1
  2. package/bin/LiveMediaSession.js +8 -0
  3. package/bin/LiveMediaSession.js.map +1 -1
  4. package/bin/LiveMediaSessionCoordinator.d.ts +15 -0
  5. package/bin/LiveMediaSessionCoordinator.d.ts.map +1 -1
  6. package/bin/LiveMediaSessionCoordinator.js +25 -0
  7. package/bin/LiveMediaSessionCoordinator.js.map +1 -1
  8. package/bin/MediaPlayerSynchronizer.d.ts +6 -4
  9. package/bin/MediaPlayerSynchronizer.d.ts.map +1 -1
  10. package/bin/MediaPlayerSynchronizer.js +41 -12
  11. package/bin/MediaPlayerSynchronizer.js.map +1 -1
  12. package/bin/MediaSessionExtensions.d.ts +17 -4
  13. package/bin/MediaSessionExtensions.d.ts.map +1 -1
  14. package/bin/MediaSessionExtensions.js +4 -0
  15. package/bin/MediaSessionExtensions.js.map +1 -1
  16. package/bin/cjs/IMediaPlayer.d.ts +21 -0
  17. package/bin/cjs/IMediaPlayer.d.ts.map +1 -0
  18. package/bin/cjs/IMediaPlayer.js +7 -0
  19. package/bin/cjs/IMediaPlayer.js.map +1 -0
  20. package/bin/cjs/LiveMediaSession.d.ts +97 -0
  21. package/bin/cjs/LiveMediaSession.d.ts.map +1 -0
  22. package/bin/cjs/LiveMediaSession.js +261 -0
  23. package/bin/cjs/LiveMediaSession.js.map +1 -0
  24. package/bin/cjs/LiveMediaSessionCoordinator.d.ts +304 -0
  25. package/bin/cjs/LiveMediaSessionCoordinator.d.ts.map +1 -0
  26. package/bin/cjs/LiveMediaSessionCoordinator.js +560 -0
  27. package/bin/cjs/LiveMediaSessionCoordinator.js.map +1 -0
  28. package/bin/cjs/LiveMediaSessionCoordinatorSuspension.d.ts +20 -0
  29. package/bin/cjs/LiveMediaSessionCoordinatorSuspension.d.ts.map +1 -0
  30. package/bin/cjs/LiveMediaSessionCoordinatorSuspension.js +28 -0
  31. package/bin/cjs/LiveMediaSessionCoordinatorSuspension.js.map +1 -0
  32. package/bin/cjs/MediaPlayerSynchronizer.d.ts +204 -0
  33. package/bin/cjs/MediaPlayerSynchronizer.d.ts.map +1 -0
  34. package/bin/cjs/MediaPlayerSynchronizer.js +574 -0
  35. package/bin/cjs/MediaPlayerSynchronizer.js.map +1 -0
  36. package/bin/cjs/MediaSessionActionThrottler.d.ts +12 -0
  37. package/bin/cjs/MediaSessionActionThrottler.d.ts.map +1 -0
  38. package/bin/cjs/MediaSessionActionThrottler.js +14 -0
  39. package/bin/cjs/MediaSessionActionThrottler.js.map +1 -0
  40. package/bin/cjs/MediaSessionExtensions.d.ts +177 -0
  41. package/bin/cjs/MediaSessionExtensions.d.ts.map +1 -0
  42. package/bin/cjs/MediaSessionExtensions.js +26 -0
  43. package/bin/cjs/MediaSessionExtensions.js.map +1 -0
  44. package/bin/cjs/RepeatedActionThrottler.d.ts +20 -0
  45. package/bin/cjs/RepeatedActionThrottler.d.ts.map +1 -0
  46. package/bin/cjs/RepeatedActionThrottler.js +63 -0
  47. package/bin/cjs/RepeatedActionThrottler.js.map +1 -0
  48. package/bin/cjs/VolumeManager.d.ts +84 -0
  49. package/bin/cjs/VolumeManager.d.ts.map +1 -0
  50. package/bin/cjs/VolumeManager.js +175 -0
  51. package/bin/cjs/VolumeManager.js.map +1 -0
  52. package/bin/cjs/index.d.ts +14 -0
  53. package/bin/cjs/index.d.ts.map +1 -0
  54. package/bin/cjs/index.js +30 -0
  55. package/bin/cjs/index.js.map +1 -0
  56. package/bin/cjs/internals/GroupCoordinatorState.d.ts +110 -0
  57. package/bin/cjs/internals/GroupCoordinatorState.d.ts.map +1 -0
  58. package/bin/cjs/internals/GroupCoordinatorState.js +516 -0
  59. package/bin/cjs/internals/GroupCoordinatorState.js.map +1 -0
  60. package/bin/cjs/internals/GroupPlaybackPosition.d.ts +71 -0
  61. package/bin/cjs/internals/GroupPlaybackPosition.d.ts.map +1 -0
  62. package/bin/cjs/internals/GroupPlaybackPosition.js +170 -0
  63. package/bin/cjs/internals/GroupPlaybackPosition.js.map +1 -0
  64. package/bin/cjs/internals/GroupPlaybackRate.d.ts +38 -0
  65. package/bin/cjs/internals/GroupPlaybackRate.d.ts.map +1 -0
  66. package/bin/cjs/internals/GroupPlaybackRate.js +59 -0
  67. package/bin/cjs/internals/GroupPlaybackRate.js.map +1 -0
  68. package/bin/cjs/internals/GroupPlaybackTrack.d.ts +45 -0
  69. package/bin/cjs/internals/GroupPlaybackTrack.d.ts.map +1 -0
  70. package/bin/cjs/internals/GroupPlaybackTrack.js +122 -0
  71. package/bin/cjs/internals/GroupPlaybackTrack.js.map +1 -0
  72. package/bin/cjs/internals/GroupPlaybackTrackData.d.ts +40 -0
  73. package/bin/cjs/internals/GroupPlaybackTrackData.d.ts.map +1 -0
  74. package/bin/cjs/internals/GroupPlaybackTrackData.js +70 -0
  75. package/bin/cjs/internals/GroupPlaybackTrackData.js.map +1 -0
  76. package/bin/cjs/internals/GroupTransportState.d.ts +52 -0
  77. package/bin/cjs/internals/GroupTransportState.d.ts.map +1 -0
  78. package/bin/cjs/internals/GroupTransportState.js +120 -0
  79. package/bin/cjs/internals/GroupTransportState.js.map +1 -0
  80. package/bin/cjs/internals/PriorityTimeInterval.d.ts +33 -0
  81. package/bin/cjs/internals/PriorityTimeInterval.d.ts.map +1 -0
  82. package/bin/cjs/internals/PriorityTimeInterval.js +45 -0
  83. package/bin/cjs/internals/PriorityTimeInterval.js.map +1 -0
  84. package/bin/cjs/internals/consts.d.ts +83 -0
  85. package/bin/cjs/internals/consts.d.ts.map +1 -0
  86. package/bin/cjs/internals/consts.js +92 -0
  87. package/bin/cjs/internals/consts.js.map +1 -0
  88. package/bin/cjs/internals/errors.d.ts +17 -0
  89. package/bin/cjs/internals/errors.d.ts.map +1 -0
  90. package/bin/cjs/internals/errors.js +34 -0
  91. package/bin/cjs/internals/errors.js.map +1 -0
  92. package/bin/cjs/internals/interfaces.d.ts +23 -0
  93. package/bin/cjs/internals/interfaces.d.ts.map +1 -0
  94. package/bin/cjs/internals/interfaces.js +3 -0
  95. package/bin/cjs/internals/interfaces.js.map +1 -0
  96. package/bin/cjs/package.json +1 -0
  97. package/bin/esm/IMediaPlayer.d.ts +21 -0
  98. package/bin/esm/IMediaPlayer.d.ts.map +1 -0
  99. package/bin/esm/IMediaPlayer.js +6 -0
  100. package/bin/esm/IMediaPlayer.js.map +1 -0
  101. package/bin/esm/LiveMediaSession.d.ts +97 -0
  102. package/bin/esm/LiveMediaSession.d.ts.map +1 -0
  103. package/bin/esm/LiveMediaSession.js +257 -0
  104. package/bin/esm/LiveMediaSession.js.map +1 -0
  105. package/bin/esm/LiveMediaSessionCoordinator.d.ts +304 -0
  106. package/bin/esm/LiveMediaSessionCoordinator.d.ts.map +1 -0
  107. package/bin/esm/LiveMediaSessionCoordinator.js +556 -0
  108. package/bin/esm/LiveMediaSessionCoordinator.js.map +1 -0
  109. package/bin/esm/LiveMediaSessionCoordinatorSuspension.d.ts +20 -0
  110. package/bin/esm/LiveMediaSessionCoordinatorSuspension.d.ts.map +1 -0
  111. package/bin/esm/LiveMediaSessionCoordinatorSuspension.js +24 -0
  112. package/bin/esm/LiveMediaSessionCoordinatorSuspension.js.map +1 -0
  113. package/bin/esm/MediaPlayerSynchronizer.d.ts +204 -0
  114. package/bin/esm/MediaPlayerSynchronizer.d.ts.map +1 -0
  115. package/bin/esm/MediaPlayerSynchronizer.js +570 -0
  116. package/bin/esm/MediaPlayerSynchronizer.js.map +1 -0
  117. package/bin/esm/MediaSessionActionThrottler.d.ts +12 -0
  118. package/bin/esm/MediaSessionActionThrottler.d.ts.map +1 -0
  119. package/bin/esm/MediaSessionActionThrottler.js +10 -0
  120. package/bin/esm/MediaSessionActionThrottler.js.map +1 -0
  121. package/bin/esm/MediaSessionExtensions.d.ts +177 -0
  122. package/bin/esm/MediaSessionExtensions.d.ts.map +1 -0
  123. package/bin/esm/MediaSessionExtensions.js +23 -0
  124. package/bin/esm/MediaSessionExtensions.js.map +1 -0
  125. package/bin/esm/RepeatedActionThrottler.d.ts +20 -0
  126. package/bin/esm/RepeatedActionThrottler.d.ts.map +1 -0
  127. package/bin/esm/RepeatedActionThrottler.js +59 -0
  128. package/bin/esm/RepeatedActionThrottler.js.map +1 -0
  129. package/bin/esm/VolumeManager.d.ts +84 -0
  130. package/bin/esm/VolumeManager.d.ts.map +1 -0
  131. package/bin/esm/VolumeManager.js +171 -0
  132. package/bin/esm/VolumeManager.js.map +1 -0
  133. package/bin/esm/index.d.ts +14 -0
  134. package/bin/esm/index.d.ts.map +1 -0
  135. package/bin/esm/index.js +14 -0
  136. package/bin/esm/index.js.map +1 -0
  137. package/bin/esm/internals/GroupCoordinatorState.d.ts +110 -0
  138. package/bin/esm/internals/GroupCoordinatorState.d.ts.map +1 -0
  139. package/bin/esm/internals/GroupCoordinatorState.js +512 -0
  140. package/bin/esm/internals/GroupCoordinatorState.js.map +1 -0
  141. package/bin/esm/internals/GroupPlaybackPosition.d.ts +71 -0
  142. package/bin/esm/internals/GroupPlaybackPosition.d.ts.map +1 -0
  143. package/bin/esm/internals/GroupPlaybackPosition.js +166 -0
  144. package/bin/esm/internals/GroupPlaybackPosition.js.map +1 -0
  145. package/bin/esm/internals/GroupPlaybackRate.d.ts +38 -0
  146. package/bin/esm/internals/GroupPlaybackRate.d.ts.map +1 -0
  147. package/bin/esm/internals/GroupPlaybackRate.js +55 -0
  148. package/bin/esm/internals/GroupPlaybackRate.js.map +1 -0
  149. package/bin/esm/internals/GroupPlaybackTrack.d.ts +45 -0
  150. package/bin/esm/internals/GroupPlaybackTrack.d.ts.map +1 -0
  151. package/bin/esm/internals/GroupPlaybackTrack.js +118 -0
  152. package/bin/esm/internals/GroupPlaybackTrack.js.map +1 -0
  153. package/bin/esm/internals/GroupPlaybackTrackData.d.ts +40 -0
  154. package/bin/esm/internals/GroupPlaybackTrackData.d.ts.map +1 -0
  155. package/bin/esm/internals/GroupPlaybackTrackData.js +66 -0
  156. package/bin/esm/internals/GroupPlaybackTrackData.js.map +1 -0
  157. package/bin/esm/internals/GroupTransportState.d.ts +52 -0
  158. package/bin/esm/internals/GroupTransportState.d.ts.map +1 -0
  159. package/bin/esm/internals/GroupTransportState.js +116 -0
  160. package/bin/esm/internals/GroupTransportState.js.map +1 -0
  161. package/bin/esm/internals/PriorityTimeInterval.d.ts +33 -0
  162. package/bin/esm/internals/PriorityTimeInterval.d.ts.map +1 -0
  163. package/bin/esm/internals/PriorityTimeInterval.js +41 -0
  164. package/bin/esm/internals/PriorityTimeInterval.js.map +1 -0
  165. package/bin/esm/internals/consts.d.ts +83 -0
  166. package/bin/esm/internals/consts.d.ts.map +1 -0
  167. package/bin/esm/internals/consts.js +89 -0
  168. package/bin/esm/internals/consts.js.map +1 -0
  169. package/bin/esm/internals/errors.d.ts +17 -0
  170. package/bin/esm/internals/errors.d.ts.map +1 -0
  171. package/bin/esm/internals/errors.js +29 -0
  172. package/bin/esm/internals/errors.js.map +1 -0
  173. package/bin/esm/internals/interfaces.d.ts +23 -0
  174. package/bin/esm/internals/interfaces.d.ts.map +1 -0
  175. package/bin/esm/internals/interfaces.js +2 -0
  176. package/bin/esm/internals/interfaces.js.map +1 -0
  177. package/bin/internals/GroupCoordinatorState.d.ts +15 -1
  178. package/bin/internals/GroupCoordinatorState.d.ts.map +1 -1
  179. package/bin/internals/GroupCoordinatorState.js +123 -57
  180. package/bin/internals/GroupCoordinatorState.js.map +1 -1
  181. package/bin/internals/GroupPlaybackPosition.d.ts +3 -1
  182. package/bin/internals/GroupPlaybackPosition.d.ts.map +1 -1
  183. package/bin/internals/GroupPlaybackPosition.js +7 -3
  184. package/bin/internals/GroupPlaybackPosition.js.map +1 -1
  185. package/bin/internals/GroupPlaybackRate.d.ts +39 -0
  186. package/bin/internals/GroupPlaybackRate.d.ts.map +1 -0
  187. package/bin/internals/GroupPlaybackRate.js +62 -0
  188. package/bin/internals/GroupPlaybackRate.js.map +1 -0
  189. package/bin/internals/GroupPlaybackTrack.d.ts +2 -2
  190. package/bin/internals/GroupPlaybackTrack.d.ts.map +1 -1
  191. package/bin/internals/GroupPlaybackTrack.js +3 -2
  192. package/bin/internals/GroupPlaybackTrack.js.map +1 -1
  193. package/bin/internals/GroupPlaybackTrackData.d.ts +3 -3
  194. package/bin/internals/GroupPlaybackTrackData.d.ts.map +1 -1
  195. package/bin/internals/GroupPlaybackTrackData.js +12 -11
  196. package/bin/internals/GroupPlaybackTrackData.js.map +1 -1
  197. package/bin/internals/GroupTransportState.d.ts +6 -3
  198. package/bin/internals/GroupTransportState.d.ts.map +1 -1
  199. package/bin/internals/GroupTransportState.js +16 -11
  200. package/bin/internals/GroupTransportState.js.map +1 -1
  201. package/bin/internals/consts.d.ts +8 -1
  202. package/bin/internals/consts.d.ts.map +1 -1
  203. package/bin/internals/consts.js +8 -1
  204. package/bin/internals/consts.js.map +1 -1
  205. package/bin/internals/index.d.ts +1 -0
  206. package/bin/internals/index.d.ts.map +1 -1
  207. package/bin/internals/index.js +1 -0
  208. package/bin/internals/index.js.map +1 -1
  209. package/bin/internals/interfaces.d.ts +10 -0
  210. package/bin/internals/interfaces.d.ts.map +1 -0
  211. package/bin/internals/interfaces.js +3 -0
  212. package/bin/internals/interfaces.js.map +1 -0
  213. package/bin/test/IMediaPlayer.d.ts +21 -0
  214. package/bin/test/IMediaPlayer.d.ts.map +1 -0
  215. package/bin/test/IMediaPlayer.js +7 -0
  216. package/bin/test/IMediaPlayer.js.map +1 -0
  217. package/bin/test/LiveMediaSession.d.ts +97 -0
  218. package/bin/test/LiveMediaSession.d.ts.map +1 -0
  219. package/bin/test/LiveMediaSession.js +261 -0
  220. package/bin/test/LiveMediaSession.js.map +1 -0
  221. package/bin/test/LiveMediaSessionCoordinator.d.ts +304 -0
  222. package/bin/test/LiveMediaSessionCoordinator.d.ts.map +1 -0
  223. package/bin/test/LiveMediaSessionCoordinator.js +560 -0
  224. package/bin/test/LiveMediaSessionCoordinator.js.map +1 -0
  225. package/bin/test/LiveMediaSessionCoordinatorSuspension.d.ts +20 -0
  226. package/bin/test/LiveMediaSessionCoordinatorSuspension.d.ts.map +1 -0
  227. package/bin/test/LiveMediaSessionCoordinatorSuspension.js +28 -0
  228. package/bin/test/LiveMediaSessionCoordinatorSuspension.js.map +1 -0
  229. package/bin/test/MediaPlayerSynchronizer.d.ts +204 -0
  230. package/bin/test/MediaPlayerSynchronizer.d.ts.map +1 -0
  231. package/bin/test/MediaPlayerSynchronizer.js +574 -0
  232. package/bin/test/MediaPlayerSynchronizer.js.map +1 -0
  233. package/bin/test/MediaSessionActionThrottler.d.ts +12 -0
  234. package/bin/test/MediaSessionActionThrottler.d.ts.map +1 -0
  235. package/bin/test/MediaSessionActionThrottler.js +14 -0
  236. package/bin/test/MediaSessionActionThrottler.js.map +1 -0
  237. package/bin/test/MediaSessionExtensions.d.ts +177 -0
  238. package/bin/test/MediaSessionExtensions.d.ts.map +1 -0
  239. package/bin/test/MediaSessionExtensions.js +26 -0
  240. package/bin/test/MediaSessionExtensions.js.map +1 -0
  241. package/bin/test/RepeatedActionThrottler.d.ts +20 -0
  242. package/bin/test/RepeatedActionThrottler.d.ts.map +1 -0
  243. package/bin/test/RepeatedActionThrottler.js +63 -0
  244. package/bin/test/RepeatedActionThrottler.js.map +1 -0
  245. package/bin/test/VolumeManager.d.ts +84 -0
  246. package/bin/test/VolumeManager.d.ts.map +1 -0
  247. package/bin/test/VolumeManager.js +175 -0
  248. package/bin/test/VolumeManager.js.map +1 -0
  249. package/bin/test/index.d.ts +14 -0
  250. package/bin/test/index.d.ts.map +1 -0
  251. package/bin/test/index.js +30 -0
  252. package/bin/test/index.js.map +1 -0
  253. package/bin/test/internals/GroupCoordinatorState.d.ts +110 -0
  254. package/bin/test/internals/GroupCoordinatorState.d.ts.map +1 -0
  255. package/bin/test/internals/GroupCoordinatorState.js +516 -0
  256. package/bin/test/internals/GroupCoordinatorState.js.map +1 -0
  257. package/bin/test/internals/GroupPlaybackPosition.d.ts +71 -0
  258. package/bin/test/internals/GroupPlaybackPosition.d.ts.map +1 -0
  259. package/bin/test/internals/GroupPlaybackPosition.js +170 -0
  260. package/bin/test/internals/GroupPlaybackPosition.js.map +1 -0
  261. package/bin/test/internals/GroupPlaybackRate.d.ts +38 -0
  262. package/bin/test/internals/GroupPlaybackRate.d.ts.map +1 -0
  263. package/bin/test/internals/GroupPlaybackRate.js +59 -0
  264. package/bin/test/internals/GroupPlaybackRate.js.map +1 -0
  265. package/bin/test/internals/GroupPlaybackTrack.d.ts +45 -0
  266. package/bin/test/internals/GroupPlaybackTrack.d.ts.map +1 -0
  267. package/bin/test/internals/GroupPlaybackTrack.js +122 -0
  268. package/bin/test/internals/GroupPlaybackTrack.js.map +1 -0
  269. package/bin/test/internals/GroupPlaybackTrackData.d.ts +40 -0
  270. package/bin/test/internals/GroupPlaybackTrackData.d.ts.map +1 -0
  271. package/bin/test/internals/GroupPlaybackTrackData.js +70 -0
  272. package/bin/test/internals/GroupPlaybackTrackData.js.map +1 -0
  273. package/bin/test/internals/GroupTransportState.d.ts +52 -0
  274. package/bin/test/internals/GroupTransportState.d.ts.map +1 -0
  275. package/bin/test/internals/GroupTransportState.js +120 -0
  276. package/bin/test/internals/GroupTransportState.js.map +1 -0
  277. package/bin/test/internals/PriorityTimeInterval.d.ts +33 -0
  278. package/bin/test/internals/PriorityTimeInterval.d.ts.map +1 -0
  279. package/bin/test/internals/PriorityTimeInterval.js +45 -0
  280. package/bin/test/internals/PriorityTimeInterval.js.map +1 -0
  281. package/bin/test/internals/consts.d.ts +83 -0
  282. package/bin/test/internals/consts.d.ts.map +1 -0
  283. package/bin/test/internals/consts.js +92 -0
  284. package/bin/test/internals/consts.js.map +1 -0
  285. package/bin/test/internals/errors.d.ts +17 -0
  286. package/bin/test/internals/errors.d.ts.map +1 -0
  287. package/bin/test/internals/errors.js +34 -0
  288. package/bin/test/internals/errors.js.map +1 -0
  289. package/bin/test/internals/interfaces.d.ts +23 -0
  290. package/bin/test/internals/interfaces.d.ts.map +1 -0
  291. package/bin/test/internals/interfaces.js +3 -0
  292. package/bin/test/internals/interfaces.js.map +1 -0
  293. package/bin/test/package.json +1 -0
  294. package/bin/test/test/GroupPlaybackPosition.spec.d.ts +6 -0
  295. package/bin/test/test/GroupPlaybackPosition.spec.d.ts.map +1 -0
  296. package/bin/test/test/GroupPlaybackPosition.spec.js +315 -0
  297. package/bin/test/test/GroupPlaybackPosition.spec.js.map +1 -0
  298. package/bin/test/test/GroupPlaybackRate.spec.d.ts +6 -0
  299. package/bin/test/test/GroupPlaybackRate.spec.d.ts.map +1 -0
  300. package/bin/test/test/GroupPlaybackRate.spec.js +47 -0
  301. package/bin/test/test/GroupPlaybackRate.spec.js.map +1 -0
  302. package/bin/test/test/GroupPlaybackTrack.spec.d.ts +6 -0
  303. package/bin/test/test/GroupPlaybackTrack.spec.d.ts.map +1 -0
  304. package/bin/test/test/GroupPlaybackTrack.spec.js +171 -0
  305. package/bin/test/test/GroupPlaybackTrack.spec.js.map +1 -0
  306. package/bin/test/test/GroupPlaybackTrackData.spec.d.ts +6 -0
  307. package/bin/test/test/GroupPlaybackTrackData.spec.d.ts.map +1 -0
  308. package/bin/test/test/GroupPlaybackTrackData.spec.js +63 -0
  309. package/bin/test/test/GroupPlaybackTrackData.spec.js.map +1 -0
  310. package/bin/test/test/LiveMediaSession_ManualActionHandler.spec.d.ts +6 -0
  311. package/bin/test/test/LiveMediaSession_ManualActionHandler.spec.d.ts.map +1 -0
  312. package/bin/test/test/LiveMediaSession_ManualActionHandler.spec.js +323 -0
  313. package/bin/test/test/LiveMediaSession_ManualActionHandler.spec.js.map +1 -0
  314. package/bin/test/test/LiveMediaSession_Synchronizer.spec.d.ts +6 -0
  315. package/bin/test/test/LiveMediaSession_Synchronizer.spec.d.ts.map +1 -0
  316. package/bin/test/test/LiveMediaSession_Synchronizer.spec.js +669 -0
  317. package/bin/test/test/LiveMediaSession_Synchronizer.spec.js.map +1 -0
  318. package/bin/test/test/PriorityTimeInterval.spec.d.ts +6 -0
  319. package/bin/test/test/PriorityTimeInterval.spec.d.ts.map +1 -0
  320. package/bin/test/test/PriorityTimeInterval.spec.js +67 -0
  321. package/bin/test/test/PriorityTimeInterval.spec.js.map +1 -0
  322. package/bin/test/test/TestUtils.d.ts +44 -0
  323. package/bin/test/test/TestUtils.d.ts.map +1 -0
  324. package/bin/test/test/TestUtils.js +116 -0
  325. package/bin/test/test/TestUtils.js.map +1 -0
  326. package/bin/test/test/VolumeManager.spec.d.ts +2 -0
  327. package/bin/test/test/VolumeManager.spec.d.ts.map +1 -0
  328. package/bin/test/test/VolumeManager.spec.js +163 -0
  329. package/bin/test/test/VolumeManager.spec.js.map +1 -0
  330. package/package.json +3 -3
  331. package/src/LiveMediaSession.ts +12 -0
  332. package/src/LiveMediaSessionCoordinator.ts +49 -0
  333. package/src/MediaPlayerSynchronizer.ts +55 -15
  334. package/src/MediaSessionExtensions.ts +18 -2
  335. package/src/internals/GroupCoordinatorState.ts +196 -79
  336. package/src/internals/GroupPlaybackPosition.ts +9 -2
  337. package/src/internals/GroupPlaybackRate.ts +90 -0
  338. package/src/internals/GroupPlaybackTrack.ts +5 -4
  339. package/src/internals/GroupPlaybackTrackData.ts +14 -13
  340. package/src/internals/GroupTransportState.ts +21 -12
  341. package/src/internals/consts.ts +14 -2
  342. package/src/internals/index.ts +1 -0
  343. package/src/internals/interfaces.ts +10 -0
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
+ */
5
+
6
+ import EventEmitter from "events";
7
+ import { ExtendedMediaSessionActionSource } from "../MediaSessionExtensions";
8
+ import { IGroupStateEvent } from "./interfaces";
9
+
10
+ /**
11
+ * @hidden
12
+ */
13
+ export interface IPlaybackRate {
14
+ playbackRate: number;
15
+ timestamp: number;
16
+ clientId: string;
17
+ }
18
+
19
+ /**
20
+ * @hidden
21
+ */
22
+ export enum PlaybackRateEvents {
23
+ rateChange = "rateChange",
24
+ }
25
+
26
+ /**
27
+ * @hidden
28
+ */
29
+ export interface IPlaybackRateChangeEvent extends IGroupStateEvent {
30
+ playbackRate: number;
31
+ }
32
+
33
+ /**
34
+ * @hidden
35
+ */
36
+ export class GroupPlaybackRate extends EventEmitter {
37
+ private _current: IPlaybackRate;
38
+
39
+ constructor() {
40
+ super();
41
+ this._current = { playbackRate: 1.0, timestamp: 0, clientId: "" };
42
+ }
43
+
44
+ public get current(): Readonly<IPlaybackRate> {
45
+ return this._current;
46
+ }
47
+
48
+ public get rate(): number {
49
+ return this.current.playbackRate;
50
+ }
51
+
52
+ public updatePlaybackRate(
53
+ newRate: IPlaybackRate,
54
+ source: ExtendedMediaSessionActionSource
55
+ ): boolean {
56
+ // Ignore state changes that are older
57
+ const current = this.current;
58
+ if (newRate.timestamp < current.timestamp) {
59
+ return false;
60
+ }
61
+
62
+ // Ignore state changes that have the same timestamp and the clientId sorts higher.
63
+ if (
64
+ newRate.timestamp == current.timestamp &&
65
+ newRate.clientId.localeCompare(current.clientId) > 0
66
+ ) {
67
+ return false;
68
+ }
69
+
70
+ // Ignore state changes for same data object
71
+ if (current.playbackRate == newRate.playbackRate) {
72
+ return false;
73
+ }
74
+
75
+ // Update current data
76
+ this._current = newRate;
77
+
78
+ const event: IPlaybackRateChangeEvent = {
79
+ name: PlaybackRateEvents.rateChange,
80
+ clientId: newRate.clientId,
81
+ playbackRate: newRate.playbackRate,
82
+ source,
83
+ };
84
+
85
+ // Notify listeners
86
+ this.emit(PlaybackRateEvents.rateChange, event);
87
+
88
+ return true;
89
+ }
90
+ }
@@ -3,7 +3,6 @@
3
3
  * Licensed under the Microsoft Live Share SDK License.
4
4
  */
5
5
 
6
- import { ILiveEvent } from "@microsoft/live-share";
7
6
  import EventEmitter from "events";
8
7
  import { IMediaPlayerState } from "../LiveMediaSessionCoordinator";
9
8
  import {
@@ -11,6 +10,7 @@ import {
11
10
  ExtendedMediaMetadata,
12
11
  ExtendedMediaSessionActionSource,
13
12
  } from "../MediaSessionExtensions";
13
+ import { IGroupStateEvent } from "./interfaces";
14
14
 
15
15
  /**
16
16
  * @hidden
@@ -32,7 +32,7 @@ export enum GroupPlaybackTrackEvents {
32
32
  /**
33
33
  * @hidden
34
34
  */
35
- export interface IPlaybackTrackChangeEvent extends ILiveEvent {
35
+ export interface IPlaybackTrackChangeEvent extends IGroupStateEvent {
36
36
  metadata: ExtendedMediaMetadata | null;
37
37
  }
38
38
 
@@ -149,12 +149,13 @@ export class GroupPlaybackTrack extends EventEmitter {
149
149
  this._current = track;
150
150
 
151
151
  // Notify listeners
152
- this.emit(GroupPlaybackTrackEvents.trackChange, {
152
+ const event: IPlaybackTrackChangeEvent = {
153
153
  name: GroupPlaybackTrackEvents.trackChange,
154
154
  clientId: track.clientId,
155
155
  metadata: track.metadata,
156
156
  source,
157
- });
157
+ };
158
+ this.emit(GroupPlaybackTrackEvents.trackChange, event);
158
159
 
159
160
  return true;
160
161
  }
@@ -3,13 +3,13 @@
3
3
  * Licensed under the Microsoft Live Share SDK License.
4
4
  */
5
5
 
6
- import { ILiveEvent } from "@microsoft/live-share";
7
6
  import EventEmitter from "events";
8
7
  import {
9
8
  GroupPlaybackTrack,
10
9
  GroupPlaybackTrackEvents,
11
10
  } from "./GroupPlaybackTrack";
12
11
  import { ExtendedMediaSessionActionSource } from "../MediaSessionExtensions";
12
+ import { IGroupStateEvent } from "./interfaces";
13
13
 
14
14
  /**
15
15
  * @hidden
@@ -30,7 +30,7 @@ export enum PlaybackTrackDataEvents {
30
30
  /**
31
31
  * @hidden
32
32
  */
33
- export interface IPlaybackTrackDataChangeEvent extends ILiveEvent {
33
+ export interface IPlaybackTrackDataChangeEvent extends IGroupStateEvent {
34
34
  data: object | null;
35
35
  }
36
36
 
@@ -66,38 +66,39 @@ export class GroupPlaybackTrackData extends EventEmitter {
66
66
  }
67
67
 
68
68
  public updateData(
69
- event: IPlaybackTrackData,
69
+ trackData: IPlaybackTrackData,
70
70
  source: ExtendedMediaSessionActionSource
71
71
  ): boolean {
72
72
  // Ignore state changes that are older
73
73
  const current = this.current;
74
- if (event.timestamp < current.timestamp) {
74
+ if (trackData.timestamp < current.timestamp) {
75
75
  return false;
76
76
  }
77
77
 
78
78
  // Ignore state changes that have the same timestamp and the clientId sorts higher.
79
79
  if (
80
- event.timestamp == current.timestamp &&
81
- event.clientId.localeCompare(current.clientId) > 0
80
+ trackData.timestamp == current.timestamp &&
81
+ trackData.clientId.localeCompare(current.clientId) > 0
82
82
  ) {
83
83
  return false;
84
84
  }
85
85
 
86
86
  // Ignore state changes for same data object
87
- if (JSON.stringify(current.data) == JSON.stringify(event.data)) {
87
+ if (JSON.stringify(current.data) == JSON.stringify(trackData.data)) {
88
88
  return false;
89
89
  }
90
90
 
91
91
  // Update current data
92
- this._current = event;
92
+ this._current = trackData;
93
93
 
94
94
  // Notify listeners
95
- this.emit(PlaybackTrackDataEvents.dataChange, {
96
- type: PlaybackTrackDataEvents.dataChange,
97
- clientId: event.clientId,
98
- data: event.data,
95
+ const event: IPlaybackTrackDataChangeEvent = {
96
+ name: PlaybackTrackDataEvents.dataChange,
97
+ clientId: trackData.clientId,
98
+ data: trackData.data,
99
99
  source,
100
- });
100
+ };
101
+ this.emit(PlaybackTrackDataEvents.dataChange, event);
101
102
 
102
103
  return true;
103
104
  }
@@ -3,7 +3,7 @@
3
3
  * Licensed under the Microsoft Live Share SDK License.
4
4
  */
5
5
 
6
- import { ILiveEvent, LiveShareRuntime } from "@microsoft/live-share";
6
+ import { LiveShareRuntime } from "@microsoft/live-share";
7
7
  import EventEmitter from "events";
8
8
  import { IMediaPlayerState } from "../LiveMediaSessionCoordinator";
9
9
  import {
@@ -15,6 +15,8 @@ import {
15
15
  GroupPlaybackTrack,
16
16
  GroupPlaybackTrackEvents,
17
17
  } from "./GroupPlaybackTrack";
18
+ import { IGroupStateEvent } from "./interfaces";
19
+ import { GroupPlaybackRate } from "./GroupPlaybackRate";
18
20
 
19
21
  /**
20
22
  * @hidden
@@ -36,7 +38,7 @@ export enum GroupTransportStateEvents {
36
38
  /**
37
39
  * @hidden
38
40
  */
39
- export interface ITransportStateChangeEvent extends ILiveEvent {
41
+ export interface ITransportStateChangeEvent extends IGroupStateEvent {
40
42
  action: ExtendedMediaSessionAction;
41
43
  seekTime?: number;
42
44
  }
@@ -47,11 +49,13 @@ export interface ITransportStateChangeEvent extends ILiveEvent {
47
49
  export class GroupTransportState extends EventEmitter {
48
50
  private readonly _getMediaPlayerState: () => IMediaPlayerState;
49
51
  private _track: GroupPlaybackTrack;
52
+ private _playbackRate: GroupPlaybackRate;
50
53
  private readonly _liveRuntime: LiveShareRuntime;
51
54
  private _current: ITransportState;
52
55
 
53
56
  constructor(
54
57
  track: GroupPlaybackTrack,
58
+ playbackRate: GroupPlaybackRate,
55
59
  getMediaPlayerState: () => IMediaPlayerState,
56
60
  liveRuntime: LiveShareRuntime
57
61
  ) {
@@ -59,6 +63,7 @@ export class GroupTransportState extends EventEmitter {
59
63
  this._liveRuntime = liveRuntime;
60
64
  this._getMediaPlayerState = getMediaPlayerState;
61
65
  this._track = track;
66
+ this._playbackRate = playbackRate;
62
67
  this._current = {
63
68
  playbackState: "none",
64
69
  startPosition: 0.0,
@@ -137,32 +142,36 @@ export class GroupTransportState extends EventEmitter {
137
142
  originalState.playbackState == state.playbackState &&
138
143
  playerState != "ended"
139
144
  ) {
140
- this.emit(GroupTransportStateEvents.transportStateChange, {
141
- type: GroupTransportStateEvents.transportStateChange,
145
+ const event: ITransportStateChangeEvent = {
146
+ name: GroupTransportStateEvents.transportStateChange,
142
147
  action: "seekto",
143
148
  clientId: state.clientId,
144
149
  seekTime: state.startPosition,
145
150
  source,
146
- });
151
+ };
152
+ this.emit(GroupTransportStateEvents.transportStateChange, event);
147
153
  } else if (state.playbackState == "playing") {
148
154
  const now = this._liveRuntime.getTimestamp();
149
155
  const projectedPosition =
150
- state.startPosition + (now - state.timestamp) / 1000;
151
- this.emit(GroupTransportStateEvents.transportStateChange, {
152
- type: GroupTransportStateEvents.transportStateChange,
156
+ state.startPosition +
157
+ ((now - state.timestamp) / 1000) * this._playbackRate.rate;
158
+ const event: ITransportStateChangeEvent = {
159
+ name: GroupTransportStateEvents.transportStateChange,
153
160
  action: "play",
154
161
  clientId: state.clientId,
155
162
  seekTime: projectedPosition,
156
163
  source,
157
- });
164
+ };
165
+ this.emit(GroupTransportStateEvents.transportStateChange, event);
158
166
  } else {
159
- this.emit(GroupTransportStateEvents.transportStateChange, {
160
- type: GroupTransportStateEvents.transportStateChange,
167
+ const event: ITransportStateChangeEvent = {
168
+ name: GroupTransportStateEvents.transportStateChange,
161
169
  action: "pause",
162
170
  clientId: state.clientId,
163
171
  seekTime: state.startPosition,
164
172
  source,
165
- });
173
+ };
174
+ this.emit(GroupTransportStateEvents.transportStateChange, event);
166
175
  }
167
176
 
168
177
  return true;
@@ -16,6 +16,7 @@ export const TelemetryEvents = {
16
16
  PlayAction: "MediaPlayerSynchronizer:PlayAction",
17
17
  PauseAction: "MediaPlayerSynchronizer:PauseAction",
18
18
  SeekToAction: "MediaPlayerSynchronizer:SeekToAction",
19
+ RateChangeAction: "MediaPlayerSynchronizer:RateChangeAction",
19
20
  CatchupAction: "MediaPlayerSynchronizer:CatchupAction",
20
21
  SetTrackAction: "MediaPlayerSynchronizer:SetTrackAction",
21
22
  DataChangeAction: "MediaPlayerSynchronizer:DataChangeAction",
@@ -24,8 +25,6 @@ export const TelemetryEvents = {
24
25
  ),
25
26
  UserTappedVideoToPlayError:
26
27
  "MediaPlayerSynchronizer:UserTappedVideoToPlayError",
27
- PlaybackRateChangeBlocked:
28
- "MediaPlayerSynchronizer:PlaybackRateChangeBlocked",
29
28
  PlayerBlockedOperation: transmit(
30
29
  "MediaPlayerSynchronizer:PlayerBlockedOperation"
31
30
  ),
@@ -36,6 +35,7 @@ export const TelemetryEvents = {
36
35
  PlayCalled: "MediaPlayerSynchronizer:PlayCalled",
37
36
  PauseCalled: "MediaPlayerSynchronizer:PauseCalled",
38
37
  SeekToCalled: "MediaPlayerSynchronizer:SeekToCalled",
38
+ RateChangeCalled: "MediaSession:RateChangeCalled",
39
39
  SetTrackCalled: "MediaPlayerSynchronizer:SetTrackCalled",
40
40
  SetTrackDataCalled: "MediaPlayerSynchronizer:SetTrackDataCalled",
41
41
  },
@@ -43,6 +43,7 @@ export const TelemetryEvents = {
43
43
  PlayAction: transmit("MediaSession:PlayAction"),
44
44
  PauseAction: transmit("MediaSession:PauseAction"),
45
45
  SeekToAction: transmit("MediaSession:SeekToAction"),
46
+ RateChangeAction: transmit("MediaSession:RateChangeAction"),
46
47
  CatchUpAction: transmit("MediaSession:CatchUpAction"),
47
48
  SetTrackAction: transmit("MediaSession:SetTrackAction"),
48
49
  DataChangeAction: "MediaSession:DataChangeAction",
@@ -52,6 +53,9 @@ export const TelemetryEvents = {
52
53
  PlayCalled: transmit("SessionCoordinator:PlayCalled"),
53
54
  PauseCalled: transmit("SessionCoordinator:PauseCalled"),
54
55
  SeekToCalled: transmit("SessionCoordinator:SeekToCalled"),
56
+ SetPlaybackRateCalled: transmit(
57
+ "SessionCoordinator:SetPlaybackRateCalled"
58
+ ),
55
59
  SetTrackCalled: transmit("SessionCoordinator:SetTrackCalled"),
56
60
  SetTrackDataCalled: "SessionCoordinator:SetTrackDataCalled",
57
61
  BeginSuspension: "SessionCoordinator:BeginSuspension",
@@ -74,6 +78,9 @@ export const TelemetryEvents = {
74
78
  RemoteSeekToReceived: transmit(
75
79
  "SessionCoordinator:RemoteSeekToReceived"
76
80
  ),
81
+ RemoteRateChangeReceived: transmit(
82
+ "SessionCoordinator:RemoteRateChangeReceived"
83
+ ),
77
84
  PositionUpdateEventError: "SessionCoordinator:PositionUpdateEventError",
78
85
  LiveObjectSynchronizerStartError:
79
86
  "SessionCoordinator:LiveObjectSynchronizerStartError",
@@ -86,12 +93,17 @@ export const TelemetryEvents = {
86
93
  TransportStateChanged: "GroupCoordinator:TransportStateChanged",
87
94
  TransportStateChangeDelayed:
88
95
  "GroupCoordinator:TransportStateChangeDelayed",
96
+ PlaybackRateChanged: "GroupCoordinator:PlaybackRateChanged",
97
+ PlaybackRateChangedDelayed: "GroupCoordinator:PlaybackRateChanged",
89
98
  BeginSoftSuspension: "GroupCoordinator:BeginSoftSuspension",
90
99
  CheckingForSyncIssues: "GroupCoordinator:CheckingForSyncIssues",
91
100
  TrackOutOfSync: transmit("GroupCoordinator:TrackOutOfSync"),
92
101
  TrackDataOutOfSync: transmit("GroupCoordinator:TrackDataOutOfSync"),
93
102
  TransportOutOfSync: transmit("GroupCoordinator:TransportOutOfSync"),
94
103
  PositionOutOfSync: transmit("GroupCoordinator:PositionOutOfSync"),
104
+ PlaybackRateOutOfSync: transmit(
105
+ "GroupCoordinator:PlaybackRateOutOfSync"
106
+ ),
95
107
  },
96
108
  };
97
109
 
@@ -9,4 +9,5 @@ export * from "./GroupPlaybackPosition";
9
9
  export * from "./GroupPlaybackTrack";
10
10
  export * from "./GroupPlaybackTrackData";
11
11
  export * from "./GroupTransportState";
12
+ export * from "./GroupPlaybackRate";
12
13
  export * from "./errors";
@@ -0,0 +1,10 @@
1
+ import { IEvent } from "@microsoft/live-share";
2
+ import { ExtendedMediaSessionActionSource } from "../MediaSessionExtensions";
3
+
4
+ /**
5
+ * @hidden
6
+ */
7
+ export interface IGroupStateEvent extends IEvent {
8
+ clientId: string;
9
+ source: ExtendedMediaSessionActionSource;
10
+ }