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 @@
1
+ export {};
package/lib-es/type.js ADDED
@@ -0,0 +1,222 @@
1
+ // 基础导入类型(集中管理第三方依赖类型别名)
2
+
3
+ // 内部枚举与基础类型导入
4
+
5
+ import { FcrUserRole } from './room-control/user-control/type';
6
+
7
+ // 模块类型导出(按功能模块分组)
8
+ // 聊天连接模块
9
+
10
+ import { getRtcPresetParameters } from './utilities/parameters';
11
+
12
+ // 第三方类型别名(统一前缀避免冲突)
13
+ export { AgoraRtcAiDenoiseLevel as FcrAiDenoiseLevel, AgoraRtcAudioSourceType as FcrAudioSourceType, AgoraRtcCapability as FcrCapability, AgoraRteConnectionState as FcrConnectionState, AgoraRtcMediaSourceState as FcrMediaSourceState, AgoraRteRegion as FcrRegion, AgoraRteRoomConnectorType as FcrRoomConnectorType, AgoraRteScreenCaptureType as FcrScreenCaptureType, AgoraRteLatencyLevel as FcrStreamLatencyLevel, AgoraRteStreamPrivilegeAudioSourceType as FcrStreamPrivilegeAudioSourceType, AgoraRteStreamPrivilegeOperation as FcrStreamPrivilegeOperation, AgoraRteStreamPrivilegeVideoSourceType as FcrStreamPrivilegeVideoSourceType, AgoraRteMediaStreamType as FcrStreamType, AgoraRteUserUpdatedReason as FcrUserUpdatedReason, AgoraRteVideoOrientation as FcrVideoOrientation, AgoraRtcRenderMode as FcrVideoRenderMode, AgoraRtcVideoSourceType as FcrVideoSourceType, AgoraRtcVideoStreamType as FcrVideoStreamType, registerPlugin } from './imports';
14
+ import { FcrDualVideoStreamConfig } from './utilities/dual-video-stream-config';
15
+ import { FcrVideoEncoderConfig } from './utilities/video-encoder-config';
16
+ // 基础类型别名(简化常用类型引用)
17
+ export { FcrDualVideoStreamConfig };
18
+
19
+ // 媒体控制模块
20
+
21
+ // 监控控制模块
22
+
23
+ // 点对点会话模块
24
+
25
+ // 房间控制模块 - 能力控制
26
+ export { FcrAbility } from './room-control/ability-control/type';
27
+ // 房间控制模块 - 聊天室控制
28
+ export { FcrChatRoomConnectionState, FcrChatRoomMessageType } from './room-control/chatroom-control/type';
29
+ // 房间控制模块 - 翻译控制
30
+ export { FcrInterpreterActionType, FcrLanguage } from './room-control/interpreter-control/types';
31
+
32
+ // 房间控制模块 - 权限控制
33
+
34
+ export { FcrChatPermissionType, FcrOperatePermissionType, FcrPermissionAction, FcrPrivilegeUserRole, FcrPrivilegeUserRoleToStringMap, FcrPrivilegeUserStringToRoleMap, FcrSecurityAction, FcrWatermarkPermissionState } from './room-control/privilege-control/type';
35
+
36
+ // 房间控制模块 - 连接器控制
37
+ export { FcrIPConnectorSessionType, FcrRoomConnectorPhoneRegion, FcrRoomConnectorSessionReason, FcrRoomConnectorSessionState } from './room-control/room-connector-control/type';
38
+
39
+ // 房间控制模块 - 房间会话
40
+
41
+ // 房间控制模块 - 共享控制
42
+ export { FcrScreenSharingState, FcrWhiteboardState } from './room-control/sharing-control/type';
43
+
44
+ // 房间控制模块 - 流控制
45
+
46
+ // 房间控制模块 - 用户控制
47
+ export { FcrUserKickedOutType, FcrUserLeftReason, FcrUserRole } from './room-control/user-control/type';
48
+
49
+ // 房间控制模块 - 白板标注控制
50
+
51
+ // 房间控制模块 - 白板控制
52
+
53
+ // 房间路由模块
54
+
55
+ // 服务相关类型
56
+
57
+ export { FcrVideoEncoderConfig };
58
+
59
+ // 核心引擎类型扩展
60
+
61
+ // 房间相关核心类型
62
+ export let FcrRoomState = /*#__PURE__*/function (FcrRoomState) {
63
+ FcrRoomState[FcrRoomState["Initialized"] = 0] = "Initialized";
64
+ FcrRoomState[FcrRoomState["Started"] = 1] = "Started";
65
+ FcrRoomState[FcrRoomState["Ended"] = 2] = "Ended";
66
+ FcrRoomState[FcrRoomState["Closed"] = 3] = "Closed";
67
+ return FcrRoomState;
68
+ }({});
69
+ export let FcrRecordingState = /*#__PURE__*/function (FcrRecordingState) {
70
+ FcrRecordingState[FcrRecordingState["Starting"] = 1] = "Starting";
71
+ FcrRecordingState[FcrRecordingState["Started"] = 2] = "Started";
72
+ FcrRecordingState[FcrRecordingState["Paused"] = 3] = "Paused";
73
+ FcrRecordingState[FcrRecordingState["Stopped"] = 4] = "Stopped";
74
+ return FcrRecordingState;
75
+ }({});
76
+
77
+ /** 房间基本信息 */
78
+
79
+ /** 平台类型枚举 */
80
+ export let FcrPlatform = /*#__PURE__*/function (FcrPlatform) {
81
+ FcrPlatform[FcrPlatform["UNSUPPORTED"] = -1] = "UNSUPPORTED";
82
+ FcrPlatform[FcrPlatform["WEB_DESKTOP"] = 1] = "WEB_DESKTOP";
83
+ FcrPlatform[FcrPlatform["MACOS"] = 2] = "MACOS";
84
+ FcrPlatform[FcrPlatform["WINDOWS"] = 3] = "WINDOWS";
85
+ FcrPlatform[FcrPlatform["IOS"] = 4] = "IOS";
86
+ FcrPlatform[FcrPlatform["ANDROID"] = 5] = "ANDROID";
87
+ FcrPlatform[FcrPlatform["WEB_MOBILE"] = 6] = "WEB_MOBILE";
88
+ FcrPlatform[FcrPlatform["HARMONY"] = 7] = "HARMONY";
89
+ FcrPlatform[FcrPlatform["CONNECTOR_PSTN"] = 101] = "CONNECTOR_PSTN";
90
+ FcrPlatform[FcrPlatform["CONNECTOR_SIP"] = 102] = "CONNECTOR_SIP";
91
+ FcrPlatform[FcrPlatform["CONNECTOR_H323"] = 103] = "CONNECTOR_H323";
92
+ return FcrPlatform;
93
+ }({});
94
+
95
+ /** 用户信息类型 */
96
+
97
+ /** 流信息类型 */
98
+
99
+ /** 房间日程安排 */
100
+
101
+ /** 录制信息 */
102
+
103
+ // 群组相关类型
104
+
105
+ // 群组事件类型(统一事件格式)
106
+
107
+ // 房间路由事件
108
+
109
+ // 会话相关类型
110
+
111
+ // 媒体设备相关类型
112
+
113
+ // 性能与网络相关类型
114
+
115
+ // 云端录制配置
116
+ export let FcrCloudRecordingAudioProfile = /*#__PURE__*/function (FcrCloudRecordingAudioProfile) {
117
+ FcrCloudRecordingAudioProfile[FcrCloudRecordingAudioProfile["DEFAULT"] = 0] = "DEFAULT";
118
+ // mono 单声道 48khz 48kbps
119
+ FcrCloudRecordingAudioProfile[FcrCloudRecordingAudioProfile["MONO_48KHZ_128KBPS"] = 1] = "MONO_48KHZ_128KBPS";
120
+ // mono 单声道 48khz 128kbps
121
+ FcrCloudRecordingAudioProfile[FcrCloudRecordingAudioProfile["STEREO_48KHZ_192KBPS"] = 2] = "STEREO_48KHZ_192KBPS"; // stereo 立体声 48khz 192kbps
122
+ return FcrCloudRecordingAudioProfile;
123
+ }({});
124
+ export const FcrUserRoleToStringMap = {
125
+ [FcrUserRole.HOST]: 'host',
126
+ [FcrUserRole.COHOST]: 'cohost',
127
+ [FcrUserRole.PARTICIPANT]: 'participant',
128
+ [FcrUserRole.AUDIENCE]: 'audience',
129
+ [FcrUserRole.OBSERVER]: 'observer',
130
+ [FcrUserRole.ROBOT]: 'robot'
131
+ };
132
+ export const FcrUserStringToRoleMap = {
133
+ host: FcrUserRole.HOST,
134
+ cohost: FcrUserRole.COHOST,
135
+ participant: FcrUserRole.PARTICIPANT,
136
+ audience: FcrUserRole.AUDIENCE,
137
+ observer: FcrUserRole.OBSERVER,
138
+ robot: FcrUserRole.ROBOT
139
+ };
140
+ export let FcrReturnCode = /*#__PURE__*/function (FcrReturnCode) {
141
+ FcrReturnCode[FcrReturnCode["UNDEFINED"] = -1] = "UNDEFINED";
142
+ FcrReturnCode[FcrReturnCode["SUCCESS"] = 0] = "SUCCESS";
143
+ return FcrReturnCode;
144
+ }({});
145
+
146
+ // 直播相关类型
147
+ export let FcrLiveStreamingLayoutType = /*#__PURE__*/function (FcrLiveStreamingLayoutType) {
148
+ FcrLiveStreamingLayoutType[FcrLiveStreamingLayoutType["GALLERY"] = 1] = "GALLERY";
149
+ // 画廊模式
150
+ FcrLiveStreamingLayoutType[FcrLiveStreamingLayoutType["SPEAKER"] = 2] = "SPEAKER"; // 主讲模式
151
+ return FcrLiveStreamingLayoutType;
152
+ }({});
153
+ export let FcrLiveStreamingState = /*#__PURE__*/function (FcrLiveStreamingState) {
154
+ FcrLiveStreamingState[FcrLiveStreamingState["STARTING"] = 1] = "STARTING";
155
+ FcrLiveStreamingState[FcrLiveStreamingState["STARTED"] = 2] = "STARTED";
156
+ FcrLiveStreamingState[FcrLiveStreamingState["STOPPED"] = 3] = "STOPPED";
157
+ return FcrLiveStreamingState;
158
+ }({});
159
+ export let RoomMessageKey = /*#__PURE__*/function (RoomMessageKey) {
160
+ RoomMessageKey["USER_WAITING_ROOM_JOINED"] = "USER_WAITING_ROOM_JOINED";
161
+ return RoomMessageKey;
162
+ }({});
163
+ export { FcrDeviceType } from './media-control/type';
164
+ export { FcrLineType } from './room-control/type';
165
+ export { FcrError } from './utilities/error';
166
+ export let FcrStreamState = /*#__PURE__*/function (FcrStreamState) {
167
+ FcrStreamState[FcrStreamState["UNPUBLISH"] = 0] = "UNPUBLISH";
168
+ FcrStreamState[FcrStreamState["PUBLISH"] = 1] = "PUBLISH";
169
+ return FcrStreamState;
170
+ }({});
171
+ export { FcrBoardShape, FcrBoardToolType } from './room-control/whiteboard-control-v2/enum';
172
+ /** 引擎配置类 */
173
+ export class FcrCoreEngineConfig {
174
+ /** 应用唯一标识 */
175
+
176
+ /** 身份验证令牌 */
177
+
178
+ /** 用户唯一标识 */
179
+
180
+ /** 服务区域 */
181
+
182
+ /** 双摄像头视频流配置 */
183
+
184
+ /** 双屏幕视频流配置 */
185
+
186
+ /** 额外参数配置 */
187
+
188
+ constructor(params) {
189
+ this.appId = params.appId;
190
+ this.token = params.token;
191
+ this.userId = params.userId;
192
+ this.region = params.region;
193
+ this.dualCameraVideoStreamConfig = params.dualCameraVideoStreamConfig;
194
+ this.dualScreenVideoStreamConfig = params.dualScreenVideoStreamConfig;
195
+ this.parameters = params.parameters;
196
+ this._prependInternalParameters();
197
+ }
198
+ static createDefaultConfig(appId, token, region, userId, parameters) {
199
+ return new FcrCoreEngineConfig({
200
+ appId,
201
+ token,
202
+ userId,
203
+ region,
204
+ dualCameraVideoStreamConfig: FcrDualVideoStreamConfig.createDefaultCameraConfig(),
205
+ dualScreenVideoStreamConfig: FcrDualVideoStreamConfig.createDefaultScreenConfig(),
206
+ parameters
207
+ });
208
+ }
209
+ _prependInternalParameters() {
210
+ const rtcPresetParameters = getRtcPresetParameters();
211
+ if (!this.parameters) {
212
+ this.parameters = {
213
+ rtc: rtcPresetParameters
214
+ };
215
+ } else if (!this.parameters.rtc) {
216
+ this.parameters.rtc = rtcPresetParameters;
217
+ } else {
218
+ // 将内部参数插入到数组前列
219
+ this.parameters.rtc.unshift(...rtcPresetParameters);
220
+ }
221
+ }
222
+ }
@@ -0,0 +1,54 @@
1
+ import "core-js/modules/web.dom-exception.stack.js";
2
+ import { retryAttempt, to } from '../imports';
3
+ /**
4
+ * Creates an abortable retry operation that can be cancelled at any time.
5
+ *
6
+ * The handler function will be retried up to `retriesMax` times if it fails.
7
+ * The operation can be cancelled by calling the returned abort function,
8
+ * which will cause the promise to reject with an AbortError.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const [abort, promise] = abortableRetry(async (signal) => {
13
+ * await asyncFunction1();
14
+ * // Check if aborted after each async operation
15
+ * signal.throwIfAborted();
16
+ *
17
+ * await asyncFunction2();
18
+ * signal.throwIfAborted();
19
+ *
20
+ * return result;
21
+ * }, { retriesMax: 10 });
22
+ *
23
+ * // Cancel the operation at any time
24
+ * setTimeout(() => abort(), 5000);
25
+ *
26
+ * const [err, result] = await promise;
27
+ * if (err?.name === 'AbortError') {
28
+ * console.log('Operation was cancelled');
29
+ * }
30
+ * ```
31
+ *
32
+ * @param handler - Async function that receives an AbortSignal.
33
+ * Should call `signal.throwIfAborted()` periodically to check for cancellation.
34
+ * @param options - Retry configuration
35
+ * @returns Tuple of [abort function, result promise]. The promise resolves to [error, result].
36
+ */
37
+ export const abortableRetry = (handler, options) => {
38
+ const abortController = new AbortController();
39
+ const promise = to(retryAttempt(async () => {
40
+ abortController.signal.throwIfAborted();
41
+ const result = await handler(abortController.signal);
42
+ abortController.signal.throwIfAborted();
43
+ return result;
44
+ }, [], {
45
+ retriesMax: options.retriesMax
46
+ }).fail(async options => {
47
+ if (abortController.signal.aborted) {
48
+ throw new DOMException('Operation aborted', 'AbortError');
49
+ }
50
+ await options.timeFn();
51
+ return true;
52
+ }).exec());
53
+ return [() => abortController.abort(), promise];
54
+ };
@@ -0,0 +1 @@
1
+ export const CMD_PEER_MESSAGE = 101;
@@ -0,0 +1,64 @@
1
+ import "core-js/modules/es.array.push.js";
2
+ export const iterateMap = (map, processors) => {
3
+ const onFilter = processors?.onFilter || (() => true);
4
+ const {
5
+ onMap,
6
+ onReduce
7
+ } = processors || {};
8
+ const list = [];
9
+ let prev = undefined;
10
+ for (const [k, v] of map.entries()) {
11
+ if (onFilter(k, v)) {
12
+ if (onMap) list.push(onMap(k, v));
13
+ if (onReduce) prev = onReduce(prev, k, v);
14
+ }
15
+ }
16
+ return {
17
+ list,
18
+ prev
19
+ };
20
+ };
21
+ export const iterateSet = (map, processors) => {
22
+ const onFilter = processors?.onFilter || (() => true);
23
+ const {
24
+ onMap,
25
+ onReduce
26
+ } = processors || {};
27
+ const list = [];
28
+ let prev = undefined;
29
+ for (const item of map.values()) {
30
+ if (onFilter(item)) {
31
+ if (onMap) list.push(onMap(item));
32
+ if (onReduce) prev = onReduce(prev, item);
33
+ }
34
+ }
35
+ return {
36
+ list,
37
+ prev
38
+ };
39
+ };
40
+
41
+ /**
42
+ * expand a key-value map to a structure
43
+ * .e.g. { 'a.b.c': 1 } => { a: { b: { c: 1 } } }
44
+ * @param kvMap
45
+ */
46
+ export const convertToStructure = kvMap => {
47
+ const result = {};
48
+ for (const key in kvMap) {
49
+ const keys = key.split('.');
50
+ let temp = result;
51
+ for (let i = 0; i < keys.length; i++) {
52
+ const k = keys[i];
53
+ if (i === keys.length - 1) {
54
+ temp[k] = kvMap[key];
55
+ } else {
56
+ if (!temp[k]) {
57
+ temp[k] = {};
58
+ }
59
+ temp = temp[k];
60
+ }
61
+ }
62
+ }
63
+ return result;
64
+ };
@@ -0,0 +1,19 @@
1
+ import { FcrVideoEncoderConfig } from './video-encoder-config';
2
+ export let FcrDualVideoStreamConfig;
3
+ (function (_FcrDualVideoStreamConfig) {
4
+ function createDefaultCameraConfig() {
5
+ return {
6
+ highVideoEncoderConfig: FcrVideoEncoderConfig.createDefaultHighCameraConfig(),
7
+ lowVideoEncoderConfig: FcrVideoEncoderConfig.createDefaultLowCameraConfig(),
8
+ enableDualStreamMode: true
9
+ };
10
+ }
11
+ _FcrDualVideoStreamConfig.createDefaultCameraConfig = createDefaultCameraConfig;
12
+ function createDefaultScreenConfig() {
13
+ return {
14
+ highVideoEncoderConfig: FcrVideoEncoderConfig.createDefaultClarityScreenConfig(),
15
+ enableDualStreamMode: false
16
+ };
17
+ }
18
+ _FcrDualVideoStreamConfig.createDefaultScreenConfig = createDefaultScreenConfig;
19
+ })(FcrDualVideoStreamConfig || (FcrDualVideoStreamConfig = {}));
@@ -0,0 +1,224 @@
1
+ /**
2
+ * 通用错误处理辅助工具
3
+ *
4
+ * 提供统一的错误创建和处理机制,支持实例化配置
5
+ */
6
+
7
+ import { DetailErrorCode, ErrorModuleCode } from '../imports';
8
+ import { generateFcrCoreClientError } from './error';
9
+
10
+ /**
11
+ * 控制器类型枚举
12
+ */
13
+ export let ControllerType = /*#__PURE__*/function (ControllerType) {
14
+ ControllerType["USER"] = "user";
15
+ ControllerType["STREAM"] = "stream";
16
+ ControllerType["ROOM_SESSION"] = "room session";
17
+ ControllerType["CHAT_ROOM"] = "chat room";
18
+ ControllerType["PRIVILEGE"] = "privilege";
19
+ ControllerType["ROOM_CONNECTOR"] = "room connector";
20
+ ControllerType["ABILITY"] = "ability";
21
+ ControllerType["SHARING"] = "sharing";
22
+ ControllerType["WHITEBOARD"] = "whiteboard";
23
+ ControllerType["MONITOR"] = "monitor";
24
+ ControllerType["MEDIA"] = "media";
25
+ ControllerType["STT"] = "stt";
26
+ return ControllerType;
27
+ }({});
28
+
29
+ /**
30
+ * 错误处理配置接口
31
+ */
32
+
33
+ /**
34
+ * 错误处理助手类 - 支持实例化配置
35
+ */
36
+ export class FcrErrorHelper {
37
+ constructor(config = {}) {
38
+ this.config = {
39
+ defaultModuleCode: ErrorModuleCode.FCR_ROOM,
40
+ enableDetailedMessages: true,
41
+ logPrefix: 'FCR',
42
+ autoLog: false,
43
+ ...config
44
+ };
45
+ }
46
+ /**
47
+ * 生成控制器未初始化错误
48
+ * @param controllerType 控制器类型
49
+ * @param moduleCode 模块错误码
50
+ * @returns FcrError
51
+ */
52
+ createControllerNotInitializedError(controllerType, moduleCode) {
53
+ const module = moduleCode ?? this.config.defaultModuleCode;
54
+ const message = this.config.enableDetailedMessages ? `[${this.config.logPrefix}] The ${controllerType} controller is not initialized, please join the room first` : `${controllerType} controller not initialized`;
55
+ const error = generateFcrCoreClientError(module, DetailErrorCode.NOT_JOINED_ROOM, message);
56
+ if (this.config.autoLog) {
57
+ console.error(`${this.config.logPrefix}: ${message}`);
58
+ }
59
+ return error;
60
+ }
61
+
62
+ /**
63
+ * 生成操作冲突错误
64
+ * @param operation 操作名称
65
+ * @param reason 冲突原因
66
+ * @param moduleCode 模块错误码
67
+ * @returns FcrError
68
+ */
69
+ createOperationConflictError(operation, reason, moduleCode) {
70
+ const module = moduleCode ?? this.config.defaultModuleCode;
71
+ const message = this.config.enableDetailedMessages ? `[${this.config.logPrefix}] Failed to ${operation}: ${reason}` : `${operation} failed: ${reason}`;
72
+ const error = generateFcrCoreClientError(module, DetailErrorCode.JOIN_CONFLICT, message);
73
+ if (this.config.autoLog) {
74
+ console.error(`${this.config.logPrefix}: ${message}`);
75
+ }
76
+ return error;
77
+ }
78
+
79
+ /**
80
+ * 生成操作取消错误
81
+ * @param operation 操作名称
82
+ * @param moduleCode 模块错误码
83
+ * @returns FcrError
84
+ */
85
+ createOperationCanceledError(operation, moduleCode) {
86
+ const module = moduleCode ?? this.config.defaultModuleCode;
87
+ const message = this.config.enableDetailedMessages ? `[${this.config.logPrefix}] ${operation} operation has been cancelled` : `${operation} cancelled`;
88
+ const error = generateFcrCoreClientError(module, DetailErrorCode.NOT_JOINED_ROOM, message);
89
+ if (this.config.autoLog) {
90
+ console.error(`${this.config.logPrefix}: ${message}`);
91
+ }
92
+ return error;
93
+ }
94
+
95
+ /**
96
+ * 生成消息发送错误
97
+ * @param originalError 原始错误
98
+ * @param moduleCode 模块错误码
99
+ * @returns FcrError
100
+ */
101
+ createSendMessageError(originalError, moduleCode) {
102
+ const module = moduleCode ?? this.config.defaultModuleCode;
103
+ const message = this.config.enableDetailedMessages ? `[${this.config.logPrefix}] Send message failed: ${originalError.message}` : 'send message failed';
104
+ const error = generateFcrCoreClientError(module, DetailErrorCode.UNDEFINED_ERROR, message);
105
+ if (this.config.autoLog) {
106
+ console.error(`${this.config.logPrefix}: ${message}`, originalError);
107
+ }
108
+ return error;
109
+ }
110
+
111
+ /**
112
+ * 生成通用操作错误
113
+ * @param operation 操作类型
114
+ * @param originalError 原始错误
115
+ * @param moduleCode 模块错误码
116
+ * @returns FcrError
117
+ */
118
+ createOperationError(operation, originalError, moduleCode) {
119
+ const module = moduleCode ?? this.config.defaultModuleCode;
120
+ const message = this.config.enableDetailedMessages ? `[${this.config.logPrefix}] ${operation} failed${originalError ? `: ${originalError.message}` : ''}` : `${operation} failed`;
121
+ const error = generateFcrCoreClientError(module, DetailErrorCode.NOT_JOINED_ROOM, message);
122
+ if (this.config.autoLog) {
123
+ console.error(`${this.config.logPrefix}: ${message}`, originalError);
124
+ }
125
+ return error;
126
+ }
127
+
128
+ /**
129
+ * 生成网络请求相关错误
130
+ * @param message 错误消息
131
+ * @param moduleCode 模块错误码
132
+ * @returns FcrError
133
+ */
134
+ createNetworkError(message, moduleCode) {
135
+ const module = moduleCode ?? this.config.defaultModuleCode;
136
+ const formattedMessage = this.config.enableDetailedMessages ? `[${this.config.logPrefix}] Network error: ${message}` : message;
137
+ const error = generateFcrCoreClientError(module, DetailErrorCode.LOCAL_HTTP_REQUEST_FAILED, formattedMessage);
138
+ if (this.config.autoLog) {
139
+ console.error(`${this.config.logPrefix}: ${formattedMessage}`);
140
+ }
141
+ return error;
142
+ }
143
+
144
+ /**
145
+ * 生成参数无效错误
146
+ * @param paramName 参数名
147
+ * @param reason 无效原因
148
+ * @param moduleCode 模块错误码
149
+ * @returns FcrError
150
+ */
151
+ createInvalidParamsError(paramName, reason, moduleCode) {
152
+ const module = moduleCode ?? this.config.defaultModuleCode;
153
+ const message = this.config.enableDetailedMessages ? `[${this.config.logPrefix}] Invalid parameter '${paramName}': ${reason}` : `Invalid parameter '${paramName}': ${reason}`;
154
+ const error = generateFcrCoreClientError(module, DetailErrorCode.INVALID_PARAMS, message);
155
+ if (this.config.autoLog) {
156
+ console.error(`${this.config.logPrefix}: ${message}`);
157
+ }
158
+ return error;
159
+ }
160
+
161
+ /**
162
+ * 生成房间加入冲突错误的便捷方法
163
+ */
164
+ createJoinConflictError(isAlreadyJoined) {
165
+ const reason = isAlreadyJoined ? 'the room has been joined' : 'the previous join operation is not completed';
166
+ return this.createOperationConflictError('join the room', reason);
167
+ }
168
+
169
+ /**
170
+ * 静态工厂方法 - 创建默认实例
171
+ */
172
+ static createDefault() {
173
+ return new FcrErrorHelper();
174
+ }
175
+
176
+ /**
177
+ * 为房间控制创建专用实例
178
+ */
179
+ static forRoomControl() {
180
+ return new FcrErrorHelper({
181
+ defaultModuleCode: ErrorModuleCode.FCR_ROOM,
182
+ logPrefix: 'RoomControl',
183
+ enableDetailedMessages: true
184
+ });
185
+ }
186
+
187
+ /**
188
+ * 为引擎创建专用实例
189
+ */
190
+ static forEngine() {
191
+ return new FcrErrorHelper({
192
+ defaultModuleCode: ErrorModuleCode.FCR_ENGINE,
193
+ logPrefix: 'Engine',
194
+ enableDetailedMessages: true
195
+ });
196
+ }
197
+
198
+ /**
199
+ * 为直播创建专用实例
200
+ */
201
+ static forLiveStreaming() {
202
+ return new FcrErrorHelper({
203
+ defaultModuleCode: ErrorModuleCode.FCR_ROOM_LIVE_STREAMING,
204
+ logPrefix: 'LiveStreaming',
205
+ enableDetailedMessages: true
206
+ });
207
+ }
208
+ }
209
+
210
+ /**
211
+ * 预配置的错误处理器实例
212
+ */
213
+
214
+ // 默认实例 - 用于通用错误处理
215
+ export const defaultErrorHelper = FcrErrorHelper.createDefault();
216
+
217
+ // 房间控制专用实例 - 用于房间相关错误
218
+ export const roomControlErrorHelper = FcrErrorHelper.forRoomControl();
219
+
220
+ // 引擎专用实例 - 用于引擎相关错误
221
+ export const engineErrorHelper = FcrErrorHelper.forEngine();
222
+
223
+ // 直播专用实例 - 用于直播相关错误
224
+ export const liveStreamingErrorHelper = FcrErrorHelper.forLiveStreaming();
@@ -0,0 +1,43 @@
1
+ import { DetailErrorCode, ErrorServiceType } from '../imports';
2
+ import { padStart, AgoraRestfulClientError, FcrError } from '../imports';
3
+ export { FcrError } from '../imports';
4
+
5
+ // Export aliases for compatibility
6
+ export { DetailErrorCode as FcrErrorCode, ErrorModuleCode as FcrErrorModuleCode } from '../imports';
7
+
8
+ // helpers
9
+ export const generateFcrCoreClientError = (module, code, message, origin) => {
10
+ return FcrError.create(ErrorServiceType.FCR_CLIENT, module, code, message, origin);
11
+ };
12
+ export const generateFcrCoreServerError = (code, message, origin) => {
13
+ const errorCode = Number(`${ErrorServiceType.FCR_SERVER}${padStart(String(code), 8, '0')}`);
14
+ const error = new FcrError({
15
+ message: message,
16
+ code: errorCode
17
+ });
18
+ return error;
19
+ };
20
+
21
+ // TODO: i don't know
22
+ export const handleRequestError = async (action, errorModuleCode, errorMessage) => {
23
+ try {
24
+ return await action();
25
+ } catch (e) {
26
+ if (e instanceof AgoraRestfulClientError) {
27
+ throw generateFcrCoreServerError(e.serviceCode ?? -1, e.message, e);
28
+ }
29
+ const error = e;
30
+ throw generateFcrCoreClientError(errorModuleCode, DetailErrorCode.UNDEFINED_ERROR, errorMessage ?? error.message, error);
31
+ }
32
+ };
33
+
34
+ // 720410100 // 房间已销毁
35
+ // 720404100 // 房间不存在
36
+ // 732403100 // 无加入权限,如:房间已锁定
37
+ // 732403101 // 房间不存在或密码错误
38
+ // 100050051 // ap 探测失败
39
+ // 300000010 // 加入rtc频道超时了(rtc私有化)
40
+ // 400000010 // 加入web rtc频道超时了(rtc私有化)
41
+ // 730403100 // 被永久踢出房间
42
+ // error codes that cannot be retried when joining a room
43
+ export const ERROR_CODES_NOT_RETRYABLE_WHEN_JOINING_ROOM = [720410100, 720404100, 732403100, 732403101, 100050051, 300000010, 400000010, 730403100];