mediasfu-shared 1.1.0 → 1.2.0

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 (137) hide show
  1. package/README.md +17 -0
  2. package/dist/ProducerClient/producerClientEmits/createDeviceClient.d.ts +1 -1
  3. package/dist/ProducerClient/producerClientEmits/createDeviceClient.d.ts.map +1 -1
  4. package/dist/ProducerClient/producerClientEmits/updateRoomParametersClient.d.ts +1 -1
  5. package/dist/ProducerClient/producerClientEmits/updateRoomParametersClient.d.ts.map +1 -1
  6. package/dist/consumers/connectIps.d.ts +1 -1
  7. package/dist/consumers/connectIps.d.ts.map +1 -1
  8. package/dist/consumers/connectRecvTransport.d.ts +1 -1
  9. package/dist/consumers/connectRecvTransport.d.ts.map +1 -1
  10. package/dist/consumers/connectSendTransport.d.ts +1 -1
  11. package/dist/consumers/connectSendTransport.d.ts.map +1 -1
  12. package/dist/consumers/connectSendTransportAudio.d.ts +1 -1
  13. package/dist/consumers/connectSendTransportAudio.d.ts.map +1 -1
  14. package/dist/consumers/connectSendTransportScreen.d.ts +1 -1
  15. package/dist/consumers/connectSendTransportScreen.d.ts.map +1 -1
  16. package/dist/consumers/connectSendTransportVideo.d.ts +1 -1
  17. package/dist/consumers/connectSendTransportVideo.d.ts.map +1 -1
  18. package/dist/consumers/createSendTransport.d.ts +1 -1
  19. package/dist/consumers/createSendTransport.d.ts.map +1 -1
  20. package/dist/consumers/disconnectSendTransportAudio.d.ts +1 -1
  21. package/dist/consumers/disconnectSendTransportAudio.d.ts.map +1 -1
  22. package/dist/consumers/disconnectSendTransportScreen.d.ts +1 -1
  23. package/dist/consumers/disconnectSendTransportScreen.d.ts.map +1 -1
  24. package/dist/consumers/disconnectSendTransportVideo.d.ts +1 -1
  25. package/dist/consumers/disconnectSendTransportVideo.d.ts.map +1 -1
  26. package/dist/consumers/index.cjs +80 -0
  27. package/dist/consumers/index.cjs.map +1 -0
  28. package/dist/consumers/index.d.ts +62 -0
  29. package/dist/consumers/index.d.ts.map +1 -0
  30. package/dist/consumers/index.js +80 -0
  31. package/dist/consumers/index.js.map +1 -0
  32. package/dist/consumers/resumeSendTransportAudio.d.ts +1 -1
  33. package/dist/consumers/resumeSendTransportAudio.d.ts.map +1 -1
  34. package/dist/consumers/signalNewConsumerTransport.d.ts +1 -1
  35. package/dist/consumers/signalNewConsumerTransport.d.ts.map +1 -1
  36. package/dist/consumers/socketReceiveMethods/joinConsumeRoom.d.ts +1 -1
  37. package/dist/consumers/socketReceiveMethods/joinConsumeRoom.d.ts.map +1 -1
  38. package/dist/consumers/socketReceiveMethods/newPipeProducer.d.ts +1 -1
  39. package/dist/consumers/socketReceiveMethods/newPipeProducer.d.ts.map +1 -1
  40. package/dist/consumers/streamSuccessAudio.d.ts +1 -1
  41. package/dist/consumers/streamSuccessAudio.d.ts.map +1 -1
  42. package/dist/consumers/streamSuccessAudioSwitch.d.ts +1 -1
  43. package/dist/consumers/streamSuccessAudioSwitch.d.ts.map +1 -1
  44. package/dist/consumers/streamSuccessVideo.d.ts +1 -1
  45. package/dist/consumers/streamSuccessVideo.d.ts.map +1 -1
  46. package/dist/getParticipantMedia-B0JS6d2b.js +3555 -0
  47. package/dist/getParticipantMedia-B0JS6d2b.js.map +1 -0
  48. package/dist/getParticipantMedia-CdcYqcbD.cjs +3554 -0
  49. package/dist/getParticipantMedia-CdcYqcbD.cjs.map +1 -0
  50. package/dist/index.cjs +299 -252
  51. package/dist/index.cjs.map +1 -1
  52. package/dist/index.d.ts +1 -0
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +1994 -1947
  55. package/dist/index.js.map +1 -1
  56. package/dist/index.native.cjs +230 -224
  57. package/dist/index.native.cjs.map +1 -1
  58. package/dist/index.native.js +349 -343
  59. package/dist/index.native.js.map +1 -1
  60. package/dist/joinLocalRoom-BdM1msQt.cjs +673 -0
  61. package/dist/joinLocalRoom-BdM1msQt.cjs.map +1 -0
  62. package/dist/joinLocalRoom-CvteNe4R.js +657 -0
  63. package/dist/joinLocalRoom-CvteNe4R.js.map +1 -0
  64. package/dist/joinRoomOnMediaSFU-CC8RVJgr.cjs +1222 -0
  65. package/dist/joinRoomOnMediaSFU-CC8RVJgr.cjs.map +1 -0
  66. package/dist/joinRoomOnMediaSFU-y6vJ1OBo.js +1223 -0
  67. package/dist/joinRoomOnMediaSFU-y6vJ1OBo.js.map +1 -0
  68. package/dist/methods/index.cjs +3975 -0
  69. package/dist/methods/index.cjs.map +1 -0
  70. package/dist/methods/index.js +3976 -0
  71. package/dist/methods/index.js.map +1 -0
  72. package/dist/methods/socketReceive/getDomains.d.ts +1 -1
  73. package/dist/methods/socketReceive/getDomains.d.ts.map +1 -1
  74. package/dist/methods/utils/headless/virtualBackground.d.ts +2 -2
  75. package/dist/methods/utils/headless/virtualBackground.d.ts.map +1 -1
  76. package/dist/methods/utils/virtualBackgroundCompositor.d.ts +21 -0
  77. package/dist/methods/utils/virtualBackgroundCompositor.d.ts.map +1 -0
  78. package/dist/methods/whiteboard/captureCanvasStream.d.ts +1 -1
  79. package/dist/methods/whiteboard/captureCanvasStream.d.ts.map +1 -1
  80. package/dist/producers/producerEmits/joinConRoom.d.ts +1 -1
  81. package/dist/producers/producerEmits/joinConRoom.d.ts.map +1 -1
  82. package/dist/producers/producerEmits/joinRoom.d.ts +1 -1
  83. package/dist/producers/producerEmits/joinRoom.d.ts.map +1 -1
  84. package/dist/translationConsumerSwitch-C20MfNNq.cjs +509 -0
  85. package/dist/translationConsumerSwitch-C20MfNNq.cjs.map +1 -0
  86. package/dist/translationConsumerSwitch-zKuS5wgH.js +510 -0
  87. package/dist/translationConsumerSwitch-zKuS5wgH.js.map +1 -0
  88. package/dist/types/index.cjs +85 -0
  89. package/dist/types/index.cjs.map +1 -0
  90. package/dist/types/index.d.ts +2 -0
  91. package/dist/types/index.d.ts.map +1 -0
  92. package/dist/types/index.js +85 -0
  93. package/dist/types/index.js.map +1 -0
  94. package/dist/types/shared-base-types.d.ts +1 -1
  95. package/dist/types/shared-base-types.d.ts.map +1 -1
  96. package/dist/updateParticipantAudioDecibels-DLd8Y-Fh.js +5392 -0
  97. package/dist/updateParticipantAudioDecibels-DLd8Y-Fh.js.map +1 -0
  98. package/dist/updateParticipantAudioDecibels-DPmHiy3K.cjs +5391 -0
  99. package/dist/updateParticipantAudioDecibels-DPmHiy3K.cjs.map +1 -0
  100. package/dist/validateAlphanumeric-DKn5BsUP.cjs +15 -0
  101. package/dist/validateAlphanumeric-DKn5BsUP.cjs.map +1 -0
  102. package/dist/validateAlphanumeric-Dk1JB80W.js +16 -0
  103. package/dist/validateAlphanumeric-Dk1JB80W.js.map +1 -0
  104. package/package.json +1 -1
  105. package/src/ProducerClient/producerClientEmits/createDeviceClient.ts +1 -2
  106. package/src/ProducerClient/producerClientEmits/updateRoomParametersClient.ts +1 -1
  107. package/src/consumers/connectIps.ts +1 -1
  108. package/src/consumers/connectRecvTransport.ts +1 -1
  109. package/src/consumers/connectSendTransport.ts +1 -1
  110. package/src/consumers/connectSendTransportAudio.ts +1 -1
  111. package/src/consumers/connectSendTransportScreen.ts +1 -1
  112. package/src/consumers/connectSendTransportVideo.ts +1 -1
  113. package/src/consumers/createSendTransport.ts +1 -1
  114. package/src/consumers/disconnectSendTransportAudio.ts +1 -1
  115. package/src/consumers/disconnectSendTransportScreen.ts +1 -1
  116. package/src/consumers/disconnectSendTransportVideo.ts +1 -1
  117. package/src/consumers/index.ts +61 -0
  118. package/src/consumers/resumeSendTransportAudio.ts +1 -1
  119. package/src/consumers/signalNewConsumerTransport.ts +1 -2
  120. package/src/consumers/socketReceiveMethods/joinConsumeRoom.ts +1 -1
  121. package/src/consumers/socketReceiveMethods/newPipeProducer.ts +1 -1
  122. package/src/consumers/streamSuccessAudio.ts +1 -2
  123. package/src/consumers/streamSuccessAudioSwitch.ts +1 -2
  124. package/src/consumers/streamSuccessVideo.ts +1 -1
  125. package/src/index.ts +2 -0
  126. package/src/methods/socketReceive/getDomains.ts +1 -1
  127. package/src/methods/utils/headless/virtualBackground.ts +45 -30
  128. package/src/methods/utils/virtualBackgroundCompositor.ts +53 -0
  129. package/src/methods/whiteboard/captureCanvasStream.ts +2 -2
  130. package/src/producers/producerEmits/joinConRoom.ts +1 -1
  131. package/src/producers/producerEmits/joinRoom.ts +1 -1
  132. package/src/types/index.ts +1 -0
  133. package/src/types/shared-base-types.ts +2 -3
  134. package/dist/getParticipantMedia-D9ChmEqq.js +0 -15265
  135. package/dist/getParticipantMedia-D9ChmEqq.js.map +0 -1
  136. package/dist/getParticipantMedia-DWvIhPPY.cjs +0 -15281
  137. package/dist/getParticipantMedia-DWvIhPPY.cjs.map +0 -1
