mediasfu-shared 1.0.1 → 1.0.3

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 (127) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +103 -222
  3. package/dist/index.cjs +7634 -2180
  4. package/dist/index.cjs.map +1 -1
  5. package/dist/index.d.ts +4203 -273
  6. package/dist/index.js +7663 -2209
  7. package/dist/index.js.map +1 -1
  8. package/package.json +96 -78
  9. package/src/ProducerClient/producerClientEmits/joinRoomClient.ts +57 -0
  10. package/src/ProducerClient/producerClientEmits/updateRoomParametersClient.ts +401 -0
  11. package/src/consumers/addVideosGrid.ts +3 -2
  12. package/src/consumers/changeVids.ts +111 -41
  13. package/src/consumers/checkPermission.ts +35 -1
  14. package/src/consumers/connectIps.ts +3 -1
  15. package/src/consumers/connectLocalIps.ts +3 -1
  16. package/src/consumers/connectRecvTransport.ts +96 -1
  17. package/src/consumers/consumerResume.ts +2 -2
  18. package/src/consumers/dispStreams.ts +83 -37
  19. package/src/consumers/frameworkConsumerContract.ts +6 -0
  20. package/src/consumers/generatePageContent.ts +24 -10
  21. package/src/consumers/getPipedProducersAlt.ts +112 -16
  22. package/src/consumers/gridLayout/addVideosGrid.engine.ts +42 -0
  23. package/src/consumers/gridLayout/prepopulateUserMedia.engine.ts +444 -0
  24. package/src/consumers/mixStreams.ts +45 -14
  25. package/src/consumers/onScreenChanges.ts +25 -10
  26. package/src/consumers/prepopulateUserMedia.ts +3 -2
  27. package/src/consumers/processConsumerTransports.ts +68 -23
  28. package/src/consumers/processConsumerTransportsAudio.ts +146 -17
  29. package/src/consumers/reUpdateInter.ts +61 -21
  30. package/src/consumers/readjust.ts +30 -14
  31. package/src/consumers/reorderStreams.ts +76 -42
  32. package/src/consumers/resumePauseAudioStreams.ts +66 -17
  33. package/src/consumers/resumePauseStreams.ts +53 -10
  34. package/src/consumers/socketReceiveMethods/joinConsumeRoom.ts +8 -0
  35. package/src/consumers/socketReceiveMethods/newPipeProducer.ts +114 -0
  36. package/src/consumers/socketReceiveMethods/producerClosed.ts +13 -0
  37. package/src/consumers/streamSuccessScreen.ts +2 -2
  38. package/src/consumers/streamSuccessVideo.ts +5 -0
  39. package/src/consumers/translationConsumerSwitch.ts +321 -0
  40. package/src/index.ts +85 -1
  41. package/src/methods/coHostMethods/modifyCoHostSettings.ts +9 -9
  42. package/src/methods/displaySettings/modifyDisplaySettings.ts +5 -0
  43. package/src/methods/index.ts +66 -0
  44. package/src/methods/message/sendMessage.ts +12 -29
  45. package/src/methods/panelists/focusPanelists.ts +83 -0
  46. package/src/methods/panelists/index.ts +3 -0
  47. package/src/methods/panelists/launchPanelists.ts +13 -0
  48. package/src/methods/panelists/updatePanelists.ts +135 -0
  49. package/src/methods/permissions/index.ts +3 -0
  50. package/src/methods/permissions/launchPermissions.ts +13 -0
  51. package/src/methods/permissions/updateParticipantPermission.ts +127 -0
  52. package/src/methods/permissions/updatePermissionConfig.ts +52 -0
  53. package/src/methods/polls/pollUpdated.ts +88 -0
  54. package/src/methods/recording/confirmRecording.ts +15 -12
  55. package/src/methods/recording/recordResumeTimer.ts +2 -2
  56. package/src/methods/recording/recordStartTimer.ts +2 -2
  57. package/src/methods/recording/timeLeftRecording.ts +25 -0
  58. package/src/methods/requests/hostRequestResponse.ts +158 -0
  59. package/src/methods/settings/modifySettings.ts +17 -17
  60. package/src/methods/socketReceive/allMembers.ts +450 -0
  61. package/src/methods/socketReceive/allMembersRest.ts +480 -0
  62. package/src/methods/socketReceive/allWaitingRoomMembers.ts +35 -0
  63. package/src/methods/socketReceive/banParticipant.ts +73 -0
  64. package/src/methods/socketReceive/controlMediaHost.ts +280 -0
  65. package/src/methods/socketReceive/disconnect.ts +40 -0
  66. package/src/methods/socketReceive/disconnectUserSelf.ts +56 -0
  67. package/src/methods/socketReceive/getDomains.ts +112 -0
  68. package/src/methods/socketReceive/meetingEnded.ts +49 -0
  69. package/src/methods/socketReceive/meetingStillThere.ts +26 -0
  70. package/src/methods/socketReceive/panelistReceiveMethods.ts +195 -0
  71. package/src/methods/socketReceive/participantRequested.ts +48 -0
  72. package/src/methods/socketReceive/permissionReceiveMethods.ts +59 -0
  73. package/src/methods/socketReceive/personJoined.ts +35 -0
  74. package/src/methods/socketReceive/producerMediaClosed.ts +223 -0
  75. package/src/methods/socketReceive/producerMediaPaused.ts +267 -0
  76. package/src/methods/socketReceive/producerMediaResumed.ts +157 -0
  77. package/src/methods/socketReceive/reInitiateRecording.ts +53 -0
  78. package/src/methods/socketReceive/receiveMessage.ts +117 -0
  79. package/src/methods/socketReceive/recordingNotice.ts +286 -0
  80. package/src/methods/socketReceive/roomRecordParams.ts +122 -0
  81. package/src/methods/socketReceive/screenProducerId.ts +61 -0
  82. package/src/methods/socketReceive/startRecords.ts +46 -0
  83. package/src/methods/socketReceive/stoppedRecording.ts +44 -0
  84. package/src/methods/socketReceive/translationReceiveMethods.ts +581 -0
  85. package/src/methods/socketReceive/updateConsumingDomains.ts +128 -0
  86. package/src/methods/socketReceive/updateMediaSettings.ts +45 -0
  87. package/src/methods/socketReceive/updatedCoHost.ts +75 -0
  88. package/src/methods/socketReceive/userWaiting.ts +45 -0
  89. package/src/methods/stream/clickAudio.ts +380 -0
  90. package/src/methods/stream/clickChat.ts +36 -0
  91. package/src/methods/stream/clickScreenShare.ts +173 -0
  92. package/src/methods/stream/clickVideo.ts +28 -6
  93. package/src/methods/stream/index.ts +1 -0
  94. package/src/methods/utils/SoundPlayer.ts +31 -0
  95. package/src/methods/utils/checkLimitsAndMakeRequest.ts +156 -2
  96. package/src/methods/utils/createResponseJoinRoom.ts +47 -0
  97. package/src/methods/utils/createRoomOnMediaSFU.ts +160 -0
  98. package/src/methods/utils/formatNumber.ts +42 -0
  99. package/src/methods/utils/generateRandomMessages.ts +70 -0
  100. package/src/methods/utils/generateRandomParticipants.ts +100 -0
  101. package/src/methods/utils/generateRandomPolls.ts +43 -0
  102. package/src/methods/utils/generateRandomRequestList.ts +51 -0
  103. package/src/methods/utils/generateRandomWaitingRoomList.ts +17 -0
  104. package/src/methods/utils/getModalPosition.ts +23 -0
  105. package/src/methods/utils/getOverlayPosition.ts +37 -0
  106. package/src/methods/utils/initialValuesState.ts +405 -0
  107. package/src/methods/utils/joinRoomOnMediaSFU.ts +124 -0
  108. package/src/methods/utils/liveSubtitle.ts +107 -0
  109. package/src/methods/utils/meetingTimeRemaining.ts +33 -0
  110. package/src/methods/utils/meetingTimer/startMeetingProgressTimer.ts +72 -0
  111. package/src/methods/utils/producer/aParams.ts +10 -0
  112. package/src/methods/utils/producer/hParams.ts +26 -0
  113. package/src/methods/utils/producer/screenParams.ts +13 -0
  114. package/src/methods/utils/producer/vParams.ts +26 -0
  115. package/src/methods/utils/producer/videoCaptureConstraints.ts +65 -0
  116. package/src/methods/utils/resolveMediaSFURoomApi.ts +28 -0
  117. package/src/methods/utils/sleep.ts +24 -0
  118. package/src/methods/utils/translationLanguages.ts +308 -0
  119. package/src/methods/utils/webrtc.ts +44 -0
  120. package/src/methods/welcome/handleWelcomeRequest.ts +11 -2
  121. package/src/methods/welcome/index.ts +5 -1
  122. package/src/methods/whiteboard/captureCanvasStream.ts +128 -0
  123. package/src/producers/producerEmits/joinConRoom.ts +2 -2
  124. package/src/producers/producerEmits/joinLocalRoom.ts +240 -0
  125. package/src/producers/producerEmits/joinRoom.ts +129 -0
  126. package/src/types/shared-base-types.ts +14 -3
  127. package/src/types/types.ts +255 -0
