agora-foundation 3.8.2 → 3.9.0-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/lib/decorator/log/handler.d.ts +1 -1
  2. package/lib/decorator/log/handler.js +57 -64
  3. package/lib/decorator/log/index.d.ts +26 -1
  4. package/lib/decorator/log/index.js +50 -5
  5. package/lib/decorator/log/log-serializer.d.ts +1 -1
  6. package/lib/decorator/log/log-serializer.js +15 -2
  7. package/lib/decorator/proxy.d.ts +1 -1
  8. package/lib/decorator/proxy.js +16 -16
  9. package/lib/decorator/type.d.ts +3 -2
  10. package/lib/decorator/type.js +2 -2
  11. package/lib/utilities/desc-type.d.ts +1 -0
  12. package/lib/utilities/desc-type.js +1 -1
  13. package/lib/utilities/env.d.ts +2 -1
  14. package/lib/utilities/env.js +1 -0
  15. package/lib/utilities/{agora-error.d.ts → error/agora-error.d.ts} +5 -11
  16. package/lib/utilities/error/agora-error.js +148 -0
  17. package/lib/utilities/error/error-code.d.ts +69 -0
  18. package/lib/utilities/error/error-code.js +81 -0
  19. package/lib/utilities/logger.d.ts +13 -1
  20. package/lib/utilities/logger.js +103 -13
  21. package/lib/utilities/observable.js +1 -0
  22. package/lib/utilities/package-info.d.ts +8 -0
  23. package/lib/utilities/package-info.js +85 -0
  24. package/lib/utilities/regex.d.ts +1 -0
  25. package/lib/utilities/regex.js +14 -0
  26. package/lib/utilities/tools.d.ts +28 -0
  27. package/lib/utilities/tools.js +154 -0
  28. package/lib-es/decorator/log/handler.js +56 -64
  29. package/lib-es/decorator/log/index.js +49 -4
  30. package/lib-es/decorator/log/log-serializer.js +15 -2
  31. package/lib-es/decorator/proxy.js +16 -16
  32. package/lib-es/decorator/type.js +2 -2
  33. package/lib-es/utilities/desc-type.js +1 -1
  34. package/lib-es/utilities/env.js +1 -0
  35. package/lib-es/utilities/error/agora-error.js +140 -0
  36. package/lib-es/utilities/error/error-code.js +74 -0
  37. package/lib-es/utilities/logger.js +102 -12
  38. package/lib-es/utilities/observable.js +1 -0
  39. package/lib-es/utilities/package-info.js +78 -0
  40. package/lib-es/utilities/regex.js +7 -0
  41. package/lib-es/utilities/tools.js +144 -0
  42. package/package.json +2 -2
  43. package/lib/utilities/agora-error.js +0 -128
  44. package/lib-es/utilities/agora-error.js +0 -120
@@ -1,77 +1,69 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
1
2
  import "core-js/modules/es.array.concat.js";
2
- import "core-js/modules/es.date.to-string.js";
3
- import "core-js/modules/es.function.name.js";
3
+ import "core-js/modules/es.date.now.js";
4
4
  import { Result } from '../../utilities/interceptor';
5
- import { randomString } from '../../utilities/misc';
6
5
  import { InvocationEventType } from '../type';
7
6
  import { serialize, serializeArgs } from './log-serializer';
