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,5 @@
|
|
|
1
|
+
export declare const jsonstring: (json: unknown) => string;
|
|
2
|
+
export declare const arr2map: <T>(arr: T[], fnKey: (ele: T) => string) => Record<string, T>;
|
|
3
|
+
export declare const arr2Map: <T>(arr: T[], fnKey: (ele: T) => string) => Map<string, T>;
|
|
4
|
+
export declare const sleep: (ms: number) => Promise<void>;
|
|
5
|
+
export declare const randomString: (len: number) => string;
|
|
@@ -0,0 +1,52 @@
|
|
|
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.sleep = exports.randomString = exports.jsonstring = exports.arr2map = exports.arr2Map = void 0;
|
|
8
|
+
require("core-js/modules/es.array.for-each.js");
|
|
9
|
+
require("core-js/modules/es.array.iterator.js");
|
|
10
|
+
require("core-js/modules/es.date.to-json.js");
|
|
11
|
+
require("core-js/modules/es.json.stringify.js");
|
|
12
|
+
require("core-js/modules/es.map.js");
|
|
13
|
+
require("core-js/modules/es.object.to-string.js");
|
|
14
|
+
require("core-js/modules/es.promise.js");
|
|
15
|
+
require("core-js/modules/es.string.iterator.js");
|
|
16
|
+
require("core-js/modules/web.dom-collections.for-each.js");
|
|
17
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
18
|
+
require("core-js/modules/web.timers.js");
|
|
19
|
+
var jsonstring = exports.jsonstring = function jsonstring(json) {
|
|
20
|
+
try {
|
|
21
|
+
return JSON.stringify(json);
|
|
22
|
+
} catch (e) {}
|
|
23
|
+
return 'invalid json';
|
|
24
|
+
};
|
|
25
|
+
var arr2map = exports.arr2map = function arr2map(arr, fnKey) {
|
|
26
|
+
var map = {};
|
|
27
|
+
arr.forEach(function (ele) {
|
|
28
|
+
return map[fnKey(ele)] = ele;
|
|
29
|
+
});
|
|
30
|
+
return map;
|
|
31
|
+
};
|
|
32
|
+
var arr2Map = exports.arr2Map = function arr2Map(arr, fnKey) {
|
|
33
|
+
var map = new Map();
|
|
34
|
+
arr.forEach(function (ele) {
|
|
35
|
+
return map.set(fnKey(ele), ele);
|
|
36
|
+
});
|
|
37
|
+
return map;
|
|
38
|
+
};
|
|
39
|
+
var sleep = exports.sleep = function sleep(ms) {
|
|
40
|
+
return new Promise(function (r) {
|
|
41
|
+
setTimeout(r, ms);
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
var randomString = exports.randomString = function randomString(len) {
|
|
45
|
+
var characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
|
|
46
|
+
var result = '';
|
|
47
|
+
var charactersLength = characters.length;
|
|
48
|
+
for (var i = 0; i < len; i++) {
|
|
49
|
+
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type EventParameters<T> = T extends (...args: infer U) => any ? U : never;
|
|
2
|
+
export declare class AgoraObservable<T> {
|
|
3
|
+
private _eventBus;
|
|
4
|
+
private _observers;
|
|
5
|
+
private _observerSet;
|
|
6
|
+
addObserver(observer: T): void;
|
|
7
|
+
removeObserver(observer: T): void;
|
|
8
|
+
notifyObservers<K extends keyof T>(eventName: K, ...args: EventParameters<T[K]>): void;
|
|
9
|
+
countOfObservers(): number;
|
|
10
|
+
}
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
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.AgoraObservable = 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.iterator.js");
|
|
12
|
+
require("core-js/modules/es.object.keys.js");
|
|
13
|
+
require("core-js/modules/es.object.to-string.js");
|
|
14
|
+
require("core-js/modules/es.set.js");
|
|
15
|
+
require("core-js/modules/es.string.iterator.js");
|
|
16
|
+
require("core-js/modules/web.dom-collections.for-each.js");
|
|
17
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
18
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
19
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
20
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
|
+
var _events = require("./events");
|
|
22
|
+
var AgoraObservable = exports.AgoraObservable = /*#__PURE__*/function () {
|
|
23
|
+
function AgoraObservable() {
|
|
24
|
+
(0, _classCallCheck2["default"])(this, AgoraObservable);
|
|
25
|
+
(0, _defineProperty2["default"])(this, "_eventBus", new _events.AgoraEventEmitter());
|
|
26
|
+
(0, _defineProperty2["default"])(this, "_observers", 0);
|
|
27
|
+
(0, _defineProperty2["default"])(this, "_observerSet", new Set());
|
|
28
|
+
}
|
|
29
|
+
return (0, _createClass2["default"])(AgoraObservable, [{
|
|
30
|
+
key: "addObserver",
|
|
31
|
+
value: function addObserver(observer) {
|
|
32
|
+
var _this = this;
|
|
33
|
+
if (this._observerSet.has(observer)) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
var eventKeys = Object.keys(observer);
|
|
37
|
+
eventKeys.forEach(function (eventKey) {
|
|
38
|
+
if (typeof observer[eventKey] === 'function') {
|
|
39
|
+
_this._eventBus.on(eventKey, observer[eventKey]);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
this._observers++;
|
|
43
|
+
this._observerSet.add(observer);
|
|
44
|
+
}
|
|
45
|
+
}, {
|
|
46
|
+
key: "removeObserver",
|
|
47
|
+
value: function removeObserver(observer) {
|
|
48
|
+
var _this2 = this;
|
|
49
|
+
var eventKeys = Object.keys(observer);
|
|
50
|
+
eventKeys.forEach(function (eventKey) {
|
|
51
|
+
if (typeof observer[eventKey] === 'function') {
|
|
52
|
+
_this2._eventBus.off(eventKey, observer[eventKey]);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
this._observers--;
|
|
56
|
+
this._observerSet["delete"](observer);
|
|
57
|
+
}
|
|
58
|
+
}, {
|
|
59
|
+
key: "notifyObservers",
|
|
60
|
+
value: function notifyObservers(eventName) {
|
|
61
|
+
var _this$_eventBus;
|
|
62
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
63
|
+
args[_key - 1] = arguments[_key];
|
|
64
|
+
}
|
|
65
|
+
(_this$_eventBus = this._eventBus).emit.apply(_this$_eventBus, [eventName].concat(args));
|
|
66
|
+
}
|
|
67
|
+
}, {
|
|
68
|
+
key: "countOfObservers",
|
|
69
|
+
value: function countOfObservers() {
|
|
70
|
+
return this._observers;
|
|
71
|
+
}
|
|
72
|
+
}]);
|
|
73
|
+
}();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const timeout: <T>(p: Promise<T>, ms: number) => Promise<T>;
|
|
@@ -0,0 +1,24 @@
|
|
|
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.timeout = void 0;
|
|
8
|
+
require("core-js/modules/es.error.cause.js");
|
|
9
|
+
require("core-js/modules/es.error.to-string.js");
|
|
10
|
+
require("core-js/modules/es.array.iterator.js");
|
|
11
|
+
require("core-js/modules/es.object.to-string.js");
|
|
12
|
+
require("core-js/modules/es.promise.js");
|
|
13
|
+
require("core-js/modules/es.string.iterator.js");
|
|
14
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
15
|
+
require("core-js/modules/web.timers.js");
|
|
16
|
+
var timeout = exports.timeout = function timeout(p, ms) {
|
|
17
|
+
return Promise.race([p, new Promise(function (_, reject) {
|
|
18
|
+
setTimeout(function () {
|
|
19
|
+
return reject(new Error('race condition timeout', {
|
|
20
|
+
cause: 'timeout'
|
|
21
|
+
}));
|
|
22
|
+
}, ms);
|
|
23
|
+
})]);
|
|
24
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isTrueValue: (value: unknown) => boolean;
|
|
@@ -0,0 +1,10 @@
|
|
|
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.isTrueValue = void 0;
|
|
8
|
+
var isTrueValue = exports.isTrueValue = function isTrueValue(value) {
|
|
9
|
+
return value === 'true' || !!value;
|
|
10
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const zipDir: (dirPath: string) => Promise<File | null>;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.symbol.js");
|
|
4
|
+
require("core-js/modules/es.symbol.description.js");
|
|
5
|
+
require("core-js/modules/es.symbol.iterator.js");
|
|
6
|
+
require("core-js/modules/es.error.cause.js");
|
|
7
|
+
require("core-js/modules/es.error.to-string.js");
|
|
8
|
+
require("core-js/modules/es.array.from.js");
|
|
9
|
+
require("core-js/modules/es.array.is-array.js");
|
|
10
|
+
require("core-js/modules/es.array.iterator.js");
|
|
11
|
+
require("core-js/modules/es.array.slice.js");
|
|
12
|
+
require("core-js/modules/es.date.to-string.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.regexp.exec.js");
|
|
16
|
+
require("core-js/modules/es.regexp.test.js");
|
|
17
|
+
require("core-js/modules/es.regexp.to-string.js");
|
|
18
|
+
require("core-js/modules/es.string.iterator.js");
|
|
19
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
|
20
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
21
|
+
Object.defineProperty(exports, "__esModule", {
|
|
22
|
+
value: true
|
|
23
|
+
});
|
|
24
|
+
exports.zipDir = void 0;
|
|
25
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
26
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
27
|
+
require("core-js/modules/es.array.concat.js");
|
|
28
|
+
require("core-js/modules/es.object.to-string.js");
|
|
29
|
+
require("core-js/modules/es.promise.js");
|
|
30
|
+
var _jszip = _interopRequireDefault(require("jszip"));
|
|
31
|
+
var _logger = require("../logger");
|
|
32
|
+
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
33
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
34
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
35
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
36
|
+
var zipDir = exports.zipDir = function zipDir(dirPath) {
|
|
37
|
+
var logger = (0, _logger.getLogger)();
|
|
38
|
+
return new Promise(function (resolve) {
|
|
39
|
+
try {
|
|
40
|
+
var fs = window.require('fs');
|
|
41
|
+
fs.readdir(dirPath, /*#__PURE__*/function () {
|
|
42
|
+
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(err, files) {
|
|
43
|
+
var zip, _iterator, _step, _file, filePath, logsStr, blob, buffer, datefmt, file;
|
|
44
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
45
|
+
while (1) switch (_context.prev = _context.next) {
|
|
46
|
+
case 0:
|
|
47
|
+
if (!err) {
|
|
48
|
+
_context.next = 4;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
console.error("failed to read log dir.", err);
|
|
52
|
+
_context.next = 20;
|
|
53
|
+
break;
|
|
54
|
+
case 4:
|
|
55
|
+
if (!(files.length === 0)) {
|
|
56
|
+
_context.next = 8;
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
resolve(null);
|
|
60
|
+
_context.next = 20;
|
|
61
|
+
break;
|
|
62
|
+
case 8:
|
|
63
|
+
zip = new _jszip["default"]();
|
|
64
|
+
_iterator = _createForOfIteratorHelper(files);
|
|
65
|
+
try {
|
|
66
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
67
|
+
_file = _step.value;
|
|
68
|
+
filePath = "".concat(dirPath, "/").concat(_file);
|
|
69
|
+
logsStr = fs.readFileSync(filePath, 'utf8');
|
|
70
|
+
zip.file(_file, logsStr);
|
|
71
|
+
}
|
|
72
|
+
} catch (err) {
|
|
73
|
+
_iterator.e(err);
|
|
74
|
+
} finally {
|
|
75
|
+
_iterator.f();
|
|
76
|
+
}
|
|
77
|
+
_context.next = 13;
|
|
78
|
+
return zip.generateAsync({
|
|
79
|
+
type: 'blob'
|
|
80
|
+
});
|
|
81
|
+
case 13:
|
|
82
|
+
blob = _context.sent;
|
|
83
|
+
_context.next = 16;
|
|
84
|
+
return blob.arrayBuffer();
|
|
85
|
+
case 16:
|
|
86
|
+
buffer = _context.sent;
|
|
87
|
+
datefmt = (0, _dayjs["default"])().format('YYYY-MM-DDTHH:mm:ssZ[Z]');
|
|
88
|
+
file = new File([buffer], "logs-".concat(datefmt, ".zip"), {
|
|
89
|
+
type: 'application/zip'
|
|
90
|
+
});
|
|
91
|
+
resolve(file);
|
|
92
|
+
case 20:
|
|
93
|
+
case "end":
|
|
94
|
+
return _context.stop();
|
|
95
|
+
}
|
|
96
|
+
}, _callee);
|
|
97
|
+
}));
|
|
98
|
+
return function (_x, _x2) {
|
|
99
|
+
return _ref.apply(this, arguments);
|
|
100
|
+
};
|
|
101
|
+
}());
|
|
102
|
+
} catch (e) {
|
|
103
|
+
logger.error("failed to get buffer.", e);
|
|
104
|
+
resolve(null);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare enum WorkerDirectives {
|
|
2
|
+
SET_MAX_RECORDS = "set-max-records",
|
|
3
|
+
WRITE_LOG = "writeLog",
|
|
4
|
+
COLLECT_LOGS = "collectLogs",
|
|
5
|
+
DELETE_LOGS = "deleteLogs",
|
|
6
|
+
PERSIST_BUFFER = "persistBuffer",
|
|
7
|
+
UNPERSIST_BUFFER = "unpersistBuffer",
|
|
8
|
+
GET_BUFFER = "getBuffer",
|
|
9
|
+
CLEAR_TEMP_LOGS = "clearTempLogs",
|
|
10
|
+
COLLECT_LOGS_ON_FS = "collectLogsOnFs"
|
|
11
|
+
}
|
|
@@ -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.WorkerDirectives = void 0;
|
|
8
|
+
var WorkerDirectives = exports.WorkerDirectives = /*#__PURE__*/function (WorkerDirectives) {
|
|
9
|
+
WorkerDirectives["SET_MAX_RECORDS"] = "set-max-records";
|
|
10
|
+
WorkerDirectives["WRITE_LOG"] = "writeLog";
|
|
11
|
+
WorkerDirectives["COLLECT_LOGS"] = "collectLogs";
|
|
12
|
+
WorkerDirectives["DELETE_LOGS"] = "deleteLogs";
|
|
13
|
+
WorkerDirectives["PERSIST_BUFFER"] = "persistBuffer";
|
|
14
|
+
WorkerDirectives["UNPERSIST_BUFFER"] = "unpersistBuffer";
|
|
15
|
+
WorkerDirectives["GET_BUFFER"] = "getBuffer";
|
|
16
|
+
WorkerDirectives["CLEAR_TEMP_LOGS"] = "clearTempLogs";
|
|
17
|
+
WorkerDirectives["COLLECT_LOGS_ON_FS"] = "collectLogsOnFs";
|
|
18
|
+
return WorkerDirectives;
|
|
19
|
+
}({});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { WorkerContext } from "../type";
|
|
2
|
+
export declare const persistBinary: (self: WorkerContext, callId: number, id: number, data: Blob) => Promise<void>;
|
|
3
|
+
export declare const unpersistBinary: (self: WorkerContext, callId: number, id: number) => Promise<void>;
|
|
4
|
+
export declare const getBuffer: (self: WorkerContext, callId: number, id: number) => Promise<void>;
|
|
5
|
+
export declare const clearTempLogs: (self: WorkerContext, callId: number) => Promise<void>;
|
|
@@ -0,0 +1,161 @@
|
|
|
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.unpersistBinary = exports.persistBinary = exports.getBuffer = exports.clearTempLogs = void 0;
|
|
9
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _fileReader = require("../../utilities/file-reader");
|
|
12
|
+
var _constants = require("../constants");
|
|
13
|
+
var _db = require("./db");
|
|
14
|
+
var _reply = require("./reply");
|
|
15
|
+
var persistBinary = exports.persistBinary = /*#__PURE__*/function () {
|
|
16
|
+
var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(self, callId, id, data) {
|
|
17
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
18
|
+
while (1) switch (_context.prev = _context.next) {
|
|
19
|
+
case 0:
|
|
20
|
+
_context.prev = 0;
|
|
21
|
+
_context.next = 3;
|
|
22
|
+
return _db.db.tempLogs.put({
|
|
23
|
+
id: id,
|
|
24
|
+
data: data
|
|
25
|
+
});
|
|
26
|
+
case 3:
|
|
27
|
+
(0, _reply.reply)(self, callId, _constants.WorkerDirectives.PERSIST_BUFFER, {
|
|
28
|
+
isSuccess: true
|
|
29
|
+
});
|
|
30
|
+
_context.next = 10;
|
|
31
|
+
break;
|
|
32
|
+
case 6:
|
|
33
|
+
_context.prev = 6;
|
|
34
|
+
_context.t0 = _context["catch"](0);
|
|
35
|
+
console.error("[logger] failed to persist buffer.", _context.t0);
|
|
36
|
+
(0, _reply.reply)(self, callId, _constants.WorkerDirectives.PERSIST_BUFFER, {
|
|
37
|
+
isSuccess: false
|
|
38
|
+
});
|
|
39
|
+
case 10:
|
|
40
|
+
case "end":
|
|
41
|
+
return _context.stop();
|
|
42
|
+
}
|
|
43
|
+
}, _callee, null, [[0, 6]]);
|
|
44
|
+
}));
|
|
45
|
+
return function persistBinary(_x, _x2, _x3, _x4) {
|
|
46
|
+
return _ref.apply(this, arguments);
|
|
47
|
+
};
|
|
48
|
+
}();
|
|
49
|
+
var unpersistBinary = exports.unpersistBinary = /*#__PURE__*/function () {
|
|
50
|
+
var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(self, callId, id) {
|
|
51
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
52
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
53
|
+
case 0:
|
|
54
|
+
_context2.prev = 0;
|
|
55
|
+
_context2.next = 3;
|
|
56
|
+
return _db.db.tempLogs["delete"](id);
|
|
57
|
+
case 3:
|
|
58
|
+
(0, _reply.reply)(self, callId, _constants.WorkerDirectives.UNPERSIST_BUFFER, {
|
|
59
|
+
isSuccess: true
|
|
60
|
+
});
|
|
61
|
+
_context2.next = 10;
|
|
62
|
+
break;
|
|
63
|
+
case 6:
|
|
64
|
+
_context2.prev = 6;
|
|
65
|
+
_context2.t0 = _context2["catch"](0);
|
|
66
|
+
console.error("[logger] failed to unpersist buffer.", _context2.t0);
|
|
67
|
+
(0, _reply.reply)(self, callId, _constants.WorkerDirectives.UNPERSIST_BUFFER, {
|
|
68
|
+
isSuccess: false
|
|
69
|
+
});
|
|
70
|
+
case 10:
|
|
71
|
+
case "end":
|
|
72
|
+
return _context2.stop();
|
|
73
|
+
}
|
|
74
|
+
}, _callee2, null, [[0, 6]]);
|
|
75
|
+
}));
|
|
76
|
+
return function unpersistBinary(_x5, _x6, _x7) {
|
|
77
|
+
return _ref2.apply(this, arguments);
|
|
78
|
+
};
|
|
79
|
+
}();
|
|
80
|
+
var getBuffer = exports.getBuffer = /*#__PURE__*/function () {
|
|
81
|
+
var _ref3 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(self, callId, id) {
|
|
82
|
+
var tempLogs, buffer, data;
|
|
83
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
84
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
85
|
+
case 0:
|
|
86
|
+
_context3.prev = 0;
|
|
87
|
+
_context3.next = 3;
|
|
88
|
+
return _db.db.tempLogs.where("id").equals(id).first();
|
|
89
|
+
case 3:
|
|
90
|
+
tempLogs = _context3.sent;
|
|
91
|
+
if (!(tempLogs !== null && tempLogs !== void 0 && tempLogs.data)) {
|
|
92
|
+
_context3.next = 9;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
_context3.next = 7;
|
|
96
|
+
return (0, _fileReader.readAsArrayBuffer)(tempLogs.data);
|
|
97
|
+
case 7:
|
|
98
|
+
data = _context3.sent;
|
|
99
|
+
buffer = data;
|
|
100
|
+
case 9:
|
|
101
|
+
if (buffer) {
|
|
102
|
+
(0, _reply.reply)(self, callId, _constants.WorkerDirectives.GET_BUFFER, {
|
|
103
|
+
isSuccess: true,
|
|
104
|
+
buffer: buffer
|
|
105
|
+
}, [buffer]);
|
|
106
|
+
} else {
|
|
107
|
+
(0, _reply.reply)(self, callId, _constants.WorkerDirectives.GET_BUFFER, {
|
|
108
|
+
isSuccess: true,
|
|
109
|
+
buffer: null
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
_context3.next = 16;
|
|
113
|
+
break;
|
|
114
|
+
case 12:
|
|
115
|
+
_context3.prev = 12;
|
|
116
|
+
_context3.t0 = _context3["catch"](0);
|
|
117
|
+
console.error("[logger] failed to get buffer.", _context3.t0);
|
|
118
|
+
(0, _reply.reply)(self, callId, _constants.WorkerDirectives.GET_BUFFER, {
|
|
119
|
+
isSuccess: false
|
|
120
|
+
});
|
|
121
|
+
case 16:
|
|
122
|
+
case "end":
|
|
123
|
+
return _context3.stop();
|
|
124
|
+
}
|
|
125
|
+
}, _callee3, null, [[0, 12]]);
|
|
126
|
+
}));
|
|
127
|
+
return function getBuffer(_x8, _x9, _x10) {
|
|
128
|
+
return _ref3.apply(this, arguments);
|
|
129
|
+
};
|
|
130
|
+
}();
|
|
131
|
+
var clearTempLogs = exports.clearTempLogs = /*#__PURE__*/function () {
|
|
132
|
+
var _ref4 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(self, callId) {
|
|
133
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
134
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
135
|
+
case 0:
|
|
136
|
+
_context4.prev = 0;
|
|
137
|
+
_context4.next = 3;
|
|
138
|
+
return _db.db.tempLogs.clear();
|
|
139
|
+
case 3:
|
|
140
|
+
(0, _reply.reply)(self, callId, _constants.WorkerDirectives.CLEAR_TEMP_LOGS, {
|
|
141
|
+
isSuccess: true
|
|
142
|
+
});
|
|
143
|
+
_context4.next = 10;
|
|
144
|
+
break;
|
|
145
|
+
case 6:
|
|
146
|
+
_context4.prev = 6;
|
|
147
|
+
_context4.t0 = _context4["catch"](0);
|
|
148
|
+
console.error("[logger] failed to clear temp logs.", _context4.t0);
|
|
149
|
+
(0, _reply.reply)(self, callId, _constants.WorkerDirectives.CLEAR_TEMP_LOGS, {
|
|
150
|
+
isSuccess: false
|
|
151
|
+
});
|
|
152
|
+
case 10:
|
|
153
|
+
case "end":
|
|
154
|
+
return _context4.stop();
|
|
155
|
+
}
|
|
156
|
+
}, _callee4, null, [[0, 6]]);
|
|
157
|
+
}));
|
|
158
|
+
return function clearTempLogs(_x11, _x12) {
|
|
159
|
+
return _ref4.apply(this, arguments);
|
|
160
|
+
};
|
|
161
|
+
}();
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import Dexie, { Table } from 'dexie';
|
|
2
|
+
type Timestamp = number;
|
|
3
|
+
export type LogSchema = {
|
|
4
|
+
id: number;
|
|
5
|
+
content: string;
|
|
6
|
+
label: string;
|
|
7
|
+
created_at: Timestamp;
|
|
8
|
+
timestamp: string;
|
|
9
|
+
};
|
|
10
|
+
export type TempLogs = {
|
|
11
|
+
id: number;
|
|
12
|
+
data: Blob;
|
|
13
|
+
};
|
|
14
|
+
export declare class LoggerDB extends Dexie {
|
|
15
|
+
logs: Table<LogSchema, number>;
|
|
16
|
+
tempLogs: Table<TempLogs, number>;
|
|
17
|
+
constructor();
|
|
18
|
+
openDatabase(): void;
|
|
19
|
+
}
|
|
20
|
+
export declare const db: LoggerDB;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.object.define-property.js");
|
|
4
|
+
require("core-js/modules/es.reflect.construct.js");
|
|
5
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
|
+
Object.defineProperty(exports, "__esModule", {
|
|
7
|
+
value: true
|
|
8
|
+
});
|
|
9
|
+
exports.db = exports.LoggerDB = void 0;
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
+
var _dexie = _interopRequireDefault(require("dexie"));
|
|
16
|
+
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)); }
|
|
17
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
18
|
+
var DATABASE_NAME = "AgoraLogger";
|
|
19
|
+
var TABLE_NAME_LOGS = "logs";
|
|
20
|
+
var TABLE_NAME_LOGS_TEMP_BUFFERS = "tempLogs";
|
|
21
|
+
var LoggerDB = exports.LoggerDB = /*#__PURE__*/function (_Dexie) {
|
|
22
|
+
function LoggerDB() {
|
|
23
|
+
var _this;
|
|
24
|
+
(0, _classCallCheck2["default"])(this, LoggerDB);
|
|
25
|
+
_this = _callSuper(this, LoggerDB, [DATABASE_NAME]);
|
|
26
|
+
_this.openDatabase();
|
|
27
|
+
_this.logs = _this.table(TABLE_NAME_LOGS);
|
|
28
|
+
_this.tempLogs = _this.table(TABLE_NAME_LOGS_TEMP_BUFFERS);
|
|
29
|
+
return _this;
|
|
30
|
+
}
|
|
31
|
+
(0, _inherits2["default"])(LoggerDB, _Dexie);
|
|
32
|
+
return (0, _createClass2["default"])(LoggerDB, [{
|
|
33
|
+
key: "openDatabase",
|
|
34
|
+
value: function openDatabase() {
|
|
35
|
+
this.version(2).stores({
|
|
36
|
+
logs: '++id, content, label, created_at',
|
|
37
|
+
tempLogs: '++id, data'
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}]);
|
|
41
|
+
}(_dexie["default"]);
|
|
42
|
+
var db = exports.db = new LoggerDB();
|