UNPKG

ntp-time-sync

Version:

Fetches the current time from NTP servers and returns offset information

104 lines 3.29 kB
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