@microsoft/live-share-media 2.0.0-internal.5 → 2.0.0-internal.6

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 (329) hide show
  1. package/.mocharc.cjs +12 -0
  2. package/.nycrc.json +1 -1
  3. package/README.md +30 -31
  4. package/bin/cjs/IMediaPlayer.d.ts.map +1 -0
  5. package/bin/cjs/IMediaPlayer.js.map +1 -0
  6. package/bin/{LiveMediaSession.d.ts → cjs/LiveMediaSession.d.ts} +16 -9
  7. package/bin/cjs/LiveMediaSession.d.ts.map +1 -0
  8. package/bin/{LiveMediaSession.js → cjs/LiveMediaSession.js} +31 -25
  9. package/bin/cjs/LiveMediaSession.js.map +1 -0
  10. package/bin/{LiveMediaSessionCoordinator.d.ts → cjs/LiveMediaSessionCoordinator.d.ts} +5 -4
  11. package/bin/cjs/LiveMediaSessionCoordinator.d.ts.map +1 -0
  12. package/bin/{LiveMediaSessionCoordinator.js → cjs/LiveMediaSessionCoordinator.js} +60 -50
  13. package/bin/cjs/LiveMediaSessionCoordinator.js.map +1 -0
  14. package/bin/{LiveMediaSessionCoordinatorSuspension.d.ts → cjs/LiveMediaSessionCoordinatorSuspension.d.ts} +1 -1
  15. package/bin/cjs/LiveMediaSessionCoordinatorSuspension.d.ts.map +1 -0
  16. package/bin/cjs/LiveMediaSessionCoordinatorSuspension.js.map +1 -0
  17. package/bin/{MediaPlayerSynchronizer.d.ts → cjs/MediaPlayerSynchronizer.d.ts} +7 -6
  18. package/bin/cjs/MediaPlayerSynchronizer.d.ts.map +1 -0
  19. package/bin/{MediaPlayerSynchronizer.js → cjs/MediaPlayerSynchronizer.js} +36 -36
  20. package/bin/cjs/MediaPlayerSynchronizer.js.map +1 -0
  21. package/bin/{MediaSessionActionThrottler.d.ts → cjs/MediaSessionActionThrottler.d.ts} +1 -1
  22. package/bin/cjs/MediaSessionActionThrottler.d.ts.map +1 -0
  23. package/bin/cjs/MediaSessionActionThrottler.js.map +1 -0
  24. package/bin/cjs/MediaSessionExtensions.d.ts.map +1 -0
  25. package/bin/cjs/MediaSessionExtensions.js.map +1 -0
  26. package/bin/{RepeatedActionThrottler.d.ts → cjs/RepeatedActionThrottler.d.ts} +2 -2
  27. package/bin/cjs/RepeatedActionThrottler.d.ts.map +1 -0
  28. package/bin/{RepeatedActionThrottler.js → cjs/RepeatedActionThrottler.js} +2 -2
  29. package/bin/cjs/RepeatedActionThrottler.js.map +1 -0
  30. package/bin/{VolumeManager.d.ts → cjs/VolumeManager.d.ts} +6 -6
  31. package/bin/cjs/VolumeManager.d.ts.map +1 -0
  32. package/bin/{VolumeManager.js → cjs/VolumeManager.js} +5 -5
  33. package/bin/cjs/VolumeManager.js.map +1 -0
  34. package/bin/cjs/index.d.ts +14 -0
  35. package/bin/cjs/index.d.ts.map +1 -0
  36. package/bin/{internals → cjs}/index.js +9 -8
  37. package/bin/cjs/index.js.map +1 -0
  38. package/bin/{internals → cjs/internals}/GroupCoordinatorState.d.ts +10 -9
  39. package/bin/cjs/internals/GroupCoordinatorState.d.ts.map +1 -0
  40. package/bin/{internals → cjs/internals}/GroupCoordinatorState.js +44 -44
  41. package/bin/cjs/internals/GroupCoordinatorState.js.map +1 -0
  42. package/bin/{internals → cjs/internals}/GroupPlaybackPosition.d.ts +5 -4
  43. package/bin/cjs/internals/GroupPlaybackPosition.d.ts.map +1 -0
  44. package/bin/{internals → cjs/internals}/GroupPlaybackPosition.js +2 -2
  45. package/bin/cjs/internals/GroupPlaybackPosition.js.map +1 -0
  46. package/bin/{internals → cjs/internals}/GroupPlaybackRate.d.ts +2 -2
  47. package/bin/cjs/internals/GroupPlaybackRate.d.ts.map +1 -0
  48. package/bin/cjs/internals/GroupPlaybackRate.js.map +1 -0
  49. package/bin/{internals → cjs/internals}/GroupPlaybackTrack.d.ts +3 -3
  50. package/bin/cjs/internals/GroupPlaybackTrack.d.ts.map +1 -0
  51. package/bin/cjs/internals/GroupPlaybackTrack.js.map +1 -0
  52. package/bin/{internals → cjs/internals}/GroupPlaybackTrackData.d.ts +3 -3
  53. package/bin/cjs/internals/GroupPlaybackTrackData.d.ts.map +1 -0
  54. package/bin/{internals → cjs/internals}/GroupPlaybackTrackData.js +2 -2
  55. package/bin/cjs/internals/GroupPlaybackTrackData.js.map +1 -0
  56. package/bin/{internals → cjs/internals}/GroupTransportState.d.ts +6 -6
  57. package/bin/cjs/internals/GroupTransportState.d.ts.map +1 -0
  58. package/bin/{internals → cjs/internals}/GroupTransportState.js +2 -2
  59. package/bin/cjs/internals/GroupTransportState.js.map +1 -0
  60. package/bin/cjs/internals/consts.d.ts.map +1 -0
  61. package/bin/cjs/internals/consts.js.map +1 -0
  62. package/bin/cjs/internals/errors.d.ts.map +1 -0
  63. package/bin/cjs/internals/errors.js.map +1 -0
  64. package/bin/{internals → cjs/internals}/interfaces.d.ts +2 -2
  65. package/bin/cjs/internals/interfaces.d.ts.map +1 -0
  66. package/bin/{internals → cjs/internals}/interfaces.js.map +1 -1
  67. package/bin/cjs/package.json +1 -0
  68. package/bin/esm/IMediaPlayer.d.ts +21 -0
  69. package/bin/esm/IMediaPlayer.d.ts.map +1 -0
  70. package/bin/esm/IMediaPlayer.js +6 -0
  71. package/bin/esm/IMediaPlayer.js.map +1 -0
  72. package/bin/esm/LiveMediaSession.d.ts +97 -0
  73. package/bin/esm/LiveMediaSession.d.ts.map +1 -0
  74. package/bin/esm/LiveMediaSession.js +257 -0
  75. package/bin/esm/LiveMediaSession.js.map +1 -0
  76. package/bin/esm/LiveMediaSessionCoordinator.d.ts +273 -0
  77. package/bin/esm/LiveMediaSessionCoordinator.d.ts.map +1 -0
  78. package/bin/esm/LiveMediaSessionCoordinator.js +475 -0
  79. package/bin/esm/LiveMediaSessionCoordinator.js.map +1 -0
  80. package/bin/esm/LiveMediaSessionCoordinatorSuspension.d.ts +20 -0
  81. package/bin/esm/LiveMediaSessionCoordinatorSuspension.d.ts.map +1 -0
  82. package/bin/esm/LiveMediaSessionCoordinatorSuspension.js +24 -0
  83. package/bin/esm/LiveMediaSessionCoordinatorSuspension.js.map +1 -0
  84. package/bin/esm/MediaPlayerSynchronizer.d.ts +204 -0
  85. package/bin/esm/MediaPlayerSynchronizer.d.ts.map +1 -0
  86. package/bin/esm/MediaPlayerSynchronizer.js +570 -0
  87. package/bin/esm/MediaPlayerSynchronizer.js.map +1 -0
  88. package/bin/esm/MediaSessionActionThrottler.d.ts +12 -0
  89. package/bin/esm/MediaSessionActionThrottler.d.ts.map +1 -0
  90. package/bin/esm/MediaSessionActionThrottler.js +10 -0
  91. package/bin/esm/MediaSessionActionThrottler.js.map +1 -0
  92. package/bin/esm/MediaSessionExtensions.d.ts +177 -0
  93. package/bin/esm/MediaSessionExtensions.d.ts.map +1 -0
  94. package/bin/esm/MediaSessionExtensions.js +23 -0
  95. package/bin/esm/MediaSessionExtensions.js.map +1 -0
  96. package/bin/esm/RepeatedActionThrottler.d.ts +20 -0
  97. package/bin/esm/RepeatedActionThrottler.d.ts.map +1 -0
  98. package/bin/esm/RepeatedActionThrottler.js +59 -0
  99. package/bin/esm/RepeatedActionThrottler.js.map +1 -0
  100. package/bin/esm/VolumeManager.d.ts +84 -0
  101. package/bin/esm/VolumeManager.d.ts.map +1 -0
  102. package/bin/esm/VolumeManager.js +171 -0
  103. package/bin/esm/VolumeManager.js.map +1 -0
  104. package/bin/esm/index.d.ts +14 -0
  105. package/bin/esm/index.d.ts.map +1 -0
  106. package/bin/esm/index.js +14 -0
  107. package/bin/esm/index.js.map +1 -0
  108. package/bin/esm/internals/GroupCoordinatorState.d.ts +109 -0
  109. package/bin/esm/internals/GroupCoordinatorState.d.ts.map +1 -0
  110. package/bin/esm/internals/GroupCoordinatorState.js +512 -0
  111. package/bin/esm/internals/GroupCoordinatorState.js.map +1 -0
  112. package/bin/esm/internals/GroupPlaybackPosition.d.ts +71 -0
  113. package/bin/esm/internals/GroupPlaybackPosition.d.ts.map +1 -0
  114. package/bin/esm/internals/GroupPlaybackPosition.js +166 -0
  115. package/bin/esm/internals/GroupPlaybackPosition.js.map +1 -0
  116. package/bin/esm/internals/GroupPlaybackRate.d.ts +38 -0
  117. package/bin/esm/internals/GroupPlaybackRate.d.ts.map +1 -0
  118. package/bin/esm/internals/GroupPlaybackRate.js +55 -0
  119. package/bin/esm/internals/GroupPlaybackRate.js.map +1 -0
  120. package/bin/esm/internals/GroupPlaybackTrack.d.ts +45 -0
  121. package/bin/esm/internals/GroupPlaybackTrack.d.ts.map +1 -0
  122. package/bin/esm/internals/GroupPlaybackTrack.js +118 -0
  123. package/bin/esm/internals/GroupPlaybackTrack.js.map +1 -0
  124. package/bin/esm/internals/GroupPlaybackTrackData.d.ts +40 -0
  125. package/bin/esm/internals/GroupPlaybackTrackData.d.ts.map +1 -0
  126. package/bin/esm/internals/GroupPlaybackTrackData.js +66 -0
  127. package/bin/esm/internals/GroupPlaybackTrackData.js.map +1 -0
  128. package/bin/esm/internals/GroupTransportState.d.ts +52 -0
  129. package/bin/esm/internals/GroupTransportState.d.ts.map +1 -0
  130. package/bin/esm/internals/GroupTransportState.js +116 -0
  131. package/bin/esm/internals/GroupTransportState.js.map +1 -0
  132. package/bin/esm/internals/consts.d.ts +83 -0
  133. package/bin/esm/internals/consts.d.ts.map +1 -0
  134. package/bin/esm/internals/consts.js +89 -0
  135. package/bin/esm/internals/consts.js.map +1 -0
  136. package/bin/esm/internals/errors.d.ts +17 -0
  137. package/bin/esm/internals/errors.d.ts.map +1 -0
  138. package/bin/esm/internals/errors.js +29 -0
  139. package/bin/esm/internals/errors.js.map +1 -0
  140. package/bin/esm/internals/interfaces.d.ts +23 -0
  141. package/bin/esm/internals/interfaces.d.ts.map +1 -0
  142. package/bin/esm/internals/interfaces.js +2 -0
  143. package/bin/esm/internals/interfaces.js.map +1 -0
  144. package/bin/test/IMediaPlayer.d.ts +21 -0
  145. package/bin/test/IMediaPlayer.d.ts.map +1 -0
  146. package/bin/test/IMediaPlayer.js +7 -0
  147. package/bin/test/IMediaPlayer.js.map +1 -0
  148. package/bin/test/LiveMediaSession.d.ts +97 -0
  149. package/bin/test/LiveMediaSession.d.ts.map +1 -0
  150. package/bin/test/LiveMediaSession.js +261 -0
  151. package/bin/test/LiveMediaSession.js.map +1 -0
  152. package/bin/test/LiveMediaSessionCoordinator.d.ts +273 -0
  153. package/bin/test/LiveMediaSessionCoordinator.d.ts.map +1 -0
  154. package/bin/test/LiveMediaSessionCoordinator.js +479 -0
  155. package/bin/test/LiveMediaSessionCoordinator.js.map +1 -0
  156. package/bin/test/LiveMediaSessionCoordinatorSuspension.d.ts +20 -0
  157. package/bin/test/LiveMediaSessionCoordinatorSuspension.d.ts.map +1 -0
  158. package/bin/test/LiveMediaSessionCoordinatorSuspension.js +28 -0
  159. package/bin/test/LiveMediaSessionCoordinatorSuspension.js.map +1 -0
  160. package/bin/test/MediaPlayerSynchronizer.d.ts +204 -0
  161. package/bin/test/MediaPlayerSynchronizer.d.ts.map +1 -0
  162. package/bin/test/MediaPlayerSynchronizer.js +574 -0
  163. package/bin/test/MediaPlayerSynchronizer.js.map +1 -0
  164. package/bin/test/MediaSessionActionThrottler.d.ts +12 -0
  165. package/bin/test/MediaSessionActionThrottler.d.ts.map +1 -0
  166. package/bin/test/MediaSessionActionThrottler.js +14 -0
  167. package/bin/test/MediaSessionActionThrottler.js.map +1 -0
  168. package/bin/test/MediaSessionExtensions.d.ts +177 -0
  169. package/bin/test/MediaSessionExtensions.d.ts.map +1 -0
  170. package/bin/test/MediaSessionExtensions.js +26 -0
  171. package/bin/test/MediaSessionExtensions.js.map +1 -0
  172. package/bin/test/RepeatedActionThrottler.d.ts +20 -0
  173. package/bin/test/RepeatedActionThrottler.d.ts.map +1 -0
  174. package/bin/test/RepeatedActionThrottler.js +63 -0
  175. package/bin/test/RepeatedActionThrottler.js.map +1 -0
  176. package/bin/test/VolumeManager.d.ts +84 -0
  177. package/bin/test/VolumeManager.d.ts.map +1 -0
  178. package/bin/test/VolumeManager.js +175 -0
  179. package/bin/test/VolumeManager.js.map +1 -0
  180. package/bin/test/index.d.ts +14 -0
  181. package/bin/test/index.d.ts.map +1 -0
  182. package/bin/{index.js → test/index.js} +9 -9
  183. package/bin/test/index.js.map +1 -0
  184. package/bin/test/internals/GroupCoordinatorState.d.ts +109 -0
  185. package/bin/test/internals/GroupCoordinatorState.d.ts.map +1 -0
  186. package/bin/test/internals/GroupCoordinatorState.js +516 -0
  187. package/bin/test/internals/GroupCoordinatorState.js.map +1 -0
  188. package/bin/test/internals/GroupPlaybackPosition.d.ts +71 -0
  189. package/bin/test/internals/GroupPlaybackPosition.d.ts.map +1 -0
  190. package/bin/test/internals/GroupPlaybackPosition.js +170 -0
  191. package/bin/test/internals/GroupPlaybackPosition.js.map +1 -0
  192. package/bin/test/internals/GroupPlaybackRate.d.ts +38 -0
  193. package/bin/test/internals/GroupPlaybackRate.d.ts.map +1 -0
  194. package/bin/test/internals/GroupPlaybackRate.js +59 -0
  195. package/bin/test/internals/GroupPlaybackRate.js.map +1 -0
  196. package/bin/test/internals/GroupPlaybackTrack.d.ts +45 -0
  197. package/bin/test/internals/GroupPlaybackTrack.d.ts.map +1 -0
  198. package/bin/test/internals/GroupPlaybackTrack.js +122 -0
  199. package/bin/test/internals/GroupPlaybackTrack.js.map +1 -0
  200. package/bin/test/internals/GroupPlaybackTrackData.d.ts +40 -0
  201. package/bin/test/internals/GroupPlaybackTrackData.d.ts.map +1 -0
  202. package/bin/test/internals/GroupPlaybackTrackData.js +70 -0
  203. package/bin/test/internals/GroupPlaybackTrackData.js.map +1 -0
  204. package/bin/test/internals/GroupTransportState.d.ts +52 -0
  205. package/bin/test/internals/GroupTransportState.d.ts.map +1 -0
  206. package/bin/test/internals/GroupTransportState.js +120 -0
  207. package/bin/test/internals/GroupTransportState.js.map +1 -0
  208. package/bin/test/internals/consts.d.ts +83 -0
  209. package/bin/test/internals/consts.d.ts.map +1 -0
  210. package/bin/test/internals/consts.js +92 -0
  211. package/bin/test/internals/consts.js.map +1 -0
  212. package/bin/test/internals/errors.d.ts +17 -0
  213. package/bin/test/internals/errors.d.ts.map +1 -0
  214. package/bin/test/internals/errors.js +34 -0
  215. package/bin/test/internals/errors.js.map +1 -0
  216. package/bin/test/internals/interfaces.d.ts +23 -0
  217. package/bin/test/internals/interfaces.d.ts.map +1 -0
  218. package/bin/test/internals/interfaces.js +3 -0
  219. package/bin/test/internals/interfaces.js.map +1 -0
  220. package/bin/test/package.json +1 -0
  221. package/bin/test/test/GroupPlaybackPosition.spec.d.ts +6 -0
  222. package/bin/test/test/GroupPlaybackPosition.spec.d.ts.map +1 -0
  223. package/bin/test/test/GroupPlaybackPosition.spec.js +314 -0
  224. package/bin/test/test/GroupPlaybackPosition.spec.js.map +1 -0
  225. package/bin/test/test/GroupPlaybackRate.spec.d.ts +6 -0
  226. package/bin/test/test/GroupPlaybackRate.spec.d.ts.map +1 -0
  227. package/bin/test/test/GroupPlaybackRate.spec.js +47 -0
  228. package/bin/test/test/GroupPlaybackRate.spec.js.map +1 -0
  229. package/bin/test/test/GroupPlaybackTrack.spec.d.ts +6 -0
  230. package/bin/test/test/GroupPlaybackTrack.spec.d.ts.map +1 -0
  231. package/bin/test/test/GroupPlaybackTrack.spec.js +171 -0
  232. package/bin/test/test/GroupPlaybackTrack.spec.js.map +1 -0
  233. package/bin/test/test/GroupPlaybackTrackData.spec.d.ts +6 -0
  234. package/bin/test/test/GroupPlaybackTrackData.spec.d.ts.map +1 -0
  235. package/bin/test/test/GroupPlaybackTrackData.spec.js +63 -0
  236. package/bin/test/test/GroupPlaybackTrackData.spec.js.map +1 -0
  237. package/bin/test/test/LiveMediaSession_ManualActionHandler.spec.d.ts +6 -0
  238. package/bin/test/test/LiveMediaSession_ManualActionHandler.spec.d.ts.map +1 -0
  239. package/bin/test/test/LiveMediaSession_ManualActionHandler.spec.js +324 -0
  240. package/bin/test/test/LiveMediaSession_ManualActionHandler.spec.js.map +1 -0
  241. package/bin/test/test/LiveMediaSession_Synchronizer.spec.d.ts +6 -0
  242. package/bin/test/test/LiveMediaSession_Synchronizer.spec.d.ts.map +1 -0
  243. package/bin/test/test/LiveMediaSession_Synchronizer.spec.js +669 -0
  244. package/bin/test/test/LiveMediaSession_Synchronizer.spec.js.map +1 -0
  245. package/bin/test/test/TestUtils.d.ts +44 -0
  246. package/bin/test/test/TestUtils.d.ts.map +1 -0
  247. package/bin/test/test/TestUtils.js +116 -0
  248. package/bin/test/test/TestUtils.js.map +1 -0
  249. package/bin/test/test/VolumeManager.spec.d.ts +2 -0
  250. package/bin/test/test/VolumeManager.spec.d.ts.map +1 -0
  251. package/bin/test/test/VolumeManager.spec.js +163 -0
  252. package/bin/test/test/VolumeManager.spec.js.map +1 -0
  253. package/nyc/junit-report.json +167 -167
  254. package/nyc/junit-report.xml +53 -53
  255. package/package.json +31 -15
  256. package/src/LiveMediaSession.ts +32 -14
  257. package/src/LiveMediaSessionCoordinator.ts +39 -27
  258. package/src/LiveMediaSessionCoordinatorSuspension.ts +1 -1
  259. package/src/MediaPlayerSynchronizer.ts +10 -10
  260. package/src/MediaSessionActionThrottler.ts +1 -1
  261. package/src/RepeatedActionThrottler.ts +2 -2
  262. package/src/VolumeManager.ts +6 -6
  263. package/src/index.ts +9 -9
  264. package/src/internals/GroupCoordinatorState.ts +15 -14
  265. package/src/internals/GroupPlaybackPosition.ts +6 -6
  266. package/src/internals/GroupPlaybackRate.ts +2 -2
  267. package/src/internals/GroupPlaybackTrack.ts +3 -3
  268. package/src/internals/GroupPlaybackTrackData.ts +3 -3
  269. package/src/internals/GroupTransportState.ts +6 -6
  270. package/src/internals/interfaces.ts +2 -2
  271. package/tsconfig.cjs.json +14 -0
  272. package/tsconfig.json +65 -74
  273. package/tsconfig.test.json +9 -0
  274. package/bin/IMediaPlayer.d.ts.map +0 -1
  275. package/bin/IMediaPlayer.js.map +0 -1
  276. package/bin/LiveMediaSession.d.ts.map +0 -1
  277. package/bin/LiveMediaSession.js.map +0 -1
  278. package/bin/LiveMediaSessionCoordinator.d.ts.map +0 -1
  279. package/bin/LiveMediaSessionCoordinator.js.map +0 -1
  280. package/bin/LiveMediaSessionCoordinatorSuspension.d.ts.map +0 -1
  281. package/bin/LiveMediaSessionCoordinatorSuspension.js.map +0 -1
  282. package/bin/MediaPlayerSynchronizer.d.ts.map +0 -1
  283. package/bin/MediaPlayerSynchronizer.js.map +0 -1
  284. package/bin/MediaSessionActionThrottler.d.ts.map +0 -1
  285. package/bin/MediaSessionActionThrottler.js.map +0 -1
  286. package/bin/MediaSessionExtensions.d.ts.map +0 -1
  287. package/bin/MediaSessionExtensions.js.map +0 -1
  288. package/bin/RepeatedActionThrottler.d.ts.map +0 -1
  289. package/bin/RepeatedActionThrottler.js.map +0 -1
  290. package/bin/VolumeManager.d.ts.map +0 -1
  291. package/bin/VolumeManager.js.map +0 -1
  292. package/bin/index.d.ts +0 -14
  293. package/bin/index.d.ts.map +0 -1
  294. package/bin/index.js.map +0 -1
  295. package/bin/internals/GroupCoordinatorState.d.ts.map +0 -1
  296. package/bin/internals/GroupCoordinatorState.js.map +0 -1
  297. package/bin/internals/GroupPlaybackPosition.d.ts.map +0 -1
  298. package/bin/internals/GroupPlaybackPosition.js.map +0 -1
  299. package/bin/internals/GroupPlaybackRate.d.ts.map +0 -1
  300. package/bin/internals/GroupPlaybackRate.js.map +0 -1
  301. package/bin/internals/GroupPlaybackTrack.d.ts.map +0 -1
  302. package/bin/internals/GroupPlaybackTrack.js.map +0 -1
  303. package/bin/internals/GroupPlaybackTrackData.d.ts.map +0 -1
  304. package/bin/internals/GroupPlaybackTrackData.js.map +0 -1
  305. package/bin/internals/GroupTransportState.d.ts.map +0 -1
  306. package/bin/internals/GroupTransportState.js.map +0 -1
  307. package/bin/internals/consts.d.ts.map +0 -1
  308. package/bin/internals/consts.js.map +0 -1
  309. package/bin/internals/errors.d.ts.map +0 -1
  310. package/bin/internals/errors.js.map +0 -1
  311. package/bin/internals/index.d.ts +0 -13
  312. package/bin/internals/index.d.ts.map +0 -1
  313. package/bin/internals/index.js.map +0 -1
  314. package/bin/internals/interfaces.d.ts.map +0 -1
  315. package/src/internals/index.ts +0 -13
  316. package/tsconfig.build.json +0 -9
  317. /package/bin/{IMediaPlayer.d.ts → cjs/IMediaPlayer.d.ts} +0 -0
  318. /package/bin/{IMediaPlayer.js → cjs/IMediaPlayer.js} +0 -0
  319. /package/bin/{LiveMediaSessionCoordinatorSuspension.js → cjs/LiveMediaSessionCoordinatorSuspension.js} +0 -0
  320. /package/bin/{MediaSessionActionThrottler.js → cjs/MediaSessionActionThrottler.js} +0 -0
  321. /package/bin/{MediaSessionExtensions.d.ts → cjs/MediaSessionExtensions.d.ts} +0 -0
  322. /package/bin/{MediaSessionExtensions.js → cjs/MediaSessionExtensions.js} +0 -0
  323. /package/bin/{internals → cjs/internals}/GroupPlaybackRate.js +0 -0
  324. /package/bin/{internals → cjs/internals}/GroupPlaybackTrack.js +0 -0
  325. /package/bin/{internals → cjs/internals}/consts.d.ts +0 -0
  326. /package/bin/{internals → cjs/internals}/consts.js +0 -0
  327. /package/bin/{internals → cjs/internals}/errors.d.ts +0 -0
  328. /package/bin/{internals → cjs/internals}/errors.js +0 -0
  329. /package/bin/{internals → cjs/internals}/interfaces.js +0 -0
