@whereby.com/browser-sdk 2.0.0-alpha → 2.0.0-alpha10

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 (73) hide show
  1. package/README.md +39 -2
  2. package/dist/lib.cjs +5868 -0
  3. package/dist/lib.esm.js +5850 -0
  4. package/dist/types.d.ts +308 -0
  5. package/dist/v2-alpha10.js +43 -0
  6. package/package.json +12 -6
  7. package/.eslintrc +0 -23
  8. package/.github/actions/build/action.yml +0 -17
  9. package/.github/workflows/deploy.yml +0 -102
  10. package/.github/workflows/test.yml +0 -24
  11. package/.prettierignore +0 -7
  12. package/.prettierrc +0 -4
  13. package/.storybook/main.cjs +0 -16
  14. package/.storybook/preview.js +0 -9
  15. package/jest.config.js +0 -6
  16. package/rollup.config.js +0 -70
  17. package/src/lib/RoomConnection.ts +0 -516
  18. package/src/lib/RoomParticipant.ts +0 -77
  19. package/src/lib/__tests__/embed.unit.ts +0 -77
  20. package/src/lib/api/ApiClient.ts +0 -111
  21. package/src/lib/api/Credentials.ts +0 -45
  22. package/src/lib/api/HttpClient.ts +0 -95
  23. package/src/lib/api/MultipartHttpClient.ts +0 -53
  24. package/src/lib/api/OrganizationApiClient.ts +0 -64
  25. package/src/lib/api/Response.ts +0 -34
  26. package/src/lib/api/credentialsService/index.ts +0 -159
  27. package/src/lib/api/credentialsService/test/index.spec.ts +0 -181
  28. package/src/lib/api/deviceService/index.ts +0 -42
  29. package/src/lib/api/deviceService/tests/index.spec.ts +0 -74
  30. package/src/lib/api/extractUtils.ts +0 -160
  31. package/src/lib/api/index.ts +0 -8
  32. package/src/lib/api/localStorageWrapper/index.ts +0 -15
  33. package/src/lib/api/models/Account.ts +0 -48
  34. package/src/lib/api/models/Meeting.ts +0 -42
  35. package/src/lib/api/models/Organization.ts +0 -186
  36. package/src/lib/api/models/Room.ts +0 -44
  37. package/src/lib/api/models/account/EmbeddedFreeTierStatus.ts +0 -34
  38. package/src/lib/api/models/tests/Account.spec.ts +0 -128
  39. package/src/lib/api/models/tests/Organization.spec.ts +0 -161
  40. package/src/lib/api/models/tests/Room.spec.ts +0 -74
  41. package/src/lib/api/modules/AbstractStore.ts +0 -18
  42. package/src/lib/api/modules/ChromeStorageStore.ts +0 -44
  43. package/src/lib/api/modules/LocalStorageStore.ts +0 -57
  44. package/src/lib/api/modules/tests/ChromeStorageStore.spec.ts +0 -67
  45. package/src/lib/api/modules/tests/LocalStorageStore.spec.ts +0 -79
  46. package/src/lib/api/modules/tests/__mocks__/storage.ts +0 -24
  47. package/src/lib/api/organizationService/index.ts +0 -284
  48. package/src/lib/api/organizationService/tests/index.spec.ts +0 -781
  49. package/src/lib/api/organizationServiceCache/index.ts +0 -28
  50. package/src/lib/api/organizationServiceCache/tests/index.spec.ts +0 -101
  51. package/src/lib/api/parameterAssertUtils.ts +0 -166
  52. package/src/lib/api/roomService/index.ts +0 -310
  53. package/src/lib/api/roomService/tests/index.spec.ts +0 -668
  54. package/src/lib/api/test/ApiClient.spec.ts +0 -139
  55. package/src/lib/api/test/HttpClient.spec.ts +0 -120
  56. package/src/lib/api/test/MultipartHttpClient.spec.ts +0 -145
  57. package/src/lib/api/test/OrganizationApiClient.spec.ts +0 -132
  58. package/src/lib/api/test/extractUtils.spec.ts +0 -357
  59. package/src/lib/api/test/helpers.ts +0 -41
  60. package/src/lib/api/test/parameterAssertUtils.spec.ts +0 -265
  61. package/src/lib/api/types.ts +0 -6
  62. package/src/lib/embed.ts +0 -172
  63. package/src/lib/index.ts +0 -3
  64. package/src/lib/react/VideoElement.tsx +0 -16
  65. package/src/lib/react/index.ts +0 -3
  66. package/src/lib/react/useLocalMedia.ts +0 -25
  67. package/src/lib/react/useRoomConnection.ts +0 -92
  68. package/src/lib/reducer.ts +0 -142
  69. package/src/stories/custom-ui.stories.tsx +0 -133
  70. package/src/stories/prebuilt-ui.stories.tsx +0 -131
  71. package/src/stories/styles.css +0 -74
  72. package/src/types.d.ts +0 -175
  73. package/tsconfig.json +0 -30
