badmfck-api-server 1.6.2 → 1.6.4
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.
@@ -0,0 +1,16 @@
|
|
1
|
+
export declare class DataProvider<T> {
|
2
|
+
private static nextID;
|
3
|
+
private name?;
|
4
|
+
private busy;
|
5
|
+
private lastRequestTime;
|
6
|
+
private cacheTime;
|
7
|
+
private data;
|
8
|
+
private callbacks;
|
9
|
+
private wasError;
|
10
|
+
private executor;
|
11
|
+
constructor(executor: () => Promise<{
|
12
|
+
data: T | null | undefined;
|
13
|
+
error?: boolean;
|
14
|
+
}>, cacheTime?: number, name?: string);
|
15
|
+
getData(): Promise<T | null | undefined>;
|
16
|
+
}
|
@@ -0,0 +1,47 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
+
};
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
+
exports.DataProvider = void 0;
|
7
|
+
const badmfck_signal_1 = __importDefault(require("badmfck-signal"));
|
8
|
+
class DataProvider {
|
9
|
+
static nextID = 1;
|
10
|
+
name;
|
11
|
+
busy = false;
|
12
|
+
lastRequestTime = 0;
|
13
|
+
cacheTime = 1000 * 60 * 5;
|
14
|
+
data;
|
15
|
+
callbacks = new badmfck_signal_1.default();
|
16
|
+
wasError = false;
|
17
|
+
executor;
|
18
|
+
constructor(executor, cacheTime, name) {
|
19
|
+
this.executor = executor;
|
20
|
+
if (cacheTime !== undefined)
|
21
|
+
this.cacheTime = +cacheTime;
|
22
|
+
if (isNaN(this.cacheTime))
|
23
|
+
this.cacheTime = 0;
|
24
|
+
if (!this.name)
|
25
|
+
this.name = "DataProvider " + (DataProvider.nextID++);
|
26
|
+
}
|
27
|
+
async getData() {
|
28
|
+
if (this.busy)
|
29
|
+
return new Promise((resolve, reject) => this.callbacks.subscribe((d) => resolve(d)));
|
30
|
+
if (this.lastRequestTime > 0 && !this.wasError) {
|
31
|
+
const diff = (+new Date()) - this.lastRequestTime;
|
32
|
+
if (diff < this.cacheTime)
|
33
|
+
return this.data;
|
34
|
+
}
|
35
|
+
this.busy = true;
|
36
|
+
this.wasError = false;
|
37
|
+
const res = await this.executor();
|
38
|
+
this.busy = false;
|
39
|
+
this.wasError = res.error ?? false;
|
40
|
+
this.data = res.data;
|
41
|
+
this.lastRequestTime = +new Date();
|
42
|
+
this.callbacks.invoke(this.data);
|
43
|
+
this.callbacks.removeAll();
|
44
|
+
return this.data;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
exports.DataProvider = DataProvider;
|
package/dist/index.d.ts
CHANGED
@@ -4,4 +4,5 @@ import { MysqlService } from "./apiServer/MysqlService";
|
|
4
4
|
import { Validator } from "./apiServer/helper/Validator";
|
5
5
|
import { LogService } from "./apiServer/LogService";
|
6
6
|
import { S_MONITOR_REGISTRATE_ACTION } from "./apiServer/monitor/Monitor";
|
7
|
-
|
7
|
+
import { DataProvider } from "./apiServer/helper/DataProvider";
|
8
|
+
export { APIService, Initializer, LocalRequest, MysqlService, Validator, LogService, DataProvider, S_MONITOR_REGISTRATE_ACTION };
|
package/dist/index.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.S_MONITOR_REGISTRATE_ACTION = exports.LogService = exports.Validator = exports.MysqlService = exports.LocalRequest = exports.Initializer = exports.APIService = void 0;
|
3
|
+
exports.S_MONITOR_REGISTRATE_ACTION = exports.DataProvider = exports.LogService = exports.Validator = exports.MysqlService = exports.LocalRequest = exports.Initializer = exports.APIService = void 0;
|
4
4
|
const APIService_1 = require("./apiServer/APIService");
|
5
5
|
Object.defineProperty(exports, "APIService", { enumerable: true, get: function () { return APIService_1.APIService; } });
|
6
6
|
Object.defineProperty(exports, "Initializer", { enumerable: true, get: function () { return APIService_1.Initializer; } });
|
@@ -14,3 +14,5 @@ const LogService_1 = require("./apiServer/LogService");
|
|
14
14
|
Object.defineProperty(exports, "LogService", { enumerable: true, get: function () { return LogService_1.LogService; } });
|
15
15
|
const Monitor_1 = require("./apiServer/monitor/Monitor");
|
16
16
|
Object.defineProperty(exports, "S_MONITOR_REGISTRATE_ACTION", { enumerable: true, get: function () { return Monitor_1.S_MONITOR_REGISTRATE_ACTION; } });
|
17
|
+
const DataProvider_1 = require("./apiServer/helper/DataProvider");
|
18
|
+
Object.defineProperty(exports, "DataProvider", { enumerable: true, get: function () { return DataProvider_1.DataProvider; } });
|