ntp-time-sync
Version:
Fetches the current time from NTP servers and returns offset information
104 lines • 3.29 kB
TypeScript
import { NtpPacket } from "ntp-packet-parser";
import { NtpTimeResult } from "./NtpTimeResult.js";
import { RecursivePartial } from "./RecursivePartial.js";
export interface NtpTimeSyncConstructorOptions {
servers: string[];
sampleCount: number;
replyTimeout: number;
ntpDefaults: {
port: number;
version: number;
tolerance: number;
minPoll: number;
maxPoll: number;
maxDispersion: number;
minDispersion: number;
maxDistance: number;
maxStratum: number;
precision: number;
referenceDate: Date;
};
}
export interface NtpTimeSyncOptions extends Omit<NtpTimeSyncConstructorOptions, "servers"> {
servers: ReadonlyArray<{
host: string;
port: number;
}>;
}
export declare const NtpTimeSyncDefaultOptions: {
servers: string[];
sampleCount: number;
replyTimeout: number;
ntpDefaults: {
port: number;
version: number;
tolerance: number;
minPoll: number;
maxPoll: number;
maxDispersion: number;
minDispersion: number;
maxDistance: number;
maxStratum: number;
precision: number;
referenceDate: Date;
};
};
interface NtpReceivedPacket extends Partial<NtpPacket> {
destinationTimestamp: Date;
}
export declare class NtpTimeSync {
private static singleton;
private options;
private samples;
private lastPoll;
private lastResult;
constructor(options?: RecursivePartial<NtpTimeSyncConstructorOptions>);
private recursiveResolveOptions;
private static isPlainObject;
/**
* Parse a server entry into a host/port pair. Supports:
* - "host" / "1.2.3.4" → default port
* - "host:123" / "1.2.3.4:123" → explicit port
* - "[2001:db8::1]" / "[2001:db8::1]:123" → bracketed IPv6, optional port
* - "2001:db8::1" / "::1" → bare IPv6 literal, default port
* A bare (unbracketed) IPv6 literal cannot carry a port because the colons
* are ambiguous, so the default port is always used for it.
*/
private static parseServer;
/**
* Returns a singleton
*/
static getInstance(options?: RecursivePartial<NtpTimeSyncConstructorOptions>): NtpTimeSync;
private collectSamples;
/**
* @param {boolean} force Force NTP update
*/
getTime(force?: boolean): Promise<NtpTimeResult>;
/**
* Will return the correct timestamp when function was called
*/
now(force?: boolean): Promise<Date>;
/**
* @param {Integer} leapIndicator, defaults to 3 (unsynchronized)
* @param {Integer} ntpVersion, defaults to `options.ntpDefaults.version`
* @param {Integer} mode, defaults to 3 (client)
* @return {Buffer}
*/
private createPacket;
private static cleanup;
getNetworkTime(server: string, port?: number): Promise<NtpReceivedPacket>;
/**
* Test if response is acceptable for synchronization
*/
private acceptResponse;
/**
* Average for a list of numbers
*/
private static avg;
/**
* Standard deviation for a list of numbers
*/
private static stdDev;
}
export {};
//# sourceMappingURL=NtpTimeSync.d.ts.map