UNPKG

universal-speedtest

Version:
105 lines (104 loc) 4.18 kB
import { OAResult, OAServer, USOptions } from "../interfaces/index.js"; /** * Ookla Speedtest test. */ export declare class Ookla { private readonly options; /** * Constructor for Ookla Speedtest. * @param {USOptions} options - UniversalSpeedTest options object */ constructor(options: USOptions); /** * Lists Ookla test servers. * @param serversToFetch - Number of test servers to fetch * @returns {Promise<OAServer[]>} Ookla test servers */ listServers(serversToFetch?: number): Promise<OAServer[]>; /** * Searches Ookla test servers based on search term. * @param searchTerm - Search term * @param serversToFetch - Number of test servers to fetch * @returns {Promise<OAServer[]>} Ookla test servers */ searchServers(searchTerm: string, serversToFetch?: number): Promise<OAServer[]>; /** * Returns a list of Ookla test servers. * @param serversUrl - URL to fetch servers from * @private * @returns {Promise<OAServer[]>} List of available servers */ private getServersList; /** * Performs the Ookla Speedtest measurement. * @param server - Test server to be used for measurement * @returns {Promise<OAResult>} Results of the Ookla test */ runTest(server?: OAServer): Promise<OAResult>; /** * Retrieves the configuration for speedtest.net test. * @private * @returns {Promise<OAConfig>} Configuration for the current test */ private getConfig; /** * Returns a list of the ten nearest speedtest.net servers with their latency. * @param servers List of available test servers * @private * @returns {Promise<OAMeasurementServer[]>} List of available servers */ private prepareTestServers; /** * Returns four servers with the lowest latency. * @param {OAMeasurementServer[]} servers - List of available servers * @private * @returns {Promise<OAMeasurementServer>} The four fastest servers */ private getBestServers; /** * Measures latency and jitter of the given server. * @param {WebSocket} ws - WebSocket connection * @param {string|null} uuid - Test UUID * @param {number} requests - Number of ping calls * @param {number} timeout - Maximum time that can be elapsed * @param {boolean} calculateJitter - Whether to calculate jitter or not * @private * @returns {Promise<OAPingResult>} Latency and jitter of the server */ private measurePing; /** * Performs download speed measurement and returns the result. * @param {OAMeasurementServer[]} servers - All available measurement servers * @param {OAMeasurementServer} bestServer - The best measurement server * @param {string} testUUID - Generated UUID for this test * @param {boolean} multiConnectionTest - Whether measurement should use single multiple servers * @private * @returns {Promise<OADownloadResult>} Download speed measurement result */ private measureDownloadSpeed; /** * Reads upload test statistics and continuously reports number of transferred bytes. * @param {WebSocket} ws - WebSocket connection * @param {string} uuid - Test UUID * @param {number} timeout - Maximum time that can be elapsed * @param {function} bytesReceived - callback returning number bytes received by test server * @private * @returns {Promise<void>} Resolved when upload stats listener is ready */ private startUploadStatsListener; /** * Performs upload speed measurement and returns the result. * @param {OAMeasurementServer} bestServer - The best measurement server * @param {string} testUUID - Generated UUID for this test * @private * @returns {Promise<OAUploadResult>} Upload speed measurement result */ private measureUploadSpeed; /** * Returns final speed in bytes per second from all provided samples. * @param {number[]} samples - All retrieved bandwidth sample * @private * @returns {number} Final speed in bytes per second */ private calculateSpeedFromSamples; }