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

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 (345) 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/PriorityTimeInterval.d.ts +33 -0
  61. package/bin/cjs/internals/PriorityTimeInterval.d.ts.map +1 -0
  62. package/bin/cjs/internals/PriorityTimeInterval.js +45 -0
  63. package/bin/cjs/internals/PriorityTimeInterval.js.map +1 -0
  64. package/bin/cjs/internals/consts.d.ts.map +1 -0
  65. package/bin/cjs/internals/consts.js.map +1 -0
  66. package/bin/cjs/internals/errors.d.ts.map +1 -0
  67. package/bin/cjs/internals/errors.js.map +1 -0
  68. package/bin/{internals → cjs/internals}/interfaces.d.ts +2 -2
  69. package/bin/cjs/internals/interfaces.d.ts.map +1 -0
  70. package/bin/{internals → cjs/internals}/interfaces.js.map +1 -1
  71. package/bin/cjs/package.json +1 -0
  72. package/bin/esm/IMediaPlayer.d.ts +21 -0
  73. package/bin/esm/IMediaPlayer.d.ts.map +1 -0
  74. package/bin/esm/IMediaPlayer.js +6 -0
  75. package/bin/esm/IMediaPlayer.js.map +1 -0
  76. package/bin/esm/LiveMediaSession.d.ts +97 -0
  77. package/bin/esm/LiveMediaSession.d.ts.map +1 -0
  78. package/bin/esm/LiveMediaSession.js +257 -0
  79. package/bin/esm/LiveMediaSession.js.map +1 -0
  80. package/bin/esm/LiveMediaSessionCoordinator.d.ts +273 -0
  81. package/bin/esm/LiveMediaSessionCoordinator.d.ts.map +1 -0
  82. package/bin/esm/LiveMediaSessionCoordinator.js +475 -0
  83. package/bin/esm/LiveMediaSessionCoordinator.js.map +1 -0
  84. package/bin/esm/LiveMediaSessionCoordinatorSuspension.d.ts +20 -0
  85. package/bin/esm/LiveMediaSessionCoordinatorSuspension.d.ts.map +1 -0
  86. package/bin/esm/LiveMediaSessionCoordinatorSuspension.js +24 -0
  87. package/bin/esm/LiveMediaSessionCoordinatorSuspension.js.map +1 -0
  88. package/bin/esm/MediaPlayerSynchronizer.d.ts +204 -0
  89. package/bin/esm/MediaPlayerSynchronizer.d.ts.map +1 -0
  90. package/bin/esm/MediaPlayerSynchronizer.js +570 -0
  91. package/bin/esm/MediaPlayerSynchronizer.js.map +1 -0
  92. package/bin/esm/MediaSessionActionThrottler.d.ts +12 -0
  93. package/bin/esm/MediaSessionActionThrottler.d.ts.map +1 -0
  94. package/bin/esm/MediaSessionActionThrottler.js +10 -0
  95. package/bin/esm/MediaSessionActionThrottler.js.map +1 -0
  96. package/bin/esm/MediaSessionExtensions.d.ts +177 -0
  97. package/bin/esm/MediaSessionExtensions.d.ts.map +1 -0
  98. package/bin/esm/MediaSessionExtensions.js +23 -0
  99. package/bin/esm/MediaSessionExtensions.js.map +1 -0
  100. package/bin/esm/RepeatedActionThrottler.d.ts +20 -0
  101. package/bin/esm/RepeatedActionThrottler.d.ts.map +1 -0
  102. package/bin/esm/RepeatedActionThrottler.js +59 -0
  103. package/bin/esm/RepeatedActionThrottler.js.map +1 -0
  104. package/bin/esm/VolumeManager.d.ts +84 -0
  105. package/bin/esm/VolumeManager.d.ts.map +1 -0
  106. package/bin/esm/VolumeManager.js +171 -0
  107. package/bin/esm/VolumeManager.js.map +1 -0
  108. package/bin/esm/index.d.ts +14 -0
  109. package/bin/esm/index.d.ts.map +1 -0
  110. package/bin/esm/index.js +14 -0
  111. package/bin/esm/index.js.map +1 -0
  112. package/bin/esm/internals/GroupCoordinatorState.d.ts +109 -0
  113. package/bin/esm/internals/GroupCoordinatorState.d.ts.map +1 -0
  114. package/bin/esm/internals/GroupCoordinatorState.js +512 -0
  115. package/bin/esm/internals/GroupCoordinatorState.js.map +1 -0
  116. package/bin/esm/internals/GroupPlaybackPosition.d.ts +71 -0
  117. package/bin/esm/internals/GroupPlaybackPosition.d.ts.map +1 -0
  118. package/bin/esm/internals/GroupPlaybackPosition.js +166 -0
  119. package/bin/esm/internals/GroupPlaybackPosition.js.map +1 -0
  120. package/bin/esm/internals/GroupPlaybackRate.d.ts +38 -0
  121. package/bin/esm/internals/GroupPlaybackRate.d.ts.map +1 -0
  122. package/bin/esm/internals/GroupPlaybackRate.js +55 -0
  123. package/bin/esm/internals/GroupPlaybackRate.js.map +1 -0
  124. package/bin/esm/internals/GroupPlaybackTrack.d.ts +45 -0
  125. package/bin/esm/internals/GroupPlaybackTrack.d.ts.map +1 -0
  126. package/bin/esm/internals/GroupPlaybackTrack.js +118 -0
  127. package/bin/esm/internals/GroupPlaybackTrack.js.map +1 -0
  128. package/bin/esm/internals/GroupPlaybackTrackData.d.ts +40 -0
  129. package/bin/esm/internals/GroupPlaybackTrackData.d.ts.map +1 -0
  130. package/bin/esm/internals/GroupPlaybackTrackData.js +66 -0
  131. package/bin/esm/internals/GroupPlaybackTrackData.js.map +1 -0
  132. package/bin/esm/internals/GroupTransportState.d.ts +52 -0
  133. package/bin/esm/internals/GroupTransportState.d.ts.map +1 -0
  134. package/bin/esm/internals/GroupTransportState.js +116 -0
  135. package/bin/esm/internals/GroupTransportState.js.map +1 -0
  136. package/bin/esm/internals/PriorityTimeInterval.d.ts +33 -0
  137. package/bin/esm/internals/PriorityTimeInterval.d.ts.map +1 -0
  138. package/bin/esm/internals/PriorityTimeInterval.js +41 -0
  139. package/bin/esm/internals/PriorityTimeInterval.js.map +1 -0
  140. package/bin/esm/internals/consts.d.ts +83 -0
  141. package/bin/esm/internals/consts.d.ts.map +1 -0
  142. package/bin/esm/internals/consts.js +89 -0
  143. package/bin/esm/internals/consts.js.map +1 -0
  144. package/bin/esm/internals/errors.d.ts +17 -0
  145. package/bin/esm/internals/errors.d.ts.map +1 -0
  146. package/bin/esm/internals/errors.js +29 -0
  147. package/bin/esm/internals/errors.js.map +1 -0
  148. package/bin/esm/internals/interfaces.d.ts +23 -0
  149. package/bin/esm/internals/interfaces.d.ts.map +1 -0
  150. package/bin/esm/internals/interfaces.js +2 -0
  151. package/bin/esm/internals/interfaces.js.map +1 -0
  152. package/bin/test/IMediaPlayer.d.ts +21 -0
  153. package/bin/test/IMediaPlayer.d.ts.map +1 -0
  154. package/bin/test/IMediaPlayer.js +7 -0
  155. package/bin/test/IMediaPlayer.js.map +1 -0
  156. package/bin/test/LiveMediaSession.d.ts +97 -0
  157. package/bin/test/LiveMediaSession.d.ts.map +1 -0
  158. package/bin/test/LiveMediaSession.js +261 -0
  159. package/bin/test/LiveMediaSession.js.map +1 -0
  160. package/bin/test/LiveMediaSessionCoordinator.d.ts +296 -0
  161. package/bin/test/LiveMediaSessionCoordinator.d.ts.map +1 -0
  162. package/bin/test/LiveMediaSessionCoordinator.js +552 -0
  163. package/bin/test/LiveMediaSessionCoordinator.js.map +1 -0
  164. package/bin/test/LiveMediaSessionCoordinatorSuspension.d.ts +20 -0
  165. package/bin/test/LiveMediaSessionCoordinatorSuspension.d.ts.map +1 -0
  166. package/bin/test/LiveMediaSessionCoordinatorSuspension.js +28 -0
  167. package/bin/test/LiveMediaSessionCoordinatorSuspension.js.map +1 -0
  168. package/bin/test/MediaPlayerSynchronizer.d.ts +204 -0
  169. package/bin/test/MediaPlayerSynchronizer.d.ts.map +1 -0
  170. package/bin/test/MediaPlayerSynchronizer.js +574 -0
  171. package/bin/test/MediaPlayerSynchronizer.js.map +1 -0
  172. package/bin/test/MediaSessionActionThrottler.d.ts +12 -0
  173. package/bin/test/MediaSessionActionThrottler.d.ts.map +1 -0
  174. package/bin/test/MediaSessionActionThrottler.js +14 -0
  175. package/bin/test/MediaSessionActionThrottler.js.map +1 -0
  176. package/bin/test/MediaSessionExtensions.d.ts +177 -0
  177. package/bin/test/MediaSessionExtensions.d.ts.map +1 -0
  178. package/bin/test/MediaSessionExtensions.js +26 -0
  179. package/bin/test/MediaSessionExtensions.js.map +1 -0
  180. package/bin/test/RepeatedActionThrottler.d.ts +20 -0
  181. package/bin/test/RepeatedActionThrottler.d.ts.map +1 -0
  182. package/bin/test/RepeatedActionThrottler.js +63 -0
  183. package/bin/test/RepeatedActionThrottler.js.map +1 -0
  184. package/bin/test/VolumeManager.d.ts +84 -0
  185. package/bin/test/VolumeManager.d.ts.map +1 -0
  186. package/bin/test/VolumeManager.js +175 -0
  187. package/bin/test/VolumeManager.js.map +1 -0
  188. package/bin/test/index.d.ts +14 -0
  189. package/bin/test/index.d.ts.map +1 -0
  190. package/bin/{index.js → test/index.js} +9 -9
  191. package/bin/test/index.js.map +1 -0
  192. package/bin/test/internals/GroupCoordinatorState.d.ts +110 -0
  193. package/bin/test/internals/GroupCoordinatorState.d.ts.map +1 -0
  194. package/bin/test/internals/GroupCoordinatorState.js +516 -0
  195. package/bin/test/internals/GroupCoordinatorState.js.map +1 -0
  196. package/bin/test/internals/GroupPlaybackPosition.d.ts +71 -0
  197. package/bin/test/internals/GroupPlaybackPosition.d.ts.map +1 -0
  198. package/bin/test/internals/GroupPlaybackPosition.js +170 -0
  199. package/bin/test/internals/GroupPlaybackPosition.js.map +1 -0
  200. package/bin/test/internals/GroupPlaybackRate.d.ts +38 -0
  201. package/bin/test/internals/GroupPlaybackRate.d.ts.map +1 -0
  202. package/bin/test/internals/GroupPlaybackRate.js +59 -0
  203. package/bin/test/internals/GroupPlaybackRate.js.map +1 -0
  204. package/bin/test/internals/GroupPlaybackTrack.d.ts +45 -0
  205. package/bin/test/internals/GroupPlaybackTrack.d.ts.map +1 -0
  206. package/bin/test/internals/GroupPlaybackTrack.js +122 -0
  207. package/bin/test/internals/GroupPlaybackTrack.js.map +1 -0
  208. package/bin/test/internals/GroupPlaybackTrackData.d.ts +40 -0
  209. package/bin/test/internals/GroupPlaybackTrackData.d.ts.map +1 -0
  210. package/bin/test/internals/GroupPlaybackTrackData.js +70 -0
  211. package/bin/test/internals/GroupPlaybackTrackData.js.map +1 -0
  212. package/bin/test/internals/GroupTransportState.d.ts +52 -0
  213. package/bin/test/internals/GroupTransportState.d.ts.map +1 -0
  214. package/bin/test/internals/GroupTransportState.js +120 -0
  215. package/bin/test/internals/GroupTransportState.js.map +1 -0
  216. package/bin/test/internals/PriorityTimeInterval.d.ts +33 -0
  217. package/bin/test/internals/PriorityTimeInterval.d.ts.map +1 -0
  218. package/bin/test/internals/PriorityTimeInterval.js +45 -0
  219. package/bin/test/internals/PriorityTimeInterval.js.map +1 -0
  220. package/bin/test/internals/consts.d.ts +83 -0
  221. package/bin/test/internals/consts.d.ts.map +1 -0
  222. package/bin/test/internals/consts.js +92 -0
  223. package/bin/test/internals/consts.js.map +1 -0
  224. package/bin/test/internals/errors.d.ts +17 -0
  225. package/bin/test/internals/errors.d.ts.map +1 -0
  226. package/bin/test/internals/errors.js +34 -0
  227. package/bin/test/internals/errors.js.map +1 -0
  228. package/bin/test/internals/interfaces.d.ts +23 -0
  229. package/bin/test/internals/interfaces.d.ts.map +1 -0
  230. package/bin/test/internals/interfaces.js +3 -0
  231. package/bin/test/internals/interfaces.js.map +1 -0
  232. package/bin/test/package.json +1 -0
  233. package/bin/test/test/GroupPlaybackPosition.spec.d.ts +6 -0
  234. package/bin/test/test/GroupPlaybackPosition.spec.d.ts.map +1 -0
  235. package/bin/test/test/GroupPlaybackPosition.spec.js +315 -0
  236. package/bin/test/test/GroupPlaybackPosition.spec.js.map +1 -0
  237. package/bin/test/test/GroupPlaybackRate.spec.d.ts +6 -0
  238. package/bin/test/test/GroupPlaybackRate.spec.d.ts.map +1 -0
  239. package/bin/test/test/GroupPlaybackRate.spec.js +47 -0
  240. package/bin/test/test/GroupPlaybackRate.spec.js.map +1 -0
  241. package/bin/test/test/GroupPlaybackTrack.spec.d.ts +6 -0
  242. package/bin/test/test/GroupPlaybackTrack.spec.d.ts.map +1 -0
  243. package/bin/test/test/GroupPlaybackTrack.spec.js +171 -0
  244. package/bin/test/test/GroupPlaybackTrack.spec.js.map +1 -0
  245. package/bin/test/test/GroupPlaybackTrackData.spec.d.ts +6 -0
  246. package/bin/test/test/GroupPlaybackTrackData.spec.d.ts.map +1 -0
  247. package/bin/test/test/GroupPlaybackTrackData.spec.js +63 -0
  248. package/bin/test/test/GroupPlaybackTrackData.spec.js.map +1 -0
  249. package/bin/test/test/LiveMediaSession_ManualActionHandler.spec.d.ts +6 -0
  250. package/bin/test/test/LiveMediaSession_ManualActionHandler.spec.d.ts.map +1 -0
  251. package/bin/test/test/LiveMediaSession_ManualActionHandler.spec.js +324 -0
  252. package/bin/test/test/LiveMediaSession_ManualActionHandler.spec.js.map +1 -0
  253. package/bin/test/test/LiveMediaSession_Synchronizer.spec.d.ts +6 -0
  254. package/bin/test/test/LiveMediaSession_Synchronizer.spec.d.ts.map +1 -0
  255. package/bin/test/test/LiveMediaSession_Synchronizer.spec.js +669 -0
  256. package/bin/test/test/LiveMediaSession_Synchronizer.spec.js.map +1 -0
  257. package/bin/test/test/PriorityTimeInterval.spec.d.ts +6 -0
  258. package/bin/test/test/PriorityTimeInterval.spec.d.ts.map +1 -0
  259. package/bin/test/test/PriorityTimeInterval.spec.js +67 -0
  260. package/bin/test/test/PriorityTimeInterval.spec.js.map +1 -0
  261. package/bin/test/test/TestUtils.d.ts +44 -0
  262. package/bin/test/test/TestUtils.d.ts.map +1 -0
  263. package/bin/test/test/TestUtils.js +116 -0
  264. package/bin/test/test/TestUtils.js.map +1 -0
  265. package/bin/test/test/VolumeManager.spec.d.ts +2 -0
  266. package/bin/test/test/VolumeManager.spec.d.ts.map +1 -0
  267. package/bin/test/test/VolumeManager.spec.js +163 -0
  268. package/bin/test/test/VolumeManager.spec.js.map +1 -0
  269. package/nyc/junit-report.json +246 -166
  270. package/nyc/junit-report.xml +58 -53
  271. package/package.json +31 -15
  272. package/src/LiveMediaSession.ts +32 -14
  273. package/src/LiveMediaSessionCoordinator.ts +39 -27
  274. package/src/LiveMediaSessionCoordinatorSuspension.ts +1 -1
  275. package/src/MediaPlayerSynchronizer.ts +10 -10
  276. package/src/MediaSessionActionThrottler.ts +1 -1
  277. package/src/RepeatedActionThrottler.ts +2 -2
  278. package/src/VolumeManager.ts +6 -6
  279. package/src/index.ts +9 -9
  280. package/src/internals/GroupCoordinatorState.ts +15 -14
  281. package/src/internals/GroupPlaybackPosition.ts +6 -6
  282. package/src/internals/GroupPlaybackRate.ts +2 -2
  283. package/src/internals/GroupPlaybackTrack.ts +3 -3
  284. package/src/internals/GroupPlaybackTrackData.ts +3 -3
  285. package/src/internals/GroupTransportState.ts +6 -6
  286. package/src/internals/interfaces.ts +2 -2
  287. package/tsconfig.cjs.json +14 -0
  288. package/tsconfig.json +65 -74
  289. package/tsconfig.test.json +9 -0
  290. package/bin/IMediaPlayer.d.ts.map +0 -1
  291. package/bin/IMediaPlayer.js.map +0 -1
  292. package/bin/LiveMediaSession.d.ts.map +0 -1
  293. package/bin/LiveMediaSession.js.map +0 -1
  294. package/bin/LiveMediaSessionCoordinator.d.ts.map +0 -1
  295. package/bin/LiveMediaSessionCoordinator.js.map +0 -1
  296. package/bin/LiveMediaSessionCoordinatorSuspension.d.ts.map +0 -1
  297. package/bin/LiveMediaSessionCoordinatorSuspension.js.map +0 -1
  298. package/bin/MediaPlayerSynchronizer.d.ts.map +0 -1
  299. package/bin/MediaPlayerSynchronizer.js.map +0 -1
  300. package/bin/MediaSessionActionThrottler.d.ts.map +0 -1
  301. package/bin/MediaSessionActionThrottler.js.map +0 -1
  302. package/bin/MediaSessionExtensions.d.ts.map +0 -1
  303. package/bin/MediaSessionExtensions.js.map +0 -1
  304. package/bin/RepeatedActionThrottler.d.ts.map +0 -1
  305. package/bin/RepeatedActionThrottler.js.map +0 -1
  306. package/bin/VolumeManager.d.ts.map +0 -1
  307. package/bin/VolumeManager.js.map +0 -1
  308. package/bin/index.d.ts +0 -14
  309. package/bin/index.d.ts.map +0 -1
  310. package/bin/index.js.map +0 -1
  311. package/bin/internals/GroupCoordinatorState.d.ts.map +0 -1
  312. package/bin/internals/GroupCoordinatorState.js.map +0 -1
  313. package/bin/internals/GroupPlaybackPosition.d.ts.map +0 -1
  314. package/bin/internals/GroupPlaybackPosition.js.map +0 -1
  315. package/bin/internals/GroupPlaybackRate.d.ts.map +0 -1
  316. package/bin/internals/GroupPlaybackRate.js.map +0 -1
  317. package/bin/internals/GroupPlaybackTrack.d.ts.map +0 -1
  318. package/bin/internals/GroupPlaybackTrack.js.map +0 -1
  319. package/bin/internals/GroupPlaybackTrackData.d.ts.map +0 -1
  320. package/bin/internals/GroupPlaybackTrackData.js.map +0 -1
  321. package/bin/internals/GroupTransportState.d.ts.map +0 -1
  322. package/bin/internals/GroupTransportState.js.map +0 -1
  323. package/bin/internals/consts.d.ts.map +0 -1
  324. package/bin/internals/consts.js.map +0 -1
  325. package/bin/internals/errors.d.ts.map +0 -1
  326. package/bin/internals/errors.js.map +0 -1
  327. package/bin/internals/index.d.ts +0 -13
  328. package/bin/internals/index.d.ts.map +0 -1
  329. package/bin/internals/index.js.map +0 -1
  330. package/bin/internals/interfaces.d.ts.map +0 -1
  331. package/src/internals/index.ts +0 -13
  332. package/tsconfig.build.json +0 -9
  333. /package/bin/{IMediaPlayer.d.ts → cjs/IMediaPlayer.d.ts} +0 -0
  334. /package/bin/{IMediaPlayer.js → cjs/IMediaPlayer.js} +0 -0
  335. /package/bin/{LiveMediaSessionCoordinatorSuspension.js → cjs/LiveMediaSessionCoordinatorSuspension.js} +0 -0
  336. /package/bin/{MediaSessionActionThrottler.js → cjs/MediaSessionActionThrottler.js} +0 -0
  337. /package/bin/{MediaSessionExtensions.d.ts → cjs/MediaSessionExtensions.d.ts} +0 -0
  338. /package/bin/{MediaSessionExtensions.js → cjs/MediaSessionExtensions.js} +0 -0
  339. /package/bin/{internals → cjs/internals}/GroupPlaybackRate.js +0 -0
  340. /package/bin/{internals → cjs/internals}/GroupPlaybackTrack.js +0 -0
  341. /package/bin/{internals → cjs/internals}/consts.d.ts +0 -0
  342. /package/bin/{internals → cjs/internals}/consts.js +0 -0
  343. /package/bin/{internals → cjs/internals}/errors.d.ts +0 -0
  344. /package/bin/{internals → cjs/internals}/errors.js +0 -0
  345. /package/bin/{internals → cjs/internals}/interfaces.js +0 -0
