fcr-core 3.10.5 → 3.10.6

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/lib/engine/index.js +108 -102
  2. package/lib/imports.js +0 -1
  3. package/lib/index.d.ts +1 -1
  4. package/lib/media-control/desktop.js +13 -22
  5. package/lib/media-control/mobile.js +13 -22
  6. package/lib/monitor-control/index.js +7 -17
  7. package/lib/peer-session/index.js +121 -120
  8. package/lib/plugins/chat/chatroom.js +96 -119
  9. package/lib/plugins/chat/connector.js +48 -69
  10. package/lib/remote-control/index.js +216 -194
  11. package/lib/room-control/ability-control/index.js +10 -20
  12. package/lib/room-control/application-control/index.js +75 -82
  13. package/lib/room-control/group-control/index.js +30 -31
  14. package/lib/room-control/helpers/board-init-info-helper.js +10 -16
  15. package/lib/room-control/helpers/validation-helper.js +1 -1
  16. package/lib/room-control/index.js +51 -70
  17. package/lib/room-control/infinity-room-control/index.js +19 -27
  18. package/lib/room-control/interpreter-control/index.js +65 -77
  19. package/lib/room-control/interpreter-control/room.js +4 -6
  20. package/lib/room-control/join-before-host-waitingroom-control/index.js +4 -6
  21. package/lib/room-control/mainroom-control/index.js +25 -37
  22. package/lib/room-control/privilege-control/helper.js +13 -28
  23. package/lib/room-control/privilege-control/index.js +28 -36
  24. package/lib/room-control/room-connector-control/index.js +47 -52
  25. package/lib/room-control/room-control-factory.js +12 -10
  26. package/lib/room-control/room-session/index.js +74 -77
  27. package/lib/room-control/shared-cache.js +56 -63
  28. package/lib/room-control/sharing-control/index.js +57 -65
  29. package/lib/room-control/stream-control/index.js +238 -203
  30. package/lib/room-control/stream-control/type.d.ts +11 -1
  31. package/lib/room-control/stt-control/de-compress-gzip.js +0 -10
  32. package/lib/room-control/stt-control/index.js +86 -93
  33. package/lib/room-control/user-control/index.js +155 -162
  34. package/lib/room-control/waitingroom-control/index.js +9 -18
  35. package/lib/room-control/whiteboard-control/utils.js +2 -4
  36. package/lib/room-control/whiteboard-control-v1/board-subwindow.js +1 -2
  37. package/lib/room-control/whiteboard-control-v1/board-window.js +103 -120
  38. package/lib/room-control/whiteboard-control-v1/factory.js +4 -7
  39. package/lib/room-control/whiteboard-control-v1/index.js +67 -80
  40. package/lib/room-control/whiteboard-control-v1/mount-manager.js +2 -4
  41. package/lib/room-control/whiteboard-control-v1/utils.js +14 -17
  42. package/lib/room-control/whiteboard-control-v2/annotation-control/control.js +10 -14
  43. package/lib/room-control/whiteboard-control-v2/annotation-control/factory.js +8 -17
  44. package/lib/room-control/whiteboard-control-v2/base/index.js +53 -61
  45. package/lib/room-control/whiteboard-control-v2/base/main-window.js +30 -39
  46. package/lib/room-control/whiteboard-control-v2/utils.js +10 -10
  47. package/lib/room-control/whiteboard-control-v2/whiteboard-control/control.js +33 -45
  48. package/lib/room-control/whiteboard-control-v2/whiteboard-control/factory.js +11 -27
  49. package/lib/room-control/widget-control/index.js +33 -43
  50. package/lib/room-router/index.js +58 -66
  51. package/lib/service/api.js +548 -446
  52. package/lib/struct.js +2 -5
  53. package/lib/type.d.ts +1 -1
  54. package/lib/utilities/abortable-retry.js +0 -3
  55. package/lib/utilities/collection.js +11 -15
  56. package/lib/utilities/error-helpers.js +27 -34
  57. package/lib/utilities/error.js +3 -4
  58. package/lib/utilities/join-helper.js +31 -37
  59. package/lib/utilities/logger.js +5 -8
  60. package/lib/utilities/parameters.js +10 -21
  61. package/lib/utilities/retry-helpers.js +0 -1
  62. package/lib/utilities/stream.js +11 -16
  63. package/lib/utilities/user.js +3 -4
  64. package/lib/utilities/validate-params.js +1 -1
  65. package/lib/utilities/video-encoder-config.js +5 -10
  66. package/lib-es/engine/index.js +108 -102
  67. package/lib-es/media-control/desktop.js +13 -22
  68. package/lib-es/media-control/mobile.js +13 -22
  69. package/lib-es/monitor-control/index.js +7 -16
  70. package/lib-es/peer-session/index.js +121 -120
  71. package/lib-es/plugins/chat/chatroom.js +95 -118
  72. package/lib-es/plugins/chat/connector.js +47 -67
  73. package/lib-es/remote-control/index.js +216 -194
  74. package/lib-es/room-control/ability-control/index.js +10 -19
  75. package/lib-es/room-control/application-control/index.js +75 -81
  76. package/lib-es/room-control/group-control/index.js +30 -31
  77. package/lib-es/room-control/helpers/board-init-info-helper.js +10 -15
  78. package/lib-es/room-control/helpers/validation-helper.js +1 -1
  79. package/lib-es/room-control/index.js +51 -69
  80. package/lib-es/room-control/infinity-room-control/index.js +19 -26
  81. package/lib-es/room-control/interpreter-control/index.js +65 -77
  82. package/lib-es/room-control/interpreter-control/room.js +4 -5
  83. package/lib-es/room-control/join-before-host-waitingroom-control/index.js +4 -5
  84. package/lib-es/room-control/mainroom-control/index.js +25 -37
  85. package/lib-es/room-control/privilege-control/helper.js +13 -27
  86. package/lib-es/room-control/privilege-control/index.js +28 -36
  87. package/lib-es/room-control/room-connector-control/index.js +47 -52
  88. package/lib-es/room-control/room-control-factory.js +12 -10
  89. package/lib-es/room-control/room-session/index.js +74 -77
  90. package/lib-es/room-control/shared-cache.js +56 -62
  91. package/lib-es/room-control/sharing-control/index.js +57 -64
  92. package/lib-es/room-control/stream-control/index.js +240 -205
  93. package/lib-es/room-control/stt-control/de-compress-gzip.js +0 -10
  94. package/lib-es/room-control/stt-control/index.js +86 -93
  95. package/lib-es/room-control/user-control/index.js +155 -162
  96. package/lib-es/room-control/waitingroom-control/index.js +9 -18
  97. package/lib-es/room-control/whiteboard-control/utils.js +2 -4
  98. package/lib-es/room-control/whiteboard-control-v1/board-subwindow.js +1 -2
  99. package/lib-es/room-control/whiteboard-control-v1/board-window.js +103 -120
  100. package/lib-es/room-control/whiteboard-control-v1/factory.js +4 -6
  101. package/lib-es/room-control/whiteboard-control-v1/index.js +67 -80
  102. package/lib-es/room-control/whiteboard-control-v1/mount-manager.js +2 -3
  103. package/lib-es/room-control/whiteboard-control-v1/utils.js +14 -17
  104. package/lib-es/room-control/whiteboard-control-v2/annotation-control/control.js +10 -13
  105. package/lib-es/room-control/whiteboard-control-v2/annotation-control/factory.js +8 -16
  106. package/lib-es/room-control/whiteboard-control-v2/base/index.js +53 -60
  107. package/lib-es/room-control/whiteboard-control-v2/base/main-window.js +30 -39
  108. package/lib-es/room-control/whiteboard-control-v2/utils.js +10 -10
  109. package/lib-es/room-control/whiteboard-control-v2/whiteboard-control/control.js +33 -45
  110. package/lib-es/room-control/whiteboard-control-v2/whiteboard-control/factory.js +11 -26
  111. package/lib-es/room-control/widget-control/index.js +33 -42
  112. package/lib-es/room-router/index.js +58 -66
  113. package/lib-es/service/api.js +548 -445
  114. package/lib-es/struct.js +2 -4
  115. package/lib-es/utilities/abortable-retry.js +0 -3
  116. package/lib-es/utilities/collection.js +11 -14
  117. package/lib-es/utilities/error-helpers.js +26 -33
  118. package/lib-es/utilities/error.js +3 -4
  119. package/lib-es/utilities/join-helper.js +29 -36
  120. package/lib-es/utilities/logger.js +5 -7
  121. package/lib-es/utilities/parameters.js +10 -21
  122. package/lib-es/utilities/retry-helpers.js +0 -1
  123. package/lib-es/utilities/stream.js +11 -15
  124. package/lib-es/utilities/user.js +3 -4
  125. package/lib-es/utilities/validate-params.js +1 -1
  126. package/lib-es/utilities/video-encoder-config.js +5 -10
  127. package/package.json +4 -4
