import { Emitter, FetchFunction, FetchHeaders, FetchResponse } from "../types"; interface HttpOptions { timeout?: number | null; requestMode?: RequestMode; fetchFunc?: FetchFunction; } interface RequestOptions { retry: number; } export interface HttpResponse { status: number; json: T; headers: FetchHeaders; } /** * Enhanced HTTP client for the Kinto protocol. * @private */ export default class HTTP { /** * Default HTTP request headers applied to each outgoing request. * * @type {Object} */ static get DEFAULT_REQUEST_HEADERS(): Record; /** * Default options. * * @type {Object} */ static get defaultOptions(): HttpOptions; events?: Emitter; requestMode: RequestMode; timeout: number; fetchFunc: FetchFunction; /** * Constructor. * * @param {EventEmitter} events The event handler. * @param {Object} [options={}} The options object. * @param {Number} [options.timeout=null] The request timeout in ms, if any (default: `null`). * @param {String} [options.requestMode="cors"] The HTTP request mode (default: `"cors"`). */ constructor(events?: Emitter, options?: HttpOptions); /** * @private */ timedFetch(url: string, options: RequestInit): Promise; /** * @private */ processResponse(response: FetchResponse): Promise>; /** * @private */ retry(url: string, retryAfter: number, request: RequestInit, options: RequestOptions): Promise>; /** * Performs an HTTP request to the Kinto server. * * Resolves with an objet containing the following HTTP response properties: * - `{Number} status` The HTTP status code. * - `{Object} json` The JSON response body. * - `{Headers} headers` The response headers object; see the ES6 fetch() spec. * * @param {String} url The URL. * @param {Object} [request={}] The request object, passed to * fetch() as its options object. * @param {Object} [request.headers] The request headers object (default: {}) * @param {Object} [options={}] Options for making the * request * @param {Number} [options.retry] Number of retries (default: 0) * @return {Promise} */ request(url: string, request?: RequestInit, options?: RequestOptions): Promise>; _checkForDeprecationHeader(headers: FetchHeaders): void; _checkForBackoffHeader(headers: FetchHeaders): void; _checkForRetryAfterHeader(headers: FetchHeaders): number | null; } export {};