@microsoft/live-share-media 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/.vscode/settings.json +2 -0
  2. package/LICENSE +87 -0
  3. package/README.md +118 -92
  4. package/bin/EphemeralMediaSession.d.ts +51 -4
  5. package/bin/EphemeralMediaSession.d.ts.map +1 -1
  6. package/bin/EphemeralMediaSession.js +91 -44
  7. package/bin/EphemeralMediaSession.js.map +1 -1
  8. package/bin/EphemeralMediaSessionCoordinator.d.ts +173 -6
  9. package/bin/EphemeralMediaSessionCoordinator.d.ts.map +1 -1
  10. package/bin/EphemeralMediaSessionCoordinator.js +170 -23
  11. package/bin/EphemeralMediaSessionCoordinator.js.map +1 -1
  12. package/bin/EphemeralMediaSessionCoordinatorSuspension.d.ts +1 -1
  13. package/bin/EphemeralMediaSessionCoordinatorSuspension.js +1 -1
  14. package/bin/IMediaPlayer.d.ts +1 -1
  15. package/bin/IMediaPlayer.js +1 -1
  16. package/bin/MediaPlayerSynchronizer.d.ts +95 -6
  17. package/bin/MediaPlayerSynchronizer.d.ts.map +1 -1
  18. package/bin/MediaPlayerSynchronizer.js +93 -31
  19. package/bin/MediaPlayerSynchronizer.js.map +1 -1
  20. package/bin/MediaSessionActionThrottler.d.ts +1 -1
  21. package/bin/MediaSessionActionThrottler.js +1 -1
  22. package/bin/MediaSessionExtensions.d.ts +1 -1
  23. package/bin/MediaSessionExtensions.js +1 -1
  24. package/bin/RepeatedActionThrottler.d.ts +1 -1
  25. package/bin/RepeatedActionThrottler.js +1 -1
  26. package/bin/VolumeLimiter.d.ts +2 -2
  27. package/bin/VolumeLimiter.js +2 -2
  28. package/bin/index.d.ts +1 -1
  29. package/bin/index.js +1 -1
  30. package/bin/internals/GroupCoordinatorState.d.ts +22 -1
  31. package/bin/internals/GroupCoordinatorState.d.ts.map +1 -1
  32. package/bin/internals/GroupCoordinatorState.js +10 -4
  33. package/bin/internals/GroupCoordinatorState.js.map +1 -1
  34. package/bin/internals/GroupPlaybackPosition.d.ts +8 -1
  35. package/bin/internals/GroupPlaybackPosition.d.ts.map +1 -1
  36. package/bin/internals/GroupPlaybackPosition.js +5 -2
  37. package/bin/internals/GroupPlaybackPosition.js.map +1 -1
  38. package/bin/internals/GroupPlaybackTrack.d.ts +13 -1
  39. package/bin/internals/GroupPlaybackTrack.d.ts.map +1 -1
  40. package/bin/internals/GroupPlaybackTrack.js +8 -2
  41. package/bin/internals/GroupPlaybackTrack.js.map +1 -1
  42. package/bin/internals/GroupPlaybackTrackData.d.ts +13 -1
  43. package/bin/internals/GroupPlaybackTrackData.d.ts.map +1 -1
  44. package/bin/internals/GroupPlaybackTrackData.js +8 -2
  45. package/bin/internals/GroupPlaybackTrackData.js.map +1 -1
  46. package/bin/internals/GroupTransportState.d.ts +13 -1
  47. package/bin/internals/GroupTransportState.d.ts.map +1 -1
  48. package/bin/internals/GroupTransportState.js +8 -2
  49. package/bin/internals/GroupTransportState.js.map +1 -1
  50. package/bin/internals/consts.d.ts +2 -1
  51. package/bin/internals/consts.d.ts.map +1 -1
  52. package/bin/internals/consts.js +5 -1
  53. package/bin/internals/consts.js.map +1 -1
  54. package/bin/internals/index.d.ts +1 -1
  55. package/bin/internals/index.js +1 -1
  56. package/package.json +14 -5
  57. package/src/EphemeralMediaSession.ts +95 -48
  58. package/src/EphemeralMediaSessionCoordinator.ts +190 -26
  59. package/src/EphemeralMediaSessionCoordinatorSuspension.ts +1 -1
  60. package/src/IMediaPlayer.ts +1 -1
  61. package/src/MediaPlayerSynchronizer.ts +101 -33
  62. package/src/MediaSessionActionThrottler.ts +1 -1
  63. package/src/MediaSessionExtensions.ts +1 -1
  64. package/src/RepeatedActionThrottler.ts +1 -1
  65. package/src/VolumeLimiter.ts +2 -2
  66. package/src/index.ts +1 -1
  67. package/src/internals/GroupCoordinatorState.ts +39 -18
  68. package/src/internals/GroupPlaybackPosition.ts +16 -10
  69. package/src/internals/GroupPlaybackTrack.ts +22 -9
  70. package/src/internals/GroupPlaybackTrackData.ts +20 -7
  71. package/src/internals/GroupTransportState.ts +20 -7
  72. package/src/internals/consts.ts +7 -3
  73. package/src/internals/index.ts +1 -1
  74. package/src/test/GroupPlaybackPosition.spec.ts +1 -1
  75. package/src/test/GroupPlaybackTrack.spec.ts +1 -1
  76. package/src/test/SharedMediaSession.spec.ts +1 -1
  77. package/src/test/SharedMediaSessionCoordinator.spec.ts +1 -1