package/lib-es/struct.js CHANGED
@@ -1,11 +1,10 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import "core-js/modules/es.array.unshift.js";
3
- import "core-js/modules/web.dom-collections.iterator.js";
4
1
  import { FcrDualVideoStreamConfig } from './utilities/dual-video-stream-config';
5
2
  import { getRtcPresetParameters } from './utilities/parameters';
6
3
 
7
4
  /** 引擎配置类 */
8
5
  export class FcrCoreEngineConfig {
6
+ __json_serializable__ = true;
7
+
9
8
  /** 应用唯一标识 */
10
9
 
11
10
  /** 身份验证令牌 */
@@ -21,7 +20,6 @@ export class FcrCoreEngineConfig {
21
20
  /** 额外参数配置 */
22
21
 
23
22
  constructor(params) {
24
- _defineProperty(this, "__json_serializable__", true);
25
23
  this.appId = params.appId;
26
24
  this.token = params.token;
27
25
  this.userId = params.userId;
@@ -1,7 +1,4 @@
1
- import "core-js/modules/es.regexp.exec.js";
2
- import "core-js/modules/web.dom-exception.constructor.js";
3
1
  import "core-js/modules/web.dom-exception.stack.js";
4
- import "core-js/modules/web.dom-exception.to-string-tag.js";
5
2
  import { retryAttempt, to } from '../imports';
6
3
  /**
7
4
  * Creates an abortable retry operation that can be cancelled at any time.
@@ -1,17 +1,13 @@
1
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
1
  import "core-js/modules/es.array.push.js";
3
- import "core-js/modules/web.dom-collections.iterator.js";
4
2
  export const iterateMap = (map, processors) => {
5
- const onFilter = (processors === null || processors === void 0 ? void 0 : processors.onFilter) || (() => true);
6
- const _ref = processors || {},
7
- onMap = _ref.onMap,
8
- onReduce = _ref.onReduce;
3
+ const onFilter = processors?.onFilter || (() => true);
4
+ const {
5
+ onMap,
6
+ onReduce
7
+ } = processors || {};
9
8
  const list = [];
10
9
  let prev = undefined;
11
- for (const _ref2 of map.entries()) {
12
- var _ref3 = _slicedToArray(_ref2, 2);
13
- const k = _ref3[0];
14
- const v = _ref3[1];
10
+ for (const [k, v] of map.entries()) {
15
11
  if (onFilter(k, v)) {
16
12
  if (onMap) list.push(onMap(k, v));
17
13
  if (onReduce) prev = onReduce(prev, k, v);
@@ -23,10 +19,11 @@ export const iterateMap = (map, processors) => {
23
19
  };
24
20
  };
25
21
  export const iterateSet = (map, processors) => {
26
- const onFilter = (processors === null || processors === void 0 ? void 0 : processors.onFilter) || (() => true);
27
- const _ref4 = processors || {},
28
- onMap = _ref4.onMap,
29
- onReduce = _ref4.onReduce;
22
+ const onFilter = processors?.onFilter || (() => true);
23
+ const {
24
+ onMap,
25
+ onReduce
26
+ } = processors || {};
30
27
  const list = [];
31
28
  let prev = undefined;
32
29
  for (const item of map.values()) {
@@ -1,10 +1,3 @@
1
- import "core-js/modules/es.array.push.js";
2
- import "core-js/modules/esnext.iterator.constructor.js";
3
- import "core-js/modules/esnext.iterator.filter.js";
4
- import "core-js/modules/esnext.iterator.for-each.js";
5
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
6
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
7
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8
1
  /**
9
2
  * 通用错误处理辅助工具
10
3
  *
@@ -44,14 +37,14 @@ export let ControllerType = /*#__PURE__*/function (ControllerType) {
44
37
  * 错误处理助手类 - 支持实例化配置
45
38
  */
46
39
  export class FcrErrorHelper {
47
- constructor() {
48
- let config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
49
- this.config = _objectSpread({
40
+ constructor(config = {}) {
41
+ this.config = {
50
42
  defaultModuleCode: ErrorModuleCode.FCR_ROOM,
51
43
  enableDetailedMessages: true,
52
44
  logPrefix: 'FCR',
53
- autoLog: false
54
- }, config);
45
+ autoLog: false,
46
+ ...config
47
+ };
55
48
  }
56
49
  /**
57
50
  * 生成控制器未初始化错误
@@ -60,11 +53,11 @@ export class FcrErrorHelper {
60
53
  * @returns FcrError
61
54
  */
62
55
  createControllerNotInitializedError(controllerType, moduleCode) {
63
- const module = moduleCode !== null && moduleCode !== void 0 ? moduleCode : this.config.defaultModuleCode;
64
- const message = this.config.enableDetailedMessages ? "[".concat(this.config.logPrefix, "] The ").concat(controllerType, " controller is not initialized, please join the room first") : "".concat(controllerType, " controller not initialized");
56
+ const module = moduleCode ?? this.config.defaultModuleCode;
57
+ const message = this.config.enableDetailedMessages ? `[${this.config.logPrefix}] The ${controllerType} controller is not initialized, please join the room first` : `${controllerType} controller not initialized`;
65
58
  const error = generateFcrCoreClientError(module, DetailErrorCode.NOT_JOINED_ROOM, message);
66
59
  if (this.config.autoLog) {
67
- console.error("".concat(this.config.logPrefix, ": ").concat(message));
60
+ console.error(`${this.config.logPrefix}: ${message}`);
68
61
  }
69
62
  return error;
70
63
  }
@@ -77,11 +70,11 @@ export class FcrErrorHelper {
77
70
  * @returns FcrError
78
71
  */
79
72
  createOperationConflictError(operation, reason, moduleCode) {
80
- const module = moduleCode !== null && moduleCode !== void 0 ? moduleCode : this.config.defaultModuleCode;
81
- const message = this.config.enableDetailedMessages ? "[".concat(this.config.logPrefix, "] Failed to ").concat(operation, ": ").concat(reason) : "".concat(operation, " failed: ").concat(reason);
73
+ const module = moduleCode ?? this.config.defaultModuleCode;
74
+ const message = this.config.enableDetailedMessages ? `[${this.config.logPrefix}] Failed to ${operation}: ${reason}` : `${operation} failed: ${reason}`;
82
75
  const error = generateFcrCoreClientError(module, DetailErrorCode.JOIN_CONFLICT, message);
83
76
  if (this.config.autoLog) {
84
- console.error("".concat(this.config.logPrefix, ": ").concat(message));
77
+ console.error(`${this.config.logPrefix}: ${message}`);
85
78
  }
86
79
  return error;
87
80
  }
@@ -93,11 +86,11 @@ export class FcrErrorHelper {
93
86
  * @returns FcrError
94
87
  */
95
88
  createOperationCanceledError(operation, moduleCode) {
96
- const module = moduleCode !== null && moduleCode !== void 0 ? moduleCode : this.config.defaultModuleCode;
97
- const message = this.config.enableDetailedMessages ? "[".concat(this.config.logPrefix, "] ").concat(operation, " operation has been cancelled") : "".concat(operation, " cancelled");
89
+ const module = moduleCode ?? this.config.defaultModuleCode;
90
+ const message = this.config.enableDetailedMessages ? `[${this.config.logPrefix}] ${operation} operation has been cancelled` : `${operation} cancelled`;
98
91
  const error = generateFcrCoreClientError(module, DetailErrorCode.NOT_JOINED_ROOM, message);
99
92
  if (this.config.autoLog) {
100
- console.error("".concat(this.config.logPrefix, ": ").concat(message));
93
+ console.error(`${this.config.logPrefix}: ${message}`);
101
94
  }
102
95
  return error;
103
96
  }
@@ -109,11 +102,11 @@ export class FcrErrorHelper {
109
102
  * @returns FcrError
110
103
  */
111
104
  createSendMessageError(originalError, moduleCode) {
112
- const module = moduleCode !== null && moduleCode !== void 0 ? moduleCode : this.config.defaultModuleCode;
113
- const message = this.config.enableDetailedMessages ? "[".concat(this.config.logPrefix, "] Send message failed: ").concat(originalError.message) : 'send message failed';
105
+ const module = moduleCode ?? this.config.defaultModuleCode;
106
+ const message = this.config.enableDetailedMessages ? `[${this.config.logPrefix}] Send message failed: ${originalError.message}` : 'send message failed';
114
107
  const error = generateFcrCoreClientError(module, DetailErrorCode.UNDEFINED_ERROR, message);
115
108
  if (this.config.autoLog) {
116
- console.error("".concat(this.config.logPrefix, ": ").concat(message), originalError);
109
+ console.error(`${this.config.logPrefix}: ${message}`, originalError);
117
110
  }
118
111
  return error;
119
112
  }
@@ -126,11 +119,11 @@ export class FcrErrorHelper {
126
119
  * @returns FcrError
127
120
  */
128
121
  createOperationError(operation, originalError, moduleCode) {
129
- const module = moduleCode !== null && moduleCode !== void 0 ? moduleCode : this.config.defaultModuleCode;
130
- const message = this.config.enableDetailedMessages ? "[".concat(this.config.logPrefix, "] ").concat(operation, " failed").concat(originalError ? ": ".concat(originalError.message) : '') : "".concat(operation, " failed");
122
+ const module = moduleCode ?? this.config.defaultModuleCode;
123
+ const message = this.config.enableDetailedMessages ? `[${this.config.logPrefix}] ${operation} failed${originalError ? `: ${originalError.message}` : ''}` : `${operation} failed`;
131
124
  const error = generateFcrCoreClientError(module, DetailErrorCode.NOT_JOINED_ROOM, message);
132
125
  if (this.config.autoLog) {
133
- console.error("".concat(this.config.logPrefix, ": ").concat(message), originalError);
126
+ console.error(`${this.config.logPrefix}: ${message}`, originalError);
134
127
  }
135
128
  return error;
136
129
  }
@@ -142,11 +135,11 @@ export class FcrErrorHelper {
142
135
  * @returns FcrError
143
136
  */
144
137
  createNetworkError(message, moduleCode) {
145
- const module = moduleCode !== null && moduleCode !== void 0 ? moduleCode : this.config.defaultModuleCode;
146
- const formattedMessage = this.config.enableDetailedMessages ? "[".concat(this.config.logPrefix, "] Network error: ").concat(message) : message;
138
+ const module = moduleCode ?? this.config.defaultModuleCode;
139
+ const formattedMessage = this.config.enableDetailedMessages ? `[${this.config.logPrefix}] Network error: ${message}` : message;
147
140
  const error = generateFcrCoreClientError(module, DetailErrorCode.LOCAL_HTTP_REQUEST_FAILED, formattedMessage);
148
141
  if (this.config.autoLog) {
149
- console.error("".concat(this.config.logPrefix, ": ").concat(formattedMessage));
142
+ console.error(`${this.config.logPrefix}: ${formattedMessage}`);
150
143
  }
151
144
  return error;
152
145
  }
@@ -159,11 +152,11 @@ export class FcrErrorHelper {
159
152
  * @returns FcrError
160
153
  */
161
154
  createInvalidParamsError(paramName, reason, moduleCode) {
162
- const module = moduleCode !== null && moduleCode !== void 0 ? moduleCode : this.config.defaultModuleCode;
163
- const message = this.config.enableDetailedMessages ? "[".concat(this.config.logPrefix, "] Invalid parameter '").concat(paramName, "': ").concat(reason) : "Invalid parameter '".concat(paramName, "': ").concat(reason);
155
+ const module = moduleCode ?? this.config.defaultModuleCode;
156
+ const message = this.config.enableDetailedMessages ? `[${this.config.logPrefix}] Invalid parameter '${paramName}': ${reason}` : `Invalid parameter '${paramName}': ${reason}`;
164
157
  const error = generateFcrCoreClientError(module, DetailErrorCode.INVALID_PARAMS, message);
165
158
  if (this.config.autoLog) {
166
- console.error("".concat(this.config.logPrefix, ": ").concat(message));
159
+ console.error(`${this.config.logPrefix}: ${message}`);
167
160
  }
168
161
  return error;
169
162
  }
@@ -10,7 +10,7 @@ export const generateFcrCoreClientError = (module, code, message, cause) => {
10
10
  return FcrError.create(ErrorServiceType.FCR_CLIENT, module, code, message, cause);
11
11
  };
12
12
  export const generateFcrCoreServerError = (code, message) => {
13
- const errorCode = Number("".concat(ErrorServiceType.FCR_SERVER).concat(padStart(String(code), 8, '0')));
13
+ const errorCode = Number(`${ErrorServiceType.FCR_SERVER}${padStart(String(code), 8, '0')}`);
14
14
  const error = new FcrError({
15
15
  message: message,
16
16
  code: errorCode
@@ -24,11 +24,10 @@ export const handleRequestError = async (action, errorModuleCode, errorMessage)
24
24
  return await action();
25
25
  } catch (e) {
26
26
  if (e instanceof AgoraRestfulClientError) {
27
- var _e$serviceCode;
28
- throw generateFcrCoreServerError((_e$serviceCode = e.serviceCode) !== null && _e$serviceCode !== void 0 ? _e$serviceCode : -1, e.message);
27
+ throw generateFcrCoreServerError(e.serviceCode ?? -1, e.message);
29
28
  }
30
29
  const error = e;
31
- throw generateFcrCoreClientError(errorModuleCode, DetailErrorCode.UNDEFINED_ERROR, errorMessage !== null && errorMessage !== void 0 ? errorMessage : error.message);
30
+ throw generateFcrCoreClientError(errorModuleCode, DetailErrorCode.UNDEFINED_ERROR, errorMessage ?? error.message);
32
31
  }
33
32
  };
34
33
 
@@ -1,12 +1,5 @@
1
- import "core-js/modules/es.array.push.js";
2
- import "core-js/modules/esnext.iterator.filter.js";
3
- import "core-js/modules/esnext.iterator.for-each.js";
4
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
- import "core-js/modules/es.regexp.exec.js";
6
1
  import "core-js/modules/esnext.iterator.constructor.js";
7
2
  import "core-js/modules/esnext.iterator.map.js";
8
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
9
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
10
3
  /**
11
4
  * 房间加入辅助工具
12
5
  *
@@ -30,15 +23,14 @@ import { ROOM_CONTROL_CONSTANTS } from '../room-control/helpers/constants';
30
23
  * @param logPrefix 日志前缀
31
24
  * @returns 是否继续重试
32
25
  */
33
- export async function handleJoinRetryFailure(error, waitBeforeRetry, attemptCount, canRetryFn, onAborted) {
34
- let logPrefix = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'join room';
35
- onAborted === null || onAborted === void 0 || onAborted();
26
+ export async function handleJoinRetryFailure(error, waitBeforeRetry, attemptCount, canRetryFn, onAborted, logPrefix = 'join room') {
27
+ onAborted?.();
36
28
  if (!canRetryFn(error)) {
37
29
  throw error;
38
30
  }
39
31
 
40
32
  // 记录重试信息
41
- console.warn("Retry attempt ".concat(attemptCount + 1, " to ").concat(logPrefix, ": ").concat(error.message));
33
+ console.warn(`Retry attempt ${attemptCount + 1} to ${logPrefix}: ${error.message}`);
42
34
  await waitBeforeRetry();
43
35
  return true;
44
36
  }
@@ -69,31 +61,33 @@ export class FcrJoinHelper {
69
61
  * @returns CheckIn参数对象
70
62
  */
71
63
  static buildCheckInParams(options, userId, roomId, extraParams) {
72
- var _options$platform, _options$createStream;
73
- return _objectSpread(_objectSpread({
64
+ return {
74
65
  userName: options.userName,
75
66
  userId,
76
67
  userRole: FcrUserRoleToStringMap[options.userRole],
77
68
  userProperties: options.userProperties,
78
69
  roomId,
79
- platform: (_options$platform = options.platform) !== null && _options$platform !== void 0 ? _options$platform : getPlatform(),
80
- streams: (_options$createStream = options.createStreamConfigs) === null || _options$createStream === void 0 ? void 0 : _options$createStream.map(s => _objectSpread(_objectSpread({
70
+ platform: options.platform ?? getPlatform(),
71
+ streams: options.createStreamConfigs?.map(s => ({
81
72
  videoSourceUuid: s.videoSourceId,
82
73
  audioSourceUuid: s.audioSourceId,
83
- streamName: s.streamName
84
- }, convertStreamTypeToPublishState(s.streamType)), {}, {
74
+ streamName: s.streamName,
75
+ ...convertStreamTypeToPublishState(s.streamType),
85
76
  videoSourceType: s.videoSourceType,
86
77
  audioSourceType: s.audioSourceType,
87
78
  audioSourceState: s.audioSourceState,
88
79
  videoSourceState: s.videoSourceState
89
80
  })),
90
81
  version: getVersion(),
91
- password: options.password
92
- }, (extraParams === null || extraParams === void 0 ? void 0 : extraParams.bypass) !== undefined && {
93
- bypass: extraParams.bypass
94
- }), (extraParams === null || extraParams === void 0 ? void 0 : extraParams.avatar) !== undefined && {
95
- avatar: extraParams.avatar
96
- });
82
+ password: options.password,
83
+ // 只有在提供了额外参数时才添加
84
+ ...(extraParams?.bypass !== undefined && {
85
+ bypass: extraParams.bypass
86
+ }),
87
+ ...(extraParams?.avatar !== undefined && {
88
+ avatar: extraParams.avatar
89
+ })
90
+ };
97
91
  }
98
92
 
99
93
  /**
@@ -118,8 +112,7 @@ export class FcrJoinHelper {
118
112
  * @param useInternalApi 是否使用 checkInInternal API(默认 true)
119
113
  * @returns CheckIn响应数据
120
114
  */
121
- async performCheckIn(options, extraParams) {
122
- let useInternalApi = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
115
+ async performCheckIn(options, extraParams, useInternalApi = true) {
123
116
  const checkInParams = this._buildCheckInParams(options, extraParams);
124
117
  const apiCall = useInternalApi ? () => this._api.checkInInternal(checkInParams) : () => this._api.checkIn(checkInParams);
125
118
  const errorMessage = useInternalApi ? 'check in internal failed' : 'check in failed';
@@ -142,11 +135,11 @@ export class FcrJoinHelper {
142
135
  */
143
136
  async joinWithCheckIn(options, onJoinAborted) {
144
137
  await retryAttempt(async () => {
145
- var _options$roomToken;
146
138
  // 1. 执行 CheckIn(单次调用,无内部重试)
147
- const _await$this$performCh = await this.performCheckIn(options),
148
- data = _await$this$performCh.data,
149
- ts = _await$this$performCh.ts;
139
+ const {
140
+ data,
141
+ ts
142
+ } = await this.performCheckIn(options);
150
143
 
151
144
  // 2. 检查是否中止
152
145
  if (onJoinAborted) {
@@ -154,7 +147,7 @@ export class FcrJoinHelper {
154
147
  }
155
148
 
156
149
  // 3. 使用 CheckIn 结果加入房间
157
- await this._joinScene(options.streamLatency, options.streamEncryptionConfig, data, ts, (_options$roomToken = options.roomToken) !== null && _options$roomToken !== void 0 ? _options$roomToken : '', undefined);
150
+ await this._joinScene(options.streamLatency, options.streamEncryptionConfig, data, ts, options.roomToken ?? '', undefined);
158
151
 
159
152
  // 4. 再次检查是否中止
160
153
  if (onJoinAborted) {
@@ -162,10 +155,11 @@ export class FcrJoinHelper {
162
155
  }
163
156
  }, [], {
164
157
  retriesMax: ROOM_CONTROL_CONSTANTS.MAX_JOIN_ATTEMPTS
165
- }).fail(async _ref => {
166
- let error = _ref.error,
167
- waitBeforeRetry = _ref.timeFn,
168
- attemptCount = _ref.currentRetry;
158
+ }).fail(async ({
159
+ error,
160
+ timeFn: waitBeforeRetry,
161
+ currentRetry: attemptCount
162
+ }) => {
169
163
  return handleJoinRetryFailure(error, waitBeforeRetry, attemptCount, canRetryJoinError, onJoinAborted, 'join room via CheckIn');
170
164
  }).exec();
171
165
  }
@@ -221,7 +215,6 @@ export class FcrJoinHelper {
221
215
  * @private
222
216
  */
223
217
  async _joinWithSnapshot(options, onJoinAborted) {
224
- var _options$roomToken2;
225
- await this._joinScene(options.streamLatency || FcrStreamLatencyLevel.ULTRA_LOW, options.streamEncryptionConfig, options.snapshot, options.timestamp, (_options$roomToken2 = options.roomToken) !== null && _options$roomToken2 !== void 0 ? _options$roomToken2 : '', onJoinAborted);
218
+ await this._joinScene(options.streamLatency || FcrStreamLatencyLevel.ULTRA_LOW, options.streamEncryptionConfig, options.snapshot, options.timestamp, options.roomToken ?? '', onJoinAborted);
226
219
  }
227
220
  }
@@ -1,10 +1,11 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import "core-js/modules/es.error.cause.js";
3
1
  import { LoggerManager } from '../imports';
4
2
  export class FcrCoreLoggerManagerHolder {
3
+ static instance = null;
4
+ static isDestroying = false;
5
+ static label = 'fcr-core';
5
6
  static initialize(opts) {
6
7
  if (this.instance && !this.isDestroying) {
7
- console.warn("".concat(this.label, " LoggerManager is already initialized. Reinitializing..."));
8
+ console.warn(`${this.label} LoggerManager is already initialized. Reinitializing...`);
8
9
  }
9
10
  this.destroy();
10
11
  this.instance = new LoggerManager({
@@ -14,7 +15,7 @@ export class FcrCoreLoggerManagerHolder {
14
15
  }
15
16
  static getInstance() {
16
17
  if (!this.instance) {
17
- throw new Error("LoggerManager is not initialized. Call ".concat(this.label, " LoggerManager.initialize() first."));
18
+ throw new Error(`LoggerManager is not initialized. Call ${this.label} LoggerManager.initialize() first.`);
18
19
  }
19
20
  return this.instance;
20
21
  }
@@ -42,9 +43,6 @@ export class FcrCoreLoggerManagerHolder {
42
43
  return this.instance !== null;
43
44
  }
44
45
  }
45
- _defineProperty(FcrCoreLoggerManagerHolder, "instance", null);
46
- _defineProperty(FcrCoreLoggerManagerHolder, "isDestroying", false);
47
- _defineProperty(FcrCoreLoggerManagerHolder, "label", 'fcr-core');
48
46
  export const getLogger = FcrCoreLoggerManagerHolder.getLogger.bind(FcrCoreLoggerManagerHolder);
49
47
  export const createLogger = FcrCoreLoggerManagerHolder.createLogger.bind(FcrCoreLoggerManagerHolder);
50
48
  export const generateLogObserver = FcrCoreLoggerManagerHolder.generateLogObserver.bind(FcrCoreLoggerManagerHolder);
@@ -22,7 +22,6 @@ import "core-js/modules/esnext.set.symmetric-difference.v2.js";
22
22
  import "core-js/modules/esnext.set.symmetric-difference.js";
23
23
  import "core-js/modules/esnext.set.union.v2.js";
24
24
  import "core-js/modules/esnext.set.union.js";
25
- import "core-js/modules/web.dom-collections.iterator.js";
26
25
  import { FcrApplicationPlatform, getPlatform, isBoolean, isNumber } from '../imports';
27
26
  const DEFAULT_LOG_FILE_SIZE = 512;
28
27
  /** RTC preset parameters configuration mapping table */
@@ -107,49 +106,40 @@ export const isTrueValue = value => {
107
106
  return value === 'true' || !!value;
108
107
  };
109
108
  export const getCoreIpList = parameters => {
110
- var _parameters$core;
111
- return parameters === null || parameters === void 0 || (_parameters$core = parameters.core) === null || _parameters$core === void 0 ? void 0 : _parameters$core.coreIpList;
109
+ return parameters?.core?.coreIpList;
112
110
  };
113
111
  export const getEasemobChatIpList = parameters => {
114
- var _parameters$core2;
115
- return parameters === null || parameters === void 0 || (_parameters$core2 = parameters.core) === null || _parameters$core2 === void 0 ? void 0 : _parameters$core2.easemobChatIpList;
112
+ return parameters?.core?.easemobChatIpList;
116
113
  };
117
114
  export const getEasemobRestIpList = parameters => {
118
- var _parameters$core3;
119
- return parameters === null || parameters === void 0 || (_parameters$core3 = parameters.core) === null || _parameters$core3 === void 0 ? void 0 : _parameters$core3.easemobRestIpList;
115
+ return parameters?.core?.easemobRestIpList;
120
116
  };
121
117
  export const getScribbleForgeIpList = parameters => {
122
- var _parameters$core4;
123
- return parameters === null || parameters === void 0 || (_parameters$core4 = parameters.core) === null || _parameters$core4 === void 0 ? void 0 : _parameters$core4.scribbleForgeIpList;
118
+ return parameters?.core?.scribbleForgeIpList;
124
119
  };
125
120
  export const isEndpointRegionDisabled = parameters => {
126
- var _parameters$core5;
127
- return isTrueValue(parameters === null || parameters === void 0 || (_parameters$core5 = parameters.core) === null || _parameters$core5 === void 0 ? void 0 : _parameters$core5.disableEndpointRegion);
121
+ return isTrueValue(parameters?.core?.disableEndpointRegion);
128
122
  };
129
123
  export const getNeedLogUpload = parameters => {
130
- var _parameters$core6;
131
- if (isBoolean(parameters === null || parameters === void 0 || (_parameters$core6 = parameters.core) === null || _parameters$core6 === void 0 ? void 0 : _parameters$core6.needLogUpload)) {
124
+ if (isBoolean(parameters?.core?.needLogUpload)) {
132
125
  return parameters.core.needLogUpload;
133
126
  }
134
127
  return true;
135
128
  };
136
129
  export const getCoreLogFileSize = parameters => {
137
- var _parameters$core7;
138
- if (!isNumber(parameters === null || parameters === void 0 || (_parameters$core7 = parameters.core) === null || _parameters$core7 === void 0 ? void 0 : _parameters$core7.coreLogFileSize)) {
130
+ if (!isNumber(parameters?.core?.coreLogFileSize)) {
139
131
  return DEFAULT_LOG_FILE_SIZE;
140
132
  }
141
133
  return parameters.core.coreLogFileSize;
142
134
  };
143
135
  export const getEasemobLogFileSize = parameters => {
144
- var _parameters$core8;
145
- if (!isNumber(parameters === null || parameters === void 0 || (_parameters$core8 = parameters.core) === null || _parameters$core8 === void 0 ? void 0 : _parameters$core8.easemobLogFileSize)) {
136
+ if (!isNumber(parameters?.core?.easemobLogFileSize)) {
146
137
  return DEFAULT_LOG_FILE_SIZE;
147
138
  }
148
139
  return parameters.core.easemobLogFileSize;
149
140
  };
150
141
  export const getNetlessLogFileSize = parameters => {
151
- var _parameters$core9;
152
- if (!isNumber(parameters === null || parameters === void 0 || (_parameters$core9 = parameters.core) === null || _parameters$core9 === void 0 ? void 0 : _parameters$core9.netlessLogFileSize)) {
142
+ if (!isNumber(parameters?.core?.netlessLogFileSize)) {
153
143
  return DEFAULT_LOG_FILE_SIZE;
154
144
  }
155
145
  return parameters.core.netlessLogFileSize;
@@ -157,9 +147,8 @@ export const getNetlessLogFileSize = parameters => {
157
147
  /** desktop platforms set */
158
148
  const DESKTOP_PLATFORMS = new Set([FcrApplicationPlatform.WINDOWS, FcrApplicationPlatform.MACOS]);
159
149
  export const getRtcPresetParameters = () => {
160
- var _RTC_PRESET_PARAMS_MA;
161
150
  const platform = getPlatform();
162
- const platformParams = (_RTC_PRESET_PARAMS_MA = RTC_PRESET_PARAMS_MAP[platform]) !== null && _RTC_PRESET_PARAMS_MA !== void 0 ? _RTC_PRESET_PARAMS_MA : [];
151
+ const platformParams = RTC_PRESET_PARAMS_MAP[platform] ?? [];
163
152
  const electronParams = ELECTRON_PLATFORMS.has(platform) ? ELECTRON_COMMON_PARAMS : [];
164
153
  const harmonyOrElectronParams = HARMONY_OR_ELECTRON_PLATFORMS.has(platform) ? HARMONY_OR_ELECTRON_COMMON_PARAMS : [];
165
154
  return [...platformParams, ...electronParams, ...harmonyOrElectronParams].map(p => JSON.stringify(p));
@@ -1,5 +1,4 @@
1
1
  import "core-js/modules/es.array.includes.js";
2
- import "core-js/modules/web.dom-collections.iterator.js";
3
2
  /**
4
3
  * 通用重试辅助工具
5
4
  *
@@ -1,22 +1,18 @@
1
- import "core-js/modules/es.array.push.js";
2
- import "core-js/modules/esnext.iterator.filter.js";
3
- import "core-js/modules/esnext.iterator.for-each.js";
4
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
1
  import "core-js/modules/esnext.iterator.constructor.js";
6
2
  import "core-js/modules/esnext.iterator.map.js";
7
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
9
3
  export const getStreamJoinConfig = stream => {
10
- return _objectSpread(_objectSpread({}, stream), {}, {
11
- videoSourceUuid: stream === null || stream === void 0 ? void 0 : stream.videoSourceId,
12
- audioSourceUuid: stream === null || stream === void 0 ? void 0 : stream.audioSourceId
13
- });
4
+ return {
5
+ ...stream,
6
+ videoSourceUuid: stream?.videoSourceId,
7
+ audioSourceUuid: stream?.audioSourceId
8
+ };
14
9
  };
15
10
  export const getStreamsJoinConfig = streams => {
16
- return streams === null || streams === void 0 ? void 0 : streams.map(stream => {
17
- return _objectSpread(_objectSpread({}, stream), {}, {
18
- videoSourceUuid: stream === null || stream === void 0 ? void 0 : stream.videoSourceId,
19
- audioSourceUuid: stream === null || stream === void 0 ? void 0 : stream.audioSourceId
20
- });
11
+ return streams?.map(stream => {
12
+ return {
13
+ ...stream,
14
+ videoSourceUuid: stream?.videoSourceId,
15
+ audioSourceUuid: stream?.audioSourceId
16
+ };
21
17
  });
22
18
  };
@@ -1,13 +1,12 @@
1
1
  import { FcrPlatform, FcrUserStringToRoleMap } from '../type';
2
2
  import { FcrPrivilegeUserRoleToStringMap, FcrPrivilegeUserStringToRoleMap } from '../room-control/privilege-control/type';
3
3
  export const convertRteUserToFcrUser = (user, cache) => {
4
- var _cache$getUserPlatfor, _cache$getUserAvatar;
5
4
  const userRole = FcrUserStringToRoleMap[user.userRole];
6
5
  if (!userRole) {
7
6
  return undefined;
8
7
  }
9
- let platform = (_cache$getUserPlatfor = cache.getUserPlatform(user.userId)) !== null && _cache$getUserPlatfor !== void 0 ? _cache$getUserPlatfor : FcrPlatform.UNSUPPORTED;
10
- const avatar = (_cache$getUserAvatar = cache.getUserAvatar(user.userId)) !== null && _cache$getUserAvatar !== void 0 ? _cache$getUserAvatar : '';
8
+ let platform = cache.getUserPlatform(user.userId) ?? FcrPlatform.UNSUPPORTED;
9
+ const avatar = cache.getUserAvatar(user.userId) ?? '';
11
10
  const isValidPlatform = platform in FcrPlatform;
12
11
  platform = isValidPlatform ? platform : FcrPlatform.UNSUPPORTED;
13
12
  return {
@@ -20,7 +19,7 @@ export const convertRteUserToFcrUser = (user, cache) => {
20
19
  };
21
20
  };
22
21
  export const checkFcrUserRole = user => {
23
- if (!(user !== null && user !== void 0 && user.userRole)) return;
22
+ if (!user?.userRole) return;
24
23
  return user;
25
24
  };
26
25
  export const convertStringPrivilegeRoleToFcrPrivilegeRole = role => {
@@ -2,7 +2,7 @@ import { DetailErrorCode } from '../imports';
2
2
  import { validateParams } from '../imports';
3
3
  import { generateFcrCoreClientError } from './error';
4
4
  export default validateParams(error => {
5
- const message = "invalid params: ".concat(error.message);
5
+ const message = `invalid params: ${error.message}`;
6
6
  const fcrErrorModuleCode = '00';
7
7
  return generateFcrCoreClientError(fcrErrorModuleCode, DetailErrorCode.INVALID_PARAMS, message);
8
8
  });
@@ -95,33 +95,28 @@ const SMOOTH_SCREEN_CONFIG_MAP = {
95
95
  export let FcrVideoEncoderConfig;
96
96
  (function (_FcrVideoEncoderConfig) {
97
97
  function createDefaultHighCameraConfig() {
98
- var _HIGH_CAMERA_CONFIG_M;
99
98
  const platform = getPlatform();
100
- return (_HIGH_CAMERA_CONFIG_M = HIGH_CAMERA_CONFIG_MAP[platform]) !== null && _HIGH_CAMERA_CONFIG_M !== void 0 ? _HIGH_CAMERA_CONFIG_M : COMMON_HIGH_CAMERA_CONFIG;
99
+ return HIGH_CAMERA_CONFIG_MAP[platform] ?? COMMON_HIGH_CAMERA_CONFIG;
101
100
  }
102
101
  _FcrVideoEncoderConfig.createDefaultHighCameraConfig = createDefaultHighCameraConfig;
103
102
  function createDefaultLowCameraConfig() {
104
- var _LOW_CAMERA_CONFIG_MA;
105
103
  const platform = getPlatform();
106
- return (_LOW_CAMERA_CONFIG_MA = LOW_CAMERA_CONFIG_MAP[platform]) !== null && _LOW_CAMERA_CONFIG_MA !== void 0 ? _LOW_CAMERA_CONFIG_MA : COMMON_LOW_CAMERA_CONFIG;
104
+ return LOW_CAMERA_CONFIG_MAP[platform] ?? COMMON_LOW_CAMERA_CONFIG;
107
105
  }
108
106
  _FcrVideoEncoderConfig.createDefaultLowCameraConfig = createDefaultLowCameraConfig;
109
107
  function createDefaultFullHighCameraConfig() {
110
- var _FULL_HIGH_CAMERA_CON;
111
108
  const platform = getPlatform();
112
- return (_FULL_HIGH_CAMERA_CON = FULL_HIGH_CAMERA_CONFIG_MAP[platform]) !== null && _FULL_HIGH_CAMERA_CON !== void 0 ? _FULL_HIGH_CAMERA_CON : COMMON_FULL_HIGH_CAMERA_CONFIG;
109
+ return FULL_HIGH_CAMERA_CONFIG_MAP[platform] ?? COMMON_FULL_HIGH_CAMERA_CONFIG;
113
110
  }
114
111
  _FcrVideoEncoderConfig.createDefaultFullHighCameraConfig = createDefaultFullHighCameraConfig;
115
112
  function createDefaultClarityScreenConfig() {
116
- var _CLARITY_SCREEN_CONFI;
117
113
  const platform = getPlatform();
118
- return (_CLARITY_SCREEN_CONFI = CLARITY_SCREEN_CONFIG_MAP[platform]) !== null && _CLARITY_SCREEN_CONFI !== void 0 ? _CLARITY_SCREEN_CONFI : COMMON_CLARITY_SCREEN_CONFIG;
114
+ return CLARITY_SCREEN_CONFIG_MAP[platform] ?? COMMON_CLARITY_SCREEN_CONFIG;
119
115
  }
120
116
  _FcrVideoEncoderConfig.createDefaultClarityScreenConfig = createDefaultClarityScreenConfig;
121
117
  function createDefaultSmoothScreenConfig() {
122
- var _SMOOTH_SCREEN_CONFIG;
123
118
  const platform = getPlatform();
124
- return (_SMOOTH_SCREEN_CONFIG = SMOOTH_SCREEN_CONFIG_MAP[platform]) !== null && _SMOOTH_SCREEN_CONFIG !== void 0 ? _SMOOTH_SCREEN_CONFIG : COMMON_SMOOTH_SCREEN_CONFIG;
119
+ return SMOOTH_SCREEN_CONFIG_MAP[platform] ?? COMMON_SMOOTH_SCREEN_CONFIG;
125
120
  }
126
121
  _FcrVideoEncoderConfig.createDefaultSmoothScreenConfig = createDefaultSmoothScreenConfig;
127
122
  })(FcrVideoEncoderConfig || (FcrVideoEncoderConfig = {}));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "fcr-core",
3
3
  "description": "Core APIs for building online scenes",
4
- "version": "3.10.5",
4
+ "version": "3.10.6",
5
5
  "module": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
7
7
  "files": [
@@ -41,7 +41,7 @@
41
41
  "@types/lodash": "^4.14.168",
42
42
  "@types/sinon": "^17.0.2",
43
43
  "@types/uuid": "^8.3.0",
44
- "agora-toolchain": "3.10.5",
44
+ "agora-toolchain": "3.10.6",
45
45
  "core-js": "^3.33.3",
46
46
  "decomment": "^0.9.5",
47
47
  "husky": "^9.0.11",
@@ -61,8 +61,8 @@
61
61
  "@netless/video-js-plugin": "^0.3.8",
62
62
  "@netless/white-snapshot": "^0.4.2",
63
63
  "@netless/window-manager": "^1.0.7-beta.6",
64
- "agora-foundation": "3.10.5",
65
- "agora-rte-sdk": "3.10.5",
64
+ "agora-foundation": "3.10.6",
65
+ "agora-rte-sdk": "3.10.6",
66
66
  "await-to-js": "^3.0.0",
67
67
  "dayjs": "^1.10.4",
68
68
  "easemob-websdk": "4.13.0",