fcr-core 3.8.1 → 3.9.0-alpha

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 (199) hide show
  1. package/lib/chat-connector/type.d.ts +40 -0
  2. package/lib/{chat-connection → chat-connector}/type.js +1 -1
  3. package/lib/engine/index.d.ts +10 -11
  4. package/lib/engine/index.js +63 -72
  5. package/lib/engine/type.d.ts +96 -0
  6. package/lib/engine/type.js +5 -0
  7. package/lib/imports.d.ts +7 -4
  8. package/lib/imports.js +30 -4
  9. package/lib/index.d.ts +3 -2
  10. package/lib/index.js +21 -2
  11. package/lib/media-control/desktop.js +12 -12
  12. package/lib/media-control/mobile.js +4 -0
  13. package/lib/media-control/type.d.ts +32 -33
  14. package/lib/monitor-control/index.js +3 -3
  15. package/lib/peer-session/index.js +14 -14
  16. package/lib/peer-session/type.d.ts +1 -1
  17. package/lib/plugins/chat/chatroom.js +417 -0
  18. package/lib/{chat-connection → plugins/chat}/config.d.ts +1 -0
  19. package/lib/{room-control/chatroom-control → plugins/chat}/config.js +2 -1
  20. package/lib/plugins/chat/connector.d.ts +38 -0
  21. package/lib/{chat-connection/index.js → plugins/chat/connector.js} +181 -61
  22. package/lib/room-control/ability-control/index.js +5 -4
  23. package/lib/room-control/ability-control/type.d.ts +5 -1
  24. package/lib/room-control/ability-control/type.js +4 -0
  25. package/lib/room-control/chatroom-control/type.d.ts +44 -35
  26. package/lib/room-control/group-control/index.js +9 -9
  27. package/lib/room-control/index.js +37 -22
  28. package/lib/room-control/interpreter-control/index.js +7 -4
  29. package/lib/room-control/interpreter-control/room.js +3 -3
  30. package/lib/room-control/interpreter-control/types.d.ts +2 -2
  31. package/lib/room-control/join-before-host-waitingroom-control/index.js +3 -3
  32. package/lib/room-control/mainroom-control/index.js +15 -13
  33. package/lib/room-control/privilege-control/index.js +39 -24
  34. package/lib/room-control/privilege-control/type.d.ts +15 -15
  35. package/lib/room-control/room-connector-control/index.js +7 -5
  36. package/lib/room-control/room-connector-control/type.d.ts +1 -1
  37. package/lib/room-control/room-control-factory.d.ts +3 -3
  38. package/lib/room-control/room-control-factory.js +7 -7
  39. package/lib/room-control/room-session/index.js +17 -15
  40. package/lib/room-control/room-session/type.d.ts +3 -3
  41. package/lib/room-control/sharing-control/index.js +13 -7
  42. package/lib/room-control/stream-control/index.js +18 -16
  43. package/lib/room-control/stream-control/type.d.ts +5 -5
  44. package/lib/room-control/stt-control/index.js +38 -31
  45. package/lib/room-control/type.d.ts +19 -19
  46. package/lib/room-control/user-control/index.js +20 -22
  47. package/lib/room-control/user-control/type.d.ts +1 -1
  48. package/lib/room-control/waitingroom-control/index.js +11 -11
  49. package/lib/room-control/whiteboard-control-v1/board-window.d.ts +21 -20
  50. package/lib/room-control/whiteboard-control-v1/board-window.js +27 -8
  51. package/lib/room-control/whiteboard-control-v1/factory.js +1 -1
  52. package/lib/room-control/whiteboard-control-v1/index.js +26 -18
  53. package/lib/room-control/whiteboard-control-v1/type.d.ts +26 -25
  54. package/lib/room-control/whiteboard-control-v1/type.js +1 -0
  55. package/lib/room-control/whiteboard-control-v2/annotation-control/control.d.ts +15 -6
  56. package/lib/room-control/whiteboard-control-v2/annotation-control/control.js +39 -5
  57. package/lib/room-control/whiteboard-control-v2/annotation-control/factory.d.ts +4 -5
  58. package/lib/room-control/whiteboard-control-v2/annotation-control/factory.js +6 -5
  59. package/lib/room-control/whiteboard-control-v2/annotation-control/type.d.ts +7 -1
  60. package/lib/room-control/whiteboard-control-v2/base/index.d.ts +9 -8
  61. package/lib/room-control/whiteboard-control-v2/base/index.js +84 -42
  62. package/lib/room-control/whiteboard-control-v2/base/main-window.d.ts +16 -15
  63. package/lib/room-control/whiteboard-control-v2/base/main-window.js +23 -4
  64. package/lib/room-control/whiteboard-control-v2/type.d.ts +17 -17
  65. package/lib/room-control/whiteboard-control-v2/whiteboard-control/control.d.ts +12 -6
  66. package/lib/room-control/whiteboard-control-v2/whiteboard-control/control.js +64 -18
  67. package/lib/room-control/whiteboard-control-v2/whiteboard-control/factory.d.ts +2 -2
  68. package/lib/room-control/whiteboard-control-v2/whiteboard-control/factory.js +10 -10
  69. package/lib/room-control/whiteboard-control-v2/whiteboard-control/type.d.ts +1 -1
  70. package/lib/room-router/index.js +10 -7
  71. package/lib/room-router/type.d.ts +1 -1
  72. package/lib/schema.d.ts +24 -46
  73. package/lib/schema.js +1 -2
  74. package/lib/service/api.d.ts +5 -3
  75. package/lib/service/api.js +17 -12
  76. package/lib/type.d.ts +64 -45
  77. package/lib/type.js +76 -11
  78. package/lib/utilities/abortable-retry.d.ts +38 -0
  79. package/lib/utilities/abortable-retry.js +61 -0
  80. package/lib/utilities/dual-video-stream-config.d.ts +6 -0
  81. package/lib/utilities/dual-video-stream-config.js +25 -0
  82. package/lib/utilities/error-helpers.d.ts +10 -9
  83. package/lib/utilities/error-helpers.js +12 -11
  84. package/lib/utilities/error.d.ts +4 -40
  85. package/lib/utilities/error.js +20 -77
  86. package/lib/utilities/join-helper.js +2 -2
  87. package/lib/utilities/logger.d.ts +2 -2
  88. package/lib/utilities/logger.js +6 -25
  89. package/lib/utilities/package-info.d.ts +1 -2
  90. package/lib/utilities/package-info.js +4 -8
  91. package/lib/utilities/parameters.js +88 -15
  92. package/lib/utilities/validate-params.js +1 -1
  93. package/lib/utilities/video-encoder-config.d.ts +9 -0
  94. package/lib/utilities/video-encoder-config.js +109 -0
  95. package/lib-es/base-session.js +1 -0
  96. package/lib-es/chat-connector/type.js +6 -0
  97. package/lib-es/engine/index.js +412 -0
  98. package/lib-es/engine/type.js +1 -0
  99. package/lib-es/imports.js +59 -0
  100. package/lib-es/index.js +8 -0
  101. package/lib-es/media-control/desktop.js +172 -0
  102. package/lib-es/media-control/mobile.js +198 -0
  103. package/lib-es/media-control/type.js +6 -0
  104. package/lib-es/monitor-control/index.js +46 -0
  105. package/lib-es/monitor-control/type.js +1 -0
  106. package/lib-es/peer-session/index.js +279 -0
  107. package/lib-es/peer-session/type.js +1 -0
  108. package/lib-es/plugins/chat/chatroom.js +409 -0
  109. package/{lib/chat-connection → lib-es/plugins/chat}/config.js +5 -9
  110. package/lib-es/plugins/chat/connector.js +269 -0
  111. package/lib-es/plugins/electron-rtc-plugin.js +1 -0
  112. package/lib-es/plugins/rtm-plugin.js +1 -0
  113. package/lib-es/plugins/web-rtc-plugin.js +1 -0
  114. package/lib-es/room-control/ability-control/index.js +58 -0
  115. package/lib-es/room-control/ability-control/type.js +15 -0
  116. package/lib-es/room-control/chatroom-control/type.js +12 -0
  117. package/lib-es/room-control/group-control/index.js +256 -0
  118. package/lib-es/room-control/helpers/constants.js +92 -0
  119. package/lib-es/room-control/helpers/index.js +20 -0
  120. package/lib-es/room-control/helpers/validation-helper.js +46 -0
  121. package/lib-es/room-control/index.js +623 -0
  122. package/lib-es/room-control/interpreter-control/index.js +172 -0
  123. package/lib-es/room-control/interpreter-control/room.js +28 -0
  124. package/lib-es/room-control/interpreter-control/types.js +26 -0
  125. package/lib-es/room-control/join-before-host-waitingroom-control/index.js +29 -0
  126. package/lib-es/room-control/mainroom-control/index.js +248 -0
  127. package/lib-es/room-control/privilege-control/helper.js +97 -0
  128. package/lib-es/room-control/privilege-control/index.js +339 -0
  129. package/lib-es/room-control/privilege-control/type.js +159 -0
  130. package/lib-es/room-control/room-connector-control/index.js +182 -0
  131. package/lib-es/room-control/room-connector-control/type.js +28 -0
  132. package/lib-es/room-control/room-control-factory.js +77 -0
  133. package/lib-es/room-control/room-session/index.js +292 -0
  134. package/lib-es/room-control/room-session/type.js +1 -0
  135. package/lib-es/room-control/shared-cache.js +47 -0
  136. package/lib-es/room-control/sharing-control/index.js +307 -0
  137. package/lib-es/room-control/sharing-control/type.js +16 -0
  138. package/lib-es/room-control/stream-control/index.js +536 -0
  139. package/lib-es/room-control/stream-control/type.js +1 -0
  140. package/lib-es/room-control/stt-control/de-compress-gzip.js +33 -0
  141. package/lib-es/room-control/stt-control/index.js +350 -0
  142. package/lib-es/room-control/stt-control/type.js +10 -0
  143. package/lib-es/room-control/type.js +30 -0
  144. package/lib-es/room-control/user-control/index.js +344 -0
  145. package/lib-es/room-control/user-control/type.js +21 -0
  146. package/lib-es/room-control/waitingroom-control/index.js +68 -0
  147. package/lib-es/room-control/whiteboard-control/enum.js +18 -0
  148. package/lib-es/room-control/whiteboard-control/type.js +10 -0
  149. package/lib-es/room-control/whiteboard-control/utils.js +13 -0
  150. package/lib-es/room-control/whiteboard-control-v1/board-subwindow.js +18 -0
  151. package/lib-es/room-control/whiteboard-control-v1/board-window.js +573 -0
  152. package/lib-es/room-control/whiteboard-control-v1/enum.js +157 -0
  153. package/lib-es/room-control/whiteboard-control-v1/factory.js +12 -0
  154. package/lib-es/room-control/whiteboard-control-v1/index.js +427 -0
  155. package/lib-es/room-control/whiteboard-control-v1/mount-manager.js +6 -0
  156. package/lib-es/room-control/whiteboard-control-v1/type.js +8 -0
  157. package/lib-es/room-control/whiteboard-control-v1/utils.js +273 -0
  158. package/lib-es/room-control/whiteboard-control-v2/annotation-control/control.js +76 -0
  159. package/lib-es/room-control/whiteboard-control-v2/annotation-control/factory.js +37 -0
  160. package/lib-es/room-control/whiteboard-control-v2/annotation-control/type.js +1 -0
  161. package/lib-es/room-control/whiteboard-control-v2/base/index.js +347 -0
  162. package/lib-es/room-control/whiteboard-control-v2/base/main-window.js +269 -0
  163. package/lib-es/room-control/whiteboard-control-v2/constant.js +9 -0
  164. package/lib-es/room-control/whiteboard-control-v2/enum.js +28 -0
  165. package/lib-es/room-control/whiteboard-control-v2/type.js +1 -0
  166. package/lib-es/room-control/whiteboard-control-v2/utils.js +92 -0
  167. package/lib-es/room-control/whiteboard-control-v2/whiteboard-control/control.js +204 -0
  168. package/lib-es/room-control/whiteboard-control-v2/whiteboard-control/factory.js +61 -0
  169. package/lib-es/room-control/whiteboard-control-v2/whiteboard-control/type.js +1 -0
  170. package/lib-es/room-router/index.js +263 -0
  171. package/lib-es/room-router/type.js +5 -0
  172. package/lib-es/schema.js +231 -0
  173. package/lib-es/service/api.js +1211 -0
  174. package/lib-es/service/type.js +1 -0
  175. package/lib-es/type.js +222 -0
  176. package/lib-es/utilities/abortable-retry.js +54 -0
  177. package/lib-es/utilities/cmd.js +1 -0
  178. package/lib-es/utilities/collection.js +64 -0
  179. package/lib-es/utilities/dual-video-stream-config.js +19 -0
  180. package/lib-es/utilities/error-helpers.js +224 -0
  181. package/lib-es/utilities/error.js +43 -0
  182. package/lib-es/utilities/join-helper.js +219 -0
  183. package/lib-es/utilities/logger.js +7 -0
  184. package/lib-es/utilities/package-info.js +5 -0
  185. package/lib-es/utilities/parameters.js +106 -0
  186. package/lib-es/utilities/retry-helpers.js +66 -0
  187. package/lib-es/utilities/shared-storage.js +31 -0
  188. package/lib-es/utilities/stream.js +18 -0
  189. package/lib-es/utilities/user.js +30 -0
  190. package/lib-es/utilities/validate-params.js +8 -0
  191. package/lib-es/utilities/video-encoder-config.js +103 -0
  192. package/package.json +11 -10
  193. package/lib/chat-connection/index.d.ts +0 -24
  194. package/lib/chat-connection/type.d.ts +0 -17
  195. package/lib/plugins/chatroom.js +0 -454
  196. package/lib/room-control/chatroom-control/config.d.ts +0 -51
  197. package/lib/utilities/storage.d.ts +0 -8
  198. package/lib/utilities/storage.js +0 -33
  199. /package/lib/plugins/{chatroom.d.ts → chat/chatroom.d.ts} +0 -0
