@powfix/core-js 0.14.0 → 0.14.2
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/dist/src/services/time/TimeService.d.ts +21 -46
- package/dist/src/services/time/TimeService.js +18 -25
- package/dist/src/services/time/TimeService.type.d.ts +21 -0
- package/dist/src/services/time/TimeService.type.js +2 -0
- package/dist/src/services/time/index.d.ts +1 -0
- package/dist/src/services/time/index.js +1 -0
- package/package.json +1 -1
|
@@ -1,56 +1,31 @@
|
|
|
1
1
|
import EventEmitter from 'eventemitter3';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
RUNNING = 1
|
|
5
|
-
}
|
|
6
|
-
export declare class TimeService extends EventEmitter<TimeService.Event> {
|
|
7
|
-
private static readonly DEFAULT_SYNC_INTERVAL;
|
|
8
|
-
private static DEFAULT_CLIENT_TIME_PROVIDER;
|
|
2
|
+
import type { TimeServiceClientTimeProvider, TimeServiceEvent, TimeServiceNtpResult, TimeServiceOffset, TimeServiceOptions, TimeServiceServerTimeProvider, TimeServiceTimeStamp } from "./TimeService.type";
|
|
3
|
+
export declare class TimeService extends EventEmitter<TimeServiceEvent> {
|
|
9
4
|
private syncHandler?;
|
|
10
|
-
private syncInterval?;
|
|
11
|
-
private clientTimeProvider?;
|
|
12
|
-
private serverTimeProvider?;
|
|
13
5
|
private offset?;
|
|
14
6
|
private syncedAt?;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
7
|
+
protected syncInterval?: number | null;
|
|
8
|
+
protected clientTimeProvider?: TimeServiceClientTimeProvider;
|
|
9
|
+
protected serverTimeProvider?: TimeServiceServerTimeProvider;
|
|
10
|
+
static calculateNTPResultOffset(ntpResult: TimeServiceNtpResult): TimeServiceOffset;
|
|
11
|
+
constructor(option: TimeServiceOptions);
|
|
12
|
+
getOffset(defaultValue: TimeServiceOffset): TimeServiceOffset;
|
|
13
|
+
getOffset(): TimeServiceOffset | undefined;
|
|
14
|
+
setOffset(offset: TimeServiceOffset): TimeServiceOffset;
|
|
15
|
+
setOffset(offset: TimeServiceOffset | undefined): TimeServiceOffset;
|
|
16
|
+
getSyncedAt(): TimeServiceTimeStamp | undefined;
|
|
22
17
|
private setSyncedAt;
|
|
23
|
-
getSyncInterval(): number;
|
|
24
|
-
setSyncInterval(interval:
|
|
25
|
-
getClientTimeProvider():
|
|
26
|
-
setClientTimeProvider(provider:
|
|
27
|
-
getClientTime(
|
|
28
|
-
getServerTimeProvider():
|
|
29
|
-
setServerTimeProvider(provider:
|
|
30
|
-
getServerTime():
|
|
18
|
+
getSyncInterval(): number | null | undefined;
|
|
19
|
+
setSyncInterval(interval: TimeServiceOptions['syncInterval']): void;
|
|
20
|
+
getClientTimeProvider(): TimeServiceClientTimeProvider | undefined;
|
|
21
|
+
setClientTimeProvider(provider: TimeServiceClientTimeProvider | null | undefined): void;
|
|
22
|
+
getClientTime(): number | undefined;
|
|
23
|
+
getServerTimeProvider(): TimeServiceServerTimeProvider | undefined;
|
|
24
|
+
setServerTimeProvider(provider: TimeServiceServerTimeProvider | null | undefined): void;
|
|
25
|
+
getServerTime(): number | undefined;
|
|
31
26
|
getTime(): number;
|
|
32
27
|
private fetchServerNTPResult;
|
|
33
|
-
sync(): Promise<
|
|
28
|
+
sync(): Promise<TimeServiceOffset | null>;
|
|
34
29
|
private startSync;
|
|
35
30
|
private stopSync;
|
|
36
31
|
}
|
|
37
|
-
export declare namespace TimeService {
|
|
38
|
-
type Offset = number;
|
|
39
|
-
type TimeStamp = number;
|
|
40
|
-
interface NTPResult {
|
|
41
|
-
t1: TimeStamp;
|
|
42
|
-
t2: TimeStamp;
|
|
43
|
-
t3: TimeStamp;
|
|
44
|
-
t4: TimeStamp;
|
|
45
|
-
}
|
|
46
|
-
type Event = 'SYNCED' | 'SYNC_INTERVAL_CHANGED';
|
|
47
|
-
interface ServerNTPResult extends Pick<NTPResult, 't2' | 't3'> {
|
|
48
|
-
}
|
|
49
|
-
type ClientTimeProvider = () => TimeStamp;
|
|
50
|
-
type ServerTimeProvider = (t1: NTPResult['t1']) => (ServerNTPResult | null) | (Promise<ServerNTPResult | null>);
|
|
51
|
-
interface Option {
|
|
52
|
-
syncInterval?: number;
|
|
53
|
-
clientTimeProvider?: ClientTimeProvider;
|
|
54
|
-
serverTimeProvider?: ServerTimeProvider;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
@@ -12,18 +12,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.TimeService =
|
|
15
|
+
exports.TimeService = void 0;
|
|
16
16
|
const eventemitter3_1 = __importDefault(require("eventemitter3"));
|
|
17
17
|
const LOG_TAG = 'TimeService';
|
|
18
|
-
var TimeServiceStatus;
|
|
19
|
-
(function (TimeServiceStatus) {
|
|
20
|
-
TimeServiceStatus[TimeServiceStatus["STOPPED"] = 0] = "STOPPED";
|
|
21
|
-
TimeServiceStatus[TimeServiceStatus["RUNNING"] = 1] = "RUNNING";
|
|
22
|
-
})(TimeServiceStatus || (exports.TimeServiceStatus = TimeServiceStatus = {}));
|
|
23
18
|
class TimeService extends eventemitter3_1.default {
|
|
24
|
-
static DEFAULT_CLIENT_TIME_PROVIDER() {
|
|
25
|
-
return Date.now();
|
|
26
|
-
}
|
|
27
19
|
static calculateNTPResultOffset(ntpResult) {
|
|
28
20
|
const { t1, t2, t3, t4 } = ntpResult;
|
|
29
21
|
return ((t2 - t1) + (t3 - t4)) / 2;
|
|
@@ -54,14 +46,10 @@ class TimeService extends eventemitter3_1.default {
|
|
|
54
46
|
return this.syncedAt;
|
|
55
47
|
}
|
|
56
48
|
setSyncedAt(syncedAt) {
|
|
57
|
-
this.syncedAt = syncedAt;
|
|
58
|
-
// Emit
|
|
59
|
-
this.emit('SYNCED', syncedAt);
|
|
60
|
-
return syncedAt;
|
|
49
|
+
return (this.syncedAt = syncedAt);
|
|
61
50
|
}
|
|
62
51
|
getSyncInterval() {
|
|
63
|
-
|
|
64
|
-
return (_a = this.syncInterval) !== null && _a !== void 0 ? _a : TimeService.DEFAULT_SYNC_INTERVAL;
|
|
52
|
+
return this.syncInterval;
|
|
65
53
|
}
|
|
66
54
|
setSyncInterval(interval) {
|
|
67
55
|
this.syncInterval = interval;
|
|
@@ -73,31 +61,35 @@ class TimeService extends eventemitter3_1.default {
|
|
|
73
61
|
}
|
|
74
62
|
}
|
|
75
63
|
getClientTimeProvider() {
|
|
76
|
-
|
|
77
|
-
return (_a = this.clientTimeProvider) !== null && _a !== void 0 ? _a : TimeService.DEFAULT_CLIENT_TIME_PROVIDER;
|
|
64
|
+
return this.clientTimeProvider;
|
|
78
65
|
}
|
|
79
66
|
setClientTimeProvider(provider) {
|
|
80
|
-
this.clientTimeProvider = provider;
|
|
67
|
+
this.clientTimeProvider = provider !== null && provider !== void 0 ? provider : undefined;
|
|
81
68
|
}
|
|
82
|
-
getClientTime(
|
|
83
|
-
|
|
69
|
+
getClientTime() {
|
|
70
|
+
var _a;
|
|
71
|
+
return (_a = this.getClientTimeProvider()) === null || _a === void 0 ? void 0 : _a();
|
|
84
72
|
}
|
|
85
73
|
getServerTimeProvider() {
|
|
86
74
|
return this.serverTimeProvider;
|
|
87
75
|
}
|
|
88
76
|
setServerTimeProvider(provider) {
|
|
89
|
-
this.serverTimeProvider = provider;
|
|
77
|
+
this.serverTimeProvider = provider !== null && provider !== void 0 ? provider : undefined;
|
|
90
78
|
}
|
|
91
79
|
getServerTime() {
|
|
92
80
|
const offset = this.getOffset();
|
|
93
81
|
if (offset == null) {
|
|
94
|
-
return
|
|
82
|
+
return offset;
|
|
95
83
|
}
|
|
96
84
|
const clientTime = this.getClientTime();
|
|
85
|
+
if (clientTime == null) {
|
|
86
|
+
return clientTime;
|
|
87
|
+
}
|
|
97
88
|
return clientTime + offset;
|
|
98
89
|
}
|
|
99
90
|
getTime() {
|
|
100
|
-
|
|
91
|
+
var _a, _b;
|
|
92
|
+
return (_b = (_a = this.getServerTime()) !== null && _a !== void 0 ? _a : this.getClientTime()) !== null && _b !== void 0 ? _b : Date.now();
|
|
101
93
|
}
|
|
102
94
|
fetchServerNTPResult(t1) {
|
|
103
95
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -154,7 +146,9 @@ class TimeService extends eventemitter3_1.default {
|
|
|
154
146
|
// Save calculated offset
|
|
155
147
|
this.setOffset(offset);
|
|
156
148
|
// Mark synced timestamp
|
|
157
|
-
|
|
149
|
+
const syncedAt = Date.now();
|
|
150
|
+
this.setSyncedAt(syncedAt);
|
|
151
|
+
this.emit('SYNCED', offset, syncedAt);
|
|
158
152
|
}
|
|
159
153
|
catch (e) {
|
|
160
154
|
console.error(e);
|
|
@@ -184,4 +178,3 @@ class TimeService extends eventemitter3_1.default {
|
|
|
184
178
|
;
|
|
185
179
|
}
|
|
186
180
|
exports.TimeService = TimeService;
|
|
187
|
-
TimeService.DEFAULT_SYNC_INTERVAL = 60 * 1000;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type TimeServiceOffset = number;
|
|
2
|
+
export type TimeServiceTimeStamp = number;
|
|
3
|
+
export interface TimeServiceNtpResult {
|
|
4
|
+
t1: TimeServiceTimeStamp;
|
|
5
|
+
t2: TimeServiceTimeStamp;
|
|
6
|
+
t3: TimeServiceTimeStamp;
|
|
7
|
+
t4: TimeServiceTimeStamp;
|
|
8
|
+
}
|
|
9
|
+
export interface TimeServiceServerNtpResult extends Pick<TimeServiceNtpResult, 't2' | 't3'> {
|
|
10
|
+
}
|
|
11
|
+
export type TimeServiceClientTimeProvider = () => TimeServiceTimeStamp;
|
|
12
|
+
export type TimeServiceServerTimeProvider = (t1: TimeServiceNtpResult['t1']) => (TimeServiceServerNtpResult | null) | (Promise<TimeServiceServerNtpResult | null>);
|
|
13
|
+
export type TimeServiceEvent = {
|
|
14
|
+
SYNCED: (offset: TimeServiceOffset, syncedAt: TimeServiceTimeStamp) => void;
|
|
15
|
+
SYNC_INTERVAL_CHANGED: (interval: number | undefined) => void;
|
|
16
|
+
};
|
|
17
|
+
export interface TimeServiceOptions {
|
|
18
|
+
syncInterval?: number;
|
|
19
|
+
clientTimeProvider?: TimeServiceClientTimeProvider;
|
|
20
|
+
serverTimeProvider?: TimeServiceServerTimeProvider;
|
|
21
|
+
}
|