package/package.json CHANGED
@@ -1,78 +1,96 @@
1
- {
2
- "name": "mediasfu-shared",
3
- "version": "1.0.1",
4
- "description": "Framework-agnostic shared logic for MediaSFU - works with React, Vue, Angular, Svelte, and any JavaScript framework",
5
- "main": "dist/index.cjs",
6
- "module": "dist/index.js",
7
- "types": "dist/index.d.ts",
8
- "type": "module",
9
- "exports": {
10
- ".": {
11
- "types": "./dist/index.d.ts",
12
- "import": "./dist/index.js",
13
- "require": "./dist/index.cjs"
14
- },
15
- "./consumers": {
16
- "types": "./dist/consumers/index.d.ts",
17
- "import": "./dist/consumers/index.js",
18
- "require": "./dist/consumers/index.cjs"
19
- },
20
- "./methods": {
21
- "types": "./dist/methods/index.d.ts",
22
- "import": "./dist/methods/index.js",
23
- "require": "./dist/methods/index.cjs"
24
- },
25
- "./types": {
26
- "types": "./dist/types/index.d.ts",
27
- "import": "./dist/types/index.js",
28
- "require": "./dist/types/index.cjs"
29
- }
30
- },
31
- "files": [
32
- "dist",
33
- "src",
34
- "README.md",
35
- "LICENSE"
36
- ],
37
- "scripts": {
38
- "build": "tsc && vite build",
39
- "dev": "vite build --watch",
40
- "type-check": "tsc --noEmit"
41
- },
42
- "keywords": [
43
- "mediasfu",
44
- "shared",
45
- "webrtc",
46
- "video-conferencing",
47
- "breakout-rooms",
48
- "screen-sharing",
49
- "recording",
50
- "framework-agnostic",
51
- "typescript"
52
- ],
53
- "author": "MediaSFU",
54
- "license": "MIT",
55
- "repository": {
56
- "type": "git",
57
- "url": "https://github.com/MediaSFU/MediaSFU-Shared"
58
- },
59
- "homepage": "https://github.com/MediaSFU/MediaSFU-Shared",
60
- "bugs": {
61
- "url": "https://github.com/MediaSFU/MediaSFU-Shared/issues",
62
- "email": "info@mediasfu.com"
63
- },
64
- "peerDependencies": {
65
- "mediasoup-client": "^3.16.0",
66
- "socket.io-client": "^4.8.0"
67
- },
68
- "dependencies": {
69
- "universal-cookie": "^7.2.2"
70
- },
71
- "devDependencies": {
72
- "mediasoup-client": "^3.16.0",
73
- "socket.io-client": "^4.8.0",
74
- "typescript": "^5.9.3",
75
- "vite": "^7.1.9",
76
- "vite-plugin-dts": "^4.3.0"
77
- }
78
- }
1
+ {
2
+ "name": "mediasfu-shared",
3
+ "version": "1.0.3",
4
+ "description": "Framework-agnostic MediaSFU WebRTC runtime for room creation, joining, mediasoup signaling, sockets, media state, translation, and reusable SDK types",
5
+ "main": "dist/index.cjs",
6
+ "module": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "type": "module",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.cjs"
14
+ },
15
+ "./consumers": {
16
+ "types": "./dist/consumers/index.d.ts",
17
+ "import": "./dist/consumers/index.js",
18
+ "require": "./dist/consumers/index.cjs"
19
+ },
20
+ "./methods": {
21
+ "types": "./dist/methods/index.d.ts",
22
+ "import": "./dist/methods/index.js",
23
+ "require": "./dist/methods/index.cjs"
24
+ },
25
+ "./types": {
26
+ "types": "./dist/types/index.d.ts",
27
+ "import": "./dist/types/index.js",
28
+ "require": "./dist/types/index.cjs"
29
+ }
30
+ },
31
+ "files": [
32
+ "dist",
33
+ "src",
34
+ "README.md",
35
+ "LICENSE"
36
+ ],
37
+ "scripts": {
38
+ "build": "tsc && vite build",
39
+ "build-docs": "typedoc",
40
+ "dev": "vite build --watch",
41
+ "test:staging:smoke": "npm run build && node ./scripts/staging-room-smoke-test.cjs",
42
+ "type-check": "tsc --noEmit"
43
+ },
44
+ "keywords": [
45
+ "mediasfu",
46
+ "webrtc",
47
+ "webRTC",
48
+ "mediasoup",
49
+ "sfu",
50
+ "video-conferencing",
51
+ "video-call",
52
+ "audio-call",
53
+ "socket.io",
54
+ "real-time-communication",
55
+ "real-time-media",
56
+ "room-management",
57
+ "screen-sharing",
58
+ "recording",
59
+ "live-streaming",
60
+ "webinar",
61
+ "broadcasting",
62
+ "whiteboard",
63
+ "live-subtitles",
64
+ "translation",
65
+ "framework-agnostic",
66
+ "typescript",
67
+ "mediasfu-shared"
68
+ ],
69
+ "author": "MediaSFU",
70
+ "license": "MIT",
71
+ "repository": {
72
+ "type": "git",
73
+ "url": "https://github.com/MediaSFU/MediaSFU-Shared"
74
+ },
75
+ "homepage": "https://github.com/MediaSFU/MediaSFU-Shared",
76
+ "bugs": {
77
+ "url": "https://github.com/MediaSFU/MediaSFU-Shared/issues",
78
+ "email": "info@mediasfu.com"
79
+ },
80
+ "peerDependencies": {
81
+ "mediasoup-client": "^3.16.0",
82
+ "socket.io-client": "^4.8.0"
83
+ },
84
+ "dependencies": {
85
+ "universal-cookie": "^7.2.2"
86
+ },
87
+ "devDependencies": {
88
+ "mediasoup-client": "^3.16.0",
89
+ "socket.io-client": "^4.8.0",
90
+ "typedoc": "^0.28.14",
91
+ "typedoc-plugin-extras": "^4.0.1",
92
+ "typescript": "^5.9.3",
93
+ "vite": "^7.1.9",
94
+ "vite-plugin-dts": "^4.3.0"
95
+ }
96
+ }
@@ -0,0 +1,57 @@
1
+ import { Socket } from 'socket.io-client';
2
+ import { joinRoom, JoinRoomResponse } from '../../producers/producerEmits/joinRoom';
3
+ import { joinConRoom, JoinConRoomResponse } from '../../producers/producerEmits/joinConRoom';
4
+
5
+ export interface JoinRoomClientOptions {
6
+ socket: Socket;
7
+ roomName: string;
8
+ islevel: string;
9
+ member: string;
10
+ sec: string;
11
+ apiUserName: string;
12
+ consume?: boolean;
13
+ }
14
+
15
+ export type JoinRoomClientResponse = JoinRoomResponse | JoinConRoomResponse;
16
+ export type JoinRoomClientType = (options: JoinRoomClientOptions) => Promise<JoinRoomClientResponse>;
17
+
18
+ /**
19
+ * Joins a room by delegating to the producer or consumer join emit based on the consume flag.
20
+ *
21
+ * @param {JoinRoomClientOptions} options - The options for joining the room.
22
+ * @returns {Promise<JoinRoomClientResponse>} The response returned from the server.
23
+ */
24
+ export const joinRoomClient = async ({
25
+ socket,
26
+ roomName,
27
+ islevel,
28
+ member,
29
+ sec,
30
+ apiUserName,
31
+ consume = false,
32
+ }: JoinRoomClientOptions): Promise<JoinRoomClientResponse> => {
33
+ try {
34
+ if (consume) {
35
+ return await joinConRoom({
36
+ socket,
37
+ roomName,
38
+ islevel,
39
+ member,
40
+ sec,
41
+ apiUserName,
42
+ });
43
+ }
44
+
45
+ return await joinRoom({
46
+ socket,
47
+ roomName,
48
+ islevel,
49
+ member,
50
+ sec,
51
+ apiUserName,
52
+ });
53
+ } catch (error) {
54
+ console.log(error);
55
+ throw new Error('Failed to join the room. Please check your connection and try again.');
56
+ }
57
+ };
@@ -0,0 +1,401 @@
1
+ /* eslint-disable eqeqeq */
2
+ import { RtpCapabilities } from 'mediasoup-client/lib/types';
3
+ import {
4
+ QnHDCons,
5
+ sdCons,
6
+ hdCons,
7
+ fhdCons,
8
+ qhdCons,
9
+ QnHDConsPort,
10
+ sdConsPort,
11
+ hdConsPort,
12
+ fhdConsPort,
13
+ qhdConsPort,
14
+ QnHDConsNeu,
15
+ sdConsNeu,
16
+ hdConsNeu,
17
+ fhdConsNeu,
18
+ qhdConsNeu,
19
+ QnHDFrameRate,
20
+ hdFrameRate,
21
+ fhdFrameRate,
22
+ qhdFrameRate,
23
+ } from '../../methods/utils/producer/videoCaptureConstraints';
24
+ import { hParams as host_Params } from '../../methods/utils/producer/hParams';
25
+ import { vParams as video_Params } from '../../methods/utils/producer/vParams';
26
+ import { screenParams as screen_Params } from '../../methods/utils/producer/screenParams';
27
+ import { aParams as audio_Params } from '../../methods/utils/producer/aParams';
28
+ import {
29
+ HParamsType,
30
+ VParamsType,
31
+ ScreenParamsType,
32
+ AParamsType,
33
+ MeetingRoomParams,
34
+ VidCons,
35
+ ShowAlert,
36
+ ResponseJoinRoom,
37
+ EventType,
38
+ } from '../../types/shared-base-types';
39
+
40
+ export interface UpdateRoomParametersClientParameters {
41
+ rtpCapabilities: RtpCapabilities | null;
42
+ roomRecvIPs: string[];
43
+ meetingRoomParams: MeetingRoomParams | null;
44
+ itemPageLimit: number;
45
+ audioOnlyRoom: boolean;
46
+ addForBasic: boolean;
47
+ screenPageLimit: number;
48
+ shareScreenStarted: boolean;
49
+ shared: boolean;
50
+ targetOrientation: string;
51
+ vidCons: VidCons;
52
+ recordingVideoSupport: boolean;
53
+ frameRate: number;
54
+ adminPasscode: string;
55
+ eventType: EventType;
56
+ youAreCoHost: boolean;
57
+ autoWave: boolean;
58
+ forceFullDisplay: boolean;
59
+ chatSetting: string;
60
+ meetingDisplayType: string;
61
+ audioSetting: string;
62
+ videoSetting: string;
63
+ screenshareSetting: string;
64
+ hParams: HParamsType;
65
+ vParams: VParamsType;
66
+ screenParams: ScreenParamsType;
67
+ aParams: AParamsType;
68
+ islevel: string;
69
+ showAlert?: ShowAlert;
70
+ data: ResponseJoinRoom;
71
+ updateRtpCapabilities: (rtpCapabilities: RtpCapabilities | null) => void;
72
+ updateRoomRecvIPs: (roomRecvIPs: string[]) => void;
73
+ updateMeetingRoomParams: (meetingRoomParams: MeetingRoomParams | null) => void;
74
+ updateItemPageLimit: (limit: number) => void;
75
+ updateAudioOnlyRoom: (isAudioOnly: boolean) => void;
76
+ updateAddForBasic: (addForBasic: boolean) => void;
77
+ updateScreenPageLimit: (limit: number) => void;
78
+ updateVidCons: (cons: VidCons) => void;
79
+ updateFrameRate: (frameRate: number) => void;
80
+ updateAdminPasscode: (passcode: string) => void;
81
+ updateEventType: (eventType: EventType) => void;
82
+ updateYouAreCoHost: (coHost: boolean) => void;
83
+ updateAutoWave: (autoWave: boolean) => void;
84
+ updateForceFullDisplay: (forceFull: boolean) => void;
85
+ updateChatSetting: (setting: string) => void;
86
+ updateMeetingDisplayType: (type: string) => void;
87
+ updateAudioSetting: (setting: string) => void;
88
+ updateVideoSetting: (setting: string) => void;
89
+ updateScreenshareSetting: (setting: string) => void;
90
+ updateHParams: (params: HParamsType) => void;
91
+ updateVParams: (params: VParamsType) => void;
92
+ updateScreenParams: (params: ScreenParamsType) => void;
93
+ updateAParams: (params: AParamsType) => void;
94
+ updateMainHeightWidth: (heightWidth: number) => void;
95
+ updateTargetResolution: (resolution: string) => void;
96
+ updateTargetResolutionHost: (resolution: string) => void;
97
+ updateRecordingAudioPausesLimit: (limit: number) => void;
98
+ updateRecordingAudioPausesCount: (count: number) => void;
99
+ updateRecordingAudioSupport: (support: boolean) => void;
100
+ updateRecordingAudioPeopleLimit: (limit: number) => void;
101
+ updateRecordingAudioParticipantsTimeLimit: (limit: number) => void;
102
+ updateRecordingVideoPausesCount: (count: number) => void;
103
+ updateRecordingVideoPausesLimit: (limit: number) => void;
104
+ updateRecordingVideoSupport: (support: boolean) => void;
105
+ updateRecordingVideoPeopleLimit: (limit: number) => void;
106
+ updateRecordingVideoParticipantsTimeLimit: (limit: number) => void;
107
+ updateRecordingAllParticipantsSupport: (support: boolean) => void;
108
+ updateRecordingVideoParticipantsSupport: (support: boolean) => void;
109
+ updateRecordingAllParticipantsFullRoomSupport: (support: boolean) => void;
110
+ updateRecordingVideoParticipantsFullRoomSupport: (support: boolean) => void;
111
+ updateRecordingPreferredOrientation: (orientation: string) => void;
112
+ updateRecordingSupportForOtherOrientation: (support: boolean) => void;
113
+ updateRecordingMultiFormatsSupport: (support: boolean) => void;
114
+ updateRecordingVideoOptions: (options: string) => void;
115
+ updateRecordingAudioOptions: (options: string) => void;
116
+ }
117
+
118
+ export type UpdateRoomParametersClientOptions = {
119
+ parameters: UpdateRoomParametersClientParameters;
120
+ };
121
+
122
+ export type UpdateRoomParametersClientType = (options: UpdateRoomParametersClientOptions) => void;
123
+
124
+ export const updateRoomParametersClient = ({ parameters }: UpdateRoomParametersClientOptions): void => {
125
+ try {
126
+ const {
127
+ screenPageLimit,
128
+ shareScreenStarted,
129
+ shared,
130
+ hParams = host_Params,
131
+ vParams = video_Params,
132
+ frameRate,
133
+ islevel,
134
+ showAlert,
135
+ data,
136
+ updateRtpCapabilities,
137
+ updateRoomRecvIPs,
138
+ updateMeetingRoomParams,
139
+ updateItemPageLimit,
140
+ updateAudioOnlyRoom,
141
+ updateScreenPageLimit,
142
+ updateVidCons,
143
+ updateFrameRate,
144
+ updateAdminPasscode,
145
+ updateEventType,
146
+ updateYouAreCoHost,
147
+ updateAutoWave,
148
+ updateForceFullDisplay,
149
+ updateChatSetting,
150
+ updateMeetingDisplayType,
151
+ updateAudioSetting,
152
+ updateVideoSetting,
153
+ updateScreenshareSetting,
154
+ updateHParams,
155
+ updateVParams,
156
+ updateScreenParams,
157
+ updateAParams,
158
+ updateTargetResolution,
159
+ updateTargetResolutionHost,
160
+ updateRecordingAudioPausesLimit,
161
+ updateRecordingAudioPausesCount,
162
+ updateRecordingAudioSupport,
163
+ updateRecordingAudioPeopleLimit,
164
+ updateRecordingAudioParticipantsTimeLimit,
165
+ updateRecordingVideoPausesCount,
166
+ updateRecordingVideoPausesLimit,
167
+ updateRecordingVideoSupport,
168
+ updateRecordingVideoPeopleLimit,
169
+ updateRecordingVideoParticipantsTimeLimit,
170
+ updateRecordingAllParticipantsSupport,
171
+ updateRecordingVideoParticipantsSupport,
172
+ updateRecordingAllParticipantsFullRoomSupport,
173
+ updateRecordingVideoParticipantsFullRoomSupport,
174
+ updateRecordingPreferredOrientation,
175
+ updateRecordingSupportForOtherOrientation,
176
+ updateRecordingMultiFormatsSupport,
177
+ updateRecordingVideoOptions,
178
+ updateRecordingAudioOptions,
179
+ updateMainHeightWidth,
180
+ } = parameters;
181
+
182
+ if (data.rtpCapabilities == null) {
183
+ const reason = data.reason || '';
184
+ showAlert?.({
185
+ message: `Sorry, you are not allowed to join this room. ${reason}`,
186
+ type: 'danger',
187
+ duration: 3000,
188
+ });
189
+ return;
190
+ }
191
+
192
+ updateRtpCapabilities(data.rtpCapabilities);
193
+ updateAdminPasscode(data.secureCode);
194
+ updateRoomRecvIPs(data.roomRecvIPs);
195
+ updateMeetingRoomParams(data.meetingRoomParams);
196
+
197
+ updateRecordingAudioPausesLimit(data.recordingParams.recordingAudioPausesLimit);
198
+ updateRecordingAudioPausesCount(data.recordingParams.recordingAudioPausesCount!);
199
+ updateRecordingAudioSupport(data.recordingParams.recordingAudioSupport);
200
+ updateRecordingAudioPeopleLimit(data.recordingParams.recordingAudioPeopleLimit);
201
+ updateRecordingAudioParticipantsTimeLimit(data.recordingParams.recordingAudioParticipantsTimeLimit);
202
+ updateRecordingVideoPausesCount(data.recordingParams.recordingVideoPausesCount!);
203
+ updateRecordingVideoPausesLimit(data.recordingParams.recordingVideoPausesLimit);
204
+ updateRecordingVideoSupport(data.recordingParams.recordingVideoSupport);
205
+ updateRecordingVideoPeopleLimit(data.recordingParams.recordingVideoPeopleLimit);
206
+ updateRecordingVideoParticipantsTimeLimit(data.recordingParams.recordingVideoParticipantsTimeLimit);
207
+ updateRecordingAllParticipantsSupport(data.recordingParams.recordingAllParticipantsSupport);
208
+ updateRecordingVideoParticipantsSupport(data.recordingParams.recordingVideoParticipantsSupport);
209
+ updateRecordingAllParticipantsFullRoomSupport(data.recordingParams.recordingAllParticipantsFullRoomSupport);
210
+ updateRecordingVideoParticipantsFullRoomSupport(data.recordingParams.recordingVideoParticipantsFullRoomSupport);
211
+ updateRecordingPreferredOrientation(data.recordingParams.recordingPreferredOrientation);
212
+ updateRecordingSupportForOtherOrientation(data.recordingParams.recordingSupportForOtherOrientation);
213
+ updateRecordingMultiFormatsSupport(data.recordingParams.recordingMultiFormatsSupport);
214
+
215
+ updateItemPageLimit(data.meetingRoomParams.itemPageLimit);
216
+ updateEventType(data.meetingRoomParams.type);
217
+
218
+ if (data.meetingRoomParams.type == 'chat' && islevel != '2') {
219
+ updateYouAreCoHost(true);
220
+ }
221
+
222
+ if (['chat', 'broadcast'].includes(data.meetingRoomParams.type)) {
223
+ updateAutoWave(false);
224
+ updateMeetingDisplayType('all');
225
+ updateForceFullDisplay(true);
226
+ updateChatSetting('allow');
227
+ updateItemPageLimit(2);
228
+
229
+ if (['broadcast'].includes(data.meetingRoomParams.type)) {
230
+ updateRecordingVideoOptions('mainScreen');
231
+ updateRecordingAudioOptions('host');
232
+ updateItemPageLimit(1);
233
+ }
234
+ }
235
+
236
+ updateAudioSetting(data.meetingRoomParams.audioSetting);
237
+ updateVideoSetting(data.meetingRoomParams.videoSetting);
238
+ updateScreenshareSetting(data.meetingRoomParams.screenshareSetting);
239
+ updateChatSetting(data.meetingRoomParams.chatSetting);
240
+
241
+ updateAudioOnlyRoom(data.meetingRoomParams.mediaType != 'video');
242
+
243
+ if (data.meetingRoomParams.type == 'conference' && (shared || shareScreenStarted)) {
244
+ updateMainHeightWidth(100);
245
+ } else {
246
+ updateMainHeightWidth(0);
247
+ }
248
+
249
+ updateScreenPageLimit(Math.min(data.meetingRoomParams.itemPageLimit, screenPageLimit));
250
+
251
+ const targetOrientation = islevel == '2'
252
+ ? data.meetingRoomParams.targetOrientationHost
253
+ : data.meetingRoomParams.targetOrientation;
254
+ const targetResolution = islevel == '2'
255
+ ? data.meetingRoomParams.targetResolutionHost
256
+ : data.meetingRoomParams.targetResolution;
257
+
258
+ let vidCons: VidCons;
259
+ if (targetOrientation == 'landscape') {
260
+ vidCons = targetResolution == 'hd'
261
+ ? hdCons
262
+ : targetResolution == 'fhd'
263
+ ? fhdCons
264
+ : targetResolution == 'qhd'
265
+ ? qhdCons
266
+ : targetResolution == 'sd'
267
+ ? sdCons
268
+ : QnHDCons;
269
+ } else if (targetOrientation == 'neutral') {
270
+ vidCons = targetResolution == 'hd'
271
+ ? hdConsNeu
272
+ : targetResolution == 'fhd'
273
+ ? fhdConsNeu
274
+ : targetResolution == 'qhd'
275
+ ? qhdConsNeu
276
+ : targetResolution == 'sd'
277
+ ? sdConsNeu
278
+ : QnHDConsNeu;
279
+ } else {
280
+ vidCons = targetResolution == 'hd'
281
+ ? hdConsPort
282
+ : targetResolution == 'fhd'
283
+ ? fhdConsPort
284
+ : targetResolution == 'qhd'
285
+ ? qhdConsPort
286
+ : targetResolution == 'sd'
287
+ ? sdConsPort
288
+ : QnHDConsPort;
289
+ }
290
+
291
+ let frameRateValue = frameRate || 10;
292
+ let vParamsValue = { ...vParams };
293
+ let hParamsValue = { ...hParams };
294
+
295
+ if (Object.keys(vParamsValue).length == 0) {
296
+ vParamsValue = { ...video_Params };
297
+ }
298
+
299
+ if (Object.keys(hParamsValue).length == 0) {
300
+ hParamsValue = { ...host_Params };
301
+ }
302
+
303
+ if (targetResolution == 'hd') {
304
+ frameRateValue = hdFrameRate;
305
+ vParamsValue.encodings.forEach((encoding: Partial<VParamsType['encodings'][0]>) => {
306
+ if (encoding.maxBitrate) {
307
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 4);
308
+ }
309
+ });
310
+
311
+ hParamsValue.encodings.forEach((encoding: Partial<HParamsType['encodings'][0]>) => {
312
+ if (encoding.maxBitrate) {
313
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 4);
314
+ }
315
+ });
316
+ } else if (targetResolution == 'QnHD') {
317
+ frameRateValue = QnHDFrameRate;
318
+ vParamsValue.encodings.forEach((encoding: Partial<VParamsType['encodings'][0]>) => {
319
+ if (encoding.maxBitrate) {
320
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 0.25);
321
+ }
322
+ });
323
+
324
+ hParamsValue.encodings.forEach((encoding: Partial<HParamsType['encodings'][0]>) => {
325
+ if (encoding.maxBitrate) {
326
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 0.25);
327
+ }
328
+ });
329
+
330
+ if (hParamsValue.codecOptions && hParamsValue.codecOptions.videoGoogleStartBitrate) {
331
+ hParamsValue.codecOptions.videoGoogleStartBitrate = Math.floor(hParamsValue.codecOptions.videoGoogleStartBitrate * 0.25);
332
+ }
333
+ if (vParamsValue.codecOptions && vParamsValue.codecOptions.videoGoogleStartBitrate) {
334
+ vParamsValue.codecOptions.videoGoogleStartBitrate = Math.floor(vParamsValue.codecOptions.videoGoogleStartBitrate * 0.25);
335
+ }
336
+ } else if (targetResolution == 'fhd') {
337
+ frameRateValue = fhdFrameRate;
338
+ vParamsValue.encodings.forEach((encoding: Partial<VParamsType['encodings'][0]>) => {
339
+ if (encoding.maxBitrate) {
340
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 8);
341
+ }
342
+ });
343
+
344
+ hParamsValue.encodings.forEach((encoding: Partial<HParamsType['encodings'][0]>) => {
345
+ if (encoding.maxBitrate) {
346
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 8);
347
+ }
348
+ });
349
+ } else if (targetResolution == 'qhd') {
350
+ frameRateValue = qhdFrameRate;
351
+ vParamsValue.encodings.forEach((encoding: Partial<VParamsType['encodings'][0]>) => {
352
+ if (encoding.maxBitrate) {
353
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 16);
354
+ }
355
+ });
356
+
357
+ hParamsValue.encodings.forEach((encoding: Partial<HParamsType['encodings'][0]>) => {
358
+ if (encoding.maxBitrate) {
359
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 16);
360
+ }
361
+ });
362
+ }
363
+
364
+ if (data.recordingParams.recordingVideoSupport) {
365
+ vParamsValue.encodings.forEach((encoding: Partial<VParamsType['encodings'][0]>) => {
366
+ if (encoding.maxBitrate) {
367
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 1.2);
368
+ }
369
+ });
370
+
371
+ hParamsValue.encodings.forEach((encoding: Partial<HParamsType['encodings'][0]>) => {
372
+ if (encoding.maxBitrate) {
373
+ encoding.maxBitrate = Math.floor(encoding.maxBitrate * 1.2);
374
+ }
375
+ });
376
+
377
+ if (hParamsValue.codecOptions && hParamsValue.codecOptions.videoGoogleStartBitrate) {
378
+ hParamsValue.codecOptions.videoGoogleStartBitrate = Math.floor(hParamsValue.codecOptions.videoGoogleStartBitrate * 1.2);
379
+ }
380
+ if (vParamsValue.codecOptions && vParamsValue.codecOptions.videoGoogleStartBitrate) {
381
+ vParamsValue.codecOptions.videoGoogleStartBitrate = Math.floor(vParamsValue.codecOptions.videoGoogleStartBitrate * 1.2);
382
+ }
383
+ }
384
+
385
+ updateVidCons(vidCons);
386
+ updateFrameRate(frameRateValue);
387
+ updateHParams(hParamsValue);
388
+ updateVParams(vParamsValue);
389
+ updateScreenParams(screen_Params);
390
+ updateAParams(audio_Params);
391
+ updateTargetResolution(data.meetingRoomParams.targetResolution);
392
+ updateTargetResolutionHost(data.meetingRoomParams.targetResolutionHost);
393
+ } catch (error) {
394
+ console.log('updateRoomParametersClient error', error);
395
+ parameters.showAlert?.({
396
+ message: (error as Error).message,
397
+ type: 'danger',
398
+ duration: 3000,
399
+ });
400
+ }
401
+ };
@@ -1,6 +1,8 @@
1
1
  // Stub export for addVideosGrid
2
2
  // This is a React component in the original and not needed for the shared package
3
3
 
4
+ import { createFrameworkConsumerContractError } from './frameworkConsumerContract';
5
+
4
6
  export interface AddVideosGridParameters {
5
7
  [key: string]: any;
6
8
  }
@@ -13,6 +15,5 @@ export interface AddVideosGridOptions {
13
15
  export type AddVideosGridType = (options: AddVideosGridOptions) => Promise<void>;
14
16
 
15
17
  export const addVideosGrid: AddVideosGridType = async () => {
16
- // Stub implementation - actual logic handled in framework-specific packages
17
- console.warn('addVideosGrid called on shared package - should be implemented in framework package');
18
+ throw createFrameworkConsumerContractError('addVideosGrid');
18
19
  };