@@ -1,27 +1,40 @@
1
1
  /**
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
4
  */
5
5
 
6
6
  import { IEvent } from '@microsoft/live-share';
7
7
  import EventEmitter from 'events';
8
8
  import { GroupPlaybackTrack, GroupPlaybackTrackEvents } from './GroupPlaybackTrack';
9
9
 
10
- export interface IPlaybackTrackData {
10
+
11
+ /**
12
+ * @hidden
13
+ */
14
+ export interface IPlaybackTrackData {
11
15
  data: object|null;
12
16
  timestamp: number;
13
17
  clientId: string;
14
18
  }
15
19
 
16
- export enum PlaybackTrackDataEvents {
20
+ /**
21
+ * @hidden
22
+ */
23
+ export enum PlaybackTrackDataEvents {
17
24
  dataChange = 'dataChange'
18
25
  }
19
26
 
27
+ /**
28
+ * @hidden
29
+ */
20
30
  export interface IPlaybackTrackDataChangeEvent extends IEvent {
21
31
  data: object|null;
22
32
  }
23
33
 
24
- export class GroupPlaybackTrackData extends EventEmitter {
34
+ /**
35
+ * @hidden
36
+ */
37
+ export class GroupPlaybackTrackData extends EventEmitter {
25
38
  private _track: GroupPlaybackTrack;
26
39
  private _current: IPlaybackTrackData;
27
40
 
@@ -50,7 +63,7 @@ export class GroupPlaybackTrackData extends EventEmitter {
50
63
  }
51
64
 
52
65
  public updateData(event: IPlaybackTrackData): boolean {
53
- // Ignore state changes that are older
66
+ // Ignore state changes that are older
54
67
  const current = this.current;
55
68
  if (event.timestamp < current.timestamp) {
56
69
  return false;
@@ -70,8 +83,8 @@ export class GroupPlaybackTrackData extends EventEmitter {
70
83
  this._current = event;
71
84
 
72
85
  // Notify listeners
73
- this.emit(PlaybackTrackDataEvents.dataChange, { type: PlaybackTrackDataEvents.dataChange, data: event.data });
74
-
86
+ this.emit(PlaybackTrackDataEvents.dataChange, { type: PlaybackTrackDataEvents.dataChange, data: event.data });
87
+
75
88
  return true;
76
89
  }
77
90
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
4
  */
5
5
 
6
6
  import { IEvent, EphemeralEvent } from '@microsoft/live-share';
@@ -9,23 +9,36 @@ import { IMediaPlayerState } from '../EphemeralMediaSessionCoordinator';
9
9
  import { ExtendedMediaSessionPlaybackState, ExtendedMediaSessionAction } from '../MediaSessionExtensions';
10
10
  import { GroupPlaybackTrack, GroupPlaybackTrackEvents } from './GroupPlaybackTrack';
11
11
 
12
- export interface ITransportState {
12
+
13
+ /**
14
+ * @hidden
15
+ */
16
+ export interface ITransportState {
13
17
  playbackState: ExtendedMediaSessionPlaybackState;
14
18
  startPosition: number;
15
19
  timestamp: number;
16
20
  clientId: string;
17
21
  }
18
22
 
23
+ /**
24
+ * @hidden
25
+ */
19
26
  export enum GroupTransportStateEvents {
20
27
  transportStateChange = 'transportStateChange'
21
28
  }
22
29
 
30
+ /**
31
+ * @hidden
32
+ */
23
33
  export interface ITransportStateChangeEvent extends IEvent {
24
34
  action: ExtendedMediaSessionAction;
25
35
  seekTime?: number;
26
36
  }
27
37
 
28
- export class GroupTransportState extends EventEmitter {
38
+ /**
39
+ * @hidden
40
+ */
41
+ export class GroupTransportState extends EventEmitter {
29
42
  private readonly _getMediaPlayerState: () => IMediaPlayerState;
30
43
  private _track: GroupPlaybackTrack;
31
44
  private _current: ITransportState;
@@ -83,7 +96,7 @@ export class GroupTransportState extends EventEmitter {
83
96
  return false;
84
97
  }
85
98
 
86
- // Ignore state changes that are older
99
+ // Ignore state changes that are older
87
100
  const originalState = this.current;
88
101
  if (state.timestamp < originalState.timestamp) {
89
102
  return false;
@@ -100,13 +113,13 @@ export class GroupTransportState extends EventEmitter {
100
113
  // Trigger transport change
101
114
  const playerState = this._getMediaPlayerState().playbackState;
102
115
  if (originalState.playbackState == state.playbackState && playerState != 'ended') {
103
- this.emit(GroupTransportStateEvents.transportStateChange, { type: GroupTransportStateEvents.transportStateChange, action: 'seekto', seekTime: state.startPosition });
116
+ this.emit(GroupTransportStateEvents.transportStateChange, { type: GroupTransportStateEvents.transportStateChange, action: 'seekto', seekTime: state.startPosition });
104
117
  } else if (state.playbackState == 'playing') {
105
118
  const now = EphemeralEvent.getTimestamp();
106
119
  const projectedPosition = state.startPosition + ((now - state.timestamp) / 1000);
107
- this.emit(GroupTransportStateEvents.transportStateChange, { type: GroupTransportStateEvents.transportStateChange, action: 'play', seekTime: projectedPosition});
120
+ this.emit(GroupTransportStateEvents.transportStateChange, { type: GroupTransportStateEvents.transportStateChange, action: 'play', seekTime: projectedPosition});
108
121
  } else {
109
- this.emit(GroupTransportStateEvents.transportStateChange, { type: GroupTransportStateEvents.transportStateChange, action: 'pause', seekTime: state.startPosition});
122
+ this.emit(GroupTransportStateEvents.transportStateChange, { type: GroupTransportStateEvents.transportStateChange, action: 'pause', seekTime: state.startPosition});
110
123
  }
111
124
 
112
125
  return true;
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
4
  */
5
5
 
6
6
  /**
7
- * List of telemetry events. Wrap with a call to transmit() if the event should be transmitted to
8
- * the telemetry service.
7
+ * @hidden
8
+ * List of telemetry events. Wrap with a call to transmit() if the event should be transmitted to
9
+ * the telemetry service.
9
10
  */
10
11
  export const TelemetryEvents = {
11
12
  MediaPlayerSynchronizer: {
@@ -71,6 +72,9 @@ export const TelemetryEvents = {
71
72
  }
72
73
  }
73
74
 
75
+ /**
76
+ * @hidden
77
+ */
74
78
  function transmit(eventName: string): string {
75
79
  return `${eventName}#transmit`;
76
80
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
4
  */
5
5
 
6
6
  export * from './consts';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
4
  */
5
5
 
6
6
  import 'mocha';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
4
  */
5
5
 
6
6
  import 'mocha';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
4
  */
5
5
 
6
6
  import 'mocha';
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Copyright (c) Microsoft Corporation. All rights reserved.
3
- * Licensed under the MIT License.
3
+ * Licensed under the Microsoft Live Share SDK License.
4
4
  */
5
5
 
6
6
  import 'mocha';