agora-foundation 1.0.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.
- package/lib/decorator/bound/index.d.ts +5 -0
- package/lib/decorator/bound/index.js +19 -0
- package/lib/decorator/index.d.ts +3 -0
- package/lib/decorator/index.js +33 -0
- package/lib/decorator/lodash/index.d.ts +16 -0
- package/lib/decorator/lodash/index.js +42 -0
- package/lib/decorator/log/handler.d.ts +4 -0
- package/lib/decorator/log/handler.js +63 -0
- package/lib/decorator/log/index.d.ts +4 -0
- package/lib/decorator/log/index.js +38 -0
- package/lib/decorator/log/log-serializer.d.ts +8 -0
- package/lib/decorator/log/log-serializer.js +67 -0
- package/lib/decorator/proxy.d.ts +9 -0
- package/lib/decorator/proxy.js +154 -0
- package/lib/decorator/type.d.ts +16 -0
- package/lib/decorator/type.js +12 -0
- package/lib/logger/constants.d.ts +11 -0
- package/lib/logger/constants.js +11 -0
- package/lib/logger/hijack.d.ts +4 -0
- package/lib/logger/hijack.js +65 -0
- package/lib/logger/index.d.ts +8 -0
- package/lib/logger/index.js +70 -0
- package/lib/logger/logger-impl.d.ts +19 -0
- package/lib/logger/logger-impl.js +111 -0
- package/lib/logger/manager-impl.d.ts +8 -0
- package/lib/logger/manager-impl.js +67 -0
- package/lib/logger/type.d.ts +25 -0
- package/lib/logger/type.js +14 -0
- package/lib/schedule/index.d.ts +3 -0
- package/lib/schedule/index.js +25 -0
- package/lib/schedule/scheduler.d.ts +21 -0
- package/lib/schedule/scheduler.js +108 -0
- package/lib/schedule/task.d.ts +36 -0
- package/lib/schedule/task.js +167 -0
- package/lib/upload/index.d.ts +2 -0
- package/lib/upload/index.js +13 -0
- package/lib/upload/scheduler.d.ts +15 -0
- package/lib/upload/scheduler.js +114 -0
- package/lib/upload/type.d.ts +11 -0
- package/lib/upload/type.js +6 -0
- package/lib/utilities/async-retry.d.ts +63 -0
- package/lib/utilities/async-retry.js +180 -0
- package/lib/utilities/env.d.ts +12 -0
- package/lib/utilities/env.js +56 -0
- package/lib/utilities/events.d.ts +13 -0
- package/lib/utilities/events.js +114 -0
- package/lib/utilities/file-reader.d.ts +1 -0
- package/lib/utilities/file-reader.js +22 -0
- package/lib/utilities/interceptor.d.ts +6 -0
- package/lib/utilities/interceptor.js +28 -0
- package/lib/utilities/misc.d.ts +5 -0
- package/lib/utilities/misc.js +52 -0
- package/lib/utilities/observable.d.ts +11 -0
- package/lib/utilities/observable.js +73 -0
- package/lib/utilities/race-condition.d.ts +1 -0
- package/lib/utilities/race-condition.js +24 -0
- package/lib/utilities/value-check.d.ts +1 -0
- package/lib/utilities/value-check.js +10 -0
- package/lib/utilities/zip.d.ts +1 -0
- package/lib/utilities/zip.js +107 -0
- package/lib/worker/constants.d.ts +11 -0
- package/lib/worker/constants.js +19 -0
- package/lib/worker/handler/binary.d.ts +5 -0
- package/lib/worker/handler/binary.js +161 -0
- package/lib/worker/handler/db.d.ts +21 -0
- package/lib/worker/handler/db.js +42 -0
- package/lib/worker/handler/fs-log.d.ts +3 -0
- package/lib/worker/handler/fs-log.js +156 -0
- package/lib/worker/handler/log.d.ts +12 -0
- package/lib/worker/handler/log.js +246 -0
- package/lib/worker/handler/reply.d.ts +3 -0
- package/lib/worker/handler/reply.js +22 -0
- package/lib/worker/index.d.ts +2 -0
- package/lib/worker/index.js +15 -0
- package/lib/worker/interactor.d.ts +25 -0
- package/lib/worker/interactor.js +378 -0
- package/lib/worker/mutex.d.ts +5 -0
- package/lib/worker/mutex.js +65 -0
- package/lib/worker/type.d.ts +1 -0
- package/lib/worker/type.js +6 -0
- package/lib/worker/worker-entry.d.ts +1 -0
- package/lib/worker/worker-entry.js +5 -0
- package/lib/worker/worker-factory.d.ts +1 -0
- package/lib/worker/worker-factory.js +14 -0
- package/lib/worker/worker-installer.d.ts +2 -0
- package/lib/worker/worker-installer.js +72 -0
- package/package.json +29 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.define-property.js");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.bound = void 0;
|
|
8
|
+
require("core-js/modules/es.function.bind.js");
|
|
9
|
+
require("core-js/modules/es.function.name.js");
|
|
10
|
+
/**
|
|
11
|
+
* Binds correct instance to `this`.
|
|
12
|
+
* Note: put it to first before all other annotations in order to take effect.
|
|
13
|
+
*/
|
|
14
|
+
var bound = exports.bound = function bound(originalMethod, context) {
|
|
15
|
+
context.addInitializer(function () {
|
|
16
|
+
//@ts-ignore
|
|
17
|
+
this[context.name] = this[context.name].bind(this);
|
|
18
|
+
});
|
|
19
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.define-property.js");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
Object.defineProperty(exports, "bound", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function get() {
|
|
10
|
+
return _bound.bound;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, "debounced", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function get() {
|
|
16
|
+
return _lodash.debounced;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "throttled", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function get() {
|
|
22
|
+
return _lodash.throttled;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(exports, "trace", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function get() {
|
|
28
|
+
return _log.trace;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
var _log = require("./log");
|
|
32
|
+
var _bound = require("./bound");
|
|
33
|
+
var _lodash = require("./lodash");
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DebounceSettings, ThrottleSettings } from 'lodash';
|
|
2
|
+
export declare const cleanup: () => void;
|
|
3
|
+
/**
|
|
4
|
+
* Makes methods debounced
|
|
5
|
+
* @param wait
|
|
6
|
+
* @param options
|
|
7
|
+
* @returns
|
|
8
|
+
*/
|
|
9
|
+
export declare const debounced: (wait?: number, options?: DebounceSettings) => (originalMethod: any, context: ClassMethodDecoratorContext) => void;
|
|
10
|
+
/**
|
|
11
|
+
* Makes methods throttled
|
|
12
|
+
* @param wait
|
|
13
|
+
* @param options
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
export declare const throttled: (wait?: number, options?: ThrottleSettings) => (originalMethod: any, context: ClassMethodDecoratorContext) => void;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.define-property.js");
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.throttled = exports.debounced = exports.cleanup = void 0;
|
|
9
|
+
require("core-js/modules/es.function.name.js");
|
|
10
|
+
var _debounce = _interopRequireDefault(require("lodash/debounce"));
|
|
11
|
+
var _throttle = _interopRequireDefault(require("lodash/throttle"));
|
|
12
|
+
var cleanup = exports.cleanup = function cleanup() {};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Makes methods debounced
|
|
16
|
+
* @param wait
|
|
17
|
+
* @param options
|
|
18
|
+
* @returns
|
|
19
|
+
*/
|
|
20
|
+
var debounced = exports.debounced = function debounced(wait, options) {
|
|
21
|
+
return function (originalMethod, context) {
|
|
22
|
+
context.addInitializer(function () {
|
|
23
|
+
//@ts-ignore
|
|
24
|
+
this[context.name] = (0, _debounce["default"])(this[context.name], wait, options);
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Makes methods throttled
|
|
31
|
+
* @param wait
|
|
32
|
+
* @param options
|
|
33
|
+
* @returns
|
|
34
|
+
*/
|
|
35
|
+
var throttled = exports.throttled = function throttled(wait, options) {
|
|
36
|
+
return function (originalMethod, context) {
|
|
37
|
+
context.addInitializer(function () {
|
|
38
|
+
//@ts-ignore
|
|
39
|
+
this[context.name] = (0, _throttle["default"])(this[context.name], wait, options);
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.define-property.js");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.createLogHandler = void 0;
|
|
8
|
+
require("core-js/modules/es.array.concat.js");
|
|
9
|
+
require("core-js/modules/es.date.to-string.js");
|
|
10
|
+
require("core-js/modules/es.function.name.js");
|
|
11
|
+
var _interceptor = require("../../utilities/interceptor");
|
|
12
|
+
var _misc = require("../../utilities/misc");
|
|
13
|
+
var _type = require("../type");
|
|
14
|
+
var _logSerializer = require("./log-serializer");
|
|
15
|
+
var formatCallLog = function formatCallLog(identifier, args) {
|
|
16
|
+
var msg = '';
|
|
17
|
+
if (args.length) {
|
|
18
|
+
msg += "[parameters: ".concat((0, _logSerializer.serializeArgs)(args), "]");
|
|
19
|
+
}
|
|
20
|
+
return "".concat(identifier.className, " ").concat(identifier.methodName, " [API Call] ").concat(identifier.traceId, " ").concat(msg);
|
|
21
|
+
};
|
|
22
|
+
var formatReturnLog = function formatReturnLog(identifier, elapsed, args, returnValue, thrown) {
|
|
23
|
+
var msg = '';
|
|
24
|
+
if (args !== null && args !== void 0 && args.length) {
|
|
25
|
+
msg += "[parameters: ".concat((0, _logSerializer.serializeArgs)(args), "]");
|
|
26
|
+
}
|
|
27
|
+
if (thrown) {
|
|
28
|
+
msg += "[throw: ".concat(thrown.name, "]");
|
|
29
|
+
msg += "[message: ".concat(thrown.message, "]");
|
|
30
|
+
} else if (typeof returnValue !== 'undefined') {
|
|
31
|
+
msg += "[return: ".concat((0, _logSerializer.serialize)(returnValue), "]");
|
|
32
|
+
}
|
|
33
|
+
return "".concat(identifier.className, " ").concat(identifier.methodName, " [API Call]").concat(msg, "[elapsed: ").concat(elapsed, "ms]");
|
|
34
|
+
};
|
|
35
|
+
var createLogHandler = exports.createLogHandler = function createLogHandler(logger) {
|
|
36
|
+
return function (evt) {
|
|
37
|
+
if (evt.type === _type.InvocationEventType.PRE) {
|
|
38
|
+
evt.context.start = new Date().getTime();
|
|
39
|
+
evt.context.traceId = (0, _misc.randomString)(5);
|
|
40
|
+
|
|
41
|
+
// const args = evt.arguments ?? [];
|
|
42
|
+
// const msg = formatCallLog(
|
|
43
|
+
// {
|
|
44
|
+
// className: evt.class,
|
|
45
|
+
// methodName: evt.method,
|
|
46
|
+
// traceId: evt.context.traceId,
|
|
47
|
+
// },
|
|
48
|
+
// args,
|
|
49
|
+
// );
|
|
50
|
+
// logger.info(msg);
|
|
51
|
+
} else {
|
|
52
|
+
var _evt$arguments;
|
|
53
|
+
var elapsed = new Date().getTime() - evt.context.start;
|
|
54
|
+
var msg = formatReturnLog({
|
|
55
|
+
className: evt["class"],
|
|
56
|
+
methodName: evt.method,
|
|
57
|
+
traceId: evt.context.traceId
|
|
58
|
+
}, elapsed, (_evt$arguments = evt.arguments) !== null && _evt$arguments !== void 0 ? _evt$arguments : [], evt["return"], evt.error);
|
|
59
|
+
logger.info(msg);
|
|
60
|
+
}
|
|
61
|
+
return _interceptor.Result.CONTINUE;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.define-property.js");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.trace = void 0;
|
|
8
|
+
require("core-js/modules/es.function.name.js");
|
|
9
|
+
var _proxy = require("../proxy");
|
|
10
|
+
var _handler = require("./handler");
|
|
11
|
+
var _logger = require("../../logger");
|
|
12
|
+
/**
|
|
13
|
+
* Enables logging for invocation detail of the target method.
|
|
14
|
+
* @param targetOrProto The class or prototype that the method belongs to.
|
|
15
|
+
* @param methodName The name of the method.
|
|
16
|
+
*/
|
|
17
|
+
var _trace = function _trace(originalMethod, context) {
|
|
18
|
+
var methodName = String(context.name);
|
|
19
|
+
if (context.kind === 'method') {
|
|
20
|
+
context.addInitializer(function () {
|
|
21
|
+
var handler = (0, _handler.createLogHandler)((0, _logger.getLogger)('default'));
|
|
22
|
+
this[context.name] = (0, _proxy.proxyMethod)(this[context.name], this, methodName, handler);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
_trace.to = function (label) {
|
|
27
|
+
var logger = (0, _logger.getLogger)(label);
|
|
28
|
+
return function (originalMethod, context) {
|
|
29
|
+
var methodName = String(context.name);
|
|
30
|
+
if (context.kind === 'method') {
|
|
31
|
+
context.addInitializer(function () {
|
|
32
|
+
var handler = (0, _handler.createLogHandler)(logger);
|
|
33
|
+
this[context.name] = (0, _proxy.proxyMethod)(this[context.name], this, methodName, handler);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
var trace = exports.trace = _trace;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface Serializer {
|
|
2
|
+
match(obj: any): boolean;
|
|
3
|
+
serialize(obj: any): string;
|
|
4
|
+
}
|
|
5
|
+
export declare const addSerializer: (serializer: Serializer) => void;
|
|
6
|
+
export declare const serialize: (data: unknown) => string;
|
|
7
|
+
export declare const serializeArgs: (args: unknown[]) => string;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.define-property.js");
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.serializeArgs = exports.serialize = exports.addSerializer = void 0;
|
|
9
|
+
require("core-js/modules/es.array.find.js");
|
|
10
|
+
require("core-js/modules/es.array.join.js");
|
|
11
|
+
require("core-js/modules/es.array.map.js");
|
|
12
|
+
require("core-js/modules/es.array.push.js");
|
|
13
|
+
require("core-js/modules/es.function.name.js");
|
|
14
|
+
require("core-js/modules/es.object.to-string.js");
|
|
15
|
+
require("core-js/modules/es.regexp.exec.js");
|
|
16
|
+
require("core-js/modules/es.string.match.js");
|
|
17
|
+
var _isPlainObject = _interopRequireDefault(require("lodash/isPlainObject"));
|
|
18
|
+
var _misc = require("../../utilities/misc");
|
|
19
|
+
var serializers = [];
|
|
20
|
+
var fileSerializer = {
|
|
21
|
+
match: function match(obj) {
|
|
22
|
+
return obj instanceof File;
|
|
23
|
+
},
|
|
24
|
+
serialize: function serialize(file) {
|
|
25
|
+
return (0, _misc.jsonstring)({
|
|
26
|
+
filename: file.name,
|
|
27
|
+
size: file.size
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
var plainObjectSerializer = {
|
|
32
|
+
match: function match(obj) {
|
|
33
|
+
return (0, _isPlainObject["default"])(obj);
|
|
34
|
+
},
|
|
35
|
+
serialize: function serialize(obj) {
|
|
36
|
+
return (0, _misc.jsonstring)(obj);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
var functionSerializer = {
|
|
40
|
+
match: function match(obj) {
|
|
41
|
+
return typeof obj === 'function';
|
|
42
|
+
},
|
|
43
|
+
serialize: function serialize(obj) {
|
|
44
|
+
return '[Function]';
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
var addSerializer = exports.addSerializer = function addSerializer(serializer) {
|
|
48
|
+
serializers.push(serializer);
|
|
49
|
+
};
|
|
50
|
+
var serialize = exports.serialize = function serialize(data) {
|
|
51
|
+
if (typeof data === 'string') {
|
|
52
|
+
return data;
|
|
53
|
+
}
|
|
54
|
+
var serializer = serializers.find(function (serializer) {
|
|
55
|
+
return serializer.match(data);
|
|
56
|
+
});
|
|
57
|
+
if (serializer) {
|
|
58
|
+
return serializer.serialize(data);
|
|
59
|
+
}
|
|
60
|
+
return "".concat(data);
|
|
61
|
+
};
|
|
62
|
+
var serializeArgs = exports.serializeArgs = function serializeArgs(args) {
|
|
63
|
+
return "".concat(args.map(serialize).join(' '));
|
|
64
|
+
};
|
|
65
|
+
addSerializer(fileSerializer);
|
|
66
|
+
addSerializer(plainObjectSerializer);
|
|
67
|
+
addSerializer(functionSerializer);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AnyFunction, InvocationHandler } from './type';
|
|
2
|
+
export declare const proxyMethod: (method: AnyFunction, proto: any, propertyName: string, handler: InvocationHandler) => (this: any, ...args: any[]) => any;
|
|
3
|
+
export declare const extendConstructor: (constructor: any, handler: InvocationHandler, extendProps?: any, proxyMethods?: boolean) => {
|
|
4
|
+
new (...args: unknown[]): {
|
|
5
|
+
[x: string]: any;
|
|
6
|
+
};
|
|
7
|
+
[x: string]: any;
|
|
8
|
+
readonly __$$className: any;
|
|
9
|
+
};
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.reflect.construct.js");
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.proxyMethod = exports.extendConstructor = void 0;
|
|
9
|
+
require("core-js/modules/es.array.concat.js");
|
|
10
|
+
require("core-js/modules/es.array.for-each.js");
|
|
11
|
+
require("core-js/modules/es.array.index-of.js");
|
|
12
|
+
require("core-js/modules/es.array.push.js");
|
|
13
|
+
require("core-js/modules/es.function.name.js");
|
|
14
|
+
require("core-js/modules/es.object.define-property.js");
|
|
15
|
+
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
16
|
+
require("core-js/modules/es.object.get-own-property-names.js");
|
|
17
|
+
require("core-js/modules/es.object.get-prototype-of.js");
|
|
18
|
+
require("core-js/modules/es.object.keys.js");
|
|
19
|
+
require("core-js/modules/es.object.to-string.js");
|
|
20
|
+
require("core-js/modules/es.promise.js");
|
|
21
|
+
require("core-js/modules/es.promise.finally.js");
|
|
22
|
+
require("core-js/modules/web.dom-collections.for-each.js");
|
|
23
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
24
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
25
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
26
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
27
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
28
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
29
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
30
|
+
var _type = require("./type");
|
|
31
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
32
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
33
|
+
var failQuitely = function failQuitely(func, args) {
|
|
34
|
+
try {
|
|
35
|
+
return func.apply(void 0, (0, _toConsumableArray2["default"])(args));
|
|
36
|
+
} catch (e) {}
|
|
37
|
+
};
|
|
38
|
+
var invokeMethod = function invokeMethod(instance, method, proto, propertyName, args, hanlder) {
|
|
39
|
+
var context = {};
|
|
40
|
+
failQuitely(hanlder, [{
|
|
41
|
+
type: _type.InvocationEventType.PRE,
|
|
42
|
+
arguments: args,
|
|
43
|
+
method: propertyName,
|
|
44
|
+
"class": proto.constructor.__$$className || proto.constructor.name,
|
|
45
|
+
context: context
|
|
46
|
+
}]);
|
|
47
|
+
|
|
48
|
+
// 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
|
|
49
|
+
var returnVal = method.apply(instance, args);
|
|
50
|
+
var post = function post(val, error) {
|
|
51
|
+
failQuitely(hanlder, [{
|
|
52
|
+
type: _type.InvocationEventType.POST,
|
|
53
|
+
arguments: args,
|
|
54
|
+
"return": val,
|
|
55
|
+
method: propertyName,
|
|
56
|
+
"class": proto.constructor.__$$className || proto.constructor.name,
|
|
57
|
+
context: context,
|
|
58
|
+
error: error
|
|
59
|
+
}]);
|
|
60
|
+
};
|
|
61
|
+
var isThenable = returnVal && !!returnVal.then;
|
|
62
|
+
if (isThenable) {
|
|
63
|
+
// capture async return and potential error
|
|
64
|
+
var rtnTemp, errTemp;
|
|
65
|
+
returnVal.then(function (r) {
|
|
66
|
+
rtnTemp = r;
|
|
67
|
+
})["catch"](function (e) {
|
|
68
|
+
errTemp = e;
|
|
69
|
+
})["finally"](function () {
|
|
70
|
+
post(rtnTemp, errTemp);
|
|
71
|
+
});
|
|
72
|
+
} else {
|
|
73
|
+
post(returnVal);
|
|
74
|
+
}
|
|
75
|
+
return returnVal;
|
|
76
|
+
};
|
|
77
|
+
var proxyMethod = exports.proxyMethod = function proxyMethod(method, proto, propertyName, handler) {
|
|
78
|
+
return function () {
|
|
79
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
80
|
+
args[_key] = arguments[_key];
|
|
81
|
+
}
|
|
82
|
+
return invokeMethod(this, method, proto, propertyName, args, handler);
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
var getMethods = function getMethods(target) {
|
|
86
|
+
var allProps = [];
|
|
87
|
+
var allMethods = [];
|
|
88
|
+
var curr = target;
|
|
89
|
+
while ((curr = Object.getPrototypeOf(curr)) && curr !== Object.prototype) {
|
|
90
|
+
var props = Object.getOwnPropertyNames(curr);
|
|
91
|
+
props.forEach(function (prop) {
|
|
92
|
+
if (allProps.indexOf(prop) === -1) {
|
|
93
|
+
allProps.push(prop);
|
|
94
|
+
if (prop === 'constructor') {
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
if (typeof target[prop] === 'function') {
|
|
99
|
+
allMethods.push(prop);
|
|
100
|
+
}
|
|
101
|
+
} catch (e) {
|
|
102
|
+
var descptor = Object.getOwnPropertyDescriptor(curr, prop);
|
|
103
|
+
if (typeof (descptor === null || descptor === void 0 ? void 0 : descptor.value) === 'function') {
|
|
104
|
+
// it's a method of a class
|
|
105
|
+
allMethods.push(prop);
|
|
106
|
+
} else {
|
|
107
|
+
// Logger.info('undetermined type of property', descptor, curr, prop);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
return allMethods;
|
|
114
|
+
};
|
|
115
|
+
var extendConstructor = exports.extendConstructor = function extendConstructor(constructor, handler, extendProps, proxyMethods) {
|
|
116
|
+
var _Class;
|
|
117
|
+
return _Class = /*#__PURE__*/function (_constructor) {
|
|
118
|
+
function _Class() {
|
|
119
|
+
var _this;
|
|
120
|
+
(0, _classCallCheck2["default"])(this, _Class);
|
|
121
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
122
|
+
args[_key2] = arguments[_key2];
|
|
123
|
+
}
|
|
124
|
+
_this = _callSuper(this, _Class, [].concat(args));
|
|
125
|
+
if (proxyMethods) {
|
|
126
|
+
var methods = getMethods(_this);
|
|
127
|
+
// proxy methods
|
|
128
|
+
// redefine methods on the instance
|
|
129
|
+
methods.forEach(function (propertyName) {
|
|
130
|
+
var method = _this[propertyName];
|
|
131
|
+
Object.defineProperty(_this, propertyName, {
|
|
132
|
+
writable: true,
|
|
133
|
+
configurable: true,
|
|
134
|
+
enumerable: false,
|
|
135
|
+
value: proxyMethod(method, _this, propertyName, handler)
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// mount extend properties
|
|
141
|
+
Object.keys(extendProps).forEach(function (propertyName) {
|
|
142
|
+
Object.defineProperty(_this, propertyName, {
|
|
143
|
+
configurable: true,
|
|
144
|
+
enumerable: false,
|
|
145
|
+
writable: false,
|
|
146
|
+
value: extendProps[propertyName]
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
return _this;
|
|
150
|
+
}
|
|
151
|
+
(0, _inherits2["default"])(_Class, _constructor);
|
|
152
|
+
return (0, _createClass2["default"])(_Class);
|
|
153
|
+
}(constructor), (0, _defineProperty2["default"])(_Class, "__$$className", constructor.name), _Class;
|
|
154
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Interceptor } from '../utilities/interceptor';
|
|
2
|
+
export declare enum InvocationEventType {
|
|
3
|
+
PRE = 0,
|
|
4
|
+
POST = 1
|
|
5
|
+
}
|
|
6
|
+
export type InvocationEvent = {
|
|
7
|
+
type: InvocationEventType;
|
|
8
|
+
context: Record<string, any>;
|
|
9
|
+
class: string;
|
|
10
|
+
method: string;
|
|
11
|
+
arguments?: any[];
|
|
12
|
+
return?: any;
|
|
13
|
+
error?: Error;
|
|
14
|
+
};
|
|
15
|
+
export type InvocationHandler = Interceptor<InvocationEvent>;
|
|
16
|
+
export type AnyFunction = (...args: any) => any;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.define-property.js");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.InvocationEventType = void 0;
|
|
8
|
+
var InvocationEventType = exports.InvocationEventType = /*#__PURE__*/function (InvocationEventType) {
|
|
9
|
+
InvocationEventType[InvocationEventType["PRE"] = 0] = "PRE";
|
|
10
|
+
InvocationEventType[InvocationEventType["POST"] = 1] = "POST";
|
|
11
|
+
return InvocationEventType;
|
|
12
|
+
}({}); // make it interceptable
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.define-property.js");
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.logLevelMap = void 0;
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _type = require("./type");
|
|
11
|
+
var logLevelMap = exports.logLevelMap = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, _type.LogLevel.ERROR, 'error'), _type.LogLevel.WARN, 'warn'), _type.LogLevel.INFO, 'info'), _type.LogLevel.DEBUG, 'debug'), "debug", _type.LogLevel.DEBUG), "info", _type.LogLevel.INFO), "warn", _type.LogLevel.WARN), "error", _type.LogLevel.ERROR);
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.symbol.js");
|
|
4
|
+
require("core-js/modules/es.array.push.js");
|
|
5
|
+
require("core-js/modules/es.object.define-properties.js");
|
|
6
|
+
require("core-js/modules/es.object.define-property.js");
|
|
7
|
+
require("core-js/modules/es.object.get-own-property-descriptor.js");
|
|
8
|
+
require("core-js/modules/es.object.get-own-property-descriptors.js");
|
|
9
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
10
|
+
Object.defineProperty(exports, "__esModule", {
|
|
11
|
+
value: true
|
|
12
|
+
});
|
|
13
|
+
exports.setupConsoleHijack = exports.restoreConsoleHijack = exports.originConsole = void 0;
|
|
14
|
+
require("core-js/modules/es.array.filter.js");
|
|
15
|
+
require("core-js/modules/es.array.for-each.js");
|
|
16
|
+
require("core-js/modules/es.array.index-of.js");
|
|
17
|
+
require("core-js/modules/es.object.keys.js");
|
|
18
|
+
require("core-js/modules/es.object.to-string.js");
|
|
19
|
+
require("core-js/modules/web.dom-collections.for-each.js");
|
|
20
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
|
+
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; }
|
|
22
|
+
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; }
|
|
23
|
+
var methods = ['info', 'error', 'warn', 'debug'];
|
|
24
|
+
var originConsole = exports.originConsole = window.console;
|
|
25
|
+
var setupConsoleHijack = exports.setupConsoleHijack = function setupConsoleHijack(logger) {
|
|
26
|
+
var console = _objectSpread({}, originConsole);
|
|
27
|
+
//@ts-ignore
|
|
28
|
+
if (console.__hijackSetup) {
|
|
29
|
+
console.log('[logger] hijack already setup!');
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
console.log("[logger] setup hijack..");
|
|
33
|
+
function proxy(methodName) {
|
|
34
|
+
return function () {
|
|
35
|
+
switch (methodName) {
|
|
36
|
+
case 'debug':
|
|
37
|
+
logger.debug.apply(logger, arguments);
|
|
38
|
+
break;
|
|
39
|
+
case 'info':
|
|
40
|
+
logger.info.apply(logger, arguments);
|
|
41
|
+
break;
|
|
42
|
+
case 'warn':
|
|
43
|
+
logger.warn.apply(logger, arguments);
|
|
44
|
+
break;
|
|
45
|
+
case 'error':
|
|
46
|
+
logger.error.apply(logger, arguments);
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
Object.keys(console).filter(function (e) {
|
|
52
|
+
return methods.indexOf(e) >= 0;
|
|
53
|
+
}).forEach(function (methodName) {
|
|
54
|
+
console[methodName] = proxy(methodName);
|
|
55
|
+
});
|
|
56
|
+
//@ts-ignore
|
|
57
|
+
console.__hijackSetup = true;
|
|
58
|
+
window.console = console;
|
|
59
|
+
};
|
|
60
|
+
var restoreConsoleHijack = exports.restoreConsoleHijack = function restoreConsoleHijack() {
|
|
61
|
+
console.log("[logger] restore hijack..");
|
|
62
|
+
window.console = originConsole;
|
|
63
|
+
//@ts-ignore
|
|
64
|
+
console.__hijackSetup = false;
|
|
65
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LogLevel, Logger, LogManager } from "./type";
|
|
2
|
+
export declare const getLogger: (label?: string) => Logger;
|
|
3
|
+
export declare const getLogManager: () => LogManager;
|
|
4
|
+
export declare const setLogLevel: (_logLevel: LogLevel) => void;
|
|
5
|
+
export { LogLevel } from "./type";
|
|
6
|
+
export type { LogManager, Logger } from "./type";
|
|
7
|
+
export { restoreConsoleHijack, setupConsoleHijack } from "./hijack";
|
|
8
|
+
export { logLevelMap } from "./constants";
|