@@ -0,0 +1,231 @@
1
+ import "core-js/modules/esnext.iterator.constructor.js";
2
+ import "core-js/modules/esnext.iterator.some.js";
3
+ import { FcrLanguage } from './room-control/interpreter-control/types';
4
+ import { FcrPermissionAction, FcrPrivilegeUserRole, FcrSecurityAction } from './room-control/privilege-control/type';
5
+ import { FcrIPConnectorSessionType } from './room-control/room-connector-control/type';
6
+ import { FcrUserKickedOutType, FcrUserRole } from './room-control/user-control/type';
7
+ import { FcrBoardToolType } from './room-control/whiteboard-control-v2/enum';
8
+ import { FcrChatRoomMessageType } from './room-control/chatroom-control/type';
9
+ import { AgoraRtcAudioSourceType, AgoraRtcCapability, AgoraRtcEncryptionMode, AgoraRtcLatencyLevelType, AgoraRtcMediaSourceState, AgoraRtcRenderMode, AgoraRtcVideoStreamType, AgoraRteMediaStreamType, AgoraRteVideoSourceType, anySchema, booleanSchema, createRecordSchemaWithKey, numberSchema, stringSchema, unknownSchema, createUnionSchema, createArraySchema, z, objectSchema, AgoraRteStreamPrivilegeOperation, AgoraRteStreamPrivilegeAudioSourceType, AgoraRteStreamPrivilegeVideoSourceType, FcrScreenScenarioType } from './imports';
10
+ import { FcrDeviceType } from './media-control/type';
11
+ import { FcrLineType } from './room-control/type';
12
+ export { anySchema, booleanSchema, createRecordSchemaWithKey, numberSchema, stringSchema, unknownSchema, fcrRenderViewSchema, createUnionSchema, createArraySchema, z } from './imports';
13
+ export const stringOrObjectSchema = createUnionSchema([stringSchema, objectSchema]);
14
+ export const stringArraySchema = createArraySchema(stringSchema);
15
+ export const unknownArraySchema = createArraySchema(unknownSchema);
16
+ export const stringKeyUnknownValueSchema = createRecordSchemaWithKey(stringSchema, unknownSchema);
17
+ export const stringKeyNumberValueSchema = createRecordSchemaWithKey(stringSchema, numberSchema);
18
+ export const fcrStreamPrivilegeOperation = z.nativeEnum(AgoraRteStreamPrivilegeOperation);
19
+ export const fcrSecurityActionSchema = z.nativeEnum(FcrSecurityAction);
20
+ export const fcrPermissionActionSchema = z.nativeEnum(FcrPermissionAction);
21
+ export const fcrPrivilegeUserRoleSchema = z.nativeEnum(FcrPrivilegeUserRole);
22
+ export const fcrLineTypeSchema = z.nativeEnum(FcrLineType);
23
+ export const fcrUserRoleSchema = z.nativeEnum(FcrUserRole);
24
+ export const fcrUserKickedOutTypeSchema = z.nativeEnum(FcrUserKickedOutType);
25
+ export const fcrBoardToolTypeSchema = z.nativeEnum(FcrBoardToolType);
26
+ export const fcrLanguageSchema = z.nativeEnum(FcrLanguage);
27
+ export const fcrIPConnectorSessionTypeSchema = z.nativeEnum(FcrIPConnectorSessionType);
28
+ export const fcrDeviceTypeSchema = z.nativeEnum(FcrDeviceType);
29
+ export const fcrChatRoomMessageTypeSchema = z.nativeEnum(FcrChatRoomMessageType);
30
+ // Native Enum Schemas
31
+ export const fcrMediaStreamTypeSchema = z.nativeEnum(AgoraRteMediaStreamType);
32
+ export const fcrVideoSourceTypeSchema = z.nativeEnum(AgoraRteVideoSourceType);
33
+ export const fcrMediaSourceStateSchema = z.nativeEnum(AgoraRtcMediaSourceState);
34
+ export const fcrCapabilitySchema = z.nativeEnum(AgoraRtcCapability);
35
+ export const fcrRenderModeSchema = z.nativeEnum(AgoraRtcRenderMode);
36
+ export const fcrEncryptionModeSchema = z.nativeEnum(AgoraRtcEncryptionMode);
37
+ export const fcrLatencyLevelTypeSchema = z.nativeEnum(AgoraRtcLatencyLevelType);
38
+ export const fcrAudioSourceTypeSchema = z.nativeEnum(AgoraRtcAudioSourceType);
39
+ export const fcrVideoStreamTypeSchema = z.nativeEnum(AgoraRtcVideoStreamType);
40
+ export const fcrStreamPrivilegeAudioSourceTypeSchema = z.nativeEnum(AgoraRteStreamPrivilegeAudioSourceType);
41
+ export const fcrScreenScenarioTypeSchema = z.nativeEnum(FcrScreenScenarioType);
42
+ export const fcrStreamPrivilegeVideoSourceTypeSchema = z.nativeEnum(AgoraRteStreamPrivilegeVideoSourceType);
43
+ // Array Schemas
44
+ export const fcrUserRolesSchema = z.array(fcrUserRoleSchema);
45
+ export const fcrPrivilegeUserRoleArraySchema = z.array(fcrPrivilegeUserRoleSchema);
46
+ // Object Schemas
47
+
48
+ export const fcrLanguageConfigSchema = z.object({
49
+ sourceLanguage: fcrLanguageSchema,
50
+ targetLanguage: fcrLanguageSchema.optional()
51
+ });
52
+ export const fcrSessionBaseSchema = z.object({
53
+ sessionId: stringSchema,
54
+ sessionKey: stringSchema,
55
+ timestamp: numberSchema,
56
+ duration: numberSchema,
57
+ payload: stringKeyUnknownValueSchema,
58
+ senderId: stringSchema,
59
+ interval: numberSchema
60
+ });
61
+ export const fcrInterpreterUsersParamsSchema = z.object({
62
+ userId: stringSchema,
63
+ sourceLanguage: fcrLanguageSchema,
64
+ targetLanguage: fcrLanguageSchema
65
+ });
66
+ export const fcrSecurityPrivateChatConfigSchema = z.object({
67
+ host: booleanSchema,
68
+ cohost: booleanSchema,
69
+ participant: booleanSchema
70
+ });
71
+ export const fcrSecuritySendChatPayloadSchema = z.object({
72
+ public: booleanSchema,
73
+ private: fcrSecurityPrivateChatConfigSchema
74
+ });
75
+ export const fcrPhoneConnectorSessionParamsSchema = z.object({
76
+ phoneNumber: stringSchema,
77
+ userName: stringSchema,
78
+ phoneUserId: stringSchema.optional()
79
+ });
80
+ export const fcrIPConnectorSessionParamsSchema = z.object({
81
+ address: stringSchema,
82
+ type: fcrIPConnectorSessionTypeSchema
83
+ });
84
+ export const fcrRoomSessionParamsSchema = z.object({
85
+ sessionKey: stringSchema,
86
+ duration: numberSchema,
87
+ payload: stringKeyUnknownValueSchema
88
+ });
89
+ export const colorSchema = z.object({
90
+ r: numberSchema,
91
+ g: numberSchema,
92
+ b: numberSchema,
93
+ a: numberSchema.optional()
94
+ });
95
+ export const fcrPeerSessionParamsSchema = z.object({
96
+ sessionKey: stringSchema,
97
+ receiverId: stringSchema,
98
+ duration: numberSchema,
99
+ payload: stringKeyUnknownValueSchema
100
+ });
101
+ export const fcrGroupCreateConfigSchema = z.object({
102
+ groupName: stringSchema,
103
+ userList: stringArraySchema
104
+ });
105
+ // Chat Room Schemas
106
+ export const fcrChatRoomSendBaseMessageSchema = z.object({
107
+ type: fcrChatRoomMessageTypeSchema,
108
+ properties: stringKeyUnknownValueSchema.optional(),
109
+ to: stringArraySchema.optional()
110
+ });
111
+ export const fcrChatRoomSendTextMessageSchema = z.object({
112
+ content: stringSchema
113
+ }).merge(fcrChatRoomSendBaseMessageSchema);
114
+ export const fcrChatRoomFileSchema = z.object({
115
+ fileName: stringSchema,
116
+ fileType: stringSchema,
117
+ filePath: stringSchema.optional(),
118
+ data: anySchema.optional()
119
+ });
120
+ export const fcrChatRoomSendImageMessageSchema = z.object({
121
+ file: fcrChatRoomFileSchema
122
+ }).merge(fcrChatRoomSendBaseMessageSchema);
123
+ export const messageSchema = z.union([fcrChatRoomSendTextMessageSchema, fcrChatRoomSendImageMessageSchema]);
124
+ export const progressSchema = z.function().args(z.number()) // 定义参数类型
125
+ .returns(z.void()) // 定义返回值类型
126
+ .describe('A callback function that takes a progress and returns void');
127
+
128
+ // RTC Schemas
129
+ export const agoraRtcEncryptionConfig = z.object({
130
+ encryptionKey: stringSchema,
131
+ encryptionMode: fcrEncryptionModeSchema
132
+ });
133
+ export const AgoraRtcDimensions = z.object({
134
+ width: numberSchema,
135
+ height: numberSchema
136
+ });
137
+ export const agoraRtcVideoEncoderConfigurationSchema = z.object({
138
+ dimensions: AgoraRtcDimensions,
139
+ frameRate: numberSchema,
140
+ bitrate: numberSchema
141
+ });
142
+ // Stream Config Schemas
143
+ export const fcrStreamJoinConfig = z.object({
144
+ videoEncoderConfig: agoraRtcVideoEncoderConfigurationSchema.optional(),
145
+ videoSourceId: stringSchema.optional(),
146
+ audioSourceId: stringSchema.optional(),
147
+ streamName: stringSchema.optional(),
148
+ streamType: fcrMediaStreamTypeSchema,
149
+ videoSourceType: fcrVideoSourceTypeSchema,
150
+ audioSourceType: fcrAudioSourceTypeSchema,
151
+ audioSourceState: fcrMediaSourceStateSchema.optional(),
152
+ videoSourceState: fcrMediaSourceStateSchema.optional()
153
+ });
154
+ export const fcrRoomJoinOptionsSchema = z.object({
155
+ userName: stringSchema,
156
+ userRole: fcrUserRoleSchema,
157
+ userProperties: stringKeyUnknownValueSchema.optional(),
158
+ roomToken: stringSchema,
159
+ streamLatency: fcrLatencyLevelTypeSchema,
160
+ streamEncryptionConfig: agoraRtcEncryptionConfig.optional(),
161
+ createStreamConfigs: z.array(fcrStreamJoinConfig),
162
+ password: stringSchema.optional(),
163
+ platform: numberSchema.optional(),
164
+ avatar: stringSchema.optional()
165
+ });
166
+ // Other Schemas
167
+ export const fcrRenderConfigSchema = z.object({
168
+ renderMode: fcrRenderModeSchema,
169
+ isMirror: booleanSchema
170
+ });
171
+ export const fcrGroupUpdateOptionsSchema = z.object({
172
+ groupId: stringSchema,
173
+ groupName: stringSchema
174
+ });
175
+ export const fcrRoomJoinOptionsWithTicketSchema = z.object({
176
+ ticket: stringSchema.optional()
177
+ }).merge(fcrRoomJoinOptionsSchema);
178
+ export const fcrMediaStreamCreateConfigSchema = z.object({
179
+ streamName: stringSchema,
180
+ streamType: fcrMediaStreamTypeSchema,
181
+ videoSourceType: fcrVideoSourceTypeSchema,
182
+ audioSourceType: fcrAudioSourceTypeSchema,
183
+ ownerId: stringSchema,
184
+ videoSourceId: stringSchema,
185
+ audioSourceId: stringSchema,
186
+ generateToken: booleanSchema.optional()
187
+ });
188
+ export const fcrStreamBindConfigSchema = z.object({
189
+ streamId: stringSchema,
190
+ videoSourceId: stringSchema.optional(),
191
+ audioSourceId: stringSchema.optional()
192
+ });
193
+ // Array Collection Schemas
194
+ export const fcrScreenStreamCreateConfigSchema = z.object({
195
+ streamType: fcrMediaStreamTypeSchema,
196
+ audioDeviceName: stringSchema.optional(),
197
+ videoSourceId: stringSchema.optional(),
198
+ audioSourceId: stringSchema.optional()
199
+ });
200
+ export const fcrScreenStreamCreateConfigSize = z.object({
201
+ width: numberSchema,
202
+ height: numberSchema
203
+ });
204
+ export const fcrSizeSchema = z.object({
205
+ width: numberSchema,
206
+ height: numberSchema
207
+ }).optional();
208
+ export const fcrGroupCreateConfigArraySchema = z.array(fcrGroupCreateConfigSchema);
209
+ export const fcrGroupUpdateOptionsArraySchema = z.array(fcrGroupUpdateOptionsSchema);
210
+ export const fcrLocalStreamCreateArrayConfigSchema = z.array(fcrMediaStreamCreateConfigSchema);
211
+ export const fcrInterpreterUsersParamsArraySchema = z.array(fcrInterpreterUsersParamsSchema);
212
+ export const fcrStreamBindConfigArrySchema = z.array(fcrStreamBindConfigSchema);
213
+ export const fcrUpdateStreamPrivilegeScopeSchema = z.object({
214
+ videoSourceType: fcrStreamPrivilegeVideoSourceTypeSchema.optional(),
215
+ audioSourceType: fcrStreamPrivilegeAudioSourceTypeSchema.optional(),
216
+ targetRoleType: z.array(fcrUserRoleSchema),
217
+ targetRoleTypeIsInclude: booleanSchema
218
+ });
219
+ export const fcrUpdateStreamCustomSchema = z.custom(obj => {
220
+ const hasBothInSelf = Object.keys(obj).includes('videoPrivilege') && Object.keys(obj).includes('audioPrivilege');
221
+ if (hasBothInSelf) {
222
+ return true;
223
+ }
224
+ return Object.values(obj).some(value => {
225
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
226
+ return Object.keys(value).includes('videoPrivilege') && Object.keys(value).includes('audioPrivilege');
227
+ }
228
+ return false;
229
+ });
230
+ });
231
+ export const fcrMobileDeviceIdOrNameSchema = z.string().optional();