kinto
Version:
An Offline-First JavaScript client for Kinto.
80 lines (79 loc) • 2.76 kB
TypeScript
import { Emitter, FetchFunction, FetchHeaders, FetchResponse } from "../types";
interface HttpOptions {
timeout?: number | null;
requestMode?: RequestMode;
fetchFunc?: FetchFunction;
}
interface RequestOptions {
retry: number;
}
export interface HttpResponse<T> {
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<string, string>;
/**
* 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<FetchResponse>;
/**
* @private
*/
processResponse<T>(response: FetchResponse): Promise<HttpResponse<T>>;
/**
* @private
*/
retry<T>(url: string, retryAfter: number, request: RequestInit, options: RequestOptions): Promise<HttpResponse<T>>;
/**
* 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<T>(url: string, request?: RequestInit, options?: RequestOptions): Promise<HttpResponse<T>>;
_checkForDeprecationHeader(headers: FetchHeaders): void;
_checkForBackoffHeader(headers: FetchHeaders): void;
_checkForRetryAfterHeader(headers: FetchHeaders): number | null;
}
export {};