agora-rte-sdk 3.2.1 → 3.3.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 (37) hide show
  1. package/lib/core/engine/index.d.ts +2 -2
  2. package/lib/core/engine/index.js +1 -2
  3. package/lib/core/media/microphone.js +1 -1
  4. package/lib/core/media/type.d.ts +1 -1
  5. package/lib/core/monitor/index.d.ts +0 -21
  6. package/lib/core/monitor/index.js +61 -45
  7. package/lib/core/monitor/log-upload/handler.js +1 -1
  8. package/lib/core/scene/index.d.ts +0 -1
  9. package/lib/core/scene/index.js +3 -4
  10. package/lib/core/scene/local-user.d.ts +1 -1
  11. package/lib/core/scene/local-user.js +3 -2
  12. package/lib/core/scene/type.d.ts +0 -2
  13. package/lib/core/services/api.d.ts +7 -2
  14. package/lib/core/services/api.js +20 -8
  15. package/lib/core/services/auth-headers.d.ts +4 -3
  16. package/lib/core/services/auth-headers.js +8 -0
  17. package/lib/core/services/client.d.ts +1 -0
  18. package/lib/core/services/client.js +7 -0
  19. package/lib/core/services/type.d.ts +1 -2
  20. package/lib/core/utilities/parameters.d.ts +15 -0
  21. package/lib/core/utilities/parameters.js +59 -11
  22. package/lib/plugin/rtc/electron/client.js +1 -8
  23. package/lib/plugin/rtc/electron/loopback-mixer.js +1 -3
  24. package/lib/plugin/rtc/electron/screen-channel.js +11 -4
  25. package/lib/plugin/rtc/web/client.js +1 -1
  26. package/lib/plugin/rtc/web/index.js +18 -1
  27. package/lib/plugin/rtc/web/main-channel.js +45 -4
  28. package/lib/plugin/rtc/web/screen-channel.js +46 -3
  29. package/lib/plugin/rtc/web/subscribe.js +1 -1
  30. package/lib/plugin/rtc/web/type.d.ts +13 -2
  31. package/package.json +9 -3
  32. package/lib/plugin/rtc/dummy/channel.d.ts +0 -28
  33. package/lib/plugin/rtc/dummy/channel.js +0 -152
  34. package/lib/plugin/rtc/dummy/client.d.ts +0 -76
  35. package/lib/plugin/rtc/dummy/client.js +0 -370
  36. package/lib/plugin/rtc/dummy/index.d.ts +0 -7
  37. package/lib/plugin/rtc/dummy/index.js +0 -38
@@ -1,7 +1,7 @@
1
1
  import { AgoraRteMediaControl } from '../media';
2
2
  import { AgoraRteEngineConfig, AgoraRteEngineObserver, AgoraRteSceneConfig } from '../../type';
3
3
  import { AgoraRteMonitor } from '../monitor';
4
- import { AgoraHttpAuthHeadersProvider, AgoraHttpAuthHeaderSetter } from '../services/type';
4
+ import { AgoraHttpAuthHeadersProvider } from '../services/type';
5
5
  import { AgoraRteScene } from '../scene';
6
6
  export declare class AgoraRteEngine {
7
7
  private logger;
@@ -29,7 +29,7 @@ export declare class AgoraRteEngine {
29
29
  release(): void;
30
30
  addObserver(observer: AgoraRteEngineObserver): void;
31
31
  removeObserver(observer: AgoraRteEngineObserver): void;
32
- getHttpAuthHeadersProvider(): AgoraHttpAuthHeadersProvider & AgoraHttpAuthHeaderSetter;
32
+ getHttpAuthHeadersProvider(): AgoraHttpAuthHeadersProvider;
33
33
  private _handleConnectionStateUpdated;
34
34
  private _handlePeerMessageReceived;
35
35
  }
@@ -190,8 +190,7 @@ var AgoraRteEngine = exports.AgoraRteEngine = /*#__PURE__*/function () {
190
190
  rtmClient: this._rtmClient,
191
191
  apiService: this._apiService,
192
192
  appId: this._config.appId,
193
- region: this._config.rteRegion,
194
- authHeadersSetter: this._httpAuthHeadersProvider
193
+ region: this._config.rteRegion
195
194
  });
196
195
  this._mediaControl.addObserver({
197
196
  onCameraVideoStateUpdated: rteScene.onCameraVideoStateUpdated,
@@ -126,7 +126,7 @@ var AgoraRteMicrophoneAudioTrackImpl = exports.AgoraRteMicrophoneAudioTrackImpl
126
126
  key: "_handleLocalMicrophoneVolumeUpdated",
127
127
  value: function _handleLocalMicrophoneVolumeUpdated(deviceId, volume) {
128
128
  if (deviceId === this._deviceId) {
129
- this.trackObservable.notifyObservers('onAudioVolumeUpdated', this._deviceId, volume);
129
+ this.trackObservable.notifyObservers('onVolumeIndicationUpdated', this._deviceId, volume);
130
130
  }
131
131
  }
132
132
  }]);
@@ -52,7 +52,7 @@ export type AgoraRteLoopbackObserver = {
52
52
  };
