@hixbe/time 1.0.0 → 1.0.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/cli/index.js +5 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/core/client.d.ts +8 -1
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +24 -3
- package/dist/core/client.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -84,7 +84,7 @@ class HixbeTimeCLI {
|
|
|
84
84
|
}
|
|
85
85
|
async continuousMode() {
|
|
86
86
|
let count = 0;
|
|
87
|
-
console.log(`⏱️ Starting continuous sync
|
|
87
|
+
console.log(`⏱️ Starting continuous sync (will fallback to time.google.com if needed)`);
|
|
88
88
|
console.log(`📊 Interval: ${this.options.interval}ms (${(this.options.interval / 1000).toFixed(1)}s)`);
|
|
89
89
|
console.log('Press Ctrl+C to stop\n');
|
|
90
90
|
const displayBars = () => {
|
|
@@ -98,7 +98,8 @@ class HixbeTimeCLI {
|
|
|
98
98
|
count++;
|
|
99
99
|
const time = result.parsed.timestamps.transmit.date;
|
|
100
100
|
const status = offset > 500 ? '⚠️ ' : offset < -500 ? '⚠️ ' : '✅';
|
|
101
|
-
|
|
101
|
+
const server = result.usedServer || this.options.server;
|
|
102
|
+
console.log(`[${count}] ${status} ${time.toISOString()} | Server: ${server} | Offset: ${offset > 0 ? '+' : ''}${offset.toFixed(0)}ms`);
|
|
102
103
|
await this.sleep(this.options.interval);
|
|
103
104
|
}
|
|
104
105
|
catch (error) {
|
|
@@ -113,7 +114,7 @@ class HixbeTimeCLI {
|
|
|
113
114
|
console.log('═'.repeat(70));
|
|
114
115
|
console.log('🕐 HIXBE TIME SYNC');
|
|
115
116
|
console.log('═'.repeat(70));
|
|
116
|
-
console.log(`\nServer: ${result.serverAddress} (${this.options.server})`);
|
|
117
|
+
console.log(`\nServer: ${result.serverAddress} (${result.usedServer || this.options.server})`);
|
|
117
118
|
console.log(`UTC Time: ${tx.iso}`);
|
|
118
119
|
console.log(`Local Time: ${tx.local}`);
|
|
119
120
|
console.log(`Offset: ${offset > 0 ? '+' : ''}${(offset / 1000).toFixed(3)} seconds`);
|
|
@@ -132,6 +133,7 @@ class HixbeTimeCLI {
|
|
|
132
133
|
iso: result.parsed.timestamps.transmit.iso,
|
|
133
134
|
server: {
|
|
134
135
|
address: result.serverAddress,
|
|
136
|
+
hostname: result.usedServer || this.options.server,
|
|
135
137
|
stratum: result.parsed.header.stratum,
|
|
136
138
|
referenceId: result.parsed.header.referenceId,
|
|
137
139
|
},
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAW9C,MAAM,YAAY;IAAlB;QACU,YAAO,GAAe;YAC5B,MAAM,EAAE,gBAAgB;YACxB,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,IAAI;SACf,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/core/client.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export interface NTPClientConfig {
|
|
|
3
3
|
host?: string;
|
|
4
4
|
port?: number;
|
|
5
5
|
timeout?: number;
|
|
6
|
+
fallbackServers?: string[];
|
|
6
7
|
}
|
|
7
8
|
export interface NTPQueryResult {
|
|
8
9
|
buffer: Buffer;
|
|
@@ -11,6 +12,7 @@ export interface NTPQueryResult {
|
|
|
11
12
|
serverAddress: string;
|
|
12
13
|
clientReceiveTime: Date;
|
|
13
14
|
clientOriginateTime: Date;
|
|
15
|
+
usedServer?: string;
|
|
14
16
|
}
|
|
15
17
|
/**
|
|
16
18
|
* NTP Client - Sends NTP requests and retrieves responses
|
|
@@ -19,11 +21,16 @@ export declare class NTPClient {
|
|
|
19
21
|
private host;
|
|
20
22
|
private port;
|
|
21
23
|
private timeout;
|
|
24
|
+
private fallbackServers;
|
|
22
25
|
constructor(config?: NTPClientConfig);
|
|
23
26
|
/**
|
|
24
|
-
* Send NTP request and receive response
|
|
27
|
+
* Send NTP request and receive response with automatic fallback
|
|
25
28
|
*/
|
|
26
29
|
query(): Promise<NTPQueryResult>;
|
|
30
|
+
/**
|
|
31
|
+
* Query a specific NTP server
|
|
32
|
+
*/
|
|
33
|
+
private queryServer;
|
|
27
34
|
/**
|
|
28
35
|
* Get current NTP time from server
|
|
29
36
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,eAAe,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,eAAe,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,eAAe,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,IAAI,CAAC;IACxB,mBAAmB,EAAE,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAW;gBAEtB,MAAM,GAAE,eAAoB;IAQxC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC;IAmBtC;;OAEG;YACW,WAAW;IAuDzB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAOlC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,OAAO;CAgBhB"}
|
package/dist/core/client.js
CHANGED
|
@@ -8,16 +8,36 @@ export class NTPClient {
|
|
|
8
8
|
this.host = config.host || 'time.hixbe.com';
|
|
9
9
|
this.port = config.port || 123;
|
|
10
10
|
this.timeout = config.timeout || 5000;
|
|
11
|
+
// Default fallback servers if none provided
|
|
12
|
+
this.fallbackServers = config.fallbackServers || ['time.google.com', 'pool.ntp.org'];
|
|
11
13
|
}
|
|
12
14
|
/**
|
|
13
|
-
* Send NTP request and receive response
|
|
15
|
+
* Send NTP request and receive response with automatic fallback
|
|
14
16
|
*/
|
|
15
17
|
async query() {
|
|
18
|
+
const servers = [this.host, ...this.fallbackServers];
|
|
19
|
+
let lastError = null;
|
|
20
|
+
for (const server of servers) {
|
|
21
|
+
try {
|
|
22
|
+
return await this.queryServer(server);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
lastError = error;
|
|
26
|
+
// Continue to next server
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// All servers failed
|
|
30
|
+
throw new Error(`NTP query failed for all servers (${servers.join(', ')}): ${lastError?.message}`);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Query a specific NTP server
|
|
34
|
+
*/
|
|
35
|
+
async queryServer(host) {
|
|
16
36
|
return new Promise((resolve, reject) => {
|
|
17
37
|
const client = dgram.createSocket('udp4');
|
|
18
38
|
const timeoutId = setTimeout(() => {
|
|
19
39
|
client.close();
|
|
20
|
-
reject(new Error(`NTP request timeout after ${this.timeout}ms`));
|
|
40
|
+
reject(new Error(`NTP request timeout after ${this.timeout}ms to ${host}`));
|
|
21
41
|
}, this.timeout);
|
|
22
42
|
client.on('message', (buffer, rinfo) => {
|
|
23
43
|
clearTimeout(timeoutId);
|
|
@@ -32,6 +52,7 @@ export class NTPClient {
|
|
|
32
52
|
serverAddress: rinfo.address,
|
|
33
53
|
clientReceiveTime,
|
|
34
54
|
clientOriginateTime: new Date(Date.now() - this.timeout / 2),
|
|
55
|
+
usedServer: host,
|
|
35
56
|
});
|
|
36
57
|
}
|
|
37
58
|
catch (error) {
|
|
@@ -46,7 +67,7 @@ export class NTPClient {
|
|
|
46
67
|
// Create NTP request packet
|
|
47
68
|
const ntpPacket = this.createRequestPacket();
|
|
48
69
|
try {
|
|
49
|
-
client.send(ntpPacket, 0, ntpPacket.length, this.port,
|
|
70
|
+
client.send(ntpPacket, 0, ntpPacket.length, this.port, host, (error) => {
|
|
50
71
|
if (error) {
|
|
51
72
|
clearTimeout(timeoutId);
|
|
52
73
|
client.close();
|
package/dist/core/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
|