@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,570 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { waitUntilConnected, } from "@microsoft/live-share/internal";
11
+ import { MediaSessionCoordinatorEvents, } from "./MediaSessionExtensions.js";
12
+ import { VolumeManager } from "./VolumeManager.js";
13
+ import { TelemetryEvents } from "./internals/consts.js";
14
+ import { TypedEventEmitter } from "@fluid-internal/client-utils";
15
+ /**
16
+ * Events supported by `MediaPlayerSynchronizer` object.
17
+ */
18
+ export var MediaPlayerSynchronizerEvents;
19
+ (function (MediaPlayerSynchronizerEvents) {
20
+ /**
21
+ *
22
+ */
23
+ MediaPlayerSynchronizerEvents["coordinatorstatechange"] = "coordinatorstatechange";
24
+ MediaPlayerSynchronizerEvents["groupaction"] = "groupaction";
25
+ MediaPlayerSynchronizerEvents["useraction"] = "useraction";
26
+ })(MediaPlayerSynchronizerEvents || (MediaPlayerSynchronizerEvents = {}));
27
+ /**
28
+ * Synchronizes a local HTML Media Element with a group of remote HTML Media Elements.
29
+ *
30
+ * @remarks
31
+ * All of an apps transport control commands should be routed through the synchronizer. If the
32
+ * app is not currently joined to the group media session, the commands will be applied directly
33
+ * to the local player. When the group session is joined the commands will be broadcast to the
34
+ * group in addition to being applied to the local player.
35
+ */
36
+ export class MediaPlayerSynchronizer extends TypedEventEmitter {
37
+ /**
38
+ * Creates a new `MediaElementSynchronizer` instance.
39
+ * @param player Media player element. This can be an HTML Media Element or any player that looks like an HTML Media Element.
40
+ * @param mediaSession Group MediaSession object being used.
41
+ * @param onEnd Optional. Function to call when synchronizers `end()` method is called.
42
+ */
43
+ constructor(player, mediaSession, runtime, onEnd) {
44
+ super();
45
+ this._viewOnly = false;
46
+ this._blockUnexpectedPlayerEvents = true;
47
+ this._expectedPlaybackState = "none";
48
+ this._expectedPlaybackRate = 1.0;
49
+ this._metadata = null;
50
+ this._trackData = null;
51
+ this._player = player;
52
+ this._mediaSession = mediaSession;
53
+ this._runtime = runtime;
54
+ this._logger = mediaSession.logger;
55
+ this._volumeManager = new VolumeManager(player);
56
+ this._onEnd = onEnd;
57
+ // Listen for player state requests
58
+ mediaSession.setRequestPlayerStateHandler(() => {
59
+ var _a;
60
+ // Find playback state
61
+ let playbackState;
62
+ const src = this._player.currentSrc || this._player.src;
63
+ if (this._player.ended) {
64
+ playbackState = "ended";
65
+ }
66
+ else if (!src ||
67
+ (this._player.paused && this._player.currentTime < 1.0)) {
68
+ playbackState = "none";
69
+ }
70
+ else if (this._player.paused) {
71
+ playbackState = "paused";
72
+ }
73
+ else {
74
+ playbackState = "playing";
75
+ }
76
+ // Metadata equality check in `GroupPlaybackTrack` would return false if only providing src.
77
+ // Use full metadata if this._metadata has same src
78
+ const metadata = this._metadata && this._metadata.trackIdentifier === src
79
+ ? this._metadata
80
+ : { trackIdentifier: src };
81
+ const state = {
82
+ metadata: metadata,
83
+ playbackState: playbackState,
84
+ positionState: {
85
+ position: this._player.currentTime,
86
+ playbackRate: (_a = this._player.playbackRate) !== null && _a !== void 0 ? _a : 1,
87
+ duration: this._player.duration,
88
+ },
89
+ trackData: this._trackData,
90
+ };
91
+ return state;
92
+ });
93
+ // Listen for player events
94
+ this._onPlayerEvent = (evt) => {
95
+ if (evt.type != "timeupdate") {
96
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.PlayerEvent, null, {
97
+ type: evt.type,
98
+ });
99
+ }
100
+ switch (evt.type) {
101
+ case "loadedmetadata":
102
+ // eslint-disable-next-line no-case-declarations
103
+ const src = this._player.currentSrc || this._player.src;
104
+ this._trackData = null;
105
+ break;
106
+ case "playing":
107
+ // Handle case for YouTube player where user can pause/play video by clicking on it.
108
+ // - Videos don't always start at 0.0 seconds.
109
+ if (this._blockUnexpectedPlayerEvents &&
110
+ this._expectedPlaybackState != "playing") {
111
+ if (this._mediaSession.coordinator.canPlayPause &&
112
+ this._player.currentTime < 1.0) {
113
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
114
+ .UserTappedVideoToPlay);
115
+ this.play().catch((err) => {
116
+ this._logger.sendErrorEvent(TelemetryEvents.MediaPlayerSynchronizer
117
+ .UserTappedVideoToPlayError, err);
118
+ });
119
+ }
120
+ }
121
+ // block play if player state is playing when expected synced state is paused and coordinator is not suspended.
122
+ // needed because cannot tell if its a user initiated event, so disallow play
123
+ if (this._blockUnexpectedPlayerEvents &&
124
+ this._expectedPlaybackState === "paused" &&
125
+ !this._mediaSession.coordinator.isSuspended) {
126
+ this._player.pause();
127
+ }
128
+ // block play if player state is playing when expected synced state is none and coordinator is not suspended.
129
+ // needed because user who is not in control should not be able to start, so disallow play
130
+ if (this._blockUnexpectedPlayerEvents &&
131
+ this._expectedPlaybackState === "none" &&
132
+ !this._mediaSession.coordinator.isSuspended) {
133
+ this._player.pause();
134
+ }
135
+ break;
136
+ case "pause":
137
+ // block pause if player state is paused when expected synced state is playing and coordinator is not suspended.
138
+ // needed because cannot tell if its a user initiated event, so disallow pause
139
+ if (this._blockUnexpectedPlayerEvents &&
140
+ this._expectedPlaybackState === "playing" &&
141
+ !this._mediaSession.coordinator.isSuspended &&
142
+ // some players have ended, but emit a pause event immediately before ended event. Do not play if ended
143
+ !this._player.ended) {
144
+ this._player.play();
145
+ }
146
+ break;
147
+ case "ratechange":
148
+ if (this._blockUnexpectedPlayerEvents &&
149
+ this._expectedPlaybackRate !==
150
+ this._player.playbackRate &&
151
+ !this._mediaSession.coordinator.isSuspended) {
152
+ this._player.playbackRate = this._expectedPlaybackRate;
153
+ }
154
+ break;
155
+ case "blocked":
156
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
157
+ .PlayerBlockedOperation);
158
+ break;
159
+ }
160
+ };
161
+ // Register for coordinator state changes
162
+ this._mediaSession.coordinator.on(MediaSessionCoordinatorEvents.coordinatorstatechange, (evt) => this.emit(evt.type, evt));
163
+ this._mediaSession.coordinator.on(MediaSessionCoordinatorEvents.triggeractionignored, (evt) => {
164
+ this.dispatchGroupAction(evt.details, undefined);
165
+ });
166
+ // Register media session actions
167
+ for (const action of MediaPlayerSynchronizer.SESSION_ACTIONS) {
168
+ this._mediaSession.setActionHandler(action, (details) => __awaiter(this, void 0, void 0, function* () {
169
+ var _a, _b, _c;
170
+ let error;
171
+ try {
172
+ switch (details.action) {
173
+ case "play":
174
+ this._expectedPlaybackState = "playing";
175
+ if (this._player.paused) {
176
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
177
+ .PlayAction);
178
+ if (typeof details.seekTime == "number" &&
179
+ this._player.currentTime < 1.0) {
180
+ this._logger.sendTelemetryEvent(TelemetryEvents
181
+ .MediaPlayerSynchronizer
182
+ .SeekingPlayerToStartPosition, null, { position: details.seekTime });
183
+ this._player.currentTime =
184
+ details.seekTime;
185
+ }
186
+ // Reference: https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/play#exceptions
187
+ yield this._player.play();
188
+ }
189
+ break;
190
+ case "pause":
191
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
192
+ .PauseAction);
193
+ this._expectedPlaybackState = "paused";
194
+ if (typeof details.seekTime == "number" &&
195
+ this._player.currentTime < 1.0) {
196
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
197
+ .SeekingPlayerToStartPosition, null, { position: details.seekTime });
198
+ this._player.currentTime =
199
+ details.seekTime;
200
+ }
201
+ this._player.pause();
202
+ break;
203
+ case "seekto":
204
+ if (typeof details.seekTime == "number") {
205
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
206
+ .SeekToAction, null, { position: details.seekTime });
207
+ this._player.currentTime =
208
+ details.seekTime;
209
+ }
210
+ break;
211
+ case "settrack":
212
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
213
+ .SetTrackAction);
214
+ this._expectedPlaybackState = "none";
215
+ this._metadata = (_a = details.metadata) !== null && _a !== void 0 ? _a : null;
216
+ if (this._player.src ===
217
+ ((_b = details.metadata) === null || _b === void 0 ? void 0 : _b.trackIdentifier)) {
218
+ // Don't set duplicate src and load again.
219
+ break;
220
+ }
221
+ this._player.src =
222
+ details.metadata.trackIdentifier;
223
+ this._player.load();
224
+ break;
225
+ case "datachange":
226
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
227
+ .DataChangeAction);
228
+ break;
229
+ case "ratechange":
230
+ if (!details.playbackRate) {
231
+ break;
232
+ }
233
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
234
+ .RateChangeAction, null, { playbackRate: details.playbackRate });
235
+ this._expectedPlaybackRate =
236
+ details.playbackRate;
237
+ this._player.playbackRate =
238
+ details.playbackRate;
239
+ break;
240
+ case "catchup":
241
+ if (typeof details.seekTime == "number") {
242
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer
243
+ .CatchupAction, null, { position: details.seekTime });
244
+ this.catchupPlayer(details.seekTime);
245
+ }
246
+ break;
247
+ }
248
+ }
249
+ catch (err) {
250
+ if (err instanceof Error) {
251
+ error = err;
252
+ }
253
+ else {
254
+ error = new Error((_c = err === null || err === void 0 ? void 0 : err.message) !== null && _c !== void 0 ? _c : "An unknown error occurred after processing the group session action.");
255
+ }
256
+ }
257
+ this.dispatchGroupAction(details, error);
258
+ }));
259
+ }
260
+ // Subscribe to player events
261
+ for (const event of MediaPlayerSynchronizer.PLAYER_EVENTS) {
262
+ this._player.addEventListener(event, this._onPlayerEvent);
263
+ }
264
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.SynchronizationStarted);
265
+ }
266
+ /**
267
+ * Media player being synchronized.
268
+ */
269
+ get player() {
270
+ return this._player;
271
+ }
272
+ /**
273
+ * Synchronizers media session.
274
+ */
275
+ get mediaSession() {
276
+ return this._mediaSession;
277
+ }
278
+ /**
279
+ * If true the client is in a view only mode.
280
+ *
281
+ * @remarks
282
+ * Toggling this value to true results in `mediaSession.coordinator.canPlayPause`,
283
+ * `mediaSession.coordinator.canSeek`, `mediaSession.coordinator.canSetTrack`,
284
+ * `mediaSession.coordinator.canSetTrackData`, and `mediaSession.coordinator.canSetPlaybackRate`
285
+ * all being set to false. For more fine grained control over the local clients policies,
286
+ * call the `mediaSession.coordinator` directly.
287
+ */
288
+ get viewOnly() {
289
+ return this._viewOnly;
290
+ }
291
+ set viewOnly(value) {
292
+ this._viewOnly = value;
293
+ this.mediaSession.coordinator.canPlayPause = !value;
294
+ this.mediaSession.coordinator.canSeek = !value;
295
+ this.mediaSession.coordinator.canSetTrack = !value;
296
+ this.mediaSession.coordinator.canSetTrackData = !value;
297
+ this.mediaSession.coordinator.canSetPlaybackRate = !value;
298
+ }
299
+ /**
300
+ * @beta
301
+ * If true, pause and play actions will be ignored unless explicitly invoked from the corresponding play() and pause() functions.
302
+ *
303
+ * @remarks
304
+ * True is considered non-beta. If you set to false, this is an experimental beta behavior.
305
+ * Setting it to false may cause unintended side effects, such as local buffer events sending a pause event to remote clients.
306
+ * While setting this to false may prevent the need to add custom media controls for frameworks like video.js, we encourage you to be mindful of this and test thoroughly before using this setting.
307
+ */
308
+ get blockUnexpectedPlayerEvents() {
309
+ return this._blockUnexpectedPlayerEvents;
310
+ }
311
+ set blockUnexpectedPlayerEvents(value) {
312
+ this._blockUnexpectedPlayerEvents = value;
313
+ }
314
+ /**
315
+ * Volume limiter used to temporarily reduce the videos volume when someone speaks in a meeting.
316
+ */
317
+ get volumeManager() {
318
+ return this._volumeManager;
319
+ }
320
+ /**
321
+ * Registers a new event listener.
322
+ * @param event Name of the event to add.
323
+ * @param listener Function to call when the event is triggered.
324
+ */
325
+ addEventListener(event, listener) {
326
+ this.on(event, listener);
327
+ return this;
328
+ }
329
+ /**
330
+ * Un-registers an existing event listener.
331
+ * @param event Name of the event to remove.
332
+ * @param listener Function that was registered in call to `addEventListener()`.
333
+ */
334
+ removeEventListener(event, listener) {
335
+ this.off(event, listener);
336
+ return this;
337
+ }
338
+ /**
339
+ * Ends synchronization of the current media player.
340
+ */
341
+ end() {
342
+ if (this._onEnd) {
343
+ try {
344
+ // Clear media session actions
345
+ for (const action of MediaPlayerSynchronizer.SESSION_ACTIONS) {
346
+ this._mediaSession.setActionHandler(action, null);
347
+ }
348
+ // Subscribe to player events
349
+ for (const event of MediaPlayerSynchronizer.PLAYER_EVENTS) {
350
+ this._player.removeEventListener(event, this._onPlayerEvent);
351
+ }
352
+ // Notify parent
353
+ this._onEnd();
354
+ }
355
+ finally {
356
+ this._onEnd = undefined;
357
+ }
358
+ }
359
+ }
360
+ /**
361
+ * Begin a local seek operation.
362
+ *
363
+ * @remarks
364
+ * UI can call this when a user grabs a timeline scrubber and starts scrubbing the video to a
365
+ * new playback position. The synchronizer will being a new suspension which temporarily
366
+ * disconnects the client for the rest of the group for synchronization purposes. Calling
367
+ * `endSeek()` will end the suspension and seek the group to the users final seek position.
368
+ */
369
+ beginSeek() {
370
+ if (this._seekSuspension) {
371
+ throw new Error("MediaPlayerSynchronizer:beginSeek - cannot begin seek since a seek is already in progress.\nTo prevent this error, ensure you first call `endSeek()` before calling `beginSeek()` again.");
372
+ }
373
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.BeginSeekCalled);
374
+ this._seekSuspension = this._mediaSession.coordinator.beginSuspension();
375
+ }
376
+ /**
377
+ * Ends a seek operation that was started by calling `beginSeek()`.
378
+ * @param seekTo Playback position in seconds to seek the group to.
379
+ */
380
+ endSeek(seekTo) {
381
+ if (!this._seekSuspension) {
382
+ throw new Error("MediaPlayerSynchronizer:endSeek - cannot end seek while no seek is in progress.\nTo prevent this error, ensure you first call `beginSeek()`.");
383
+ }
384
+ // Seek player to new time immediately.
385
+ // - This resolves an issue where the timeline scrubber can temporarily snap back to the original
386
+ // location.
387
+ this._player.currentTime = seekTo;
388
+ const suspension = this._seekSuspension;
389
+ this._seekSuspension = undefined;
390
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.EndSeekCalled, null, {
391
+ position: seekTo,
392
+ });
393
+ suspension.end(seekTo);
394
+ waitUntilConnected(this._runtime).then((clientId) => {
395
+ this.dispatchUserAction({
396
+ action: "seekto",
397
+ source: "user",
398
+ clientId,
399
+ local: true,
400
+ seekTime: seekTo,
401
+ });
402
+ });
403
+ }
404
+ /**
405
+ * Tells the group to begin playing the current video.
406
+ *
407
+ * @remarks
408
+ * For proper operation apps should avoid calling `mediaSession.coordinator.play()` directly
409
+ * and instead use the synchronizers `play()` method.
410
+ *
411
+ * @returns a void promise that resolves once complete, throws if user does not have proper roles
412
+ */
413
+ play() {
414
+ return __awaiter(this, void 0, void 0, function* () {
415
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.PlayCalled);
416
+ this._expectedPlaybackState = "playing";
417
+ yield this._mediaSession.coordinator.play();
418
+ this.dispatchUserAction({
419
+ action: "play",
420
+ source: "user",
421
+ clientId: yield waitUntilConnected(this._runtime),
422
+ local: true,
423
+ });
424
+ });
425
+ }
426
+ /**
427
+ * Tells the group to pause the current video.
428
+ *
429
+ * @remarks
430
+ * For proper operation apps should avoid calling `mediaSession.coordinator.pause()` directly
431
+ * and instead use the synchronizers `pause()` method.
432
+ *
433
+ * @returns a void promise that resolves once complete, throws if user does not have proper roles
434
+ */
435
+ pause() {
436
+ return __awaiter(this, void 0, void 0, function* () {
437
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.PauseCalled);
438
+ this._expectedPlaybackState = "paused";
439
+ yield this._mediaSession.coordinator.pause();
440
+ this.dispatchUserAction({
441
+ action: "pause",
442
+ source: "user",
443
+ clientId: yield waitUntilConnected(this._runtime),
444
+ local: true,
445
+ });
446
+ });
447
+ }
448
+ /**
449
+ * Tells the group to seek the current video to a new playback position.
450
+ *
451
+ * @remarks
452
+ * For proper operation apps should avoid calling `mediaSession.coordinator.seekTo()` directly
453
+ * and instead use the synchronizers `seekTo()` method.
454
+ *
455
+ * @returns a void promise that resolves once complete, throws if user does not have proper roles
456
+ */
457
+ seekTo(time) {
458
+ return __awaiter(this, void 0, void 0, function* () {
459
+ // Always seek player to new time.
460
+ // - This resolves an issue where the timeline scrubber can temporarily snap back to the original
461
+ // location.
462
+ this._player.currentTime = time;
463
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.SeekToCalled, null, { position: time });
464
+ yield this._mediaSession.coordinator.seekTo(time);
465
+ this.dispatchUserAction({
466
+ action: "seekto",
467
+ source: "user",
468
+ clientId: yield waitUntilConnected(this._runtime),
469
+ seekTime: time,
470
+ local: true,
471
+ });
472
+ });
473
+ }
474
+ setPlaybackRate(playbackRate) {
475
+ return __awaiter(this, void 0, void 0, function* () {
476
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.RateChangeCalled, null, { playbackRate });
477
+ yield this._mediaSession.coordinator.setPlaybackRate(playbackRate);
478
+ this.dispatchUserAction({
479
+ action: "ratechange",
480
+ source: "user",
481
+ clientId: yield waitUntilConnected(this._runtime),
482
+ local: true,
483
+ playbackRate,
484
+ });
485
+ });
486
+ }
487
+ /**
488
+ * Tells the group to change to a new track.
489
+ *
490
+ * @remarks
491
+ * For proper operation apps should avoid calling `mediaSession.coordinator.setTrack()` directly
492
+ * and instead use the synchronizers `setTrack()` method.
493
+ *
494
+ * @returns a void promise that resolves once complete, throws if user does not have proper roles
495
+ */
496
+ setTrack(track, waitPoints) {
497
+ return __awaiter(this, void 0, void 0, function* () {
498
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.SetTrackCalled);
499
+ yield this._mediaSession.coordinator.setTrack(track, waitPoints);
500
+ this.dispatchUserAction({
501
+ action: "settrack",
502
+ source: "user",
503
+ clientId: yield waitUntilConnected(this._runtime),
504
+ metadata: track,
505
+ local: true,
506
+ });
507
+ });
508
+ }
509
+ /**
510
+ * Updates the current tracks data object.
511
+ *
512
+ * @remarks
513
+ * For proper operation apps should avoid calling `mediaSession.coordinator.setTrackData()` directly
514
+ * and instead use the synchronizers `setTrackData()` method.
515
+ *
516
+ * @returns a void promise that resolves once complete, throws if user does not have proper roles
517
+ */
518
+ setTrackData(data) {
519
+ return __awaiter(this, void 0, void 0, function* () {
520
+ this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.SetTrackDataCalled);
521
+ this._trackData = data;
522
+ yield this._mediaSession.coordinator.setTrackData(data);
523
+ this.dispatchUserAction({
524
+ action: "datachange",
525
+ source: "user",
526
+ clientId: yield waitUntilConnected(this._runtime),
527
+ local: true,
528
+ data: data,
529
+ });
530
+ });
531
+ }
532
+ dispatchGroupAction(details, error) {
533
+ this.emit(MediaPlayerSynchronizerEvents.groupaction, {
534
+ type: MediaPlayerSynchronizerEvents.groupaction,
535
+ details: details,
536
+ error,
537
+ });
538
+ }
539
+ dispatchUserAction(details) {
540
+ this.emit(MediaPlayerSynchronizerEvents.useraction, {
541
+ type: MediaPlayerSynchronizerEvents.useraction,
542
+ details: details,
543
+ });
544
+ }
545
+ catchupPlayer(time) {
546
+ return __awaiter(this, void 0, void 0, function* () {
547
+ this._player.currentTime = time;
548
+ });
549
+ }
550
+ }
551
+ MediaPlayerSynchronizer.SESSION_ACTIONS = [
552
+ "play",
553
+ "pause",
554
+ "seekto",
555
+ "settrack",
556
+ "ratechange",
557
+ "datachange",
558
+ "catchup",
559
+ "wait",
560
+ ];
561
+ MediaPlayerSynchronizer.PLAYER_EVENTS = [
562
+ "playing",
563
+ "pause",
564
+ "ratechange",
565
+ "timeupdate",
566
+ "ended",
567
+ "loadedmetadata",
568
+ "blocked",
569
+ ];
570
+ //# sourceMappingURL=MediaPlayerSynchronizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaPlayerSynchronizer.js","sourceRoot":"","sources":["../../src/MediaPlayerSynchronizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
+ */
5
+ import { ExtendedMediaSessionActionDetails, ExtendedMediaSessionActionHandler } from "./MediaSessionExtensions.js";
6
+ /**
7
+ * Base class for action throttlers.
8
+ */
9
+ export declare abstract class MediaSessionActionThrottler {
10
+ abstract throttled(details: MediaSessionActionDetails | ExtendedMediaSessionActionDetails, handler?: MediaSessionActionHandler | ExtendedMediaSessionActionHandler): void;
11
+ }
12
+ //# sourceMappingURL=MediaSessionActionThrottler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaSessionActionThrottler.d.ts","sourceRoot":"","sources":["../../src/MediaSessionActionThrottler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,iCAAiC,EACjC,iCAAiC,EACpC,MAAM,6BAA6B,CAAC;AAErC;;GAEG;AACH,8BAAsB,2BAA2B;aAC7B,SAAS,CACrB,OAAO,EAAE,yBAAyB,GAAG,iCAAiC,EACtE,OAAO,CAAC,EAAE,yBAAyB,GAAG,iCAAiC,GACxE,IAAI;CACV"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
+ */
5
+ /**
6
+ * Base class for action throttlers.
7
+ */
8
+ export class MediaSessionActionThrottler {
9
+ }
10
+ //# sourceMappingURL=MediaSessionActionThrottler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaSessionActionThrottler.js","sourceRoot":"","sources":["../../src/MediaSessionActionThrottler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH;;GAEG;AACH,MAAM,OAAgB,2BAA2B;CAKhD"}