53
53
  export type AgoraRteMicrophoneTrackObserver = {
54
54
  onMicrophoneStateUpdated(deviceId: string, state: AgoraRteMediaSourceState): void;
55
- onAudioVolumeUpdated(deviceId: string, volume: number): void;
55
+ onVolumeIndicationUpdated(deviceId: string, volume: number): void;
56
56
  };
57
57
  export type AgoraRteRecordAudioRawDataObserver = {
58
58
  onAudioRawDataRecorded(deviceId: string, data: AgoraRteAudioRawData): void;
@@ -1,7 +1,4 @@
1
- import { BaseUploadParams } from './log-upload/handler';
2
- import { AgoraHttpAuthHeadersProvider } from '../services/type';
3
1
  import { AgoraRteMonitorObserver } from './type';
4
- import { AgoraRtcClient } from '../rtc';
5
2
  /**
6
3
  * Interface for the Agora Real-Time Engagement Monitor.
7
4
  */
@@ -28,21 +25,3 @@ export interface AgoraRteMonitor {
28
25
  */
29
26
  removeObserver(observer: AgoraRteMonitorObserver): void;
30
27
  }
31
- export declare class AgoraRteMonitorImpl implements AgoraRteMonitor {
32
- private _rtcClient;
33
- protected logger: import("agora-foundation/lib/logger").Logger;
34
- private _consoleLogUploadScheduler;
35
- private _sdkLogUploadScheduler;
36
- private _task;
37
- private _perfObservable;
38
- private _perfObserver;
39
- private _perf?;
40
- private _interval;
41
- constructor(baseParams: BaseUploadParams, authHeadersProvider: AgoraHttpAuthHeadersProvider, _rtcClient: AgoraRtcClient);
42
- uploadLog(meta: unknown): Promise<void>;
43
- release(): void;
44
- addObserver(observer: AgoraRteMonitorObserver): void;
45
- removeObserver(observer: AgoraRteMonitorObserver): void;
46
- private _updatePerf;
47
- private _notifyPerf;
48
- }
@@ -20,15 +20,18 @@ var _observable = require("agora-foundation/lib/utilities/observable");
20
20
  var _env = require("agora-foundation/lib/utilities/env");
21
21
  var _upload = require("agora-foundation/lib/upload");
22
22
  var _zip = require("agora-foundation/lib/utilities/zip");
23
+ var _mutex = require("agora-foundation/lib/worker/mutex");
23
24
  /**
24
25
  * Interface for the Agora Real-Time Engagement Monitor.
25
26
  */
27
+ //@internal
26
28
  var AgoraRteMonitorImpl = exports.AgoraRteMonitorImpl = /*#__PURE__*/function () {
27
29
  function AgoraRteMonitorImpl(baseParams, authHeadersProvider, _rtcClient) {
28
30
  (0, _classCallCheck2["default"])(this, AgoraRteMonitorImpl);
29
31
  (0, _defineProperty2["default"])(this, "logger", (0, _logger.getLogger)());
30
32
  (0, _defineProperty2["default"])(this, "_perfObservable", new _observable.AgoraObservable());
31
33
  (0, _defineProperty2["default"])(this, "_interval", 3000);
34
+ (0, _defineProperty2["default"])(this, "_uploadMutex", new _mutex.Mutex());
32
35
  this._rtcClient = _rtcClient;
33
36
  this._updatePerf = this._updatePerf.bind(this);
34
37
  this._notifyPerf = this._notifyPerf.bind(this);
@@ -43,54 +46,65 @@ var AgoraRteMonitorImpl = exports.AgoraRteMonitorImpl = /*#__PURE__*/function ()
43
46
  return (0, _createClass2["default"])(AgoraRteMonitorImpl, [{
44
47
  key: "uploadLog",
45
48
  value: function () {
46
- var _uploadLog = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(meta) {
47
- var logManager, consoleLogs, path, _logBasePath, logs;
48
- return _regenerator["default"].wrap(function _callee$(_context) {
49
- while (1) switch (_context.prev = _context.next) {
49
+ var _uploadLog = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee2(meta) {
50
+ var _this = this;
51
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
52
+ while (1) switch (_context2.prev = _context2.next) {
50
53
  case 0:
51
- _context.prev = 0;
52
- logManager = (0, _logger.getLogManager)();
53
- _context.next = 4;
54
- return logManager.collectLogs();
55
- case 4:
56
- consoleLogs = _context.sent;
57
- this._consoleLogUploadScheduler.addUploadTask({
58
- id: Date.now(),
59
- file: consoleLogs,
60
- meta: meta
61
- });
62
- _context.next = 8;
63
- return logManager.flush();
64
- case 8:
65
- if (!(0, _env.isElectron)()) {
66
- _context.next = 15;
67
- break;
68
- }
69
- path = window.require('path');
70
- _logBasePath = path.resolve(window.require('@electron/remote').app.getPath('logs'), 'logs');
71
- _context.next = 13;
72
- return (0, _zip.zipDir)(_logBasePath);
73
- case 13:
74
- logs = _context.sent;
75
- if (logs) {
76
- this._sdkLogUploadScheduler.addUploadTask({
77
- id: Date.now(),
78
- file: logs,
79
- meta: meta
80
- });
81
- }
82
- case 15:
83
- _context.next = 20;
84
- break;
85
- case 17:
86
- _context.prev = 17;
87
- _context.t0 = _context["catch"](0);
88
- this.logger.error('[AgoraRteMonitor] failed to upload electron sdk logs', _context.t0);
89
- case 20:
54
+ return _context2.abrupt("return", this._uploadMutex.dispatch(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee() {
55
+ var logManager, consoleLogs, path, _logBasePath, logs;
56
+ return _regenerator["default"].wrap(function _callee$(_context) {
57
+ while (1) switch (_context.prev = _context.next) {
58
+ case 0:
59
+ _context.prev = 0;
60
+ logManager = (0, _logger.getLogManager)();
61
+ _context.next = 4;
62
+ return logManager.collectLogs();
63
+ case 4:
64
+ consoleLogs = _context.sent;
65
+ _this._consoleLogUploadScheduler.addUploadTask({
66
+ id: Date.now(),
67
+ file: consoleLogs,
68
+ meta: meta
69
+ });
70
+ _context.next = 8;
71
+ return logManager.flush();
72
+ case 8:
73
+ if (!(0, _env.isElectron)()) {
74
+ _context.next = 15;
75
+ break;
76
+ }
77
+ path = window.require('path');
78
+ _logBasePath = path.resolve(window.require('@electron/remote').app.getPath('logs'), 'logs');
79
+ _context.next = 13;
80
+ return (0, _zip.zipDir)(_logBasePath);
81
+ case 13:
82
+ logs = _context.sent;
83
+ if (logs) {
84
+ _this._sdkLogUploadScheduler.addUploadTask({
85
+ id: Date.now(),
86
+ file: logs,
87
+ meta: meta
88
+ });
89
+ }
90
+ case 15:
91
+ _context.next = 20;
92
+ break;
93
+ case 17:
94
+ _context.prev = 17;
95
+ _context.t0 = _context["catch"](0);
96
+ _this.logger.error('[AgoraRteMonitor] failed to upload electron sdk logs', _context.t0);
97
+ case 20:
98
+ case "end":
99
+ return _context.stop();
100
+ }
101
+ }, _callee, null, [[0, 17]]);
102
+ }))));
103
+ case 1:
90
104
  case "end":
91
- return _context.stop();
105
+ return _context2.stop();
92
106
  }
93
- }, _callee, this, [[0, 17]]);
107
+ }, _callee2, this);
94
108
  }));
95
109
  function uploadLog(_x) {
96
110
  return _uploadLog.apply(this, arguments);
@@ -100,6 +114,8 @@ var AgoraRteMonitorImpl = exports.AgoraRteMonitorImpl = /*#__PURE__*/function ()
100
114
  }, {
101
115
  key: "release",
102
116
  value: function release() {
117
+ this._sdkLogUploadScheduler.release();
118
+ this._consoleLogUploadScheduler.release();
103
119
  this._task.stop();
104
120
  this._rtcClient.removeObserver(this._perfObserver);
105
121
  }
@@ -53,7 +53,7 @@ var AgoraLogUploadHandler = exports.AgoraLogUploadHandler = /*#__PURE__*/functio
53
53
  (0, _classCallCheck2["default"])(this, AgoraLogUploadHandler);
54
54
  // always use prd domain for policy api
55
55
  (0, _defineProperty2["default"])(this, "_policyHost", 'https://api.sd-rtn.com');
56
- (0, _defineProperty2["default"])(this, "_httpTimeout", 10000);
56
+ (0, _defineProperty2["default"])(this, "_httpTimeout", 30000);
57
57
  (0, _defineProperty2["default"])(this, "_platform", 'web');
58
58
  this._authHeadersProvider = _authHeadersProvider;
59
59
  var _UAParser$getResult$o = new _uaParserJs["default"]().getResult().os,
@@ -46,7 +46,6 @@ export declare class AgoraRteScene implements AgoraRtcClientMediaTrackEventsObse
46
46
  private _streamPlayer?;
47
47
  private _timestampGap;
48
48
  private _totalUserCount;
49
- private _authHeaderSetter;
50
49
  private _localCameraVideoDeviceId?;
51
50
  private _localCameraVideoState;
52
51
  private _localMicrophoneAudioDeviceId?;
@@ -90,7 +90,6 @@ var _misc = require("agora-foundation/lib/utilities/misc");
90
90
  var _error = require("../utilities/error");
91
91
  var _type3 = require("../rtc/type");
92
92
  var _helper = require("./helper");
93
- var _constants = require("../utilities/constants");
94
93
  var _decorator = require("agora-foundation/lib/decorator");
95
94
  var _clone = require("../utilities/clone");
96
95
  var _AgoraRteScene;
@@ -119,7 +118,6 @@ var AgoraRteScene = exports.AgoraRteScene = /*#__PURE__*/function () {
119
118
  this._sceneId = sceneId;
120
119
  this._rtmClient = options.rtmClient;
121
120
  this._rtcClient = options.rtcClient;
122
- this._authHeaderSetter = options.authHeadersSetter;
123
121
  this._apiService = options.apiService;
124
122
  this._stateSynchronizer = new _stateSync.AgoraRteOnlineStateSynchronizer(this._apiService, sceneId);
125
123
  this._messageSynchronizer = new _messageHandler.AgoraRteMessageHandle({
@@ -249,7 +247,8 @@ var AgoraRteScene = exports.AgoraRteScene = /*#__PURE__*/function () {
249
247
  if (localUser.subscribe === _type2.AgoraRteSequenceMessageSubscribeUserState.SUBSCRIBE) {
250
248
  _this2._stateSynchronizer.setSyncDelay(sysConfig.onlineStateEnsureDelay || 5000);
251
249
  }
252
- _this2._authHeaderSetter.putHeaders((0, _defineProperty2["default"])({}, _constants.HTTP_HEADER_K_TOKEN, localUser.userToken));
250
+ _this2._apiService = _this2._apiService.cloneWithUserCredential(localUser.userUuid, localUser.userToken);
251
+
253
252
  // 2. join rtm channel & join rtc channel
254
253
  _context.next = 18;
255
254
  return Promise.all([_this2._joinRTCChannel({
@@ -1507,7 +1506,7 @@ var AgoraRteScene = exports.AgoraRteScene = /*#__PURE__*/function () {
1507
1506
  }]);
1508
1507
  }();
1509
1508
  _AgoraRteScene = AgoraRteScene;
1510
- var _applyDecs$e = _applyDecs(_AgoraRteScene, [[_decorator.bound, 2, "onCameraVideoStateUpdated"], [_decorator.bound, 2, "onMicrophoneAudioStateUpdated"], [_decorator.bound, 2, "_syncLocalCameraVideoState"], [_decorator.bound, 2, "_syncLocalMicrophoneAudioState"], [_decorator.bound, 2, "_handleStreamIdTokenMapChanged"], [_decorator.bound, 2, "_handleStreamIdTokenMapRemoved"], [_decorator.bound, 2, "_createScreenChannelClient"], [_decorator.bound, 2, "_handleNetworkOnline"], [_decorator.bound, 2, "_handleNetworkOffline"]], []).e;
1509
+ var _applyDecs$e = _applyDecs(_AgoraRteScene, [[_decorator.trace, 2, "join"], [_decorator.trace, 2, "leave"], [_decorator.bound, 2, "onCameraVideoStateUpdated"], [_decorator.bound, 2, "onMicrophoneAudioStateUpdated"], [_decorator.bound, 2, "_syncLocalCameraVideoState"], [_decorator.bound, 2, "_syncLocalMicrophoneAudioState"], [_decorator.bound, 2, "_handleStreamIdTokenMapChanged"], [_decorator.bound, 2, "_handleStreamIdTokenMapRemoved"], [_decorator.bound, 2, "_createScreenChannelClient"], [_decorator.bound, 2, "_handleNetworkOnline"], [_decorator.bound, 2, "_handleNetworkOffline"]], []).e;
1511
1510
  var _applyDecs$e2 = (0, _slicedToArray2["default"])(_applyDecs$e, 1);
1512
1511
  _initProto = _applyDecs$e2[0];
1513
1512
  _applyDecs$e;
@@ -33,7 +33,7 @@ export declare class AgoraRteLocalUser {
33
33
  * @param guaranteedDelivery
34
34
  * @returns
35
35
  */
36
- sendSceneMessage(payload: Record<string, unknown>, guaranteedDelivery?: boolean): Promise<any>;
36
+ sendSceneMessage(payload: Record<string, unknown>, cmd: string, guaranteedDelivery?: boolean): Promise<any>;
37
37
  /**
38
38
  * Update the properties of the current scene.
39
39
  * All users in the scene can receive the message through the `onScenePropertiesUpdated` callback.
@@ -89,11 +89,12 @@ var AgoraRteLocalUser = exports.AgoraRteLocalUser = /*#__PURE__*/function () {
89
89
  */
90
90
  }, {
91
91
  key: "sendSceneMessage",
92
- value: function sendSceneMessage(payload) {
93
- var guaranteedDelivery = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
92
+ value: function sendSceneMessage(payload, cmd) {
93
+ var guaranteedDelivery = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
94
94
  return this._apiService.sendCustomChannelMessage({
95
95
  roomUuid: this._fromSceneId,
96
96
  payload: payload,
97
+ cmd: cmd,
97
98
  sync: guaranteedDelivery
98
99
  });
99
100
  }
@@ -8,7 +8,6 @@ import { AgoraRteStreamPlayer } from './stream-player';
8
8
  import { AgoraRtcClient, AgoraRtcVideoCanvas } from '../rtc';
9
9
  import { AgoraRteAudioRawData } from '../media/type';
10
10
  import { AgoraRteError } from '../utilities/error';
11
- import { AgoraHttpAuthHeaderSetter } from '../services/type';
12
11
  import { AgoraRteServiceApi } from '../services/api';
13
12
  export interface AgoraRteSceneJoinSnapshotOptions {
14
13
  snapshot: AgoraRteEntryRoomResponse;
@@ -65,7 +64,6 @@ export interface AgoraRteSceneInitOptions {
65
64
  apiService: AgoraRteServiceApi;
66
65
  appId: string;
67
66
  region: AgoraRteRegion;
68
- authHeadersSetter: AgoraHttpAuthHeaderSetter;
69
67
  }
70
68
  export type AgoraRteStreamJoinConfig = {
71
69
  videoEncoderConfig?: AgoraRtcVideoEncoderConfiguration;
@@ -34,8 +34,12 @@ export type AgoraRteSyncSequenceResponse = {
34
34
  };
35
35
  export declare class AgoraRteServiceApi {
36
36
  private _client;
37
+ private _appId;
38
+ private _region;
39
+ private _pathIncludeRegion;
37
40
  protected logger: import("agora-foundation/lib/logger").Logger;
38
- constructor(_client: AgoraRestfulClient, appId: string, region: AgoraRteRegion, pathIncludeRegion?: boolean);
41
+ constructor(_client: AgoraRestfulClient, _appId: string, _region: AgoraRteRegion, _pathIncludeRegion?: boolean);
42
+ cloneWithUserCredential(userId: string, token: string): AgoraRteServiceApi;
39
43
  createRoom(params: {
40
44
  roomUuid: string;
41
45
  roomName: string;
@@ -160,10 +164,11 @@ export declare class AgoraRteServiceApi {
160
164
  message: string;
161
165
  roomUuid: string;
162
166
  }): Promise<any>;
163
- sendCustomChannelMessage({ roomUuid, payload, sync, }: {
167
+ sendCustomChannelMessage({ roomUuid, payload, cmd, sync, }: {
164
168
  roomUuid: string;
165
169
  payload: Record<string, unknown>;
166
170
  sync?: boolean;
171
+ cmd: string;
167
172
  }): Promise<any>;
168
173
  sendCustomPeerMessage({ payload, toUserUuid, waitForAck, }: {
169
174
  payload: {
@@ -35,19 +35,28 @@ var _excluded = ["roomUuid"],
35
35
  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; }
36
36
  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; }
37
37
  var AgoraRteServiceApi = exports.AgoraRteServiceApi = /*#__PURE__*/function () {
38
- function AgoraRteServiceApi(_client, appId, region) {
39
- var pathIncludeRegion = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
38
+ function AgoraRteServiceApi(_client, _appId, _region) {
39
+ var _pathIncludeRegion = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
40
40
  (0, _classCallCheck2["default"])(this, AgoraRteServiceApi);
41
41
  (0, _defineProperty2["default"])(this, "logger", (0, _logger.getLogger)());
42
42
  this._client = _client;
43
- var pathPrefix = "/scene/apps/".concat(appId);
44
- if (pathIncludeRegion) {
45
- pathPrefix = "/".concat((0, _toLower["default"])(region)).concat(pathPrefix);
43
+ this._appId = _appId;
44
+ this._region = _region;
45
+ this._pathIncludeRegion = _pathIncludeRegion;
46
+ var pathPrefix = "/scene/apps/".concat(_appId);
47
+ if (_pathIncludeRegion) {
48
+ pathPrefix = "/".concat((0, _toLower["default"])(_region)).concat(pathPrefix);
46
49
  }
47
50
  this.logger.info('[AgoraRteServiceApi] set path prefix for RTE Service API:', pathPrefix);
48
51
  this._client.setPathPrefix(pathPrefix);
49
52
  }
50
53
  return (0, _createClass2["default"])(AgoraRteServiceApi, [{
54
+ key: "cloneWithUserCredential",
55
+ value: function cloneWithUserCredential(userId, token) {
56
+ var client = this._client.cloneWithUserCredential(userId, token);
57
+ return new AgoraRteServiceApi(client, this._appId, this._region, this._pathIncludeRegion);
58
+ }
59
+ }, {
51
60
  key: "createRoom",
52
61
  value: function () {
53
62
  var _createRoom = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee(params) {
@@ -593,17 +602,20 @@ var AgoraRteServiceApi = exports.AgoraRteServiceApi = /*#__PURE__*/function () {
593
602
  key: "sendCustomChannelMessage",
594
603
  value: function () {
595
604
  var _sendCustomChannelMessage = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee18(_ref14) {
596
- var roomUuid, payload, _ref14$sync, sync;
605
+ var roomUuid, payload, cmd, _ref14$sync, sync;
597
606
  return _regenerator["default"].wrap(function _callee18$(_context18) {
598
607
  while (1) switch (_context18.prev = _context18.next) {
599
608
  case 0:
600
- roomUuid = _ref14.roomUuid, payload = _ref14.payload, _ref14$sync = _ref14.sync, sync = _ref14$sync === void 0 ? false : _ref14$sync;
609
+ roomUuid = _ref14.roomUuid, payload = _ref14.payload, cmd = _ref14.cmd, _ref14$sync = _ref14.sync, sync = _ref14$sync === void 0 ? false : _ref14$sync;
601
610
  _context18.next = 3;
602
611
  return this._client.fetch({
603
612
  path: "/v1/rooms/".concat(roomUuid, "/message/channel"),
604
613
  method: 'POST',
605
614
  data: {
606
- payload: payload,
615
+ payload: {
616
+ data: payload,
617
+ cmd: cmd
618
+ },
607
619
  sync: sync
608
620
  }
609
621
  });
@@ -1,11 +1,12 @@
1
- import { AgoraHttpAuthHeadersProvider, AgoraHttpAuthHeaderSetter } from './type';
2
- export declare class AgoraHttpAuthHeadersProviderImpl implements AgoraHttpAuthHeadersProvider, AgoraHttpAuthHeaderSetter {
1
+ import { AgoraHttpAuthHeadersProvider } from './type';
2
+ export declare class AgoraHttpAuthHeadersProviderImpl implements AgoraHttpAuthHeadersProvider {
3
3
  private _headers;
4
4
  constructor(auth: {
5
5
  userId: string;
6
6
  token: string;
7
7
  });
8
- getHeaders(): Record<string, string>;
8
+ clone(): AgoraHttpAuthHeadersProvider;
9
+ getHeaders(): Readonly<Record<string, string>>;
9
10
  setHeaders(headers: Record<string, string>): void;
10
11
  putHeaders(headers: Record<string, string>): void;
11
12
  }
@@ -34,6 +34,14 @@ var AgoraHttpAuthHeadersProviderImpl = exports.AgoraHttpAuthHeadersProviderImpl
34
34
  this._headers = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _constants.HTTP_HEADER_K_AGORA_TOKEN, auth.token), _constants.HTTP_HEADER_K_AGORA_UID, auth.userId), _constants.HTTP_HEADER_K_AUTHORIZATION, "agora token=\"".concat(auth.token, "\""));
35
35
  }
36
36
  return (0, _createClass2["default"])(AgoraHttpAuthHeadersProviderImpl, [{
37
+ key: "clone",
38
+ value: function clone() {
39
+ return new AgoraHttpAuthHeadersProviderImpl({
40
+ userId: this._headers[_constants.HTTP_HEADER_K_AGORA_UID],
41
+ token: this._headers[_constants.HTTP_HEADER_K_AGORA_TOKEN]
42
+ });
43
+ }
44
+ }, {
37
45
  key: "getHeaders",
38
46
  value: function getHeaders() {
39
47
  return this._headers;
@@ -8,6 +8,7 @@ export declare class AgoraRestfulClient {
8
8
  private _retryInterval;
9
9
  private _requestTimeout;
10
10
  constructor(_authHeadersProvider: AgoraHttpAuthHeadersProvider, _domainHolder: AgoraDomainHolder);
11
+ cloneWithUserCredential(userId: string, token: string): AgoraRestfulClient;
11
12
  get host(): string;
12
13
  setPathPrefix(pathPrefix: string): void;
13
14
  fetch(params: AgoraFetchParams): Promise<any>;
@@ -70,6 +70,13 @@ var AgoraRestfulClient = exports.AgoraRestfulClient = /*#__PURE__*/function () {
70
70
  this._domainHolder = _domainHolder;
71
71
  }
72
72
  return (0, _createClass2["default"])(AgoraRestfulClient, [{
73
+ key: "cloneWithUserCredential",
74
+ value: function cloneWithUserCredential(userId, token) {
75
+ var provider = this._authHeadersProvider.clone();
76
+ provider.putHeaders((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _constants.HTTP_HEADER_K_AGORA_UID, userId), _constants.HTTP_HEADER_K_TOKEN, token));
77
+ return new AgoraRestfulClient(provider, this._domainHolder);
78
+ }
79
+ }, {
73
80
  key: "host",
74
81
  get: function get() {
75
82
  return this._domainHolder.domain;
@@ -10,8 +10,7 @@ export interface AgoraFetchParams {
10
10
  }
11
11
  export interface AgoraHttpAuthHeadersProvider {
12
12
  getHeaders(): Record<string, string>;
13
- }
14
- export interface AgoraHttpAuthHeaderSetter {
15
13
  setHeaders(headers: Record<string, string>): void;
16
14
  putHeaders(headers: Record<string, string>): void;
15
+ clone(): AgoraHttpAuthHeadersProvider;
17
16
  }
@@ -6,6 +6,21 @@ type AgoraRteEngineParameters = {
6
6
  export declare const getRteIpList: (parameters?: AgoraRteEngineParameters) => string[] | undefined;
7
7
  export declare const getRtcIpList: (parameters?: AgoraRteEngineParameters) => string[] | undefined;
8
8
  export declare const getRtcVerifyDomainName: (parameters?: AgoraRteEngineParameters) => string | undefined;
9
+ export declare const getRtcServerList: (parameters?: AgoraRteEngineParameters) => string[] | undefined;
10
+ export declare const getRtcServerPort: (parameters?: AgoraRteEngineParameters) => number | undefined;
11
+ export declare const getRtcServerDomain: (parameters?: AgoraRteEngineParameters) => string | undefined;
12
+ export declare const getRtcCdsConfig: (parameters?: AgoraRteEngineParameters) => {
13
+ hostname?: string[];
14
+ port?: number;
15
+ } | undefined;
16
+ export declare const getRtcLogConfig: (parameters?: AgoraRteEngineParameters) => {
17
+ hostname?: string[];
18
+ port?: number;
19
+ } | undefined;
20
+ export declare const getRtcReportConfig: (parameters?: AgoraRteEngineParameters) => {
21
+ hostname?: string[];
22
+ port?: number;
23
+ } | undefined;
9
24
  export declare const getRtmIpList: (parameters?: AgoraRteEngineParameters) => string[] | undefined;
10
25
  export declare const getRtmOriginDomains: (parameters?: AgoraRteEngineParameters) => string[] | undefined;
11
26
  export declare const getRtmEventUploadHosts: (parameters?: AgoraRteEngineParameters) => string[] | undefined;
@@ -4,7 +4,7 @@ require("core-js/modules/es.object.define-property.js");
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.isEndpointRegionDisabled = exports.getRtmOriginDomains = exports.getRtmLogUploadHosts = exports.getRtmIpList = exports.getRtmEventUploadHosts = exports.getRteIpList = exports.getRtcVerifyDomainName = exports.getRtcIpList = void 0;
7
+ exports.isEndpointRegionDisabled = exports.getRtmOriginDomains = exports.getRtmLogUploadHosts = exports.getRtmIpList = exports.getRtmEventUploadHosts = exports.getRteIpList = exports.getRtcVerifyDomainName = exports.getRtcServerPort = exports.getRtcServerList = exports.getRtcServerDomain = exports.getRtcReportConfig = exports.getRtcLogConfig = exports.getRtcIpList = exports.getRtcCdsConfig = void 0;
8
8
  var _valueCheck = require("agora-foundation/lib/utilities/value-check");
9
9
  var getRteIpList = exports.getRteIpList = function getRteIpList(parameters) {
10
10
  var _parameters$rte;
@@ -12,43 +12,91 @@ var getRteIpList = exports.getRteIpList = function getRteIpList(parameters) {
12
12
  return parameters.rte.rteIpList;
13
13
  }
14
14
  };
15
+ // for native use only
15
16
  var getRtcIpList = exports.getRtcIpList = function getRtcIpList(parameters) {
16
17
  var _parameters$rte2;
17
18
  if (parameters !== null && parameters !== void 0 && (_parameters$rte2 = parameters.rte) !== null && _parameters$rte2 !== void 0 && _parameters$rte2.rtcIpList) {
18
19
  return parameters.rte.rtcIpList;
19
20
  }
20
21
  };
22
+ // for native use only
21
23
  var getRtcVerifyDomainName = exports.getRtcVerifyDomainName = function getRtcVerifyDomainName(parameters) {
22
24
  var _parameters$rte3;
23
25
  if (parameters !== null && parameters !== void 0 && (_parameters$rte3 = parameters.rte) !== null && _parameters$rte3 !== void 0 && _parameters$rte3.rtcVerifyDomainName) {
24
26
  return parameters.rte.rtcVerifyDomainName;
25
27
  }
26
28
  };
27
- var getRtmIpList = exports.getRtmIpList = function getRtmIpList(parameters) {
29
+
30
+ // for websdk use only
31
+ var getRtcServerList = exports.getRtcServerList = function getRtcServerList(parameters) {
28
32
  var _parameters$rte4;
29
- if (parameters !== null && parameters !== void 0 && (_parameters$rte4 = parameters.rte) !== null && _parameters$rte4 !== void 0 && _parameters$rte4.rtmIpList) {
33
+ if (parameters !== null && parameters !== void 0 && (_parameters$rte4 = parameters.rte) !== null && _parameters$rte4 !== void 0 && _parameters$rte4.rtcServerList) {
34
+ return parameters.rte.rtcServerList;
35
+ }
36
+ };
37
+
38
+ // for websdk use only
39
+ var getRtcServerPort = exports.getRtcServerPort = function getRtcServerPort(parameters) {
40
+ var _parameters$rte5;
41
+ if (parameters !== null && parameters !== void 0 && (_parameters$rte5 = parameters.rte) !== null && _parameters$rte5 !== void 0 && _parameters$rte5.rtcServerPort) {
42
+ return parameters.rte.rtcServerPort;
43
+ }
44
+ };
45
+
46
+ // for websdk use only
47
+ var getRtcServerDomain = exports.getRtcServerDomain = function getRtcServerDomain(parameters) {
48
+ var _parameters$rte6;
49
+ if (parameters !== null && parameters !== void 0 && (_parameters$rte6 = parameters.rte) !== null && _parameters$rte6 !== void 0 && _parameters$rte6.rtcServerDomain) {
50
+ return parameters.rte.rtcServerDomain;
51
+ }
52
+ };
53
+
54
+ // for websdk use only
55
+ var getRtcCdsConfig = exports.getRtcCdsConfig = function getRtcCdsConfig(parameters) {
56
+ var _parameters$rte7;
57
+ if (parameters !== null && parameters !== void 0 && (_parameters$rte7 = parameters.rte) !== null && _parameters$rte7 !== void 0 && _parameters$rte7.rtcCdsConfig) {
58
+ return parameters.rte.rtcCdsConfig;
59
+ }
60
+ };
61
+ // for websdk use only
62
+ var getRtcLogConfig = exports.getRtcLogConfig = function getRtcLogConfig(parameters) {
63
+ var _parameters$rte8;
64
+ if (parameters !== null && parameters !== void 0 && (_parameters$rte8 = parameters.rte) !== null && _parameters$rte8 !== void 0 && _parameters$rte8.rtcLogConfig) {
65
+ return parameters.rte.rtcLogConfig;
66
+ }
67
+ };
68
+ // for websdk use only
69
+ var getRtcReportConfig = exports.getRtcReportConfig = function getRtcReportConfig(parameters) {
70
+ var _parameters$rte9;
71
+ if (parameters !== null && parameters !== void 0 && (_parameters$rte9 = parameters.rte) !== null && _parameters$rte9 !== void 0 && _parameters$rte9.rtcReportConfig) {
72
+ return parameters.rte.rtcReportConfig;
73
+ }
74
+ };
75
+ var getRtmIpList = exports.getRtmIpList = function getRtmIpList(parameters) {
76
+ var _parameters$rte10;
77
+ if (parameters !== null && parameters !== void 0 && (_parameters$rte10 = parameters.rte) !== null && _parameters$rte10 !== void 0 && _parameters$rte10.rtmIpList) {
30
78
  return parameters.rte.rtmIpList;
31
79
  }
32
80
  };
33
81
  var getRtmOriginDomains = exports.getRtmOriginDomains = function getRtmOriginDomains(parameters) {
34
- var _parameters$rte5;
35
- if (parameters !== null && parameters !== void 0 && (_parameters$rte5 = parameters.rte) !== null && _parameters$rte5 !== void 0 && _parameters$rte5.rtmOriginDomains) {
82
+ var _parameters$rte11;
83
+ if (parameters !== null && parameters !== void 0 && (_parameters$rte11 = parameters.rte) !== null && _parameters$rte11 !== void 0 && _parameters$rte11.rtmOriginDomains) {
36
84
  return parameters.rte.rtmOriginDomains;
37
85
  }
38
86
  };
39
87
  var getRtmEventUploadHosts = exports.getRtmEventUploadHosts = function getRtmEventUploadHosts(parameters) {
40
- var _parameters$rte6;
41
- if (parameters !== null && parameters !== void 0 && (_parameters$rte6 = parameters.rte) !== null && _parameters$rte6 !== void 0 && _parameters$rte6.rtmEventUploadHosts) {
88
+ var _parameters$rte12;
89
+ if (parameters !== null && parameters !== void 0 && (_parameters$rte12 = parameters.rte) !== null && _parameters$rte12 !== void 0 && _parameters$rte12.rtmEventUploadHosts) {
42
90
  return parameters.rte.rtmEventUploadHosts;
43
91
  }
44
92
  };
45
93
  var getRtmLogUploadHosts = exports.getRtmLogUploadHosts = function getRtmLogUploadHosts(parameters) {
46
- var _parameters$rte7;
47
- if (parameters !== null && parameters !== void 0 && (_parameters$rte7 = parameters.rte) !== null && _parameters$rte7 !== void 0 && _parameters$rte7.rtmLogUploadHosts) {
94
+ var _parameters$rte13;
95
+ if (parameters !== null && parameters !== void 0 && (_parameters$rte13 = parameters.rte) !== null && _parameters$rte13 !== void 0 && _parameters$rte13.rtmLogUploadHosts) {
48
96
  return parameters.rte.rtmLogUploadHosts;
49
97
  }
50
98
  };
51
99
  var isEndpointRegionDisabled = exports.isEndpointRegionDisabled = function isEndpointRegionDisabled(parameters) {
52
- var _parameters$rte8;
53
- return (0, _valueCheck.isTrueValue)(parameters === null || parameters === void 0 || (_parameters$rte8 = parameters.rte) === null || _parameters$rte8 === void 0 ? void 0 : _parameters$rte8.disableEndpointRegion);
100
+ var _parameters$rte14;
101
+ return (0, _valueCheck.isTrueValue)(parameters === null || parameters === void 0 || (_parameters$rte14 = parameters.rte) === null || _parameters$rte14 === void 0 ? void 0 : _parameters$rte14.disableEndpointRegion);
54
102
  };
@@ -758,9 +758,7 @@ var AgoraRtcElectronV3AdapterImp = exports.AgoraRtcElectronV3AdapterImp = /*#__P
758
758
  }, {
759
759
  key: "startLoopbackRecording",
760
760
  value: function startLoopbackRecording(sourceId) {
761
- // return this._loopbackAudioMixer.startLoopbackRecording(sourceId);
762
-
763
- return 0;
761
+ return this._loopbackAudioMixer.startLoopbackRecording(sourceId);
764
762
  }
765
763
  }, {
766
764
  key: "stopLoopbackRecording",
@@ -1217,11 +1215,6 @@ var AgoraRtcElectronV3AdapterImp = exports.AgoraRtcElectronV3AdapterImp = /*#__P
1217
1215
  if (localMicrophone && localMicrophone.volume) {
1218
1216
  var _this$_currentMicroph;
1219
1217
  this.rtcClientObservable.notifyObservers('onMicrophoneVolumeIndicationUpdated', (_this$_currentMicroph = this._currentMicrophoneDeviceId) !== null && _this$_currentMicroph !== void 0 ? _this$_currentMicroph : '', Math.floor(localMicrophone.volume / 255 * 100));
1220
- } else {
1221
- if (!localMicrophone) {
1222
- var _this$_currentMicroph2;
1223
- this.rtcClientObservable.notifyObservers('onMicrophoneVolumeIndicationUpdated', (_this$_currentMicroph2 = this._currentMicrophoneDeviceId) !== null && _this$_currentMicroph2 !== void 0 ? _this$_currentMicroph2 : '', 0);
1224
- }
1225
1218
  }
1226
1219
  if (hasRemoteAudio) {
1227
1220
  this._clientEventObservable.notifyObservers('onRemoteUserAudioVolumeUpdated', connection, speakers.filter(function (_ref14) {