@@ -0,0 +1,314 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the Microsoft Live Share SDK License.
5
+ */
6
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
+ return new (P || (P = Promise))(function (resolve, reject) {
9
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
12
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
13
+ });
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ require("mocha");
17
+ const assert_1 = require("assert");
18
+ const GroupPlaybackPosition_1 = require("../internals/GroupPlaybackPosition");
19
+ const GroupPlaybackRate_1 = require("../internals/GroupPlaybackRate");
20
+ const GroupTransportState_1 = require("../internals/GroupTransportState");
21
+ const live_share_1 = require("@microsoft/live-share");
22
+ const internal_1 = require("@microsoft/live-share/internal");
23
+ const GroupPlaybackTrack_1 = require("../internals/GroupPlaybackTrack");
24
+ function createTransportUpdate(runtime, liveRuntime, playbackState, startPosition) {
25
+ return {
26
+ playbackState: playbackState,
27
+ startPosition: startPosition,
28
+ timestamp: liveRuntime.getTimestamp(),
29
+ clientId: runtime.clientId,
30
+ };
31
+ }
32
+ function createPositionUpdate(runtime, liveRuntime, playbackState, position, waitPoint, duration) {
33
+ return {
34
+ playbackState: playbackState,
35
+ waitPoint: waitPoint,
36
+ position: position,
37
+ duration: duration,
38
+ timestamp: liveRuntime.getTimestamp(),
39
+ clientId: runtime.clientId,
40
+ };
41
+ }
42
+ function subtractSeconds(seconds, update) {
43
+ update.timestamp -= seconds * 1000;
44
+ return update;
45
+ }
46
+ function addSeconds(seconds, update) {
47
+ update.timestamp += seconds * 1000;
48
+ return update;
49
+ }
50
+ class MockRuntimeSignaler {
51
+ constructor(clientId) {
52
+ this.clientId = clientId;
53
+ }
54
+ }
55
+ function getObjects() {
56
+ return __awaiter(this, arguments, void 0, function* (updateInterval = 10000) {
57
+ const host = live_share_1.TestLiveShareHost.create();
58
+ let liveRuntime = new internal_1.MockLiveShareRuntime(false, updateInterval, host);
59
+ let runtime1 = new MockRuntimeSignaler("1");
60
+ let runtime2 = new MockRuntimeSignaler("2");
61
+ yield liveRuntime.start();
62
+ const dispose = () => {
63
+ liveRuntime.stop();
64
+ };
65
+ return {
66
+ liveRuntime,
67
+ runtime1,
68
+ runtime2,
69
+ dispose,
70
+ };
71
+ });
72
+ }
73
+ function getPlayBackPosition(liveRuntime_1, runtime1_1) {
74
+ return __awaiter(this, arguments, void 0, function* (liveRuntime, runtime1, updateInterval = new live_share_1.TimeInterval(10)) {
75
+ const track1 = {
76
+ trackIdentifier: "track1",
77
+ title: "Test Track 1",
78
+ };
79
+ const getMediaPlayerState = () => {
80
+ return {
81
+ metadata: track1,
82
+ playbackState: "none",
83
+ positionState: undefined,
84
+ trackData: null,
85
+ };
86
+ };
87
+ const playbackTrack = new GroupPlaybackTrack_1.GroupPlaybackTrack(getMediaPlayerState);
88
+ const plybackRate = new GroupPlaybackRate_1.GroupPlaybackRate();
89
+ const transportState = new GroupTransportState_1.GroupTransportState(playbackTrack, plybackRate, getMediaPlayerState, liveRuntime);
90
+ const playbackPosition = new GroupPlaybackPosition_1.GroupPlaybackPosition(transportState, plybackRate, runtime1, liveRuntime, updateInterval);
91
+ return { playbackPosition, transportState };
92
+ });
93
+ }
94
+ describe("GroupPlaybackPosition", () => {
95
+ it("should start with 0 clients", () => __awaiter(void 0, void 0, void 0, function* () {
96
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
97
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1);
98
+ try {
99
+ (0, assert_1.strict)(playbackPosition.totalClients == 0, `wrong client count`);
100
+ (0, assert_1.strict)(playbackPosition.localPosition == undefined, `wrong position`);
101
+ }
102
+ finally {
103
+ dispose();
104
+ }
105
+ }));
106
+ it("should find local position", () => __awaiter(void 0, void 0, void 0, function* () {
107
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
108
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1);
109
+ try {
110
+ playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "none", 0.0));
111
+ (0, assert_1.strict)(playbackPosition.totalClients == 1, `wrong client count`);
112
+ (0, assert_1.strict)(playbackPosition.localPosition != undefined, `local position not found`);
113
+ }
114
+ finally {
115
+ dispose();
116
+ }
117
+ }));
118
+ it("should update local position", () => __awaiter(void 0, void 0, void 0, function* () {
119
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
120
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1);
121
+ try {
122
+ const position = createPositionUpdate(runtime1, liveRuntime, "none", 0.0);
123
+ yield playbackPosition.UpdatePlaybackPosition(position);
124
+ const newPosition = addSeconds(1.0, createPositionUpdate(runtime1, liveRuntime, "none", 0.0));
125
+ yield playbackPosition.UpdatePlaybackPosition(newPosition);
126
+ (0, assert_1.strict)(playbackPosition.totalClients == 1, `wrong client count`);
127
+ (0, assert_1.strict)(playbackPosition.localPosition != undefined, `local position not found`);
128
+ (0, assert_1.strict)(playbackPosition.localPosition.timestamp ==
129
+ newPosition.timestamp, `position not updated`);
130
+ }
131
+ finally {
132
+ dispose();
133
+ }
134
+ }));
135
+ it("should ignore older position updates", () => __awaiter(void 0, void 0, void 0, function* () {
136
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
137
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1);
138
+ try {
139
+ const position = createPositionUpdate(runtime1, liveRuntime, "none", 0.0);
140
+ yield playbackPosition.UpdatePlaybackPosition(position);
141
+ const newPosition = subtractSeconds(1.0, createPositionUpdate(runtime1, liveRuntime, "none", 0.0));
142
+ yield playbackPosition.UpdatePlaybackPosition(newPosition);
143
+ (0, assert_1.strict)(playbackPosition.totalClients == 1, `wrong client count`);
144
+ (0, assert_1.strict)(playbackPosition.localPosition != undefined, `local position not found`);
145
+ (0, assert_1.strict)(playbackPosition.localPosition.timestamp == position.timestamp, `position not updated`);
146
+ }
147
+ finally {
148
+ dispose();
149
+ }
150
+ }));
151
+ it("should track other client positions", () => __awaiter(void 0, void 0, void 0, function* () {
152
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
153
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1);
154
+ try {
155
+ const position1 = createPositionUpdate(runtime1, liveRuntime, "none", 0.0);
156
+ yield playbackPosition.UpdatePlaybackPosition(position1);
157
+ const position2 = addSeconds(1.0, createPositionUpdate(runtime2, liveRuntime, "none", 0.0));
158
+ yield playbackPosition.UpdatePlaybackPosition(position2);
159
+ (0, assert_1.strict)(playbackPosition.totalClients == 2, `wrong client count`);
160
+ (0, assert_1.strict)(playbackPosition.localPosition != undefined, `local position not found`);
161
+ (0, assert_1.strict)(playbackPosition.localPosition.timestamp == position1.timestamp, `position not updated`);
162
+ }
163
+ finally {
164
+ dispose();
165
+ }
166
+ }));
167
+ it("should enumerate client positions", () => __awaiter(void 0, void 0, void 0, function* () {
168
+ const updateInterval = new live_share_1.TimeInterval(10);
169
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
170
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1, updateInterval);
171
+ try {
172
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "none", 0.0));
173
+ yield playbackPosition.UpdatePlaybackPosition(subtractSeconds(updateInterval.seconds, createPositionUpdate(runtime2, liveRuntime, "none", 0.0)));
174
+ let cnt = 0;
175
+ playbackPosition.forEach((position, projectedPosition) => {
176
+ (0, assert_1.strict)(position.position == 0.0, `wrong position ${position.position}`);
177
+ (0, assert_1.strict)(projectedPosition == 0.0, `wrong projected position ${projectedPosition}`);
178
+ cnt++;
179
+ });
180
+ (0, assert_1.strict)(cnt == 2, `only enumerated ${cnt} positions`);
181
+ }
182
+ finally {
183
+ dispose();
184
+ }
185
+ }));
186
+ it("should ignore stale positions", () => __awaiter(void 0, void 0, void 0, function* () {
187
+ const updateInterval = new live_share_1.TimeInterval(10);
188
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
189
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1, updateInterval);
190
+ try {
191
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "none", 0.0));
192
+ yield playbackPosition.UpdatePlaybackPosition(subtractSeconds(updateInterval.seconds * 3, createPositionUpdate(runtime2, liveRuntime, "none", 0.0)));
193
+ let cnt = 0;
194
+ playbackPosition.forEach((position, projectedPosition) => {
195
+ (0, assert_1.strict)(position.position == 0.0, `wrong position ${position.position}`);
196
+ (0, assert_1.strict)(projectedPosition == 0.0, `wrong projected position ${projectedPosition}`);
197
+ cnt++;
198
+ });
199
+ (0, assert_1.strict)(cnt == 1, `enumerated ${cnt} positions`);
200
+ }
201
+ finally {
202
+ dispose();
203
+ }
204
+ }));
205
+ it("should project position when playing", () => __awaiter(void 0, void 0, void 0, function* () {
206
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
207
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1, new live_share_1.TimeInterval(1000));
208
+ try {
209
+ playbackPosition.UpdatePlaybackPosition(subtractSeconds(1.0, createPositionUpdate(runtime1, liveRuntime, "playing", 0.0)));
210
+ let cnt = 0;
211
+ playbackPosition.forEach((position, projectedPosition) => {
212
+ (0, assert_1.strict)(position.position == 0.0, `wrong position ${position.position}`);
213
+ (0, assert_1.strict)(projectedPosition >= 1.0, `wrong projected position ${projectedPosition}`);
214
+ cnt++;
215
+ });
216
+ (0, assert_1.strict)(cnt == 1, `enumerated ${cnt} positions`);
217
+ }
218
+ finally {
219
+ dispose();
220
+ }
221
+ }));
222
+ it("should compute max playback position relative to transport state", () => __awaiter(void 0, void 0, void 0, function* () {
223
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
224
+ const { playbackPosition, transportState } = yield getPlayBackPosition(liveRuntime, runtime1, new live_share_1.TimeInterval(1000));
225
+ try {
226
+ (0, assert_1.strict)(playbackPosition.maxPosition == 0.0, `wrong starting position of ${playbackPosition.maxPosition}`);
227
+ transportState.updateState(subtractSeconds(2.0, createTransportUpdate(runtime1, liveRuntime, "playing", 0.0)), "user");
228
+ (0, assert_1.strict)(playbackPosition.maxPosition >= 2.0, `wrong projected position of ${playbackPosition.maxPosition}`);
229
+ }
230
+ finally {
231
+ dispose();
232
+ }
233
+ }));
234
+ it("should compute target position relative to other client positions", () => __awaiter(void 0, void 0, void 0, function* () {
235
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
236
+ const { playbackPosition, transportState } = yield getPlayBackPosition(liveRuntime, runtime1, new live_share_1.TimeInterval(1000));
237
+ try {
238
+ (0, assert_1.strict)(playbackPosition.targetPosition == 0.0, `wrong starting position of ${playbackPosition.targetPosition}`);
239
+ yield transportState.updateState(subtractSeconds(2.0, createTransportUpdate(runtime1, liveRuntime, "playing", 0.0)), "user");
240
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "playing", 0.0));
241
+ yield playbackPosition.UpdatePlaybackPosition(subtractSeconds(1.0, createPositionUpdate(runtime2, liveRuntime, "playing", 0.0)));
242
+ // We're sometimes getting back a target position of 0.999 instead of 1.0 (some sort of rounding error)
243
+ (0, assert_1.strict)(playbackPosition.targetPosition > 0.9 &&
244
+ playbackPosition.targetPosition < 2.0, `wrong target position of ${playbackPosition.targetPosition}`);
245
+ }
246
+ finally {
247
+ dispose();
248
+ }
249
+ }));
250
+ it("should limit max and target position by media duration", () => __awaiter(void 0, void 0, void 0, function* () {
251
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
252
+ const { playbackPosition, transportState } = yield getPlayBackPosition(liveRuntime, runtime1, new live_share_1.TimeInterval(1000));
253
+ try {
254
+ yield transportState.updateState(subtractSeconds(2.0, createTransportUpdate(runtime1, liveRuntime, "playing", 0.0)), "user");
255
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "playing", 0.0, undefined, 0.5));
256
+ yield playbackPosition.UpdatePlaybackPosition(subtractSeconds(1.0, createPositionUpdate(runtime2, liveRuntime, "playing", 0.0, undefined, 0.5)));
257
+ (0, assert_1.strict)(playbackPosition.maxPosition == 0.5, `wrong max position ${playbackPosition.maxPosition}`);
258
+ (0, assert_1.strict)(playbackPosition.targetPosition == 0.5, `wrong target position ${playbackPosition.targetPosition}`);
259
+ }
260
+ finally {
261
+ dispose();
262
+ }
263
+ }));
264
+ it("should count number of waiting clients", () => __awaiter(void 0, void 0, void 0, function* () {
265
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
266
+ const { playbackPosition, transportState } = yield getPlayBackPosition(liveRuntime, runtime1, new live_share_1.TimeInterval(1000));
267
+ try {
268
+ yield transportState.updateState(subtractSeconds(2.0, createTransportUpdate(runtime1, liveRuntime, "playing", 0.0)), "user");
269
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "suspended", 2.0, {
270
+ position: 2.0,
271
+ }));
272
+ yield playbackPosition.UpdatePlaybackPosition(subtractSeconds(1.0, createPositionUpdate(runtime2, liveRuntime, "playing", 0.0, undefined)));
273
+ (0, assert_1.strict)(playbackPosition.clientsWaiting == 2, `wrong count ${playbackPosition.clientsWaiting}`);
274
+ }
275
+ finally {
276
+ dispose();
277
+ }
278
+ }));
279
+ it("should drop waiting count after suspension ends", () => __awaiter(void 0, void 0, void 0, function* () {
280
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
281
+ const { playbackPosition, transportState } = yield getPlayBackPosition(liveRuntime, runtime1, new live_share_1.TimeInterval(1000));
282
+ try {
283
+ yield transportState.updateState(subtractSeconds(2.0, createTransportUpdate(runtime1, liveRuntime, "playing", 0.0)), "user");
284
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "waiting", 2.0, {
285
+ position: 2.0,
286
+ }));
287
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime2, liveRuntime, "suspended", 2.0, {
288
+ position: 2.0,
289
+ }));
290
+ (0, assert_1.strict)(playbackPosition.clientsWaiting == 1, `wrong count ${playbackPosition.clientsWaiting}`);
291
+ }
292
+ finally {
293
+ dispose();
294
+ }
295
+ }));
296
+ it("should drop waiting count to 0 after all clients reach wait point", () => __awaiter(void 0, void 0, void 0, function* () {
297
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
298
+ const { playbackPosition, transportState } = yield getPlayBackPosition(liveRuntime, runtime1, new live_share_1.TimeInterval(1000));
299
+ try {
300
+ yield transportState.updateState(subtractSeconds(2.0, createTransportUpdate(runtime1, liveRuntime, "playing", 0.0)), "user");
301
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "waiting", 2.0, {
302
+ position: 2.0,
303
+ }));
304
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime2, liveRuntime, "waiting", 2.0, {
305
+ position: 2.0,
306
+ }));
307
+ (0, assert_1.strict)(playbackPosition.clientsWaiting == 0, `wrong count ${playbackPosition.clientsWaiting}`);
308
+ }
309
+ finally {
310
+ dispose();
311
+ }
312
+ }));
313
+ });
314
+ //# sourceMappingURL=GroupPlaybackPosition.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupPlaybackPosition.spec.js","sourceRoot":"","sources":["../../../src/test/GroupPlaybackPosition.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
+ */
5
+ import "mocha";
6
+ //# sourceMappingURL=GroupPlaybackRate.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupPlaybackRate.spec.d.ts","sourceRoot":"","sources":["../../../src/test/GroupPlaybackRate.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,OAAO,CAAC"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the Microsoft Live Share SDK License.
5
+ */
6
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
+ return new (P || (P = Promise))(function (resolve, reject) {
9
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
12
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
13
+ });
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ require("mocha");
17
+ const assert_1 = require("assert");
18
+ const GroupPlaybackRate_1 = require("../internals/GroupPlaybackRate");
19
+ describe("GroupPlaybackRate", () => {
20
+ it("updatePlaybackRate should return false for older events", () => {
21
+ const trackData = new GroupPlaybackRate_1.GroupPlaybackRate();
22
+ (0, assert_1.strict)(trackData.updatePlaybackRate({
23
+ playbackRate: 1.5,
24
+ timestamp: 2,
25
+ clientId: "",
26
+ }, "user"));
27
+ (0, assert_1.strict)(!trackData.updatePlaybackRate({
28
+ playbackRate: 2,
29
+ timestamp: 1,
30
+ clientId: "",
31
+ }, "user"));
32
+ });
33
+ it("updatePlaybackRate should return false for events that are the same time, but clientId is higher sort", () => __awaiter(void 0, void 0, void 0, function* () {
34
+ const rate = new GroupPlaybackRate_1.GroupPlaybackRate();
35
+ rate.updatePlaybackRate({
36
+ playbackRate: 1.5,
37
+ timestamp: 2,
38
+ clientId: "a",
39
+ }, "user");
40
+ (0, assert_1.strict)(!rate.updatePlaybackRate({
41
+ playbackRate: 2,
42
+ timestamp: 2,
43
+ clientId: "b",
44
+ }, "user"));
45
+ }));
46
+ });
47
+ //# sourceMappingURL=GroupPlaybackRate.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupPlaybackRate.spec.js","sourceRoot":"","sources":["../../../src/test/GroupPlaybackRate.spec.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;AAEH,iBAAe;AACf,mCAA0C;AAC1C,sEAAmE;AAEnE,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAC/D,MAAM,SAAS,GAAG,IAAI,qCAAiB,EAAE,CAAC;QAE1C,IAAA,eAAM,EACF,SAAS,CAAC,kBAAkB,CACxB;YACI,YAAY,EAAE,GAAG;YACjB,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,EAAE;SACf,EACD,MAAM,CACT,CACJ,CAAC;QAEF,IAAA,eAAM,EACF,CAAC,SAAS,CAAC,kBAAkB,CACzB;YACI,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,EAAE;SACf,EACD,MAAM,CACT,CACJ,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uGAAuG,EAAE,GAAS,EAAE;QACnH,MAAM,IAAI,GAAG,IAAI,qCAAiB,EAAE,CAAC;QAErC,IAAI,CAAC,kBAAkB,CACnB;YACI,YAAY,EAAE,GAAG;YACjB,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,GAAG;SAChB,EACD,MAAM,CACT,CAAC;QAEF,IAAA,eAAM,EACF,CAAC,IAAI,CAAC,kBAAkB,CACpB;YACI,YAAY,EAAE,CAAC;YACf,SAAS,EAAE,CAAC;YACZ,QAAQ,EAAE,GAAG;SAChB,EACD,MAAM,CACT,CACJ,CAAC;IACN,CAAC,CAAA,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
+ */
5
+ import "mocha";
6
+ //# sourceMappingURL=GroupPlaybackTrack.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupPlaybackTrack.spec.d.ts","sourceRoot":"","sources":["../../../src/test/GroupPlaybackTrack.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,OAAO,CAAC"}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the Microsoft Live Share SDK License.
5
+ */
6
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
+ return new (P || (P = Promise))(function (resolve, reject) {
9
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
12
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
13
+ });
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ require("mocha");
17
+ const assert_1 = require("assert");
18
+ const GroupPlaybackTrack_1 = require("../internals/GroupPlaybackTrack");
19
+ const internal_1 = require("@microsoft/live-share/internal");
20
+ describe("GroupPlaybackTrack", () => {
21
+ const track1 = {
22
+ trackIdentifier: "track1",
23
+ title: "Test Track 1",
24
+ };
25
+ const track2 = {
26
+ trackIdentifier: "track2",
27
+ title: "Test Track 2",
28
+ };
29
+ it('should fire "trackChange" event when no media', () => __awaiter(void 0, void 0, void 0, function* () {
30
+ const done = new internal_1.Deferred();
31
+ const playbackTrack = new GroupPlaybackTrack_1.GroupPlaybackTrack(() => {
32
+ return {
33
+ metadata: { trackIdentifier: "src" },
34
+ playbackState: "none",
35
+ positionState: undefined,
36
+ trackData: null,
37
+ };
38
+ });
39
+ playbackTrack.on(GroupPlaybackTrack_1.GroupPlaybackTrackEvents.trackChange, (event) => {
40
+ try {
41
+ (0, assert_1.strict)(event.metadata, `no metadata`);
42
+ (0, assert_1.strict)(event.metadata.trackIdentifier == "track1", `wrong track`);
43
+ done.resolve();
44
+ }
45
+ catch (err) {
46
+ done.reject(err);
47
+ }
48
+ });
49
+ playbackTrack.updateTrack({
50
+ metadata: track1,
51
+ waitPoints: [],
52
+ timestamp: 1,
53
+ clientId: "a",
54
+ }, "user");
55
+ yield done.promise;
56
+ }));
57
+ it("should switch tracks", () => {
58
+ let cnt = 0;
59
+ let metadata = null;
60
+ const playbackTrack = new GroupPlaybackTrack_1.GroupPlaybackTrack(() => {
61
+ return {
62
+ metadata: null,
63
+ playbackState: "none",
64
+ positionState: undefined,
65
+ trackData: null,
66
+ };
67
+ });
68
+ playbackTrack.on(GroupPlaybackTrack_1.GroupPlaybackTrackEvents.trackChange, (event) => {
69
+ cnt++;
70
+ metadata = event.metadata;
71
+ });
72
+ playbackTrack.updateTrack({
73
+ metadata: track1,
74
+ waitPoints: [],
75
+ timestamp: 1,
76
+ clientId: "a",
77
+ }, "user");
78
+ playbackTrack.updateTrack({
79
+ metadata: track2,
80
+ waitPoints: [],
81
+ timestamp: 2,
82
+ clientId: "b",
83
+ }, "user");
84
+ (0, assert_1.strict)(cnt == 2, `called trackChange event ${cnt} times`);
85
+ (0, assert_1.strict)(metadata.trackIdentifier == "track2", `wrong track set`);
86
+ });
87
+ it("should ignore track changes with older timestamps", () => {
88
+ let cnt = 0;
89
+ let metadata = null;
90
+ const playbackTrack = new GroupPlaybackTrack_1.GroupPlaybackTrack(() => {
91
+ return {
92
+ metadata: null,
93
+ playbackState: "none",
94
+ positionState: undefined,
95
+ trackData: null,
96
+ };
97
+ });
98
+ playbackTrack.on(GroupPlaybackTrack_1.GroupPlaybackTrackEvents.trackChange, (event) => {
99
+ cnt++;
100
+ metadata = event.metadata;
101
+ });
102
+ playbackTrack.updateTrack({
103
+ metadata: track1,
104
+ waitPoints: [],
105
+ timestamp: 3,
106
+ clientId: "a",
107
+ }, "user");
108
+ playbackTrack.updateTrack({
109
+ metadata: track2,
110
+ waitPoints: [],
111
+ timestamp: 2,
112
+ clientId: "b",
113
+ }, "user");
114
+ (0, assert_1.strict)(cnt == 1, `called trackChange event ${cnt} times`);
115
+ });
116
+ it("should insert waitpoint if no existing waitpoints", () => {
117
+ var _a;
118
+ const playbackTrack = new GroupPlaybackTrack_1.GroupPlaybackTrack(() => {
119
+ return {
120
+ metadata: null,
121
+ playbackState: "none",
122
+ positionState: undefined,
123
+ trackData: null,
124
+ };
125
+ });
126
+ playbackTrack.addWaitPoint({ position: 10 });
127
+ (0, assert_1.strict)(((_a = playbackTrack.findNextWaitPoint(undefined)) === null || _a === void 0 ? void 0 : _a.position) === 10);
128
+ });
129
+ it("should insert waitpoints in correct order", () => {
130
+ var _a;
131
+ const playbackTrack = new GroupPlaybackTrack_1.GroupPlaybackTrack(() => {
132
+ return {
133
+ metadata: null,
134
+ playbackState: "none",
135
+ positionState: undefined,
136
+ trackData: null,
137
+ };
138
+ });
139
+ playbackTrack.updateTrack({
140
+ metadata: track1,
141
+ waitPoints: [{ position: 30 }],
142
+ timestamp: 1,
143
+ clientId: "a",
144
+ }, "user");
145
+ playbackTrack.addWaitPoint({ position: 10 });
146
+ (0, assert_1.strict)(((_a = playbackTrack.findNextWaitPoint(undefined)) === null || _a === void 0 ? void 0 : _a.position) === 10);
147
+ });
148
+ it("updateTrack should return false for events that are the same time, but clientId is higher sort", () => {
149
+ const playbackTrack = new GroupPlaybackTrack_1.GroupPlaybackTrack(() => {
150
+ return {
151
+ metadata: { trackIdentifier: "src" },
152
+ playbackState: "none",
153
+ positionState: undefined,
154
+ trackData: null,
155
+ };
156
+ });
157
+ playbackTrack.updateTrack({
158
+ metadata: track1,
159
+ waitPoints: [],
160
+ timestamp: 3,
161
+ clientId: "a",
162
+ }, "user");
163
+ (0, assert_1.strict)(!playbackTrack.updateTrack({
164
+ metadata: track1,
165
+ waitPoints: [],
166
+ timestamp: 3,
167
+ clientId: "b",
168
+ }, "user"));
169
+ });
170
+ });
171
+ //# sourceMappingURL=GroupPlaybackTrack.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupPlaybackTrack.spec.js","sourceRoot":"","sources":["../../../src/test/GroupPlaybackTrack.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
+ */
5
+ import "mocha";
6
+ //# sourceMappingURL=GroupPlaybackTrackData.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupPlaybackTrackData.spec.d.ts","sourceRoot":"","sources":["../../../src/test/GroupPlaybackTrackData.spec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,OAAO,CAAC"}