fcr-core 3.4.5 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/lib/chat-connection/index.js +22 -39
  2. package/lib/engine/index.js +63 -74
  3. package/lib/imports.d.ts +14 -4
  4. package/lib/imports.js +130 -1
  5. package/lib/index.d.ts +3 -1
  6. package/lib/index.js +0 -6
  7. package/lib/media-control/desktop.js +6 -11
  8. package/lib/media-control/mobile.js +19 -18
  9. package/lib/media-control/type.d.ts +12 -7
  10. package/lib/media-control/type.js +8 -1
  11. package/lib/monitor-control/index.js +29 -0
  12. package/lib/monitor-control/type.d.ts +8 -1
  13. package/lib/peer-session/index.js +37 -47
  14. package/lib/peer-session/type.d.ts +2 -9
  15. package/lib/plugins/chatroom.js +217 -183
  16. package/lib/room-control/ability-control/index.d.ts +1 -0
  17. package/lib/room-control/ability-control/index.js +62 -0
  18. package/lib/room-control/ability-control/type.d.ts +9 -0
  19. package/lib/room-control/ability-control/type.js +11 -0
  20. package/lib/room-control/chatroom-control/type.d.ts +25 -23
  21. package/lib/room-control/group-control/index.js +14 -22
  22. package/lib/room-control/index.js +118 -146
  23. package/lib/room-control/interpreter-control/index.js +12 -17
  24. package/lib/room-control/interpreter-control/room.js +4 -6
  25. package/lib/room-control/interpreter-control/types.d.ts +2 -5
  26. package/lib/room-control/mainroom-control/index.js +26 -44
  27. package/lib/room-control/privilege-control/helper.js +5 -10
  28. package/lib/room-control/privilege-control/index.js +15 -21
  29. package/lib/room-control/privilege-control/type.d.ts +3 -9
  30. package/lib/room-control/privilege-control/type.js +1 -0
  31. package/lib/room-control/room-connector-control/index.js +16 -24
  32. package/lib/room-control/room-connector-control/type.d.ts +3 -9
  33. package/lib/room-control/room-session/index.js +39 -49
  34. package/lib/room-control/room-session/type.d.ts +4 -7
  35. package/lib/room-control/stream-control/index.js +143 -152
  36. package/lib/room-control/stream-control/type.d.ts +5 -6
  37. package/lib/room-control/type.d.ts +18 -14
  38. package/lib/room-control/type.js +6 -1
  39. package/lib/room-control/user-control/index.js +135 -138
  40. package/lib/room-control/user-control/type.d.ts +17 -3
  41. package/lib/room-control/user-control/type.js +10 -1
  42. package/lib/room-control/waitingroom-control/index.js +11 -16
  43. package/lib/room-control/whiteboard-control/board-subwindow.d.ts +6 -0
  44. package/lib/room-control/whiteboard-control/board-subwindow.js +25 -0
  45. package/lib/room-control/whiteboard-control/board-window.js +52 -57
  46. package/lib/room-control/whiteboard-control/enums.js +84 -0
  47. package/lib/room-control/whiteboard-control/index.js +25 -35
  48. package/lib/room-control/whiteboard-control/mount-manager.js +2 -4
  49. package/lib/room-control/whiteboard-control/types.d.ts +2 -5
  50. package/lib/room-control/whiteboard-control/utils.js +14 -17
  51. package/lib/room-control/whiteboard-control-v2/index.js +33 -43
  52. package/lib/room-control/whiteboard-control-v2/main-window.js +15 -23
  53. package/lib/schema.d.ts +990 -0
  54. package/lib/schema.js +283 -0
  55. package/lib/service/api.d.ts +10 -5
  56. package/lib/service/api.js +99 -90
  57. package/lib/type.d.ts +19 -48
  58. package/lib/type.js +47 -34
  59. package/lib/utilities/collection.js +2 -3
  60. package/lib/utilities/error.d.ts +3 -1
  61. package/lib/utilities/error.js +17 -8
  62. package/lib/utilities/logger.js +1 -2
  63. package/lib/utilities/parameters.js +4 -8
  64. package/lib/utilities/stream.js +12 -20
  65. package/lib/utilities/user.js +2 -1
  66. package/lib/utilities/validate-params.d.ts +2 -0
  67. package/lib/utilities/validate-params.js +13 -0
  68. package/package.json +4 -4
@@ -1,14 +1,7 @@
1
1
  "use strict";
2
2
 
3
- require("core-js/modules/es.symbol.description.js");
4
- require("core-js/modules/es.error.cause.js");
5
3
  require("core-js/modules/es.array.push.js");
6
- require("core-js/modules/esnext.async-iterator.filter.js");
7
- require("core-js/modules/esnext.async-iterator.for-each.js");
8
4
  require("core-js/modules/esnext.function.metadata.js");
9
- require("core-js/modules/esnext.iterator.constructor.js");
10
- require("core-js/modules/esnext.iterator.filter.js");
11
- require("core-js/modules/esnext.iterator.for-each.js");
12
5
  require("core-js/modules/esnext.map.delete-all.js");
13
6
  require("core-js/modules/esnext.map.emplace.js");
14
7
  require("core-js/modules/esnext.map.every.js");
@@ -24,39 +17,32 @@ require("core-js/modules/esnext.map.reduce.js");
24
17
  require("core-js/modules/esnext.map.some.js");
25
18
  require("core-js/modules/esnext.map.update.js");
26
19
  require("core-js/modules/esnext.symbol.metadata.js");
27
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
28
20
  Object.defineProperty(exports, "__esModule", {
29
21
  value: true
30
22
  });