8
- var formatCallLog = function formatCallLog(identifier, args) {
9
- var msg = '';
7
+ var InvocationEventTypeToString = _defineProperty(_defineProperty({}, InvocationEventType.API_CALL, '[API Call]'), InvocationEventType.API_RETURN, '[API Return]');
8
+
9
+ // 方法返回错误码时对应的描述
10
+ var ReasonCodeToString = _defineProperty(_defineProperty({}, -1, 'FAILED'), 0, 'SUCCESS');
11
+ var formatLogHead = function formatLogHead(identifier, tag, args, argsNames) {
12
+ var elapsed = Date.now() - identifier.startTs;
13
+ var parameters = '[parameters: []]';
14
+ var duration = "[duration: ".concat(elapsed, "ms]");
10
15
  if (args !== null && args !== void 0 && args.length) {
11
- msg += "[parameters: ".concat(serializeArgs(args), "]");
16
+ parameters = "[parameters: [".concat(serializeArgs(args, argsNames), "]]");
12
17
  }
13
- return "".concat(identifier.methodName, " [API Call]").concat(msg, "[traceId: ").concat(identifier.traceId, "]");
18
+ return "".concat(identifier.methodName, ": ").concat(tag, " ").concat(parameters, " ").concat(duration);
14
19
  };
15
-
16
- // const formatReturnLog = (
17
- // identifier: { className: string; methodName: string; traceId: string },
18
- // elapsed: number,
19
- // args?: unknown[],
20
- // returnValue?: unknown,
21
- // thrown?: Error,
22
- // ) => {
23
- // let msg = '';
24
- // if (args?.length) {
25
- // msg += `[parameters: ${serializeArgs(args)}]`;
26
- // }
27
-
28
- // if (thrown) {
29
- // msg += `[throw: ${thrown.name}]`;
30
- // msg += `[message: ${thrown.message}]`;
31
- // } else if (typeof returnValue !== 'undefined') {
32
- // msg += `[return: ${serialize(returnValue)}]`;
33
- // }
34
-
35
- // return `${identifier.methodName} [API Call]${msg}[elapsed: ${elapsed}ms]`;
36
- // };
37
-
38
- export var createLogHandler = function createLogHandler(holder) {
20
+ var formatLogReturn = function formatLogReturn(returnValue) {
21
+ return "[message: { return: ".concat(serialize(returnValue), " }]");
22
+ };
23
+ var formatLogReason = function formatLogReason(reasonCode) {
24
+ return "[message: { reason: ".concat(reasonCode, ": ").concat(ReasonCodeToString[reasonCode] || 'UNKNOWN', " }]");
25
+ };
26
+ var formatLogError = function formatLogError(error) {
27
+ return "[message: { error: { code: ".concat(error.code, ", message: ").concat(error.message, " } }]");
28
+ };
29
+ var printReturnOrReason = function printReturnOrReason(logger, returnValue, getMsg, isShowReasonCode) {
30
+ if (isShowReasonCode && typeof returnValue === 'number' && returnValue !== 0) {
31
+ var msgBody = " ".concat(formatLogReason(returnValue));
32
+ logger.warn(getMsg(msgBody));
33
+ } else {
34
+ var _msgBody = " ".concat(formatLogReturn(returnValue));
35
+ logger.info(getMsg(_msgBody));
36
+ }
37
+ };
38
+ export var createLogHandler = function createLogHandler(holder, isErrorCodeByReturnValue) {
39
39
  return function (evt) {
40
- if (evt.type === InvocationEventType.PRE) {
41
- var _evt$arguments;
42
- evt.context.start = new Date().getTime();
43
- evt.context.traceId = randomString(5);
44
- var msg = formatCallLog({
45
- className: evt["class"],
46
- methodName: evt.method,
47
- traceId: evt.context.traceId
48
- }, (_evt$arguments = evt.arguments) !== null && _evt$arguments !== void 0 ? _evt$arguments : []);
49
- holder.logger.info(msg);
50
- } else {
51
- var elapsed = new Date().getTime() - evt.context.start;
52
- // const msg = formatReturnLog(
53
- // {
54
- // className: evt.class,
55
- // methodName: evt.method,
56
- // traceId: evt.context.traceId,
57
- // },
58
- // elapsed,
59
- // evt.arguments ?? [],
60
- // evt.return,
61
- // evt.error,
62
- // );
63
- // if (evt.error) {
64
- // holder.logger.error(msg);
65
- // } else {
66
- // holder.logger.info(msg);
67
- // }
68
-
40
+ var _evt$arguments, _evt$argumentNames;
41
+ var msgHead = formatLogHead({
42
+ className: evt["class"],
43
+ methodName: evt.method,
44
+ startTs: evt.context.start,
45
+ isThenable: evt.context.isThenable
46
+ }, InvocationEventTypeToString[evt.type], (_evt$arguments = evt.arguments) !== null && _evt$arguments !== void 0 ? _evt$arguments : [], (_evt$argumentNames = evt.argumentNames) !== null && _evt$argumentNames !== void 0 ? _evt$argumentNames : []);
47
+ var msgFoot = " [traceId: ".concat(evt.context.traceId, "]");
48
+ var getMsg = function getMsg() {
49
+ var msgBody = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
50
+ return "".concat(msgHead).concat(msgBody).concat(msgFoot);
51
+ };
52
+ if (evt.type === InvocationEventType.API_CALL) {
53
+ if (evt.context.isThenable === true) {
54
+ // 异步方法只打印调用信息, 在 API_RETURN 时打印返回值等信息
55
+ holder.logger.info(getMsg());
56
+ } else {
57
+ // 同步方法的打印内容包含返回值, 错误码等信息(如果有的话)
58
+ printReturnOrReason(holder.logger, evt["return"], getMsg, isErrorCodeByReturnValue);
59
+ }
60
+ } else if (evt.type === InvocationEventType.API_RETURN) {
69
61
  if (evt.error) {
70
- var _msg = "".concat(evt.method, " [throw: ").concat(evt.error.name, "][message: ").concat(evt.error.message, "][elapsed: ").concat(elapsed, "ms][traceId: ").concat(evt.context.traceId, "]");
71
- holder.logger.error(_msg);
62
+ var msgBody = " ".concat(formatLogError(evt.error));
63
+ holder.logger.error(getMsg(msgBody));
72
64
  } else {
73
- var _msg2 = "".concat(evt.method, " [return: ").concat(serialize(evt["return"]), "][elapsed: ").concat(elapsed, "ms][traceId: ").concat(evt.context.traceId, "]");
74
- holder.logger.info(_msg2);
65
+ // 异步方法在此处打印返回值, 错误码等信息(如果有的话)
66
+ printReturnOrReason(holder.logger, evt["return"], getMsg, isErrorCodeByReturnValue);
75
67
  }
76
68
  }
77
69
  return Result.CONTINUE;
@@ -1,3 +1,4 @@
1
+ import _typeof from "@babel/runtime/helpers/typeof";
1
2
  import "core-js/modules/es.function.name.js";
2
3
  import { proxyMethod } from '../proxy';
3
4
  import { createLogHandler } from './handler';
@@ -8,7 +9,7 @@ import { getLogger } from '../../logger';
8
9
  * @param targetOrProto The class or prototype that the method belongs to.
9
10
  * @param methodName The name of the method.
10
11
  */
11
- var _trace = function _trace(originalMethod, context) {
12
+ var _trace = function _trace(originalMethod, context, paramNames, isErrorCodeByReturnValue) {
12
13
  var methodName = String(context.name);
13
14
  if (context.kind === 'method') {
14
15
  context.addInitializer(function () {
@@ -20,9 +21,53 @@ var _trace = function _trace(originalMethod, context) {
20
21
  if (!this.logger) {
21
22
  this.logger = logger;
22
23
  }
23
- var handler = createLogHandler(this);
24
- this[context.name] = proxyMethod(this[context.name], this, methodName, handler);
24
+ var handler = createLogHandler(this, isErrorCodeByReturnValue);
25
+ this[context.name] = proxyMethod(this[context.name], this, methodName, handler, paramNames);
25
26
  });
26
27
  }
27
28
  };
28
- export var trace = _trace;
29
+
30
+ /**
31
+ * @description
32
+ * 函数入参使用参数范型, 支持以下三种用法:
33
+ * 1. 直接作为装饰器使用: `@trace method() {}`
34
+ * 2. 作为工厂函数使用, 支持传入参数名称数组, 标识返回值是否是错误码(可选), 返回装饰器函数 `@trace(['param1', 'param2'], bolean?)`
35
+ * 3. 作为工厂函数使用, 仅标识返回值是否是错误码, 返回装饰器函数 `@trace(boolean)`
36
+ * @example
37
+ * `@trace method() {}`
38
+ * `@trace(['name1', 'name2']) method(name1: string, name2: number) {}`
39
+ * `@trace(['name1', 'name2'], true) method(name1: string, name2: number) {}`
40
+ * `@trace(true) method() {}`
41
+ */
42
+
43
+ /**
44
+ * @description 仅标识返回值是否是错误码, 返回装饰器函数 `@trace(boolean)`
45
+ * @param isErrorCodeByReturnValue - 返回值是否是错误码
46
+ */
47
+
48
+ /**
49
+ * @description 作为工厂函数使用, 支持传入参数名称数组, 标识返回值是否是错误码(可选), 返回装饰器函数 `@trace(['param1', 'param2'], bolean?)`
50
+ * @param paramNames - 参数名称数组
51
+ * @param [isErrorCodeByReturnValue] - 返回值是否是错误码(可选)
52
+ */
53
+
54
+ function trace() {
55
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
56
+ args[_key] = arguments[_key];
57
+ }
58
+ if (args.length === 2 && _typeof(args[1]) === 'object') {
59
+ // 直接作为装饰器使用
60
+ _trace(args[0], args[1]);
61
+ } else if (args.length === 1 && typeof args[0] === 'boolean') {
62
+ // 作为工厂函数使用, 仅标识返回值是否是错误码
63
+ return function (originalMethod, context) {
64
+ _trace(originalMethod, context, undefined, args[0]);
65
+ };
66
+ } else {
67
+ // 作为工厂函数使用, 支持传入参数名称数组, 标识返回值是否是错误码(可选)
68
+ return function (originalMethod, context) {
69
+ _trace(originalMethod, context, args[0], args[1]);
70
+ };
71
+ }
72
+ }
73
+ export { trace };
@@ -1,3 +1,4 @@
1
+ import "core-js/modules/es.array.concat.js";
1
2
  import "core-js/modules/es.array.join.js";
2
3
  import "core-js/modules/es.array.map.js";
3
4
  import "core-js/modules/es.object.to-string.js";
@@ -10,6 +11,18 @@ export var serialize = function serialize(data) {
10
11
  }
11
12
  return "".concat(jsonstring(data));
12
13
  };
13
- export var serializeArgs = function serializeArgs(args) {
14
- return "".concat(args.map(serialize).join(' '));
14
+ export var serializeArgs = function serializeArgs(args, argsNames) {
15
+ if (argsNames) {
16
+ var lastIndex = args.length - 1;
17
+ var str = '';
18
+ for (var i = 0; i < args.length; i++) {
19
+ var key = argsNames[i] ? "".concat(argsNames[i], ": ") : '';
20
+ str += "".concat(key).concat(serialize(args[i]));
21
+ if (i < lastIndex) {
22
+ str += ', ';
23
+ }
24
+ }
25
+ return str;
26
+ }
27
+ return "".concat(args.map(serialize).join(', '));
15
28
  };
@@ -11,6 +11,7 @@ import "core-js/modules/es.array.concat.js";
11
11
  import "core-js/modules/es.array.for-each.js";
12
12
  import "core-js/modules/es.array.index-of.js";
13
13
  import "core-js/modules/es.array.push.js";
14
+ import "core-js/modules/es.date.now.js";
14
15
  import "core-js/modules/es.function.name.js";
15
16
  import "core-js/modules/es.object.define-property.js";
16
17
  import "core-js/modules/es.object.get-own-property-descriptor.js";
@@ -24,28 +25,27 @@ import "core-js/modules/es.reflect.construct.js";
24
25
  import "core-js/modules/esnext.iterator.constructor.js";
25
26
  import "core-js/modules/esnext.iterator.for-each.js";
26
27
  import "core-js/modules/web.dom-collections.for-each.js";
28
+ import { randomString } from '../utilities/misc';
27
29
  import { InvocationEventType } from './type';
28
30
  var failQuitely = function failQuitely(func, args) {
29
31
  try {
30
32
  return func.apply(void 0, _toConsumableArray(args));
31
33
  } catch (e) {}
32
34
  };
33
- var invokeMethod = function invokeMethod(instance, method, proto, propertyName, args, hanlder) {
35
+ var invokeMethod = function invokeMethod(instance, method, proto, propertyName, args, hanlder, paramNames) {
34
36
  var context = {};
35
- failQuitely(hanlder, [{
36
- type: InvocationEventType.PRE,
37
- arguments: args,
38
- method: propertyName,
39
- "class": proto.constructor.__$$className || proto.constructor.name,
40
- context: context
41
- }]);
37
+ context.start = Date.now();
38
+ context.traceId = randomString(5);
42
39
 
43
40
  // provide a way for invoking method regardless it is async or sync function, attach the return value and the error(if it occurred) to the event object
44
41
  var returnVal = method.apply(instance, args);
45
- var post = function post(val, error) {
42
+ var isThenable = returnVal && !!returnVal.then;
43
+ context.isThenable = isThenable;
44
+ var post = function post(type, val, error) {
46
45
  failQuitely(hanlder, [{
47
- type: InvocationEventType.POST,
46
+ type: type,
48
47
  arguments: args,
48
+ argumentNames: paramNames,
49
49
  "return": val,
50
50
  method: propertyName,
51
51
  "class": proto.constructor.__$$className || proto.constructor.name,
@@ -53,7 +53,9 @@ var invokeMethod = function invokeMethod(instance, method, proto, propertyName,
53
53
  error: error
54
54
  }]);
55
55
  };
56
- var isThenable = returnVal && !!returnVal.then;
56
+
57
+ // 同步/异步函数调用结束时输出日志,(异步函数函数不等待异步结束)
58
+ post(InvocationEventType.API_CALL, returnVal);
57
59
  if (isThenable) {
58
60
  // capture async return and potential error
59
61
  var rtnTemp, errTemp;
@@ -62,19 +64,17 @@ var invokeMethod = function invokeMethod(instance, method, proto, propertyName,
62
64
  })["catch"](function (e) {
63
65
  errTemp = e;
64
66
  })["finally"](function () {
65
- post(rtnTemp, errTemp);
67
+ post(InvocationEventType.API_RETURN, rtnTemp, errTemp);
66
68
  });
67
- } else {
68
- post(returnVal);
69
69
  }
70
70
  return returnVal;
71
71
  };
72
- export var proxyMethod = function proxyMethod(method, proto, propertyName, handler) {
72
+ export var proxyMethod = function proxyMethod(method, proto, propertyName, handler, paramNames) {
73
73
  return function () {
74
74
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
75
75
  args[_key] = arguments[_key];
76
76
  }
77
- return invokeMethod(this, method, proto, propertyName, args, handler);
77
+ return invokeMethod(this, method, proto, propertyName, args, handler, paramNames);
78
78
  };
79
79
  };
80
80
  var getMethods = function getMethods(target) {
@@ -1,6 +1,6 @@
1
1
  export var InvocationEventType = /*#__PURE__*/function (InvocationEventType) {
2
- InvocationEventType[InvocationEventType["PRE"] = 0] = "PRE";
3
- InvocationEventType[InvocationEventType["POST"] = 1] = "POST";
2
+ InvocationEventType[InvocationEventType["API_CALL"] = 0] = "API_CALL";
3
+ InvocationEventType[InvocationEventType["API_RETURN"] = 1] = "API_RETURN";
4
4
  return InvocationEventType;
5
5
  }({});
6
6
 
@@ -1,3 +1,3 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import { FcrApplicationPlatform } from './env';
3
- export var FcrApplicationPlatformDescType = _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, FcrApplicationPlatform.WEB_DESKTOP, 'webDesktop'), FcrApplicationPlatform.MACOS, 'macOS'), FcrApplicationPlatform.WINDOWS, 'windows'), FcrApplicationPlatform.WEB_MOBILE, 'webMobile');
3
+ export var FcrApplicationPlatformDescType = _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, FcrApplicationPlatform.WEB_DESKTOP, 'webDesktop'), FcrApplicationPlatform.MACOS, 'macOS'), FcrApplicationPlatform.WINDOWS, 'windows'), FcrApplicationPlatform.WEB_MOBILE, 'webMobile'), FcrApplicationPlatform.HARMONY, 'harmony');
@@ -18,6 +18,7 @@ export var FcrApplicationPlatform = /*#__PURE__*/function (FcrApplicationPlatfor
18
18
  FcrApplicationPlatform[FcrApplicationPlatform["MACOS"] = 2] = "MACOS";
19
19
  FcrApplicationPlatform[FcrApplicationPlatform["WINDOWS"] = 3] = "WINDOWS";
20
20
  FcrApplicationPlatform[FcrApplicationPlatform["WEB_MOBILE"] = 6] = "WEB_MOBILE";
21
+ FcrApplicationPlatform[FcrApplicationPlatform["HARMONY"] = 7] = "HARMONY";
21
22
  return FcrApplicationPlatform;
22
23
  }({});
