///
import { JSONObject } from 'phosphor/lib/algorithm/json';
import * as url from 'url';
/**
* Copy the contents of one object to another, recursively.
*
* From [stackoverflow](http://stackoverflow.com/a/12317051).
*/
export declare function extend(target: any, source: any): any;
/**
* Get a deep copy of a JSON object.
*/
export declare function copy(object: JSONObject): JSONObject;
/**
* Get a random 32 character hex string (not a formal UUID)
*/
export declare function uuid(): string;
/**
* Parse a url into a URL object.
*
* @param urlString - The URL string to parse.
*
* @param parseQueryString - If `true`, the query property will always be set
* to an object returned by the `querystring` module's `parse()` method.
* If `false`, the `query` property on the returned URL object will be an
* unparsed, undecoded string. Defaults to `false`.
*
* @param slashedDenoteHost - If `true`, the first token after the literal
* string `//` and preceeding the next `/` will be interpreted as the `host`.
* For instance, given `//foo/bar`, the result would be
* `{host: 'foo', pathname: '/bar'}` rather than `{pathname: '//foo/bar'}`.
* Defaults to `false`.
*
* @returns A URL object.
*/
export declare function urlParse(urlStr: string, parseQueryString?: boolean, slashesDenoteHost?: boolean): url.Url;
/**
* Resolve a url.
*
* Take a base URL, and a href URL, and resolve them as a browser would for
* an anchor tag.
*/
export declare function urlResolve(from: string, to: string): string;
/**
* Join a sequence of url components and normalizes as in node `path.join`.
*/
export declare function urlPathJoin(...parts: string[]): string;
/**
* Encode the components of a multi-segment url.
*
* #### Notes
* Preserves the `'/'` separators.
* Should not include the base url, since all parts are escaped.
*/
export declare function urlEncodeParts(uri: string): string;
/**
* Return a serialized object string suitable for a query.
*
* From [stackoverflow](http://stackoverflow.com/a/30707423).
*/
export declare function jsonToQueryString(json: JSONObject): string;
/**
* Input settings for an AJAX request.
*/
export interface IAjaxSettings extends JSONObject {
/**
* The HTTP method to use. Defaults to `'GET'`.
*/
method?: string;
/**
* The return data type (used to parse the return data).
*/
dataType?: string;
/**
* The outgoing content type, used to set the `Content-Type` header.
*/
contentType?: string;
/**
* The request data.
*/
data?: any;
/**
* Whether to cache the response. Defaults to `true`.
*/
cache?: boolean;
/**
* The number of milliseconds a request can take before automatically
* being terminated. A value of 0 (which is the default) means there is
* no timeout.
*/
timeout?: number;
/**
* A mapping of request headers, used via `setRequestHeader`.
*/
requestHeaders?: {
[key: string]: string;
};
/**
* Is a Boolean that indicates whether or not cross-site Access-Control
* requests should be made using credentials such as cookies or
* authorization headers. Defaults to `false`.
*/
withCredentials?: boolean;
/**
* The user name associated with the request. Defaults to `''`.
*/
user?: string;
/**
* The password associated with the request. Defaults to `''`.
*/
password?: string;
}
/**
* Data for a successful AJAX request.
*/
export interface IAjaxSuccess {
/**
* The `onload` event.
*/
readonly event: ProgressEvent;
/**
* The XHR object.
*/
readonly xhr: XMLHttpRequest;
/**
* The ajax settings associated with the request.
*/
readonly ajaxSettings: IAjaxSettings;
/**
* The data returned by the ajax call.
*/
readonly data: any;
}
/**
* Data for an unsuccesful AJAX request.
*/
export interface IAjaxError {
/**
* The event triggering the error.
*/
readonly event: Event;
/**
* The XHR object.
*/
readonly xhr: XMLHttpRequest;
/**
* The ajax settings associated with the request.
*/
readonly ajaxSettings: IAjaxSettings;
/**
* The error message, if `onerror`.
*/
readonly throwError?: string;
}
/**
* Asynchronous XMLHTTPRequest handler.
*
* @param url - The url to request.
*
* @param settings - The settings to apply to the request and response.
*
* #### Notes
* Based on this [example](http://www.html5rocks.com/en/tutorials/es6/promises/#toc-promisifying-xmlhttprequest).
*/
export declare function ajaxRequest(url: string, ajaxSettings: IAjaxSettings): Promise;
/**
* Create an ajax error from an ajax success.
*
* @param success - The original success object.
*
* @param throwError - The optional new error name. If not given
* we use "Invalid Status: "
*/
export declare function makeAjaxError(success: IAjaxSuccess, throwError?: string): Promise;
/**
* Try to load an object from a module or a registry.
*
* Try to load an object from a module asynchronously if a module
* is specified, otherwise tries to load an object from the global
* registry, if the global registry is provided.
*/
export declare function loadObject(name: string, moduleName: string, registry?: {
[key: string]: any;
}): Promise;
/**
* A Promise that can be resolved or rejected by another object.
*/
export declare class PromiseDelegate {
/**
* Construct a new Promise delegate.
*/
constructor();
/**
* Get the underlying Promise.
*/
readonly promise: Promise;
/**
* Resolve the underlying Promise with an optional value or another Promise.
*/
resolve(value?: T | Promise): void;
/**
* Reject the underlying Promise with an optional reason.
*/
reject(reason?: any): void;
private _promise;
private _resolve;
private _reject;
}
/**
* Get global configuration data for the Jupyter application.
*
* @param name - The name of the configuration option.
*
* @returns The config value or `undefined` if not found.
*
* #### Notes
* For browser based applications, it is assumed that the page HTML
* includes a script tag with the id `jupyter-config-data` containing the
* configuration as valid JSON.
*/
export declare function getConfigOption(name: string): string;
/**
* Get the base URL for a Jupyter application.
*/
export declare function getBaseUrl(): string;
/**
* Get the base websocket URL for a Jupyter application.
*/
export declare function getWsUrl(baseUrl?: string): string;