31
23
  exports.FcrChatConnectionImpl = void 0;
32
- require("core-js/modules/es.json.stringify.js");
33
- require("core-js/modules/es.regexp.exec.js");
34
- require("core-js/modules/web.dom-collections.iterator.js");
35
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
36
24
  var _imports = require("../imports");
37
25
  var _type = require("./type");
38
26
  var _parameters = require("../utilities/parameters");
39
27
  var _config2 = require("./config");
40
28
  var _logger = require("../utilities/logger");
41
- var _FcrChatConnectionImpl;
42
29
  let _initProto;
43
- 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; }
44
- 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) { (0, _defineProperty2.default)(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; }
45
30
  function _applyDecs(e, t, r, n, o, a) { function i(e, t, r) { return function (n, o) { return r && r(n), e[t].call(n, o); }; } function c(e, t) { for (var r = 0; r < e.length; r++) e[r].call(t); return t; } function s(e, t, r, n) { if ("function" != typeof e && (n || void 0 !== e)) throw new TypeError(t + " must " + (r || "be") + " a function" + (n ? "" : " or undefined")); return e; } function applyDec(e, t, r, n, o, a, c, u, l, f, p, d, h) { function m(e) { if (!h(e)) throw new TypeError("Attempted to access private element on non-instance"); } var y, v = t[0], g = t[3], b = !u; if (!b) { r || Array.isArray(v) || (v = [v]); var w = {}, S = [], A = 3 === o ? "get" : 4 === o || d ? "set" : "value"; f ? (p || d ? w = { get: _setFunctionName(function () { return g(this); }, n, "get"), set: function (e) { t[4](this, e); } } : w[A] = g, p || _setFunctionName(w[A], n, 2 === o ? "" : A)) : p || (w = Object.getOwnPropertyDescriptor(e, n)); } for (var P = e, j = v.length - 1; j >= 0; j -= r ? 2 : 1) { var D = v[j], E = r ? v[j - 1] : void 0, I = {}, O = { kind: ["field", "accessor", "method", "getter", "setter", "class"][o], name: n, metadata: a, addInitializer: function (e, t) { if (e.v) throw Error("attempted to call addInitializer after decoration was finished"); s(t, "An initializer", "be", !0), c.push(t); }.bind(null, I) }; try { if (b) (y = s(D.call(E, P, O), "class decorators", "return")) && (P = y);else { var k, F; O.static = l, O.private = f, f ? 2 === o ? k = function (e) { return m(e), w.value; } : (o < 4 && (k = i(w, "get", m)), 3 !== o && (F = i(w, "set", m))) : (k = function (e) { return e[n]; }, (o < 2 || 4 === o) && (F = function (e, t) { e[n] = t; })); var N = O.access = { has: f ? h.bind() : function (e) { return n in e; } }; if (k && (N.get = k), F && (N.set = F), P = D.call(E, d ? { get: w.get, set: w.set } : w[A], O), d) { if ("object" == typeof P && P) (y = s(P.get, "accessor.get")) && (w.get = y), (y = s(P.set, "accessor.set")) && (w.set = y), (y = s(P.init, "accessor.init")) && S.push(y);else if (void 0 !== P) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); } else s(P, (p ? "field" : "method") + " decorators", "return") && (p ? S.push(P) : w[A] = P); } } finally { I.v = !0; } } return (p || d) && u.push(function (e, t) { for (var r = S.length - 1; r >= 0; r--) t = S[r].call(e, t); return t; }), p || b || (f ? d ? u.push(i(w, "get"), i(w, "set")) : u.push(2 === o ? w[A] : i.call.bind(w[A])) : Object.defineProperty(e, n, w)), P; } function u(e, t) { return Object.defineProperty(e, Symbol.metadata || Symbol.for("Symbol.metadata"), { configurable: !0, enumerable: !0, value: t }); } if (arguments.length >= 6) var l = a[Symbol.metadata || Symbol.for("Symbol.metadata")]; var f = Object.create(null == l ? null : l), p = function (e, t, r, n) { var o, a, i = [], s = function (t) { return _checkInRHS(t) === e; }, u = new Map(); function l(e) { e && i.push(c.bind(null, e)); } for (var f = 0; f < t.length; f++) { var p = t[f]; if (Array.isArray(p)) { var d = p[1], h = p[2], m = p.length > 3, y = 16 & d, v = !!(8 & d), g = 0 == (d &= 7), b = h + "/" + v; if (!g && !m) { var w = u.get(b); if (!0 === w || 3 === w && 4 !== d || 4 === w && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h); u.set(b, !(d > 2) || d); } applyDec(v ? e : e.prototype, p, y, m ? "#" + h : _toPropertyKey(h), d, n, v ? a = a || [] : o = o || [], i, v, m, g, 1 === d, v && m ? s : r); } } return l(o), l(a), i; }(e, t, o, f); return r.length || u(e, f), { e: p, get c() { var t = []; return r.length && [u(applyDec(e, [r], n, e.name, 5, f, t), f), c.bind(null, t, e)]; } }; }
46
31
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
47
32
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
48
33
  function _setFunctionName(e, t, n) { "symbol" == typeof t && (t = (t = t.description) ? "[" + t + "]" : ""); try { Object.defineProperty(e, "name", { configurable: !0, value: n ? n + " " + t : t }); } catch (e) {} return e; }
49
34
  function _checkInRHS(e) { if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? typeof e : "null")); return e; }