23
24
  export var getPlatform = function getPlatform() {
@@ -0,0 +1,140 @@
1
+ import "core-js/modules/es.reflect.construct.js";
2
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/createClass";
4
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
5
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
6
+ import _inherits from "@babel/runtime/helpers/inherits";
7
+ import _wrapNativeSuper from "@babel/runtime/helpers/wrapNativeSuper";
8
+ import "core-js/modules/es.error.cause.js";
9
+ import "core-js/modules/es.error.to-string.js";
10
+ import "core-js/modules/es.array.concat.js";
11
+ import "core-js/modules/es.array.filter.js";
12
+ import "core-js/modules/es.array.find.js";
13
+ import "core-js/modules/es.array.slice.js";
14
+ import "core-js/modules/es.number.constructor.js";
15
+ import "core-js/modules/es.object.to-string.js";
16
+ import "core-js/modules/es.object.values.js";
17
+ import "core-js/modules/esnext.iterator.constructor.js";
18
+ import "core-js/modules/esnext.iterator.filter.js";
19
+ import "core-js/modules/esnext.iterator.find.js";
20
+ function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
21
+ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
22
+ import padStart from 'lodash/padStart';
23
+ import padEnd from 'lodash/padEnd';
24
+ import { DetailErrorCode, ErrorServiceType } from './error-code';
25
+ export var AgoraError = /*#__PURE__*/function (_Error) {
26
+ function AgoraError(params) {
27
+ var _this;
28
+ _classCallCheck(this, AgoraError);
29
+ _this = _callSuper(this, AgoraError, [params.message]);
30
+ _this._code = params.code;
31
+ _this._message = params.message;
32
+ _this._cause = params.cause || '';
33
+ return _this;
34
+ }
35
+ _inherits(AgoraError, _Error);
36
+ return _createClass(AgoraError, [{
37
+ key: "code",
38
+ get: function get() {
39
+ return this._code;
40
+ }
41
+ }, {
42
+ key: "message",
43
+ get: function get() {
44
+ return this._message;
45
+ }
46
+ }], [{
47
+ key: "createCode",
48
+ value: function createCode(_ref) {
49
+ var serviceCode = _ref.serviceCode,
50
+ moduleCode = _ref.moduleCode,
51
+ detailCode = _ref.detailCode;
52
+ // 生成9位数错误代码:前3位是错误类型,中间3位是模块代码,后3位是具体错误代码
53
+ var errorType = padEnd(String(serviceCode), 3, '0'); // 如:'100'
54
+ var moduleStr = padStart(String(moduleCode), 3, '0'); // 如:'020'
55
+ var errorCode = padStart(String(detailCode), 3, '0'); // 如:'001'
56
+
57
+ return Number("".concat(errorType).concat(moduleStr).concat(errorCode)); // 如:'100020001'
58
+ }
59
+ }, {
60
+ key: "getServiceType",
61
+ value: function getServiceType(errorCode) {
62
+ var str = String(errorCode);
63
+ if (str.length !== 9) {
64
+ return undefined;
65
+ }
66
+ var servicePrefix = str.slice(0, 3);
67
+ var serviceTypes = Object.values(ErrorServiceType).filter(function (v) {
68
+ return typeof v === 'number';
69
+ });
70
+ return serviceTypes.find(function (type) {
71
+ return padEnd(String(type), 3, '0') === servicePrefix;
72
+ });
73
+ }
74
+ }, {
75
+ key: "create",
76
+ value: function create(service, module, errorCode, message, cause) {
77
+ var domain = getDomain(service);
78
+ var fullMessage = "domain: ".concat(domain, ", info: ").concat(message);
79
+ var fullCode = AgoraError.createCode({
80
+ serviceCode: service,
81
+ moduleCode: module,
82
+ detailCode: errorCode
83
+ });
84
+ var causeMessage = '';
85
+ if (cause instanceof Error) {
86
+ causeMessage = cause.message;
87
+ } else if (cause) {
88
+ causeMessage = String(cause);
89
+ }
90
+ return new AgoraError({
91
+ code: fullCode,
92
+ message: fullMessage,
93
+ cause: causeMessage
94
+ });
95
+ }
96
+ }, {
97
+ key: "createWithAny",
98
+ value: function createWithAny(error, message) {
99
+ if (error instanceof AgoraError) {
100
+ return error;
101
+ } else {
102
+ var code = DetailErrorCode.UNDEFINED_ERROR;
103
+ if (error instanceof Error) {
104
+ if (error.cause) {
105
+ message = message + ", error cause: ".concat(error.cause);
106
+ }
107
+ }
108
+ var agoraError = new AgoraError({
109
+ code: code,
110
+ message: message
111
+ });
112
+ return agoraError;
113
+ }
114
+ }
115
+ }]);
116
+ }(/*#__PURE__*/_wrapNativeSuper(Error));
117
+ var getDomain = function getDomain(service) {
118
+ switch (service) {
119
+ case ErrorServiceType.RTE_CLIENT:
120
+ return 'RTE-CLIENT';
121
+ case ErrorServiceType.RTE_SERVER:
122
+ return 'RTE-SRV';
123
+ case ErrorServiceType.NATIVE_RTC:
124
+ return 'RTC';
125
+ case ErrorServiceType.WEB_RTC:
126
+ return 'WebRTC';
127
+ case ErrorServiceType.RTM_SDK:
128
+ return 'RTM';
129
+ case ErrorServiceType.FCR_CLIENT:
130
+ return 'CORE-CLIENT';
131
+ case ErrorServiceType.FCR_SERVER:
132
+ return 'CORE-SRV';
133
+ case ErrorServiceType.FCR_UI_SCENE:
134
+ return 'UI-SCENE';
135
+ case ErrorServiceType.DEMO_SERVER:
136
+ return 'DEMO-SRV';
137
+ default:
138
+ return 'UNDEFINED';
139
+ }
140
+ };
@@ -0,0 +1,74 @@
1
+ export var ErrorServiceType = /*#__PURE__*/function (ErrorServiceType) {
2
+ ErrorServiceType[ErrorServiceType["RTE_CLIENT"] = 1] = "RTE_CLIENT";
3
+ ErrorServiceType[ErrorServiceType["RTE_SERVER"] = 2] = "RTE_SERVER";
4
+ ErrorServiceType[ErrorServiceType["NATIVE_RTC"] = 3] = "NATIVE_RTC";
5
+ ErrorServiceType[ErrorServiceType["WEB_RTC"] = 4] = "WEB_RTC";
6
+ ErrorServiceType[ErrorServiceType["RTM_SDK"] = 5] = "RTM_SDK";
7
+ ErrorServiceType[ErrorServiceType["FCR_CLIENT"] = 6] = "FCR_CLIENT";
8
+ ErrorServiceType[ErrorServiceType["FCR_SERVER"] = 7] = "FCR_SERVER";
9
+ ErrorServiceType[ErrorServiceType["FCR_UI_SCENE"] = 8] = "FCR_UI_SCENE";
10
+ ErrorServiceType[ErrorServiceType["DEMO_SERVER"] = 9] = "DEMO_SERVER";
11
+ return ErrorServiceType;
12
+ }({});
13
+ export var ErrorModuleCode = /*#__PURE__*/function (ErrorModuleCode) {
14
+ ErrorModuleCode[ErrorModuleCode["NO_MODULE"] = 0] = "NO_MODULE";
15
+ ErrorModuleCode[ErrorModuleCode["RTE_ENGINE"] = 10] = "RTE_ENGINE";
16
+ ErrorModuleCode[ErrorModuleCode["RTE_SCENE"] = 20] = "RTE_SCENE";
17
+ ErrorModuleCode[ErrorModuleCode["RTE_SCENE_LOCAL_USER"] = 21] = "RTE_SCENE_LOCAL_USER";
18
+ ErrorModuleCode[ErrorModuleCode["RTE_SCENE_STREAM_PLAYER"] = 22] = "RTE_SCENE_STREAM_PLAYER";
19
+ ErrorModuleCode[ErrorModuleCode["RTE_MEDIA"] = 30] = "RTE_MEDIA";
20
+ ErrorModuleCode[ErrorModuleCode["RTE_MEDIA_CAMERA"] = 31] = "RTE_MEDIA_CAMERA";
21
+ ErrorModuleCode[ErrorModuleCode["RTE_MEDIA_MICROPHONE"] = 32] = "RTE_MEDIA_MICROPHONE";
22
+ ErrorModuleCode[ErrorModuleCode["RTE_MEDIA_LOOPBACK"] = 33] = "RTE_MEDIA_LOOPBACK";
23
+ ErrorModuleCode[ErrorModuleCode["RTE_MEDIA_SCREEN"] = 34] = "RTE_MEDIA_SCREEN";
24
+ ErrorModuleCode[ErrorModuleCode["RTE_MONITOR"] = 40] = "RTE_MONITOR";
25
+ ErrorModuleCode[ErrorModuleCode["RTE_AP_DETECTOR"] = 50] = "RTE_AP_DETECTOR";
26
+ // FcrCoreModuleErrorCode
27
+ ErrorModuleCode[ErrorModuleCode["FCR_ENGINE"] = 10] = "FCR_ENGINE";
28
+ ErrorModuleCode[ErrorModuleCode["FCR_ENGINE_PEER_SESSION"] = 11] = "FCR_ENGINE_PEER_SESSION";
29
+ ErrorModuleCode[ErrorModuleCode["FCR_ROOM"] = 20] = "FCR_ROOM";
30
+ ErrorModuleCode[ErrorModuleCode["FCR_ROOM_USER"] = 21] = "FCR_ROOM_USER";
31
+ ErrorModuleCode[ErrorModuleCode["FCR_STREAM"] = 22] = "FCR_STREAM";
32
+ ErrorModuleCode[ErrorModuleCode["FCR_ROOM_STREAM"] = 22] = "FCR_ROOM_STREAM";
33
+ ErrorModuleCode[ErrorModuleCode["FCR_ROOM_GROUP"] = 23] = "FCR_ROOM_GROUP";
34
+ ErrorModuleCode[ErrorModuleCode["FCR_ROOM_CHATROOM"] = 24] = "FCR_ROOM_CHATROOM";
35
+ ErrorModuleCode[ErrorModuleCode["FCR_ROOM_SESSION"] = 25] = "FCR_ROOM_SESSION";
36
+ ErrorModuleCode[ErrorModuleCode["FCR_ROOM_PRIVILEGE"] = 26] = "FCR_ROOM_PRIVILEGE";
37
+ ErrorModuleCode[ErrorModuleCode["FCR_ROOM_WHITEBOARD"] = 27] = "FCR_ROOM_WHITEBOARD";
38
+ ErrorModuleCode[ErrorModuleCode["FCR_ROOM_CONNECTOR"] = 28] = "FCR_ROOM_CONNECTOR";
39
+ ErrorModuleCode[ErrorModuleCode["FCR_ROOM_INTERPRETER"] = 29] = "FCR_ROOM_INTERPRETER";
40
+ ErrorModuleCode[ErrorModuleCode["FCR_MEDIA_CONTROL"] = 30] = "FCR_MEDIA_CONTROL";
41
+ ErrorModuleCode[ErrorModuleCode["FCR_MEDIA_CONTROL_CAMERA"] = 31] = "FCR_MEDIA_CONTROL_CAMERA";
42
+ ErrorModuleCode[ErrorModuleCode["FCR_MEDIA_CONTROL_MICROPHONE"] = 32] = "FCR_MEDIA_CONTROL_MICROPHONE";
43
+ ErrorModuleCode[ErrorModuleCode["FCR_MEDIA_CONTROL_LOOPBACK"] = 33] = "FCR_MEDIA_CONTROL_LOOPBACK";
44
+ ErrorModuleCode[ErrorModuleCode["FCR_MEDIA_CONTROL_SCREEN"] = 34] = "FCR_MEDIA_CONTROL_SCREEN";
45
+ ErrorModuleCode[ErrorModuleCode["FCR_ROOM_STT"] = 35] = "FCR_ROOM_STT";
46
+ ErrorModuleCode[ErrorModuleCode["FCR_MONITOR"] = 40] = "FCR_MONITOR";
47
+ ErrorModuleCode[ErrorModuleCode["FCR_ROOM_LIVE_STREAMING"] = 41] = "FCR_ROOM_LIVE_STREAMING";
48
+ // FcrUISceneModuleErrorCode
49
+ ErrorModuleCode[ErrorModuleCode["FCR_UI_SCENE_CREATOR"] = 10] = "FCR_UI_SCENE_CREATOR";
50
+ return ErrorModuleCode;
51
+ }({});
52
+ export var DetailErrorCode = /*#__PURE__*/function (DetailErrorCode) {
53
+ DetailErrorCode[DetailErrorCode["UNDEFINED"] = 1] = "UNDEFINED";
54
+ DetailErrorCode[DetailErrorCode["UNDEFINED_ERROR"] = 1] = "UNDEFINED_ERROR";
55
+ DetailErrorCode[DetailErrorCode["INVALID_PARAMS"] = 10] = "INVALID_PARAMS";
56
+ DetailErrorCode[DetailErrorCode["JSON_PARSE_ERROR"] = 11] = "JSON_PARSE_ERROR";
57
+ DetailErrorCode[DetailErrorCode["LOCAL_HTTP_REQUEST_FAILED"] = 12] = "LOCAL_HTTP_REQUEST_FAILED";
58
+ DetailErrorCode[DetailErrorCode["NOT_LOGGED_IN"] = 13] = "NOT_LOGGED_IN";
59
+ DetailErrorCode[DetailErrorCode["NOT_JOINED_ROOM"] = 14] = "NOT_JOINED_ROOM";
60
+ DetailErrorCode[DetailErrorCode["EXPIRED"] = 15] = "EXPIRED";
61
+ DetailErrorCode[DetailErrorCode["JOIN_CONFLICT"] = 15] = "JOIN_CONFLICT";
62
+ DetailErrorCode[DetailErrorCode["UNAUTHORIZED"] = 16] = "UNAUTHORIZED";
63
+ DetailErrorCode[DetailErrorCode["JOIN_FAILED"] = 21] = "JOIN_FAILED";
64
+ DetailErrorCode[DetailErrorCode["JOIN_TIMEOUT"] = 22] = "JOIN_TIMEOUT";
65
+ DetailErrorCode[DetailErrorCode["AP_DETECT_FAILED"] = 51] = "AP_DETECT_FAILED";
66
+ DetailErrorCode[DetailErrorCode["PROCESS_START_FAILED"] = 81] = "PROCESS_START_FAILED";
67
+ DetailErrorCode[DetailErrorCode["WINDOW_HIDDEN_BEFORE_JOIN"] = 82] = "WINDOW_HIDDEN_BEFORE_JOIN";
68
+ DetailErrorCode[DetailErrorCode["WINDOW_CLOSED_BEFORE_JOIN"] = 83] = "WINDOW_CLOSED_BEFORE_JOIN";
69
+ DetailErrorCode[DetailErrorCode["LAUNCH_IN_PROGRESS"] = 84] = "LAUNCH_IN_PROGRESS";
70
+ DetailErrorCode[DetailErrorCode["PROCESS_CRASHED"] = 86] = "PROCESS_CRASHED";
71
+ DetailErrorCode[DetailErrorCode["PROCESS_NOT_RESPONDING"] = 87] = "PROCESS_NOT_RESPONDING";
72
+ DetailErrorCode[DetailErrorCode["JOIN_RTC_TIMEOUT"] = 10] = "JOIN_RTC_TIMEOUT";
73
+ return DetailErrorCode;
74
+ }({});