@@ -0,0 +1,308 @@
1
+ import React from 'react';
2
+ import RtcManager from '@whereby/jslib-media/src/webrtc/RtcManager';
3
+ import { ChatMessage as ChatMessage$1 } from '@whereby/jslib-media/src/utils/ServerSocket';
4
+
5
+ interface WherebyEmbedAttributes {
6
+ audio: string;
7
+ avatarUrl: string;
8
+ background: string;
9
+ cameraAccess: string;
10
+ chat: string;
11
+ displayName: string;
12
+ emptyRoomInvitation: string;
13
+ floatSelf: string;
14
+ help: string;
15
+ leaveButton: string;
16
+ logo: string;
17
+ people: string;
18
+ precallReview: string;
19
+ recording: string;
20
+ screenshare: string;
21
+ video: string;
22
+ virtualBackgroundUrl: string;
23
+ room: string;
24
+ style: {
25
+ [key: string]: string;
26
+ };
27
+ }
28
+ declare global {
29
+ namespace JSX {
30
+ interface IntrinsicElements {
31
+ ["whereby-embed"]: Partial<WherebyEmbedAttributes>;
32
+ }
33
+ }
34
+ }
35
+
36
+ interface VideoViewSelfProps {
37
+ stream: MediaStream;
38
+ style?: React.CSSProperties;
39
+ }
40
+ type VideoViewProps = VideoViewSelfProps & React.DetailedHTMLProps<React.VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>;
41
+ declare const _default: ({ muted, stream, ...rest }: VideoViewProps) => JSX.Element;
42
+
43
+ type CameraEnabledEvent = {
44
+ enabled: boolean;
45
+ };
46
+ type MicrophoneEnabledEvent = {
47
+ enabled: boolean;
48
+ };
49
+ type DeviceListUpdatedEvent = {
50
+ cameraDevices: MediaDeviceInfo[];
51
+ microphoneDevices: MediaDeviceInfo[];
52
+ speakerDevices: MediaDeviceInfo[];
53
+ };
54
+ type DeviceListUpdateErrorEvent = {
55
+ error: unknown;
56
+ };
57
+ type StreamUpdatedEvent = {
58
+ stream: MediaStream;
59
+ };
60
+ interface LocalMediaEventsMap {
61
+ camera_enabled: CustomEvent<CameraEnabledEvent>;
62
+ device_list_updated: CustomEvent<DeviceListUpdatedEvent>;
63
+ device_list_update_error: CustomEvent<DeviceListUpdateErrorEvent>;
64
+ microphone_enabled: CustomEvent<MicrophoneEnabledEvent>;
65
+ stream_updated: CustomEvent<StreamUpdatedEvent>;
66
+ }
67
+ interface LocalMediaEventTarget extends EventTarget {
68
+ addEventListener<K extends keyof LocalMediaEventsMap>(type: K, listener: (ev: LocalMediaEventsMap[K]) => void, options?: boolean | AddEventListenerOptions): void;
69
+ addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean): void;
70
+ }
71
+ declare const TypedLocalMediaEventTarget: new () => LocalMediaEventTarget;
72
+ declare class LocalMedia extends TypedLocalMediaEventTarget {
73
+ private _constraints;
74
+ _rtcManagers: RtcManager[];
75
+ stream: MediaStream;
76
+ constructor(constraints: MediaStreamConstraints);
77
+ addRtcManager(rtcManager: RtcManager): void;
78
+ removeRtcManager(rtcManager: RtcManager): void;
79
+ getCameraDeviceId(): string | undefined;
80
+ getMicrophoneDeviceId(): string | undefined;
81
+ isCameraEnabled(): boolean;
82
+ isMicrophoneEnabled(): boolean;
83
+ toggleCameraEnabled(enabled?: boolean): void;
84
+ toggleMichrophoneEnabled(enabled?: boolean): void;
85
+ setCameraDevice(deviceId: string): Promise<void>;
86
+ setMicrophoneDevice(deviceId: string): Promise<void>;
87
+ private _updateDeviceList;
88
+ start(): Promise<MediaStream>;
89
+ stop(): void;
90
+ }
91
+
92
+ interface LocalMediaState {
93
+ currentCameraDeviceId?: string;
94
+ currentMicrophoneDeviceId?: string;
95
+ cameraDeviceError: unknown;
96
+ cameraDevices: MediaDeviceInfo[];
97
+ isSettingCameraDevice: boolean;
98
+ isSettingMicrophoneDevice: boolean;
99
+ isStarting: boolean;
100
+ localStream?: MediaStream;
101
+ microphoneDeviceError: unknown;
102
+ microphoneDevices: MediaDeviceInfo[];
103
+ speakerDevices: MediaDeviceInfo[];
104
+ startError: unknown;
105
+ }
106
+ interface LocalMediaActions {
107
+ setCameraDevice: InstanceType<typeof LocalMedia>["setCameraDevice"];
108
+ setMicrophoneDevice: InstanceType<typeof LocalMedia>["setMicrophoneDevice"];
109
+ toggleCameraEnabled: InstanceType<typeof LocalMedia>["toggleCameraEnabled"];
110
+ toggleMicrophoneEnabled: InstanceType<typeof LocalMedia>["toggleMichrophoneEnabled"];
111
+ }
112
+ type LocalMediaRef = {
113
+ state: LocalMediaState;
114
+ actions: LocalMediaActions;
115
+ _ref: LocalMedia;
116
+ };
117
+ declare function useLocalMedia(constraints?: MediaStreamConstraints): LocalMediaRef;
118
+
119
+ interface RoomParticipantData {
120
+ displayName: string;
121
+ id: string;
122
+ stream?: MediaStream;
123
+ isAudioEnabled: boolean;
124
+ isVideoEnabled: boolean;
125
+ }
126
+ declare class RoomParticipant {
127
+ readonly displayName: string;
128
+ readonly id: string;
129
+ readonly stream?: MediaStream;
130
+ readonly isAudioEnabled: boolean;
131
+ readonly isLocalParticipant: boolean;
132
+ readonly isVideoEnabled: boolean;
133
+ constructor({ displayName, id, stream, isAudioEnabled, isVideoEnabled }: RoomParticipantData);
134
+ }
135
+ interface RemoteParticipantData {
136
+ newJoiner: boolean;
137
+ streams: string[];
138
+ }
139
+ type StreamState = "new_accept" | "to_accept" | "old_accept" | "done_accept" | "to_unaccept" | "done_unaccept" | "auto";
140
+ interface Stream {
141
+ id: string;
142
+ state: StreamState;
143
+ }
144
+ declare class RemoteParticipant extends RoomParticipant {
145
+ readonly newJoiner: boolean;
146
+ readonly streams: Stream[];
147
+ constructor({ displayName, id, newJoiner, streams, isAudioEnabled, isVideoEnabled, }: RoomParticipantData & RemoteParticipantData);
148
+ updateStreamState(streamId: string, state: StreamState): void;
149
+ }
150
+ declare class LocalParticipant extends RoomParticipant {
151
+ readonly isLocalParticipant = true;
152
+ constructor({ displayName, id, stream, isAudioEnabled, isVideoEnabled }: RoomParticipantData);
153
+ }
154
+ interface WaitingParticipant {
155
+ id: string;
156
+ displayName: string | null;
157
+ }
158
+
159
+ type Logger = Pick<Console, "debug" | "error" | "log" | "warn">;
160
+ interface RoomConnectionOptions {
161
+ displayName?: string;
162
+ localMediaConstraints?: MediaStreamConstraints;
163
+ roomKey?: string;
164
+ logger?: Logger;
165
+ localMedia?: LocalMedia;
166
+ }
167
+ type ChatMessage = Pick<ChatMessage$1, "senderId" | "timestamp" | "text">;
168
+ type RoomConnectionStatus = "" | "connecting" | "connected" | "room_locked" | "knocking" | "disconnected" | "accepted" | "rejected";
169
+ type RoomJoinedEvent = {
170
+ localParticipant: LocalParticipant;
171
+ remoteParticipants: RemoteParticipant[];
172
+ waitingParticipants: WaitingParticipant[];
173
+ };
174
+ type RoomConnectionStatusChangedEvent = {
175
+ roomConnectionStatus: RoomConnectionStatus;
176
+ };
177
+ type ParticipantJoinedEvent = {
178
+ remoteParticipant: RemoteParticipant;
179
+ };
180
+ type ParticipantLeftEvent = {
181
+ participantId: string;
182
+ };
183
+ type ParticipantStreamAddedEvent = {
184
+ participantId: string;
185
+ stream: MediaStream;
186
+ };
187
+ type ParticipantAudioEnabledEvent = {
188
+ participantId: string;
189
+ isAudioEnabled: boolean;
190
+ };
191
+ type ParticipantVideoEnabledEvent = {
192
+ participantId: string;
193
+ isVideoEnabled: boolean;
194
+ };
195
+ type ParticipantMetadataChangedEvent = {
196
+ participantId: string;
197
+ displayName: string;
198
+ };
199
+ type WaitingParticipantJoinedEvent = {
200
+ participantId: string;
201
+ displayName: string | null;
202
+ };
203
+ type WaitingParticipantLeftEvent = {
204
+ participantId: string;
205
+ };
206
+ interface RoomEventsMap {
207
+ chat_message: CustomEvent<ChatMessage>;
208
+ participant_audio_enabled: CustomEvent<ParticipantAudioEnabledEvent>;
209
+ participant_joined: CustomEvent<ParticipantJoinedEvent>;
210
+ participant_left: CustomEvent<ParticipantLeftEvent>;
211
+ participant_metadata_changed: CustomEvent<ParticipantMetadataChangedEvent>;
212
+ participant_stream_added: CustomEvent<ParticipantStreamAddedEvent>;
213
+ participant_video_enabled: CustomEvent<ParticipantVideoEnabledEvent>;
214
+ room_connection_status_changed: CustomEvent<RoomConnectionStatusChangedEvent>;
215
+ room_joined: CustomEvent<RoomJoinedEvent>;
216
+ waiting_participant_joined: CustomEvent<WaitingParticipantJoinedEvent>;
217
+ waiting_participant_left: CustomEvent<WaitingParticipantLeftEvent>;
218
+ }
219
+ interface RoomEventTarget extends EventTarget {
220
+ addEventListener<K extends keyof RoomEventsMap>(type: K, listener: (ev: RoomEventsMap[K]) => void, options?: boolean | AddEventListenerOptions): void;
221
+ addEventListener(type: string, callback: EventListenerOrEventListenerObject | null, options?: EventListenerOptions | boolean): void;
222
+ }
223
+ declare const TypedEventTarget: new () => RoomEventTarget;
224
+ declare class RoomConnection extends TypedEventTarget {
225
+ localMedia: LocalMedia;
226
+ localParticipant: LocalParticipant | null;
227
+ roomUrl: URL;
228
+ remoteParticipants: RemoteParticipant[];
229
+ readonly localMediaConstraints?: MediaStreamConstraints;
230
+ readonly roomName: string;
231
+ private organizationId;
232
+ private credentialsService;
233
+ private apiClient;
234
+ private organizationService;
235
+ private organizationServiceCache;
236
+ private organizationApiClient;
237
+ private roomService;
238
+ private signalSocket;
239
+ private rtcManagerDispatcher?;
240
+ private rtcManager?;
241
+ private roomConnectionStatus;
242
+ private logger;
243
+ private _ownsLocalMedia;
244
+ private displayName?;
245
+ private _roomKey;
246
+ constructor(roomUrl: string, { displayName, localMedia, localMediaConstraints, logger, roomKey }: RoomConnectionOptions);
247
+ get roomKey(): string | null;
248
+ private _handleNewChatMessage;
249
+ private _handleNewClient;
250
+ private _handleClientLeft;
251
+ private _handleClientAudioEnabled;
252
+ private _handleClientVideoEnabled;
253
+ private _handleClientMetadataReceived;
254
+ private _handleKnockHandled;
255
+ private _handleKnockerLeft;
256
+ private _handleRoomJoined;
257
+ private _handleRoomKnocked;
258
+ private _handleRtcEvent;
259
+ private _handleRtcManagerCreated;
260
+ private _handleAcceptStreams;
261
+ private _handleStreamAdded;
262
+ private _joinRoom;
263
+ join(): Promise<void>;
264
+ knock(): void;
265
+ leave(): Promise<void>;
266
+ sendChatMessage(text: string): void;
267
+ setDisplayName(displayName: string): void;
268
+ acceptWaitingParticipant(participantId: string): void;
269
+ rejectWaitingParticipant(participantId: string): void;
270
+ }
271
+
272
+ type RemoteParticipantState = Omit<RemoteParticipant, "updateStreamState">;
273
+ interface RoomConnectionState {
274
+ chatMessages: ChatMessage[];
275
+ isJoining: boolean;
276
+ joinError: unknown;
277
+ localParticipant?: LocalParticipant;
278
+ mostRecentChatMessage: ChatMessage | null;
279
+ roomConnectionStatus: RoomConnectionStatus;
280
+ remoteParticipants: RemoteParticipantState[];
281
+ waitingParticipants: WaitingParticipant[];
282
+ }
283
+ interface UseRoomConnectionOptions extends Omit<RoomConnectionOptions, "localMedia"> {
284
+ localMedia?: LocalMediaRef;
285
+ }
286
+ interface RoomConnectionActions {
287
+ sendChatMessage(text: string): void;
288
+ knock(): void;
289
+ setDisplayName(displayName: string): void;
290
+ toggleCamera(enabled?: boolean): void;
291
+ toggleMicrophone(enabled?: boolean): void;
292
+ acceptWaitingParticipant(participantId: string): void;
293
+ rejectWaitingParticipant(participantId: string): void;
294
+ }
295
+ interface RoomConnectionComponents {
296
+ VideoView: typeof _default;
297
+ }
298
+ type RoomConnectionRef = {
299
+ state: RoomConnectionState;
300
+ actions: RoomConnectionActions;
301
+ components: RoomConnectionComponents;
302
+ _ref: RoomConnection;
303
+ };
304
+ declare function useRoomConnection(roomUrl: string, roomConnectionOptions: UseRoomConnectionOptions): RoomConnectionRef;
305
+
306
+ declare const sdkVersion = "2.0.0-alpha10";
307
+
308
+ export { _default as VideoView, sdkVersion, useLocalMedia, useRoomConnection };