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.
- package/lib/decorator/log/handler.d.ts +1 -1
- package/lib/decorator/log/handler.js +57 -64
- package/lib/decorator/log/index.d.ts +26 -1
- package/lib/decorator/log/index.js +50 -5
- package/lib/decorator/log/log-serializer.d.ts +1 -1
- package/lib/decorator/log/log-serializer.js +15 -2
- package/lib/decorator/proxy.d.ts +1 -1
- package/lib/decorator/proxy.js +16 -16
- package/lib/decorator/type.d.ts +3 -2
- package/lib/decorator/type.js +2 -2
- package/lib/utilities/desc-type.d.ts +1 -0
- package/lib/utilities/desc-type.js +1 -1
- package/lib/utilities/env.d.ts +2 -1
- package/lib/utilities/env.js +1 -0
- package/lib/utilities/{agora-error.d.ts → error/agora-error.d.ts} +5 -11
- package/lib/utilities/error/agora-error.js +148 -0
- package/lib/utilities/error/error-code.d.ts +69 -0
- package/lib/utilities/error/error-code.js +81 -0
- package/lib/utilities/logger.d.ts +13 -1
- package/lib/utilities/logger.js +103 -13
- package/lib/utilities/observable.js +1 -0
- package/lib/utilities/package-info.d.ts +8 -0
- package/lib/utilities/package-info.js +85 -0
- package/lib/utilities/regex.d.ts +1 -0
- package/lib/utilities/regex.js +14 -0
- package/lib/utilities/tools.d.ts +28 -0
- package/lib/utilities/tools.js +154 -0
- package/lib-es/decorator/log/handler.js +56 -64
- package/lib-es/decorator/log/index.js +49 -4
- package/lib-es/decorator/log/log-serializer.js +15 -2
- package/lib-es/decorator/proxy.js +16 -16
- package/lib-es/decorator/type.js +2 -2
- package/lib-es/utilities/desc-type.js +1 -1
- package/lib-es/utilities/env.js +1 -0
- package/lib-es/utilities/error/agora-error.js +140 -0
- package/lib-es/utilities/error/error-code.js +74 -0
- package/lib-es/utilities/logger.js +102 -12
- package/lib-es/utilities/observable.js +1 -0
- package/lib-es/utilities/package-info.js +78 -0
- package/lib-es/utilities/regex.js +7 -0
- package/lib-es/utilities/tools.js +144 -0
- package/package.json +2 -2
- package/lib/utilities/agora-error.js +0 -128
- 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.
|
|
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
|
|
9
|
-
|
|
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
|
-
|
|
16
|
+
parameters = "[parameters: [".concat(serializeArgs(args, argsNames), "]]");
|
|
12
17
|
}
|
|
13
|
-
return "".concat(identifier.methodName, "
|
|
18
|
+
return "".concat(identifier.methodName, ": ").concat(tag, " ").concat(parameters, " ").concat(duration);
|
|
14
19
|
};
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
evt
|
|
43
|
-
evt.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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
|
|
71
|
-
holder.logger.error(
|
|
62
|
+
var msgBody = " ".concat(formatLogError(evt.error));
|
|
63
|
+
holder.logger.error(getMsg(msgBody));
|
|
72
64
|
} else {
|
|
73
|
-
|
|
74
|
-
holder.logger
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
36
|
-
|
|
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
|
|
42
|
+
var isThenable = returnVal && !!returnVal.then;
|
|
43
|
+
context.isThenable = isThenable;
|
|
44
|
+
var post = function post(type, val, error) {
|
|
46
45
|
failQuitely(hanlder, [{
|
|
47
|
-
type:
|
|
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
|
-
|
|
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) {
|
package/lib-es/decorator/type.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export var InvocationEventType = /*#__PURE__*/function (InvocationEventType) {
|
|
2
|
-
InvocationEventType[InvocationEventType["
|
|
3
|
-
InvocationEventType[InvocationEventType["
|
|
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');
|
package/lib-es/utilities/env.js
CHANGED
|
@@ -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
|
+
}({});
|