@@ -0,0 +1,657 @@
1
+ import { ab as createFrameworkConsumerContractError, X as joinConRoom } from "./updateParticipantAudioDecibels-DLd8Y-Fh.js";
2
+ import * as mediasoupClient from "mediasoup-client";
3
+ import { v as validateAlphanumeric } from "./validateAlphanumeric-Dk1JB80W.js";
4
+ import { g as hParams, v as vParams, k as hdCons, l as fhdCons, q as qhdCons, i as sdCons, Q as QnHDCons, x as hdConsNeu, y as fhdConsNeu, z as qhdConsNeu, w as sdConsNeu, u as QnHDConsNeu, o as hdConsPort, p as fhdConsPort, r as qhdConsPort, n as sdConsPort, m as QnHDConsPort, C as hdFrameRate, A as QnHDFrameRate, D as fhdFrameRate, E as qhdFrameRate, s as screenParams, f as aParams, a as checkLimitsAndMakeRequest, j as joinRoomOnMediaSFU } from "./joinRoomOnMediaSFU-y6vJ1OBo.js";
5
+ const addVideosGrid = async () => {
6
+ throw createFrameworkConsumerContractError("addVideosGrid");
7
+ };
8
+ const prepopulateUserMedia = async () => {
9
+ throw createFrameworkConsumerContractError("prepopulateUserMedia");
10
+ };
11
+ const breakoutRoomUpdated = async ({ data, parameters }) => {
12
+ try {
13
+ let {
14
+ breakOutRoomStarted,
15
+ breakOutRoomEnded,
16
+ breakoutRooms,
17
+ hostNewRoom,
18
+ islevel,
19
+ participantsAll,
20
+ participants,
21
+ meetingDisplayType,
22
+ prevMeetingDisplayType,
23
+ updateBreakoutRooms,
24
+ updateBreakOutRoomStarted,
25
+ updateBreakOutRoomEnded,
26
+ updateHostNewRoom,
27
+ updateMeetingDisplayType,
28
+ updateParticipantsAll,
29
+ updateParticipants,
30
+ onScreenChanges,
31
+ rePort
32
+ } = parameters;
33
+ if (data.forHost) {
34
+ hostNewRoom = data.newRoom;
35
+ updateHostNewRoom(hostNewRoom);
36
+ await onScreenChanges({ changed: true, parameters });
37
+ return;
38
+ }
39
+ if (islevel === "2" && data.members) {
40
+ participantsAll = data.members.map((participant) => ({
41
+ isBanned: participant.isBanned,
42
+ name: participant.name,
43
+ audioID: participant.audioID,
44
+ videoID: participant.videoID
45
+ }));
46
+ updateParticipantsAll(participantsAll);
47
+ participants = data.members.filter((participant) => !participant.isBanned);
48
+ updateParticipants(participants);
49
+ }
50
+ breakoutRooms = data.breakoutRooms || [];
51
+ updateBreakoutRooms(breakoutRooms);
52
+ if (data.status === "started" && (!breakOutRoomStarted || breakOutRoomEnded)) {
53
+ breakOutRoomStarted = true;
54
+ breakOutRoomEnded = false;
55
+ updateBreakOutRoomStarted(true);
56
+ updateBreakOutRoomEnded(false);
57
+ prevMeetingDisplayType = meetingDisplayType;
58
+ if (meetingDisplayType !== "all") {
59
+ meetingDisplayType = "all";
60
+ updateMeetingDisplayType("all");
61
+ }
62
+ await onScreenChanges({ changed: true, parameters });
63
+ if (islevel === "2") {
64
+ await rePort({ restart: true, parameters });
65
+ }
66
+ } else if (data.status === "ended") {
67
+ breakOutRoomEnded = true;
68
+ updateBreakOutRoomEnded(true);
69
+ if (meetingDisplayType !== prevMeetingDisplayType) {
70
+ updateMeetingDisplayType(prevMeetingDisplayType);
71
+ }
72
+ await onScreenChanges({ changed: true, parameters });
73
+ if (islevel === "2") {
74
+ await rePort({ restart: true, parameters });
75
+ }
76
+ } else if (data.status === "started" && breakOutRoomStarted) {
77
+ breakOutRoomStarted = true;
78
+ breakOutRoomEnded = false;
79
+ updateBreakOutRoomStarted(true);
80
+ updateBreakOutRoomEnded(false);
81
+ await onScreenChanges({ changed: true, parameters });
82
+ if (islevel === "2") {
83
+ await rePort({ restart: true, parameters });
84
+ }
85
+ }
86
+ } catch {
87
+ }
88
+ };
89
+ async function modifySettings({
90
+ // showAlert,
91
+ roomName,
92
+ audioSet,
93
+ videoSet,
94
+ screenshareSet,
95
+ chatSet,
96
+ socket,
97
+ updateAudioSetting,
98
+ updateVideoSetting,
99
+ updateScreenshareSetting,
100
+ updateChatSetting,
101
+ updateIsSettingsModalVisible
102
+ }) {
103
+ if (audioSet) {
104
+ updateAudioSetting(audioSet);
105
+ }
106
+ if (videoSet) {
107
+ updateVideoSetting(videoSet);
108
+ }
109
+ if (screenshareSet) {
110
+ updateScreenshareSetting(screenshareSet);
111
+ }
112
+ if (chatSet) {
113
+ updateChatSetting(chatSet);
114
+ }
115
+ const settings = [audioSet, videoSet, screenshareSet, chatSet];
116
+ socket.emit("updateSettingsForRequests", { settings, roomName });
117
+ updateIsSettingsModalVisible(false);
118
+ }
119
+ const createDeviceClient = async ({
120
+ rtpCapabilities
121
+ }) => {
122
+ try {
123
+ if (!rtpCapabilities) {
124
+ throw new Error(
125
+ "Both rtpCapabilities and mediasoupClient must be provided."
126
+ );
127
+ }
128
+ const device = new mediasoupClient.Device();
129
+ rtpCapabilities.headerExtensions = rtpCapabilities.headerExtensions.filter(
130
+ (ext) => ext.uri !== "urn:3gpp:video-orientation"
131
+ );
132
+ await device.load({
133
+ routerRtpCapabilities: rtpCapabilities
134
+ });
135
+ return device;
136
+ } catch (error) {
137
+ if (error && error.name === "UnsupportedError") {
138
+ console.error("Device creation is not supported by this browser.");
139
+ }
140
+ throw error;
141
+ }
142
+ };
143
+ async function joinRoom({
144
+ socket,
145
+ roomName,
146
+ islevel,
147
+ member,
148
+ sec,
149
+ apiUserName
150
+ }) {
151
+ return new Promise((resolve, reject) => {
152
+ if (!(sec && roomName && islevel && apiUserName && member)) {
153
+ const validationError = {
154
+ success: false,
155
+ rtpCapabilities: null,
156
+ reason: "Missing required parameters"
157
+ };
158
+ reject(validationError);
159
+ return;
160
+ }
161
+ try {
162
+ validateAlphanumeric({ str: roomName });
163
+ validateAlphanumeric({ str: apiUserName });
164
+ validateAlphanumeric({ str: member });
165
+ } catch {
166
+ const validationError = {
167
+ success: false,
168
+ rtpCapabilities: null,
169
+ reason: "Invalid roomName or apiUserName or member"
170
+ };
171
+ reject(validationError);
172
+ return;
173
+ }
174
+ if (!(roomName.startsWith("s") || roomName.startsWith("p") || roomName.startsWith("d"))) {
175
+ const validationError = {
176
+ success: false,
177
+ rtpCapabilities: null,
178
+ reason: "Invalid roomName, must start with s or p or d"
179
+ };
180
+ reject(validationError);
181
+ return;
182
+ }
183
+ if (!(sec.length === 64 && roomName.length >= 8 && islevel.length === 1 && apiUserName.length >= 6 && (islevel === "0" || islevel === "1" || islevel === "2"))) {
184
+ const validationError = {
185
+ success: false,
186
+ rtpCapabilities: null,
187
+ reason: "Invalid roomName or islevel or apiUserName or secret"
188
+ };
189
+ reject(validationError);
190
+ return;
191
+ }
192
+ socket.emit(
193
+ "joinRoom",
194
+ {
195
+ roomName,
196
+ islevel,
197
+ member,
198
+ sec,
199
+ apiUserName
200
+ },
201
+ async (data) => {
202
+ try {
203
+ if (data.rtpCapabilities == null) {
204
+ if (data.banned) {
205
+ throw new Error("User is banned.");
206
+ }
207
+ if (data.suspended) {
208
+ throw new Error("User is suspended.");
209
+ }
210
+ if (data.noAdmin) {
211
+ throw new Error("Host has not joined the room yet.");
212
+ }
213
+ resolve(data);
214
+ } else {
215
+ resolve(data);
216
+ }
217
+ } catch (error) {
218
+ console.log("Error joining room:", error);
219
+ reject(error);
220
+ }
221
+ }
222
+ );
223
+ });
224
+ }
225
+ const joinRoomClient = async ({
226
+ socket,
227
+ roomName,
228
+ islevel,
229
+ member,
230
+ sec,
231
+ apiUserName,
232
+ consume = false
233
+ }) => {
234
+ try {
235
+ if (consume) {
236
+ return await joinConRoom({
237
+ socket,
238
+ roomName,
239
+ islevel,
240
+ member,
241
+ sec,
242
+ apiUserName
243
+ });
244
+ }
245
+ return await joinRoom({
246
+ socket,
247
+ roomName,
248
+ islevel,
249
+ member,
250
+ sec,
251
+ apiUserName
252
+ });
253
+ } catch (error) {
254
+ console.log(error);
255
+ throw new Error("Failed to join the room. Please check your connection and try again.");
256
+ }
257
+ };
258
+ const updateRoomParametersClient = ({ parameters }) => {
259
+ try {
260
+ const {
261
+ screenPageLimit,
262
+ shareScreenStarted,
263
+ shared,
264
+ hParams: hParams$1 = hParams,
265
+ vParams: vParams$1 = vParams,
266
+ frameRate,
267
+ islevel,
268
+ showAlert,
269
+ data,
270
+ updateRtpCapabilities,
271
+ updateRoomRecvIPs,
272
+ updateMeetingRoomParams,
273
+ updateItemPageLimit,
274
+ updateAudioOnlyRoom,
275
+ updateScreenPageLimit,
276
+ updateVidCons,
277
+ updateFrameRate,
278
+ updateAdminPasscode,
279
+ updateEventType,
280
+ updateYouAreCoHost,
281
+ updateAutoWave,
282
+ updateForceFullDisplay,
283
+ updateChatSetting,
284
+ updateMeetingDisplayType,
285
+ updateAudioSetting,
286
+ updateVideoSetting,
287
+ updateScreenshareSetting,
288
+ updateHParams,
289
+ updateVParams,
290
+ updateScreenParams,
291
+ updateAParams,
292
+ updateTargetResolution,
293
+ updateTargetResolutionHost,
294
+ updateRecordingAudioPausesLimit,
295
+ updateRecordingAudioPausesCount,
296
+ updateRecordingAudioSupport,
297
+ updateRecordingAudioPeopleLimit,
298
+ updateRecordingAudioParticipantsTimeLimit,
299
+ updateRecordingVideoPausesCount,
300
+ updateRecordingVideoPausesLimit,
301
+ updateRecordingVideoSupport,
302
+ updateRecordingVideoPeopleLimit,
303
+ updateRecordingVideoParticipantsTimeLimit,
304
+ updateRecordingAllParticipantsSupport,
305
+ updateRecordingVideoParticipantsSupport,
306
+ updateRecordingAllParticipantsFullRoomSupport,
307
+ updateRecordingVideoParticipantsFullRoomSupport,
308
+ updateRecordingPreferredOrientation,
309
+ updateRecordingSupportForOtherOrientation,
310
+ updateRecordingMultiFormatsSupport,
311
+ updateRecordingVideoOptions,
312
+ updateRecordingAudioOptions,
313
+ updateMainHeightWidth
314
+ } = parameters;
315
+ if (data.rtpCapabilities == null) {
316
+ const reason = data.reason || "";
317
+ showAlert?.({
318
+ message: `Sorry, you are not allowed to join this room. ${reason}`,
319
+ type: "danger",
320
+ duration: 3e3
321
+ });
322
+ return;
323
+ }
324
+ updateRtpCapabilities(data.rtpCapabilities);
325
+ updateAdminPasscode(data.secureCode);
326
+ updateRoomRecvIPs(data.roomRecvIPs);
327
+ updateMeetingRoomParams(data.meetingRoomParams);
328
+ updateRecordingAudioPausesLimit(data.recordingParams.recordingAudioPausesLimit);
329
+ updateRecordingAudioPausesCount(data.recordingParams.recordingAudioPausesCount);
330
+ updateRecordingAudioSupport(data.recordingParams.recordingAudioSupport);
331
+ updateRecordingAudioPeopleLimit(data.recordingParams.recordingAudioPeopleLimit);
332
+ updateRecordingAudioParticipantsTimeLimit(data.recordingParams.recordingAudioParticipantsTimeLimit);
333
+ updateRecordingVideoPausesCount(data.recordingParams.recordingVideoPausesCount);
334
+ updateRecordingVideoPausesLimit(data.recordingParams.recordingVideoPausesLimit);
335
+ updateRecordingVideoSupport(data.recordingParams.recordingVideoSupport);
336
+ updateRecordingVideoPeopleLimit(data.recordingParams.recordingVideoPeopleLimit);
337
+ updateRecordingVideoParticipantsTimeLimit(data.recordingParams.recordingVideoParticipantsTimeLimit);
338
+ updateRecordingAllParticipantsSupport(data.recordingParams.recordingAllParticipantsSupport);
339
+ updateRecordingVideoParticipantsSupport(data.recordingParams.recordingVideoParticipantsSupport);
340
+ updateRecordingAllParticipantsFullRoomSupport(data.recordingParams.recordingAllParticipantsFullRoomSupport);
341
+ updateRecordingVideoParticipantsFullRoomSupport(data.recordingParams.recordingVideoParticipantsFullRoomSupport);
342
+ updateRecordingPreferredOrientation(data.recordingParams.recordingPreferredOrientation);
343
+ updateRecordingSupportForOtherOrientation(data.recordingParams.recordingSupportForOtherOrientation);
344
+ updateRecordingMultiFormatsSupport(data.recordingParams.recordingMultiFormatsSupport);
345
+ updateItemPageLimit(data.meetingRoomParams.itemPageLimit);
346
+ updateEventType(data.meetingRoomParams.type);
347
+ if (data.meetingRoomParams.type == "chat" && islevel != "2") {
348
+ updateYouAreCoHost(true);
349
+ }
350
+ if (["chat", "broadcast"].includes(data.meetingRoomParams.type)) {
351
+ updateAutoWave(false);
352
+ updateMeetingDisplayType("all");
353
+ updateForceFullDisplay(true);
354
+ updateChatSetting("allow");
355
+ updateItemPageLimit(2);
356
+ if (["broadcast"].includes(data.meetingRoomParams.type)) {
357
+ updateRecordingVideoOptions("mainScreen");
358
+ updateRecordingAudioOptions("host");
359
+ updateItemPageLimit(1);
360
+ }
361
+ }
362
+ updateAudioSetting(data.meetingRoomParams.audioSetting);
363
+ updateVideoSetting(data.meetingRoomParams.videoSetting);
364
+ updateScreenshareSetting(data.meetingRoomParams.screenshareSetting);
365
+ updateChatSetting(data.meetingRoomParams.chatSetting);
366
+ updateAudioOnlyRoom(data.meetingRoomParams.mediaType != "video");
367
+ if (data.meetingRoomParams.type == "conference" && (shared || shareScreenStarted)) {
368
+ updateMainHeightWidth(100);
369
+ } else {
370
+ updateMainHeightWidth(0);
371
+ }
372
+ updateScreenPageLimit(Math.min(data.meetingRoomParams.itemPageLimit, screenPageLimit));
373
+ const targetOrientation = islevel == "2" ? data.meetingRoomParams.targetOrientationHost : data.meetingRoomParams.targetOrientation;
374
+ const targetResolution = islevel == "2" ? data.meetingRoomParams.targetResolutionHost : data.meetingRoomParams.targetResolution;
375
+ let vidCons;
376
+ if (targetOrientation == "landscape") {
377
+ vidCons = targetResolution == "hd" ? hdCons : targetResolution == "fhd" ? fhdCons : targetResolution == "qhd" ? qhdCons : targetResolution == "sd" ? sdCons : QnHDCons;
378
+ } else if (targetOrientation == "neutral") {
379
+ vidCons = targetResolution == "hd" ? hdConsNeu : targetResolution == "fhd" ? fhdConsNeu : targetResolution == "qhd" ? qhdConsNeu : targetResolution == "sd" ? sdConsNeu : QnHDConsNeu;
380
+ } else {
381
+ vidCons = targetResolution == "hd" ? hdConsPort : targetResolution == "fhd" ? fhdConsPort : targetResolution == "qhd" ? qhdConsPort : targetResolution == "sd" ? sdConsPort : QnHDConsPort;
382
+ }
383
+ let frameRateValue = frameRate || 10;
384
+ let vParamsValue = { ...vParams$1 };
385
+ let hParamsValue = { ...hParams$1 };
386
+ if (Object.keys(vParamsValue).length == 0) {
387
+ vParamsValue = { ...vParams };
388
+ }
389
+ if (Object.keys(hParamsValue).length == 0) {
390
+ hParamsValue = { ...hParams };
391
+ }
392
+ if (targetResolution == "hd") {
393
+ frameRateValue = hdFrameRate;
394
+ vParamsValue.encodings.forEach((encoding) => {
395
+ if (encoding.maxBitrate) {
396
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 4);
397
+ }
398
+ });
399
+ hParamsValue.encodings.forEach((encoding) => {
400
+ if (encoding.maxBitrate) {
401
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 4);
402
+ }
403
+ });
404
+ } else if (targetResolution == "QnHD") {
405
+ frameRateValue = QnHDFrameRate;
406
+ vParamsValue.encodings.forEach((encoding) => {
407
+ if (encoding.maxBitrate) {
408
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 0.25);
409
+ }
410
+ });
411
+ hParamsValue.encodings.forEach((encoding) => {
412
+ if (encoding.maxBitrate) {
413
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 0.25);
414
+ }
415
+ });
416
+ if (hParamsValue.codecOptions && hParamsValue.codecOptions.videoGoogleStartBitrate) {
417
+ hParamsValue.codecOptions.videoGoogleStartBitrate = Math.floor(hParamsValue.codecOptions.videoGoogleStartBitrate * 0.25);
418
+ }
419
+ if (vParamsValue.codecOptions && vParamsValue.codecOptions.videoGoogleStartBitrate) {
420
+ vParamsValue.codecOptions.videoGoogleStartBitrate = Math.floor(vParamsValue.codecOptions.videoGoogleStartBitrate * 0.25);
421
+ }
422
+ } else if (targetResolution == "fhd") {
423
+ frameRateValue = fhdFrameRate;
424
+ vParamsValue.encodings.forEach((encoding) => {
425
+ if (encoding.maxBitrate) {
426
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 8);
427
+ }
428
+ });
429
+ hParamsValue.encodings.forEach((encoding) => {
430
+ if (encoding.maxBitrate) {
431
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 8);
432
+ }
433
+ });
434
+ } else if (targetResolution == "qhd") {
435
+ frameRateValue = qhdFrameRate;
436
+ vParamsValue.encodings.forEach((encoding) => {
437
+ if (encoding.maxBitrate) {
438
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 16);
439
+ }
440
+ });
441
+ hParamsValue.encodings.forEach((encoding) => {
442
+ if (encoding.maxBitrate) {
443
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 16);
444
+ }
445
+ });
446
+ }
447
+ if (data.recordingParams.recordingVideoSupport) {
448
+ vParamsValue.encodings.forEach((encoding) => {
449
+ if (encoding.maxBitrate) {
450
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 1.2);
451
+ }
452
+ });
453
+ hParamsValue.encodings.forEach((encoding) => {
454
+ if (encoding.maxBitrate) {
455
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 1.2);
456
+ }
457
+ });
458
+ if (hParamsValue.codecOptions && hParamsValue.codecOptions.videoGoogleStartBitrate) {
459
+ hParamsValue.codecOptions.videoGoogleStartBitrate = Math.floor(hParamsValue.codecOptions.videoGoogleStartBitrate * 1.2);
460
+ }
461
+ if (vParamsValue.codecOptions && vParamsValue.codecOptions.videoGoogleStartBitrate) {
462
+ vParamsValue.codecOptions.videoGoogleStartBitrate = Math.floor(vParamsValue.codecOptions.videoGoogleStartBitrate * 1.2);
463
+ }
464
+ }
465
+ updateVidCons(vidCons);
466
+ updateFrameRate(frameRateValue);
467
+ updateHParams(hParamsValue);
468
+ updateVParams(vParamsValue);
469
+ updateScreenParams(screenParams);
470
+ updateAParams(aParams);
471
+ updateTargetResolution(data.meetingRoomParams.targetResolution);
472
+ updateTargetResolutionHost(data.meetingRoomParams.targetResolutionHost);
473
+ } catch (error) {
474
+ console.log("updateRoomParametersClient error", error);
475
+ parameters.showAlert?.({
476
+ message: error.message,
477
+ type: "danger",
478
+ duration: 3e3
479
+ });
480
+ }
481
+ };
482
+ async function checkMediasfuURL({
483
+ data,
484
+ member,
485
+ roomName,
486
+ islevel,
487
+ socket,
488
+ parameters,
489
+ joinMediaSFURoom = joinRoomOnMediaSFU,
490
+ localLink = ""
491
+ }) {
492
+ if (data.mediasfuURL && data.mediasfuURL !== "" && data.mediasfuURL.length > 10) {
493
+ let link;
494
+ let secretCode;
495
+ try {
496
+ const splitTexts = ["/meet/", "/chat/", "/broadcast/"];
497
+ const splitText = splitTexts.find((text) => data.mediasfuURL.includes(text)) || "/meet/";
498
+ const urlParts = data.mediasfuURL.split(splitText);
499
+ link = urlParts[0];
500
+ secretCode = urlParts[1].split("/")[1];
501
+ } catch {
502
+ link = data.mediasfuURL;
503
+ return;
504
+ }
505
+ await checkLimitsAndMakeRequest({
506
+ apiUserName: roomName,
507
+ apiToken: secretCode,
508
+ link,
509
+ apiKey: "",
510
+ userName: member,
511
+ parameters,
512
+ validate: false
513
+ });
514
+ return;
515
+ }
516
+ if ((!data.mediasfuURL || data.mediasfuURL.length < 10) && islevel !== "2" && data.allowRecord && (data.allowRecord === true || data.allowRecord === "true") && data.apiKey && data.apiKey.length === 64 && data.apiUserName && data.apiUserName.length > 5 && (roomName.startsWith("s") || roomName.startsWith("p"))) {
517
+ const payload = {
518
+ action: "join",
519
+ meetingID: roomName,
520
+ userName: member
521
+ };
522
+ const response = await joinMediaSFURoom({
523
+ payload,
524
+ apiKey: data.apiKey,
525
+ apiUserName: data.apiUserName,
526
+ localLink
527
+ });
528
+ if (response.success && response.data && "roomName" in response.data) {
529
+ try {
530
+ socket.emit(
531
+ "updateMediasfuURL",
532
+ { eventID: roomName, mediasfuURL: response.data.publicURL },
533
+ async () => {
534
+ }
535
+ );
536
+ } catch {
537
+ }
538
+ await checkLimitsAndMakeRequest({
539
+ apiUserName: response.data.roomName,
540
+ apiToken: response.data.secret,
541
+ link: response.data.link,
542
+ userName: member,
543
+ parameters,
544
+ validate: false
545
+ });
546
+ parameters.updateApiToken(response.data.secret);
547
+ }
548
+ }
549
+ }
550
+ async function joinLocalRoom({
551
+ socket,
552
+ roomName,
553
+ islevel,
554
+ member,
555
+ sec,
556
+ apiUserName,
557
+ parameters,
558
+ checkConnect = false,
559
+ joinMediaSFURoom = joinRoomOnMediaSFU,
560
+ localLink = ""
561
+ }) {
562
+ return new Promise((resolve, reject) => {
563
+ if (!(sec && roomName && islevel && apiUserName && member)) {
564
+ const validationError = {
565
+ success: false,
566
+ rtpCapabilities: null,
567
+ reason: "Missing required parameters"
568
+ };
569
+ reject(validationError);
570
+ return;
571
+ }
572
+ try {
573
+ validateAlphanumeric({ str: roomName });
574
+ validateAlphanumeric({ str: apiUserName });
575
+ validateAlphanumeric({ str: member });
576
+ } catch {
577
+ const validationError = {
578
+ success: false,
579
+ rtpCapabilities: null,
580
+ reason: "Invalid roomName or apiUserName or member"
581
+ };
582
+ reject(validationError);
583
+ return;
584
+ }
585
+ if (!(roomName.startsWith("s") || roomName.startsWith("p") || roomName.startsWith("m") || roomName.startsWith("d"))) {
586
+ const validationError = {
587
+ success: false,
588
+ rtpCapabilities: null,
589
+ reason: "Invalid roomName, must start with s or p or m or d"
590
+ };
591
+ reject(validationError);
592
+ return;
593
+ }
594
+ if (!(sec.length === 32 && roomName.length >= 8 && islevel.length === 1 && apiUserName.length >= 6 && (islevel === "0" || islevel === "1" || islevel === "2"))) {
595
+ const validationError = {
596
+ success: false,
597
+ rtpCapabilities: null,
598
+ reason: "Invalid roomName or islevel or apiUserName or secret"
599
+ };
600
+ reject(validationError);
601
+ return;
602
+ }
603
+ socket.emit(
604
+ "joinRoom",
605
+ { roomName, islevel, member, sec, apiUserName },
606
+ async (data) => {
607
+ try {
608
+ if (data.rtpCapabilities === null) {
609
+ if (data.isBanned) {
610
+ throw new Error("User is banned.");
611
+ }
612
+ if (data.hostNotJoined) {
613
+ throw new Error("Host has not joined the room yet.");
614
+ }
615
+ resolve(data);
616
+ } else {
617
+ if (checkConnect) {
618
+ await checkMediasfuURL({
619
+ data,
620
+ member,
621
+ roomName,
622
+ islevel,
623
+ socket,
624
+ parameters,
625
+ joinMediaSFURoom,
626
+ localLink
627
+ });
628
+ } else if (data.mediasfuURL && data.mediasfuURL !== "" && data.mediasfuURL.length > 10) {
629
+ const splitTexts = ["/meet/", "/chat/", "/broadcast/"];
630
+ const splitText = splitTexts.find((text) => data.mediasfuURL.includes(text)) || "/meet/";
631
+ const urlParts = data.mediasfuURL.split(splitText);
632
+ const secretCode = urlParts[1].split("/")[1];
633
+ parameters.updateApiToken(secretCode);
634
+ }
635
+ resolve(data);
636
+ }
637
+ } catch (error) {
638
+ console.log("Error joining room:", error);
639
+ reject(error);
640
+ }
641
+ }
642
+ );
643
+ });
644
+ }
645
+ export {
646
+ addVideosGrid as a,
647
+ breakoutRoomUpdated as b,
648
+ createDeviceClient as c,
649
+ checkMediasfuURL as d,
650
+ joinLocalRoom as e,
651
+ joinRoom as f,
652
+ joinRoomClient as j,
653
+ modifySettings as m,
654
+ prepopulateUserMedia as p,
655
+ updateRoomParametersClient as u
656
+ };
657
+ //# sourceMappingURL=joinLocalRoom-CvteNe4R.js.map