50
35
  class FcrChatConnectionImpl {
36
+ static #_ = (() => [_initProto] = _applyDecs(this, [[_logger.trace, 2, "login"], [_logger.trace, 2, "logout"], [_logger.trace, 2, "getConnectionState"], [_logger.trace, 2, "getConnectionInstance"]], []).e)();
37
+ logger = (() => (_initProto(this), (0, _imports.getLogger)()))();
38
+ _observable = (() => new _imports.AgoraObservable())();
39
+ _connectionState = (() => _type.FcrChatConnectionState.DISCONNECTED)();
40
+ _offlineListener = () => {
41
+ if (this._connectionState !== _type.FcrChatConnectionState.DISCONNECTED) {
42
+ this._setConnectionState(_type.FcrChatConnectionState.DISCONNECTED);
43
+ }
44
+ };
51
45
  constructor(_config, _api) {
52
- (0, _defineProperty2.default)(this, "logger", (_initProto(this), (0, _imports.getLogger)()));
53
- (0, _defineProperty2.default)(this, "_observable", new _imports.AgoraObservable());
54
- (0, _defineProperty2.default)(this, "_connectionState", _type.FcrChatConnectionState.DISCONNECTED);
55
- (0, _defineProperty2.default)(this, "_offlineListener", () => {
56
- if (this._connectionState !== _type.FcrChatConnectionState.DISCONNECTED) {
57
- this._setConnectionState(_type.FcrChatConnectionState.DISCONNECTED);
58
- }
59
- });
60
46
  this._config = _config;
61
47
  this._api = _api;
62
48
  }
@@ -70,9 +56,12 @@ class FcrChatConnectionImpl {
70
56
  await (0, _imports.to)((0, _imports.retryAttempt)(async () => {
71
57
  const tokenResult = await this._api.getUserToken(this._config.userId);
72
58
  this._initConfig = tokenResult;
73
- const connParams = _objectSpread(_objectSpread(_objectSpread({}, _config2.agoraChatConfig), privateConfig), {}, {
74
- appKey: tokenResult.appKey
75
- });
59
+ const connParams = {
60
+ ..._config2.agoraChatConfig,
61
+ ...privateConfig,
62
+ appKey: tokenResult.appKey,
63
+ autoReconnectNumMax: 99999
64
+ };
76
65
  _imports.EasemobChatSDK.logger.setConsoleLogVisibility(false);
77
66
  this._conn = new _imports.EasemobChatSDK.connection(connParams);
78
67
  await this._conn.open({
@@ -92,15 +81,14 @@ class FcrChatConnectionImpl {
92
81
  if (error instanceof _imports.AgoraRestfulClientError) {
93
82
  throw error;
94
83
  }
95
- this.logger.error("[ChatConnection] retry to login ChatConnection, ".concat(error.message, ",retry ").concat(currentRetry, " times"));
84
+ this.logger.error(`[ChatConnection] retry to login ChatConnection, ${error.message},retry ${currentRetry} times`);
96
85
  await timeFn();
97
86
  return true;
98
87
  }).exec());
99
88
  }
100
89
  _addEventListeners() {
101
- var _this$_conn;
102
90
  window.addEventListener('offline', this._offlineListener);
103
- (_this$_conn = this._conn) === null || _this$_conn === void 0 || _this$_conn.addEventHandler('connection', {
91
+ this._conn?.addEventHandler('connection', {
104
92
  onError: e => {
105
93
  // this._observable.notifyObservers('onErrorOccurred', this._initConfig.roomId);
106
94
  },
@@ -115,9 +103,8 @@ class FcrChatConnectionImpl {
115
103
  });
116
104
  }
117
105
  logout() {
118
- var _this$_conn2;
119
106
  window.removeEventListener('offline', this._offlineListener);
120
- (_this$_conn2 = this._conn) === null || _this$_conn2 === void 0 || _this$_conn2.close();
107
+ this._conn?.close();
121
108
  }
122
109
  _setConnectionState(state) {
123
110
  this._connectionState = state;
@@ -136,22 +123,18 @@ class FcrChatConnectionImpl {
136
123
  this._observable.removeObserver(observer);
137
124
  }
138
125
  _getPrivateConfig() {
139
- var _this$_chatIpList, _this$_restIpList;
140
- if ((_this$_chatIpList = this._chatIpList) !== null && _this$_chatIpList !== void 0 && _this$_chatIpList.length || (_this$_restIpList = this._restIpList) !== null && _this$_restIpList !== void 0 && _this$_restIpList.length) {
141
- var _this$_chatIpList2, _this$_restIpList2;
126
+ if (this._chatIpList?.length || this._restIpList?.length) {
142
127
  const privateConfig = {
143
128
  isHttpDNS: false
144
129
  };
145
- if ((_this$_chatIpList2 = this._chatIpList) !== null && _this$_chatIpList2 !== void 0 && _this$_chatIpList2.length) {
130
+ if (this._chatIpList?.length) {
146
131
  privateConfig.url = this._chatIpList[0];
147
132
  }
148
- if ((_this$_restIpList2 = this._restIpList) !== null && _this$_restIpList2 !== void 0 && _this$_restIpList2.length) {
133
+ if (this._restIpList?.length) {
149
134
  privateConfig.apiUrl = this._restIpList[0];
150
135
  }
151
136
  return privateConfig;
152
137
  }
153
138
  }
154
139
  }
155
- exports.FcrChatConnectionImpl = FcrChatConnectionImpl;
156
- _FcrChatConnectionImpl = FcrChatConnectionImpl;
157
- [_initProto] = _applyDecs(_FcrChatConnectionImpl, [[_logger.trace, 2, "login"], [_logger.trace, 2, "logout"], [_logger.trace, 2, "getConnectionState"], [_logger.trace, 2, "getConnectionInstance"]], []).e;
140
+ exports.FcrChatConnectionImpl = FcrChatConnectionImpl;
@@ -1,13 +1,7 @@
1
1
  "use strict";
2
2
 
3
- require("core-js/modules/es.symbol.description.js");
4
3
  require("core-js/modules/es.array.push.js");
5
- require("core-js/modules/esnext.async-iterator.filter.js");
6
- require("core-js/modules/esnext.async-iterator.for-each.js");
7
4
  require("core-js/modules/esnext.function.metadata.js");
8
- require("core-js/modules/esnext.iterator.constructor.js");
9
- require("core-js/modules/esnext.iterator.filter.js");
10
- require("core-js/modules/esnext.iterator.for-each.js");
11
5
  require("core-js/modules/esnext.map.delete-all.js");
12
6
  require("core-js/modules/esnext.map.emplace.js");
13
7
  require("core-js/modules/esnext.map.every.js");
@@ -28,13 +22,8 @@ Object.defineProperty(exports, "__esModule", {
28
22
  value: true
29
23
  });
30
24
  exports.FcrCoreEngine = void 0;
31
- require("core-js/modules/es.error.cause.js");
32
- require("core-js/modules/es.json.stringify.js");
33
- require("core-js/modules/es.regexp.exec.js");
34
- require("core-js/modules/esnext.async-iterator.map.js");
25
+ require("core-js/modules/esnext.iterator.constructor.js");
35
26
  require("core-js/modules/esnext.iterator.map.js");
36
- require("core-js/modules/web.dom-collections.iterator.js");
37
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
38
27
  var _imports = require("../imports");
39
28
  var _api = require("../service/api");
40
29
  var _monitorControl = require("../monitor-control");
@@ -42,7 +31,6 @@ var _type = require("../type");
42
31
  var _desktop = require("../media-control/desktop");
43
32
  var _peerSession = require("../peer-session");
44
33
  var _parameters = require("../utilities/parameters");
45
- var _packageInfo = require("../utilities/package-info");
46
34
  var _error = require("../utilities/error");
47
35
  var _cmd = require("../utilities/cmd");
48
36
  var _type2 = require("../room-control/type");
@@ -57,22 +45,40 @@ var _mobile = require("../media-control/mobile");
57
45
  var _chatroom = require("../plugins/chatroom");
58
46
  var _whiteboardControlV = require("../room-control/whiteboard-control-v2");
59
47
  var _logger = require("../utilities/logger");
60
- var _FcrCoreEngine;
61
- let _initProto;
62
- 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; }
63
- 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) { (0, _defineProperty2.default)(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; }
48
+ var _validateParams = _interopRequireDefault(require("../utilities/validate-params"));
49
+ var _schema = require("../schema");
50
+ var _error2 = require("agora-rte-sdk/lib/core/utilities/error");
51
+ let _initProto, _createMainRoomControlDecs, _createWaitingRoomControlDecs, _createRoomControlAndJoinDecs, _sendPeerMessageDecs, _setParametersDecs;
64
52
  function _applyDecs(e, t, r, n, o, a) { function i(e, t, r) { return function (n, o) { return r && r(n), e[t].call(n, o); }; } function c(e, t) { for (var r = 0; r < e.length; r++) e[r].call(t); return t; } function s(e, t, r, n) { if ("function" != typeof e && (n || void 0 !== e)) throw new TypeError(t + " must " + (r || "be") + " a function" + (n ? "" : " or undefined")); return e; } function applyDec(e, t, r, n, o, a, c, u, l, f, p, d, h) { function m(e) { if (!h(e)) throw new TypeError("Attempted to access private element on non-instance"); } var y, v = t[0], g = t[3], b = !u; if (!b) { r || Array.isArray(v) || (v = [v]); var w = {}, S = [], A = 3 === o ? "get" : 4 === o || d ? "set" : "value"; f ? (p || d ? w = { get: _setFunctionName(function () { return g(this); }, n, "get"), set: function (e) { t[4](this, e); } } : w[A] = g, p || _setFunctionName(w[A], n, 2 === o ? "" : A)) : p || (w = Object.getOwnPropertyDescriptor(e, n)); } for (var P = e, j = v.length - 1; j >= 0; j -= r ? 2 : 1) { var D = v[j], E = r ? v[j - 1] : void 0, I = {}, O = { kind: ["field", "accessor", "method", "getter", "setter", "class"][o], name: n, metadata: a, addInitializer: function (e, t) { if (e.v) throw Error("attempted to call addInitializer after decoration was finished"); s(t, "An initializer", "be", !0), c.push(t); }.bind(null, I) }; try { if (b) (y = s(D.call(E, P, O), "class decorators", "return")) && (P = y);else { var k, F; O.static = l, O.private = f, f ? 2 === o ? k = function (e) { return m(e), w.value; } : (o < 4 && (k = i(w, "get", m)), 3 !== o && (F = i(w, "set", m))) : (k = function (e) { return e[n]; }, (o < 2 || 4 === o) && (F = function (e, t) { e[n] = t; })); var N = O.access = { has: f ? h.bind() : function (e) { return n in e; } }; if (k && (N.get = k), F && (N.set = F), P = D.call(E, d ? { get: w.get, set: w.set } : w[A], O), d) { if ("object" == typeof P && P) (y = s(P.get, "accessor.get")) && (w.get = y), (y = s(P.set, "accessor.set")) && (w.set = y), (y = s(P.init, "accessor.init")) && S.push(y);else if (void 0 !== P) throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0"); } else s(P, (p ? "field" : "method") + " decorators", "return") && (p ? S.push(P) : w[A] = P); } } finally { I.v = !0; } } return (p || d) && u.push(function (e, t) { for (var r = S.length - 1; r >= 0; r--) t = S[r].call(e, t); return t; }), p || b || (f ? d ? u.push(i(w, "get"), i(w, "set")) : u.push(2 === o ? w[A] : i.call.bind(w[A])) : Object.defineProperty(e, n, w)), P; } function u(e, t) { return Object.defineProperty(e, Symbol.metadata || Symbol.for("Symbol.metadata"), { configurable: !0, enumerable: !0, value: t }); } if (arguments.length >= 6) var l = a[Symbol.metadata || Symbol.for("Symbol.metadata")]; var f = Object.create(null == l ? null : l), p = function (e, t, r, n) { var o, a, i = [], s = function (t) { return _checkInRHS(t) === e; }, u = new Map(); function l(e) { e && i.push(c.bind(null, e)); } for (var f = 0; f < t.length; f++) { var p = t[f]; if (Array.isArray(p)) { var d = p[1], h = p[2], m = p.length > 3, y = 16 & d, v = !!(8 & d), g = 0 == (d &= 7), b = h + "/" + v; if (!g && !m) { var w = u.get(b); if (!0 === w || 3 === w && 4 !== d || 4 === w && 3 !== d) throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: " + h); u.set(b, !(d > 2) || d); } applyDec(v ? e : e.prototype, p, y, m ? "#" + h : _toPropertyKey(h), d, n, v ? a = a || [] : o = o || [], i, v, m, g, 1 === d, v && m ? s : r); } } return l(o), l(a), i; }(e, t, o, f); return r.length || u(e, f), { e: p, get c() { var t = []; return r.length && [u(applyDec(e, [r], n, e.name, 5, f, t), f), c.bind(null, t, e)]; } }; }
65
53
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
66
54
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
67
55
  function _setFunctionName(e, t, n) { "symbol" == typeof t && (t = (t = t.description) ? "[" + t + "]" : ""); try { Object.defineProperty(e, "name", { configurable: !0, value: n ? n + " " + t : t }); } catch (e) {} return e; }
68
56
  function _checkInRHS(e) { if (Object(e) !== e) throw TypeError("right-hand side of 'in' should be an object, got " + (null !== e ? typeof e : "null")); return e; }
69
57
  class FcrCoreEngine {
58
+ static #_ = (() => [_initProto] = _applyDecs(this, [[_logger.trace, 2, "release"], [_logger.trace, 2, "login"], [_logger.trace, 2, "logout"], [_logger.trace, 2, "getVersion"], [_createMainRoomControlDecs, 2, "createMainRoomControl"], [_createWaitingRoomControlDecs, 2, "createWaitingRoomControl"], [_createRoomControlAndJoinDecs, 2, "createRoomControlAndJoin"], [_logger.trace, 2, "getDesktopMediaControl"], [_logger.trace, 2, "getMobileMediaControl"], [_logger.trace, 2, "getMonitorControl"], [_logger.trace, 2, "getPeerSessionControl"], [_sendPeerMessageDecs, 2, "sendPeerMessage"], [_setParametersDecs, 2, "setParameters"]], []).e)();
59
+ // @internal
60
+ [(_createMainRoomControlDecs = [_logger.trace, (0, _validateParams.default)(_schema.stringSchema)], _createWaitingRoomControlDecs = [_logger.trace, (0, _validateParams.default)(_schema.stringSchema)], _createRoomControlAndJoinDecs = [_logger.trace, (0, _validateParams.default)(_schema.stringSchema, _schema.fcrRoomJoinOptionsSchema)], _sendPeerMessageDecs = [_logger.trace, (0, _validateParams.default)(_schema.stringKeyUnknownValueSchema, _schema.booleanSchema, _schema.stringSchema)], _setParametersDecs = [_logger.trace, (0, _validateParams.default)(_schema.stringKeyUnknownValueSchema)], "logger")] = (() => (_initProto(this), (0, _logger.createLogger)({
61
+ prefix: 'FcrCoreEngine'
62
+ })))();
63
+ // @internal
64
+
65
+ // @internal
66
+
67
+ // @internal
68
+
69
+ // @internal
70
+
71
+ // @internal
72
+
73
+ // @internal
74
+
75
+ // @internal
76
+
77
+ // @internal
78
+
79
+ // @internal
80
+ _isLoggingIn = false;
70
81
  constructor(config) {
71
- var _config$parameters, _config$parameters2, _config$parameters3;
72
- // @internal
73
- (0, _defineProperty2.default)(this, "logger", (_initProto(this), (0, _logger.getLogger)()));
74
- // @internal
75
- (0, _defineProperty2.default)(this, "_isLoggingIn", false);
76
82
  this._config = config;
77
83
  (0, _domainHolder.resetSharedDomainHolder)();
78
84
  this._rteEngine = new _imports.AgoraRteEngine({
@@ -85,9 +91,9 @@ class FcrCoreEngine {
85
91
  dualCameraVideoStreamConfig: config.dualCameraVideoStreamConfig,
86
92
  dualScreenVideoStreamConfig: config.dualScreenVideoStreamConfig,
87
93
  parameters: {
88
- rte: (_config$parameters = config.parameters) === null || _config$parameters === void 0 ? void 0 : _config$parameters.rte,
89
- rtc: (_config$parameters2 = config.parameters) === null || _config$parameters2 === void 0 ? void 0 : _config$parameters2.rtc,
90
- rtm: (_config$parameters3 = config.parameters) === null || _config$parameters3 === void 0 ? void 0 : _config$parameters3.rtm
94
+ rte: config.parameters?.rte,
95
+ rtc: config.parameters?.rtc,
96
+ rtm: config.parameters?.rtm
91
97
  }
92
98
  });
93
99
  const restfulClient = new _agoraRteSdk.AgoraRestfulClientImpl(this._rteEngine.getHttpAuthHeadersProvider(), (0, _imports.getSharedDomainHolder)(config.region));
@@ -103,7 +109,7 @@ class FcrCoreEngine {
103
109
  this._addRteEngineObserver();
104
110
  const coreIpList = (0, _parameters.getCoreIpList)(config.parameters);
105
111
  if (coreIpList) {
106
- this.logger.info("[FcrCoreEngine] set fixed domain list: ".concat(JSON.stringify(coreIpList)));
112
+ this.logger.info(`set fixed domain list: ${JSON.stringify(coreIpList)}`);
107
113
  (0, _imports.getSharedDomainHolder)(this._config.region).setFixedDomainList(coreIpList);
108
114
  }
109
115
  }
@@ -148,7 +154,7 @@ class FcrCoreEngine {
148
154
  * @returns The version of the SDK.
149
155
  */
150
156
  getVersion() {
151
- return (0, _packageInfo.getVersion)();
157
+ return (0, _imports.getVersion)();
152
158
  }
153
159
 
154
160
  /**
@@ -184,77 +190,62 @@ class FcrCoreEngine {
184
190
  const {
185
191
  userId
186
192
  } = this._rteEngine.getConfig();
187
- let res = undefined;
188
- const [error] = await (0, _imports.to)((0, _imports.retryAttempt)(async () => {
189
- var _options$createStream;
190
- res = await this._apiService.checkIn({
193
+ let roomControl = null;
194
+ let [error] = await (0, _imports.to)((0, _imports.retryAttempt)(async () => {
195
+ const res = await (0, _error.handleRequestError)(() => this._apiService.checkIn({
191
196
  userName: options.userName,
192
197
  userId,
193
198
  userRole: _type.FcrUserRoleToStringMap[options.userRole],
194
199
  userProperties: options.userProperties,
195
200
  roomId,
196
201
  platform: (0, _imports.getPlatform)(),
197
- streams: (_options$createStream = options.createStreamConfigs) === null || _options$createStream === void 0 ? void 0 : _options$createStream.map(s => _objectSpread(_objectSpread({
202
+ streams: options.createStreamConfigs?.map(s => ({
198
203
  videoSourceUuid: s.videoSourceId,
199
204
  audioSourceUuid: s.audioSourceId,
200
- streamName: s.streamName
201
- }, (0, _helper.convertStreamTypeToPublishState)(s.streamType)), {}, {
205
+ streamName: s.streamName,
206
+ ...(0, _helper.convertStreamTypeToPublishState)(s.streamType),
202
207
  videoSourceType: s.videoSourceType,
203
208
  audioSourceType: s.audioSourceType,
204
209
  audioSourceState: s.audioSourceState,
205
210
  videoSourceState: s.videoSourceState
206
211
  })),
207
- version: (0, _packageInfo.getVersion)(),
212
+ version: (0, _imports.getVersion)(),
208
213
  password: options.password
214
+ }), _error.FcrErrorModuleCode.ENGINE);
215
+ const {
216
+ data,
217
+ ts
218
+ } = res;
219
+ if (data.room.roomProperties.roomType === _type2.FcrRoomType.Waitingroom) {
220
+ roomControl = this.createWaitingRoomControl(data.room.roomInfo.roomUuid);
221
+ } else {
222
+ roomControl = this.createMainRoomControl(roomId);
223
+ }
224
+ await roomControl.join({
225
+ ...options,
226
+ snapshot: data,
227
+ timestamp: ts,
228
+ createStreamConfigs: data.room.roomProperties.roomType === _type2.FcrRoomType.Waitingroom ? [] : options.createStreamConfigs
209
229
  });
210
230
  }, [], {
211
- retriesMax: 3
231
+ retriesMax: 10
212
232
  }).fail(async _ref => {
213
233
  let {
214
234
  error,
215
235
  timeFn,
216
236
  currentRetry
217
237
  } = _ref;
218
- if (error instanceof _imports.AgoraRestfulClientError) {
238
+ if ((error instanceof _error2.AgoraRteError || error instanceof _error.FcrError) && _error.RTE_ERROR_CODES_NOT_RETRYABLE_WHEN_JOINING_ROOM.includes(error.code)) {
219
239
  throw error;
220
240
  }
221
- this.logger.error("[RoomControl] retry to check in room, ".concat(error.message, ",retry ").concat(currentRetry, " times"));
241
+ this.logger.error(`retry to join room, ${error.message}, retry ${currentRetry} times`);
222
242
  await timeFn();
223
243
  return true;
224
244
  }).exec());
225
245
  if (error) {
226
- this.logger.error("[RoomControl] check in room failed, ".concat(error.message, "-").concat(JSON.stringify(error)));
227
- if (error instanceof _imports.AgoraRestfulClientError) {
228
- if (error.httpCode < 100) {
229
- throw (0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM, _error.FcrErrorCode.LOCAL_HTTP_REQUEST_FAILED, "entry room failed, ".concat(error.message), error);
230
- } else {
231
- var _error$serviceCode;
232
- throw (0, _error.generateFcrCoreServerError)((_error$serviceCode = error.serviceCode) !== null && _error$serviceCode !== void 0 ? _error$serviceCode : -1, error.message, error);
233
- }
234
- }
235
- throw (0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM, _error.FcrErrorCode.UNDEFINED_ERROR, 'join room failed', error);
236
- }
237
- if (!res) {
238
- this.logger.error("[RoomControl] cannot get data from check in respnose");
239
- throw (0, _error.generateFcrCoreClientError)(_error.FcrErrorModuleCode.ROOM, _error.FcrErrorCode.UNDEFINED_ERROR, 'join room failed', new Error('cannot get data from check in respnose'));
240
- }
241
- const {
242
- data,
243
- ts
244
- } = res;
245
- // console.log('data.room.roomProperties.roomType', data.room.roomProperties.roomType);
246
-
247
- let roomControl = null;
248
- if (data.room.roomProperties.roomType === _type2.FcrRoomType.Waitingroom) {
249
- roomControl = this.createWaitingRoomControl(data.room.roomInfo.roomUuid);
250
- } else {
251
- roomControl = this.createMainRoomControl(roomId);
246
+ this.logger.error(`join room failed, ${error.message}-${JSON.stringify(error)}`);
247
+ throw error;
252
248
  }
253
- await roomControl.join(_objectSpread(_objectSpread({}, options), {}, {
254
- snapshot: data,
255
- timestamp: ts,
256
- createStreamConfigs: data.room.roomProperties.roomType === _type2.FcrRoomType.Waitingroom ? [] : options.createStreamConfigs
257
- }));
258
249
  return roomControl;
259
250
  }
260
251
 
@@ -297,7 +288,7 @@ class FcrCoreEngine {
297
288
  * @param receiverId
298
289
  */
299
290
  async sendPeerMessage(payload, guaranteedDelivery, receiverId) {
300
- await this._rteEngine.sendPeerMessage(payload, "".concat(_cmd.CMD_PEER_MESSAGE), guaranteedDelivery, receiverId);
291
+ await this._rteEngine.sendPeerMessage(payload, `${_cmd.CMD_PEER_MESSAGE}`, guaranteedDelivery, receiverId);
301
292
  }
302
293
 
303
294
  /**
@@ -317,7 +308,7 @@ class FcrCoreEngine {
317
308
  rte: rte
318
309
  });
319
310
  } catch (e) {
320
- this.logger.warn('[FcrCoreEngine] setParameters failed', e);
311
+ this.logger.warn('setParameters failed', e);
321
312
  }
322
313
  }
323
314
 
@@ -349,6 +340,4 @@ class FcrCoreEngine {
349
340
  this.addObserver((0, _logger.generateLogObserver)(this.logger, ['onConnectionStateUpdated', 'onPeerMessageReceived']));
350
341
  }
351
342
  }
352
- exports.FcrCoreEngine = FcrCoreEngine;
353
- _FcrCoreEngine = FcrCoreEngine;
354
- [_initProto] = _applyDecs(_FcrCoreEngine, [[_logger.trace, 2, "release"], [_logger.trace, 2, "login"], [_logger.trace, 2, "logout"], [_logger.trace, 2, "getVersion"], [_logger.trace, 2, "createMainRoomControl"], [_logger.trace, 2, "createWaitingRoomControl"], [_logger.trace, 2, "createRoomControlAndJoin"], [_logger.trace, 2, "getDesktopMediaControl"], [_logger.trace, 2, "getMobileMediaControl"], [_logger.trace, 2, "getMonitorControl"], [_logger.trace, 2, "getPeerSessionControl"], [_logger.trace, 2, "sendPeerMessage"], [_logger.trace, 2, "setParameters"]], []).e;
343
+ exports.FcrCoreEngine = FcrCoreEngine;
package/lib/imports.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ export { z, ZodError, anySchema, booleanSchema, numberSchema, stringSchema, fcrRenderViewSchema, unknownSchema, objectSchema, createRecordSchemaWithKey, createUnionSchema, createArraySchema, } from 'agora-foundation/lib/utilities/schema';
2
+ export { validateParams } from 'agora-foundation/lib/decorator/validate';
1
3
  export { md5 } from 'js-md5';
2
4
  import to from 'await-to-js';
3
5
  import get from 'lodash/get';
@@ -5,6 +7,7 @@ import padStart from 'lodash/padStart';
5
7
  import padEnd from 'lodash/padEnd';
6
8
  import toLower from 'lodash/toLower';
7
9
  import { default as EasemobChatSDK } from 'easemob-websdk';
10
+ import { FcrVideoEncoderConfigurationSchema, FcrMediaStreamCreateConfigSchema, FcrStreamBindConfigSchema } from './schema';
8
11
  export { to, get, padStart, padEnd, toLower, EasemobChatSDK };
9
12
  export { EasemobChat } from 'easemob-websdk';
10
13
  export { WhiteWebSdk, createPlugins } from 'white-web-sdk';
@@ -18,12 +21,16 @@ export { getPlatform } from 'agora-foundation/lib/utilities/env';
18
21
  export { Duration } from 'agora-foundation/lib/schedule/scheduler';
19
22
  export { trace, bound } from 'agora-foundation/lib/decorator';
20
23
  export { AgoraScheduler, ActionWhenTaskFail } from 'agora-foundation/lib/schedule';
24
+ export { sleep, jsonstring } from 'agora-foundation/lib/utilities/misc';
21
25
  export type { AgoraRtcNetworkStats, AgoraRtcDeviceInfo, AgoraRtcDisplayInfo, AgoraRtcWindowInfo, AgoraRtePerformanceInfo, AgoraRteScenePropertiesDeletedEvent, AgoraRteStreamEncryptionConfig, AgoraRteStreamJoinConfig, AgoraRteDualVideoStreamConfig, AgoraRteMessage, AgoraRteScenePropertiesUpdatedEvent, AgoraRteRenderView, AgoraRteScene, } from 'agora-rte-sdk';
22
- export type { AgoraRteVideoEncoderConfig, AgoraRteEngineObserver } from 'agora-rte-sdk/lib/type';
26
+ export type { AgoraRteEngineObserver } from 'agora-rte-sdk/lib/type';
23
27
  export type { AgoraRteNetworkQualityEvent } from 'agora-rte-sdk/lib/core/scene/type';
24
28
  export type { AgoraRteOperatCause } from 'agora-rte-sdk/lib/core/processor/type';
25
29
  export type { AgoraRestfulClient } from 'agora-rte-sdk/lib/core/services/client';
26
- export type { AgoraRteUserUpdatedReason as FcrUserUpdatedReason, AgoraRteUserPageParams, AgoraRteUserPageResponse, AgoraRteUserPropertiesDeletedEvent, AgoraRteUserPropertiesUpdatedEvent, AgoraRteUserInfo, AgoraRteSceneObserver, AgoraRteSnapshotInfo, AgoraRteStreamBindConfig, AgoraRteMediaStreamCreateConfig, AgoraRteEntryRoomResponse, AgoraRteMediaStreamEvent, } from 'agora-rte-sdk/lib/core/scene/type';
30
+ export type { AgoraRteUserUpdatedReason as FcrUserUpdatedReason, AgoraRteUserPageParams, AgoraRteUserPageResponse, AgoraRteUserPropertiesDeletedEvent, AgoraRteUserPropertiesUpdatedEvent, AgoraRteUserInfo, AgoraRteSceneObserver, AgoraRteSnapshotInfo, AgoraRteEntryRoomResponse, AgoraRteMediaStreamEvent, } from 'agora-rte-sdk/lib/core/scene/type';
31
+ export type AgoraRteMediaStreamCreateConfig = FcrMediaStreamCreateConfigSchema;
32
+ export type AgoraRteStreamBindConfig = FcrStreamBindConfigSchema;
33
+ export type AgoraRteVideoEncoderConfig = FcrVideoEncoderConfigurationSchema;
27
34
  export type { AgoraRtcLocalVideoStats, AgoraRtcLocalAudioStats, AgoraRtcRemoteVideoStats, AgoraRtcRemoteAudioStats, AgoraRtcDimensions, } from 'agora-rte-sdk/lib/core/rtc/type';
28
35
  export type { AgoraRteAudioRawDataConfig, AgoraRteBeautyOptions, AgoraRteCameraPosition, AgoraRteScreenCaptureParams, AgoraRteVirtualBackgroundOptions, AgoraRteCameraCaptureParams, } from 'agora-rte-sdk/lib/core/media/type';
29
36
  export type { AgoraRteMediaStreamInfo } from 'agora-rte-sdk/lib/core/processor/struct';
@@ -31,14 +38,17 @@ export type { AgoraRteMonitor } from 'agora-rte-sdk/lib/core/monitor';
31
38
  export type { AgoraRteMediaControl } from 'agora-rte-sdk/lib/core/media';
32
39
  export { AgoraRteConnectionState, AgoraRteEngine, convertStreamTypeToPublishState, AgoraRteLatencyLevel, } from 'agora-rte-sdk';
33
40
  export { AgoraRteRoomConnectorType, AgoraRteStreamPrivilegeOperation, AgoraRteStreamPrivilegeVideoSourceType, AgoraRteStreamPrivilegeAudioSourceType, AgoraRteMediaStreamType, } from 'agora-rte-sdk/lib/core/scene/type';
34
- export { AgoraRtcRegion, AgoraRtcVideoSourceType, AgoraRtcAudioSourceType, AgoraRtcMediaSourceState, AgoraRtcRenderMode, AgoraRtcVideoStreamType, AgoraRtcCapability, AgoraRtcAiDenoiseLevel, AgoraRtcAudioOutputRouting, } from 'agora-rte-sdk/lib/core/rtc/type';
41
+ export { AgoraRtcRegion, AgoraRtcVideoSourceType, AgoraRtcAudioSourceType, AgoraRtcMediaSourceState, AgoraRtcRenderMode, AgoraRtcVideoStreamType, AgoraRtcCapability, AgoraRtcAiDenoiseLevel, AgoraRtcAudioOutputRouting, AgoraRtcLatencyLevelType, AgoraRtcEncryptionMode, } from 'agora-rte-sdk/lib/core/rtc/type';
35
42
  export { AgoraRtmRegion } from 'agora-rte-sdk/lib/core/rtm/type';
36
- export { AgoraRteRegion } from 'agora-rte-sdk/lib/type';
43
+ export { AgoraRteRegion, AgoraRteAudioSourceType, AgoraRteVideoSourceType, } from 'agora-rte-sdk/lib/type';
37
44
  export { AgoraRestfulClientError } from 'agora-rte-sdk/lib/core/services/client';
38
45
  export { getSharedDomainHolder } from 'agora-rte-sdk/lib/core/services/domain-holder';
39
46
  export { AgoraRteScreenCaptureType, AgoraRteVideoOrientation, } from 'agora-rte-sdk/lib/core/media/type';
40
47
  export { registerPlugin } from 'agora-rte-sdk/lib/core/engine/plugin';
41
48
  export { AgoraRteUserUpdatedReason } from 'agora-rte-sdk/lib/core/scene/type';
49
+ export type { AgoraRteUploadEvent } from 'agora-rte-sdk/lib/core/monitor/type';
50
+ export { AgoraRtePlatform } from 'agora-rte-sdk/lib/type';
42
51
  export { FcrCoreEngine } from './engine';
43
52
  export type FcrImageData = ImageData;
44
53
  export type FcrWhiteboardView = HTMLElement;
54
+ export { getVersion } from './utilities/package-info';