@@ -0,0 +1,315 @@
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
+ const PriorityTimeInterval_1 = require("../internals/PriorityTimeInterval");
25
+ function createTransportUpdate(runtime, liveRuntime, playbackState, startPosition) {
26
+ return {
27
+ playbackState: playbackState,
28
+ startPosition: startPosition,
29
+ timestamp: liveRuntime.getTimestamp(),
30
+ clientId: runtime.clientId,
31
+ };
32
+ }
33
+ function createPositionUpdate(runtime, liveRuntime, playbackState, position, waitPoint, duration) {
34
+ return {
35
+ playbackState: playbackState,
36
+ waitPoint: waitPoint,
37
+ position: position,
38
+ duration: duration,
39
+ timestamp: liveRuntime.getTimestamp(),
40
+ clientId: runtime.clientId,
41
+ };
42
+ }
43
+ function subtractSeconds(seconds, update) {
44
+ update.timestamp -= seconds * 1000;
45
+ return update;
46
+ }
47
+ function addSeconds(seconds, update) {
48
+ update.timestamp += seconds * 1000;
49
+ return update;
50
+ }
51
+ class MockRuntimeSignaler {
52
+ constructor(clientId) {
53
+ this.clientId = clientId;
54
+ }
55
+ }
56
+ function getObjects() {
57
+ return __awaiter(this, arguments, void 0, function* (updateInterval = 10000) {
58
+ const host = live_share_1.TestLiveShareHost.create();
59
+ let liveRuntime = new internal_1.MockLiveShareRuntime(false, updateInterval, host);
60
+ let runtime1 = new MockRuntimeSignaler("1");
61
+ let runtime2 = new MockRuntimeSignaler("2");
62
+ yield liveRuntime.start();
63
+ const dispose = () => {
64
+ liveRuntime.stop();
65
+ };
66
+ return {
67
+ liveRuntime,
68
+ runtime1,
69
+ runtime2,
70
+ dispose,
71
+ };
72
+ });
73
+ }
74
+ function getPlayBackPosition(liveRuntime_1, runtime1_1) {
75
+ return __awaiter(this, arguments, void 0, function* (liveRuntime, runtime1, updateInterval = new PriorityTimeInterval_1.PriorityTimeInterval(10, () => 1)) {
76
+ const track1 = {
77
+ trackIdentifier: "track1",
78
+ title: "Test Track 1",
79
+ };
80
+ const getMediaPlayerState = () => {
81
+ return {
82
+ metadata: track1,
83
+ playbackState: "none",
84
+ positionState: undefined,
85
+ trackData: null,
86
+ };
87
+ };
88
+ const playbackTrack = new GroupPlaybackTrack_1.GroupPlaybackTrack(getMediaPlayerState);
89
+ const plybackRate = new GroupPlaybackRate_1.GroupPlaybackRate();
90
+ const transportState = new GroupTransportState_1.GroupTransportState(playbackTrack, plybackRate, getMediaPlayerState, liveRuntime);
91
+ const playbackPosition = new GroupPlaybackPosition_1.GroupPlaybackPosition(transportState, plybackRate, runtime1, liveRuntime, updateInterval);
92
+ return { playbackPosition, transportState };
93
+ });
94
+ }
95
+ describe("GroupPlaybackPosition", () => {
96
+ it("should start with 0 clients", () => __awaiter(void 0, void 0, void 0, function* () {
97
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
98
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1);
99
+ try {
100
+ (0, assert_1.strict)(playbackPosition.totalClients == 0, `wrong client count`);
101
+ (0, assert_1.strict)(playbackPosition.localPosition == undefined, `wrong position`);
102
+ }
103
+ finally {
104
+ dispose();
105
+ }
106
+ }));
107
+ it("should find local position", () => __awaiter(void 0, void 0, void 0, function* () {
108
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
109
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1);
110
+ try {
111
+ playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "none", 0.0));
112
+ (0, assert_1.strict)(playbackPosition.totalClients == 1, `wrong client count`);
113
+ (0, assert_1.strict)(playbackPosition.localPosition != undefined, `local position not found`);
114
+ }
115
+ finally {
116
+ dispose();
117
+ }
118
+ }));
119
+ it("should update local position", () => __awaiter(void 0, void 0, void 0, function* () {
120
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
121
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1);
122
+ try {
123
+ const position = createPositionUpdate(runtime1, liveRuntime, "none", 0.0);
124
+ yield playbackPosition.UpdatePlaybackPosition(position);
125
+ const newPosition = addSeconds(1.0, createPositionUpdate(runtime1, liveRuntime, "none", 0.0));
126
+ yield playbackPosition.UpdatePlaybackPosition(newPosition);
127
+ (0, assert_1.strict)(playbackPosition.totalClients == 1, `wrong client count`);
128
+ (0, assert_1.strict)(playbackPosition.localPosition != undefined, `local position not found`);
129
+ (0, assert_1.strict)(playbackPosition.localPosition.timestamp ==
130
+ newPosition.timestamp, `position not updated`);
131
+ }
132
+ finally {
133
+ dispose();
134
+ }
135
+ }));
136
+ it("should ignore older position updates", () => __awaiter(void 0, void 0, void 0, function* () {
137
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
138
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1);
139
+ try {
140
+ const position = createPositionUpdate(runtime1, liveRuntime, "none", 0.0);
141
+ yield playbackPosition.UpdatePlaybackPosition(position);
142
+ const newPosition = subtractSeconds(1.0, createPositionUpdate(runtime1, liveRuntime, "none", 0.0));
143
+ yield playbackPosition.UpdatePlaybackPosition(newPosition);
144
+ (0, assert_1.strict)(playbackPosition.totalClients == 1, `wrong client count`);
145
+ (0, assert_1.strict)(playbackPosition.localPosition != undefined, `local position not found`);
146
+ (0, assert_1.strict)(playbackPosition.localPosition.timestamp == position.timestamp, `position not updated`);
147
+ }
148
+ finally {
149
+ dispose();
150
+ }
151
+ }));
152
+ it("should track other client positions", () => __awaiter(void 0, void 0, void 0, function* () {
153
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
154
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1);
155
+ try {
156
+ const position1 = createPositionUpdate(runtime1, liveRuntime, "none", 0.0);
157
+ yield playbackPosition.UpdatePlaybackPosition(position1);
158
+ const position2 = addSeconds(1.0, createPositionUpdate(runtime2, liveRuntime, "none", 0.0));
159
+ yield playbackPosition.UpdatePlaybackPosition(position2);
160
+ (0, assert_1.strict)(playbackPosition.totalClients == 2, `wrong client count`);
161
+ (0, assert_1.strict)(playbackPosition.localPosition != undefined, `local position not found`);
162
+ (0, assert_1.strict)(playbackPosition.localPosition.timestamp == position1.timestamp, `position not updated`);
163
+ }
164
+ finally {
165
+ dispose();
166
+ }
167
+ }));
168
+ it("should enumerate client positions", () => __awaiter(void 0, void 0, void 0, function* () {
169
+ const updateInterval = new PriorityTimeInterval_1.PriorityTimeInterval(10, () => 1);
170
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
171
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1, updateInterval);
172
+ try {
173
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "none", 0.0));
174
+ yield playbackPosition.UpdatePlaybackPosition(subtractSeconds(updateInterval.seconds, createPositionUpdate(runtime2, liveRuntime, "none", 0.0)));
175
+ let cnt = 0;
176
+ playbackPosition.forEach((position, projectedPosition) => {
177
+ (0, assert_1.strict)(position.position == 0.0, `wrong position ${position.position}`);
178
+ (0, assert_1.strict)(projectedPosition == 0.0, `wrong projected position ${projectedPosition}`);
179
+ cnt++;
180
+ });
181
+ (0, assert_1.strict)(cnt == 2, `only enumerated ${cnt} positions`);
182
+ }
183
+ finally {
184
+ dispose();
185
+ }
186
+ }));
187
+ it("should ignore stale positions", () => __awaiter(void 0, void 0, void 0, function* () {
188
+ const updateInterval = new PriorityTimeInterval_1.PriorityTimeInterval(10, () => 1);
189
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
190
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1, updateInterval);
191
+ try {
192
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "none", 0.0));
193
+ yield playbackPosition.UpdatePlaybackPosition(subtractSeconds(updateInterval.seconds * 3, createPositionUpdate(runtime2, liveRuntime, "none", 0.0)));
194
+ let cnt = 0;
195
+ playbackPosition.forEach((position, projectedPosition) => {
196
+ (0, assert_1.strict)(position.position == 0.0, `wrong position ${position.position}`);
197
+ (0, assert_1.strict)(projectedPosition == 0.0, `wrong projected position ${projectedPosition}`);
198
+ cnt++;
199
+ });
200
+ (0, assert_1.strict)(cnt == 1, `enumerated ${cnt} positions`);
201
+ }
202
+ finally {
203
+ dispose();
204
+ }
205
+ }));
206
+ it("should project position when playing", () => __awaiter(void 0, void 0, void 0, function* () {
207
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
208
+ const { playbackPosition } = yield getPlayBackPosition(liveRuntime, runtime1, new PriorityTimeInterval_1.PriorityTimeInterval(1000, () => 1));
209
+ try {
210
+ playbackPosition.UpdatePlaybackPosition(subtractSeconds(1.0, createPositionUpdate(runtime1, liveRuntime, "playing", 0.0)));
211
+ let cnt = 0;
212
+ playbackPosition.forEach((position, projectedPosition) => {
213
+ (0, assert_1.strict)(position.position == 0.0, `wrong position ${position.position}`);
214
+ (0, assert_1.strict)(projectedPosition >= 1.0, `wrong projected position ${projectedPosition}`);
215
+ cnt++;
216
+ });
217
+ (0, assert_1.strict)(cnt == 1, `enumerated ${cnt} positions`);
218
+ }
219
+ finally {
220
+ dispose();
221
+ }
222
+ }));
223
+ it("should compute max playback position relative to transport state", () => __awaiter(void 0, void 0, void 0, function* () {
224
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
225
+ const { playbackPosition, transportState } = yield getPlayBackPosition(liveRuntime, runtime1, new PriorityTimeInterval_1.PriorityTimeInterval(1000, () => 1));
226
+ try {
227
+ (0, assert_1.strict)(playbackPosition.maxPosition == 0.0, `wrong starting position of ${playbackPosition.maxPosition}`);
228
+ transportState.updateState(subtractSeconds(2.0, createTransportUpdate(runtime1, liveRuntime, "playing", 0.0)), "user");
229
+ (0, assert_1.strict)(playbackPosition.maxPosition >= 2.0, `wrong projected position of ${playbackPosition.maxPosition}`);
230
+ }
231
+ finally {
232
+ dispose();
233
+ }
234
+ }));
235
+ it("should compute target position relative to other client positions", () => __awaiter(void 0, void 0, void 0, function* () {
236
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
237
+ const { playbackPosition, transportState } = yield getPlayBackPosition(liveRuntime, runtime1, new PriorityTimeInterval_1.PriorityTimeInterval(1000, () => 1));
238
+ try {
239
+ (0, assert_1.strict)(playbackPosition.targetPosition == 0.0, `wrong starting position of ${playbackPosition.targetPosition}`);
240
+ yield transportState.updateState(subtractSeconds(2.0, createTransportUpdate(runtime1, liveRuntime, "playing", 0.0)), "user");
241
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "playing", 0.0));
242
+ yield playbackPosition.UpdatePlaybackPosition(subtractSeconds(1.0, createPositionUpdate(runtime2, liveRuntime, "playing", 0.0)));
243
+ // We're sometimes getting back a target position of 0.999 instead of 1.0 (some sort of rounding error)
244
+ (0, assert_1.strict)(playbackPosition.targetPosition > 0.9 &&
245
+ playbackPosition.targetPosition < 2.0, `wrong target position of ${playbackPosition.targetPosition}`);
246
+ }
247
+ finally {
248
+ dispose();
249
+ }
250
+ }));
251
+ it("should limit max and target position by media duration", () => __awaiter(void 0, void 0, void 0, function* () {
252
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
253
+ const { playbackPosition, transportState } = yield getPlayBackPosition(liveRuntime, runtime1, new PriorityTimeInterval_1.PriorityTimeInterval(1000, () => 1));
254
+ try {
255
+ yield transportState.updateState(subtractSeconds(2.0, createTransportUpdate(runtime1, liveRuntime, "playing", 0.0)), "user");
256
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "playing", 0.0, undefined, 0.5));
257
+ yield playbackPosition.UpdatePlaybackPosition(subtractSeconds(1.0, createPositionUpdate(runtime2, liveRuntime, "playing", 0.0, undefined, 0.5)));
258
+ (0, assert_1.strict)(playbackPosition.maxPosition == 0.5, `wrong max position ${playbackPosition.maxPosition}`);
259
+ (0, assert_1.strict)(playbackPosition.targetPosition == 0.5, `wrong target position ${playbackPosition.targetPosition}`);
260
+ }
261
+ finally {
262
+ dispose();
263
+ }
264
+ }));
265
+ it("should count number of waiting clients", () => __awaiter(void 0, void 0, void 0, function* () {
266
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
267
+ const { playbackPosition, transportState } = yield getPlayBackPosition(liveRuntime, runtime1, new PriorityTimeInterval_1.PriorityTimeInterval(1000, () => 1));
268
+ try {
269
+ yield transportState.updateState(subtractSeconds(2.0, createTransportUpdate(runtime1, liveRuntime, "playing", 0.0)), "user");
270
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "suspended", 2.0, {
271
+ position: 2.0,
272
+ }));
273
+ yield playbackPosition.UpdatePlaybackPosition(subtractSeconds(1.0, createPositionUpdate(runtime2, liveRuntime, "playing", 0.0, undefined)));
274
+ (0, assert_1.strict)(playbackPosition.clientsWaiting == 2, `wrong count ${playbackPosition.clientsWaiting}`);
275
+ }
276
+ finally {
277
+ dispose();
278
+ }
279
+ }));
280
+ it("should drop waiting count after suspension ends", () => __awaiter(void 0, void 0, void 0, function* () {
281
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
282
+ const { playbackPosition, transportState } = yield getPlayBackPosition(liveRuntime, runtime1, new PriorityTimeInterval_1.PriorityTimeInterval(1000, () => 1));
283
+ try {
284
+ yield transportState.updateState(subtractSeconds(2.0, createTransportUpdate(runtime1, liveRuntime, "playing", 0.0)), "user");
285
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "waiting", 2.0, {
286
+ position: 2.0,
287
+ }));
288
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime2, liveRuntime, "suspended", 2.0, {
289
+ position: 2.0,
290
+ }));
291
+ (0, assert_1.strict)(playbackPosition.clientsWaiting == 1, `wrong count ${playbackPosition.clientsWaiting}`);
292
+ }
293
+ finally {
294
+ dispose();
295
+ }
296
+ }));
297
+ it("should drop waiting count to 0 after all clients reach wait point", () => __awaiter(void 0, void 0, void 0, function* () {
298
+ const { liveRuntime, runtime1, runtime2, dispose } = yield getObjects();
299
+ const { playbackPosition, transportState } = yield getPlayBackPosition(liveRuntime, runtime1, new PriorityTimeInterval_1.PriorityTimeInterval(1000, () => 1));
300
+ try {
301
+ yield transportState.updateState(subtractSeconds(2.0, createTransportUpdate(runtime1, liveRuntime, "playing", 0.0)), "user");
302
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime1, liveRuntime, "waiting", 2.0, {
303
+ position: 2.0,
304
+ }));
305
+ yield playbackPosition.UpdatePlaybackPosition(createPositionUpdate(runtime2, liveRuntime, "waiting", 2.0, {
306
+ position: 2.0,
307
+ }));
308
+ (0, assert_1.strict)(playbackPosition.clientsWaiting == 0, `wrong count ${playbackPosition.clientsWaiting}`);
309
+ }
310
+ finally {
311
+ dispose();
312
+ }
313
+ }));
314
+ });
315
+ //# 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"}