@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.
@@ -1,56 +1,31 @@
1
1
  import EventEmitter from 'eventemitter3';
2
- export declare enum TimeServiceStatus {
3
- STOPPED = 0,
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
- static calculateNTPResultOffset(ntpResult: TimeService.NTPResult): TimeService.Offset;
16
- constructor(option: TimeService.Option);
17
- getOffset(defaultValue: TimeService.Offset): TimeService.Offset;
18
- getOffset(): TimeService.Offset | undefined;
19
- setOffset(offset: TimeService.Offset): TimeService.Offset;
20
- setOffset(offset: TimeService.Offset | undefined): TimeService.Offset;
21
- getSyncedAt(): TimeService.TimeStamp | undefined;
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: TimeService.Option['syncInterval']): void;
25
- getClientTimeProvider(): TimeService.ClientTimeProvider;
26
- setClientTimeProvider(provider: TimeService.ClientTimeProvider): void;
27
- getClientTime(defaultValue?: TimeService.TimeStamp): TimeService.TimeStamp;
28
- getServerTimeProvider(): TimeService.ServerTimeProvider | null | undefined;
29
- setServerTimeProvider(provider: TimeService.ServerTimeProvider): void;
30
- getServerTime(): TimeService.TimeStamp | null;
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<TimeService.Offset | null>;
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 = exports.TimeServiceStatus = void 0;
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
- var _a;
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
- var _a;
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(defaultValue = Date.now()) {
83
- return this.getClientTimeProvider()();
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 null;
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
- return this.getServerTime() || this.getClientTime();
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
- this.setSyncedAt(Date.now());
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
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1 +1,2 @@
1
1
  export * from "./TimeService";
2
+ export * from "./TimeService.type";
@@ -15,3 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./TimeService"), exports);
18
+ __exportStar(require("./TimeService.type"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powfix/core-js",
3
- "version": "0.14.0",
3
+ "version": "0.14.2",
4
4
  "description": "core package",
5
5
  "author": "Kwon Kyung-Min <powfix@gmail.com>",
6
6
  "private": false,