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.
Files changed (87) hide show
  1. package/lib/decorator/bound/index.d.ts +5 -0
  2. package/lib/decorator/bound/index.js +19 -0
  3. package/lib/decorator/index.d.ts +3 -0
  4. package/lib/decorator/index.js +33 -0
  5. package/lib/decorator/lodash/index.d.ts +16 -0
  6. package/lib/decorator/lodash/index.js +42 -0
  7. package/lib/decorator/log/handler.d.ts +4 -0
  8. package/lib/decorator/log/handler.js +63 -0
  9. package/lib/decorator/log/index.d.ts +4 -0
  10. package/lib/decorator/log/index.js +38 -0
  11. package/lib/decorator/log/log-serializer.d.ts +8 -0
  12. package/lib/decorator/log/log-serializer.js +67 -0
  13. package/lib/decorator/proxy.d.ts +9 -0
  14. package/lib/decorator/proxy.js +154 -0
  15. package/lib/decorator/type.d.ts +16 -0
  16. package/lib/decorator/type.js +12 -0
  17. package/lib/logger/constants.d.ts +11 -0
  18. package/lib/logger/constants.js +11 -0
  19. package/lib/logger/hijack.d.ts +4 -0
  20. package/lib/logger/hijack.js +65 -0
  21. package/lib/logger/index.d.ts +8 -0
  22. package/lib/logger/index.js +70 -0
  23. package/lib/logger/logger-impl.d.ts +19 -0
  24. package/lib/logger/logger-impl.js +111 -0
  25. package/lib/logger/manager-impl.d.ts +8 -0
  26. package/lib/logger/manager-impl.js +67 -0
  27. package/lib/logger/type.d.ts +25 -0
  28. package/lib/logger/type.js +14 -0
  29. package/lib/schedule/index.d.ts +3 -0
  30. package/lib/schedule/index.js +25 -0
  31. package/lib/schedule/scheduler.d.ts +21 -0
  32. package/lib/schedule/scheduler.js +108 -0
  33. package/lib/schedule/task.d.ts +36 -0
  34. package/lib/schedule/task.js +167 -0
  35. package/lib/upload/index.d.ts +2 -0
  36. package/lib/upload/index.js +13 -0
  37. package/lib/upload/scheduler.d.ts +15 -0
  38. package/lib/upload/scheduler.js +114 -0
  39. package/lib/upload/type.d.ts +11 -0
  40. package/lib/upload/type.js +6 -0
  41. package/lib/utilities/async-retry.d.ts +63 -0
  42. package/lib/utilities/async-retry.js +180 -0
  43. package/lib/utilities/env.d.ts +12 -0
  44. package/lib/utilities/env.js +56 -0
  45. package/lib/utilities/events.d.ts +13 -0
  46. package/lib/utilities/events.js +114 -0
  47. package/lib/utilities/file-reader.d.ts +1 -0
  48. package/lib/utilities/file-reader.js +22 -0
  49. package/lib/utilities/interceptor.d.ts +6 -0
  50. package/lib/utilities/interceptor.js +28 -0
  51. package/lib/utilities/misc.d.ts +5 -0
  52. package/lib/utilities/misc.js +52 -0
  53. package/lib/utilities/observable.d.ts +11 -0
  54. package/lib/utilities/observable.js +73 -0
  55. package/lib/utilities/race-condition.d.ts +1 -0
  56. package/lib/utilities/race-condition.js +24 -0
  57. package/lib/utilities/value-check.d.ts +1 -0
  58. package/lib/utilities/value-check.js +10 -0
  59. package/lib/utilities/zip.d.ts +1 -0
  60. package/lib/utilities/zip.js +107 -0
  61. package/lib/worker/constants.d.ts +11 -0
  62. package/lib/worker/constants.js +19 -0
  63. package/lib/worker/handler/binary.d.ts +5 -0
  64. package/lib/worker/handler/binary.js +161 -0
  65. package/lib/worker/handler/db.d.ts +21 -0
  66. package/lib/worker/handler/db.js +42 -0
  67. package/lib/worker/handler/fs-log.d.ts +3 -0
  68. package/lib/worker/handler/fs-log.js +156 -0
  69. package/lib/worker/handler/log.d.ts +12 -0
  70. package/lib/worker/handler/log.js +246 -0
  71. package/lib/worker/handler/reply.d.ts +3 -0
  72. package/lib/worker/handler/reply.js +22 -0
  73. package/lib/worker/index.d.ts +2 -0
  74. package/lib/worker/index.js +15 -0
  75. package/lib/worker/interactor.d.ts +25 -0
  76. package/lib/worker/interactor.js +378 -0
  77. package/lib/worker/mutex.d.ts +5 -0
  78. package/lib/worker/mutex.js +65 -0
  79. package/lib/worker/type.d.ts +1 -0
  80. package/lib/worker/type.js +6 -0
  81. package/lib/worker/worker-entry.d.ts +1 -0
  82. package/lib/worker/worker-entry.js +5 -0
  83. package/lib/worker/worker-factory.d.ts +1 -0
  84. package/lib/worker/worker-factory.js +14 -0
  85. package/lib/worker/worker-installer.d.ts +2 -0
  86. package/lib/worker/worker-installer.js +72 -0
  87. package/package.json +29 -0
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Binds correct instance to `this`.
3
+ * Note: put it to first before all other annotations in order to take effect.
4
+ */
5
+ export declare const bound: (originalMethod: any, context: ClassMethodDecoratorContext) => void;
@@ -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,3 @@
1
+ export { trace } from './log';
2
+ export { bound } from './bound';
3
+ export { debounced, throttled } from './lodash';
@@ -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,4 @@
1
+ import { Logger } from '../../logger';
2
+ import { Result } from '../../utilities/interceptor';
3
+ import { InvocationEvent } from '../type';
4
+ export declare const createLogHandler: (logger: Logger) => (evt: InvocationEvent) => Result;
@@ -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,4 @@
1
+ export declare const trace: {
2
+ (originalMethod: any, context: ClassMethodDecoratorContext): void;
3
+ to(label: string): (originalMethod: any, context: ClassMethodDecoratorContext) => void;
4
+ };
@@ -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
+ import { LogLevel } from './type';
2
+ export declare const logLevelMap: {
3
+ 1: string;
4
+ 2: string;
5
+ 3: string;
6
+ 4: string;
7
+ debug: LogLevel;
8
+ info: LogLevel;
9
+ warn: LogLevel;
10
+ error: LogLevel;
11
+ };
@@ -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,4 @@
1
+ import { Logger } from './type';
2
+ export declare const originConsole: Console;
3
+ export declare const setupConsoleHijack: (logger: Logger) => void;
4
+ export declare const restoreConsoleHijack: () => void;
@@ -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";