[6a3a178] | 1 | import { Observable } from '../../Observable';
|
---|
| 2 | import { Subscriber } from '../../Subscriber';
|
---|
| 3 | import { TeardownLogic } from '../../types';
|
---|
| 4 | export interface AjaxRequest {
|
---|
| 5 | url?: string;
|
---|
| 6 | body?: any;
|
---|
| 7 | user?: string;
|
---|
| 8 | async?: boolean;
|
---|
| 9 | method?: string;
|
---|
| 10 | headers?: Object;
|
---|
| 11 | timeout?: number;
|
---|
| 12 | password?: string;
|
---|
| 13 | hasContent?: boolean;
|
---|
| 14 | crossDomain?: boolean;
|
---|
| 15 | withCredentials?: boolean;
|
---|
| 16 | createXHR?: () => XMLHttpRequest;
|
---|
| 17 | progressSubscriber?: Subscriber<any>;
|
---|
| 18 | responseType?: string;
|
---|
| 19 | }
|
---|
| 20 | export interface AjaxCreationMethod {
|
---|
| 21 | (urlOrRequest: string | AjaxRequest): Observable<AjaxResponse>;
|
---|
| 22 | get(url: string, headers?: Object): Observable<AjaxResponse>;
|
---|
| 23 | post(url: string, body?: any, headers?: Object): Observable<AjaxResponse>;
|
---|
| 24 | put(url: string, body?: any, headers?: Object): Observable<AjaxResponse>;
|
---|
| 25 | patch(url: string, body?: any, headers?: Object): Observable<AjaxResponse>;
|
---|
| 26 | delete(url: string, headers?: Object): Observable<AjaxResponse>;
|
---|
| 27 | getJSON<T>(url: string, headers?: Object): Observable<T>;
|
---|
| 28 | }
|
---|
| 29 | export declare function ajaxGet(url: string, headers?: Object): AjaxObservable<AjaxResponse>;
|
---|
| 30 | export declare function ajaxPost(url: string, body?: any, headers?: Object): Observable<AjaxResponse>;
|
---|
| 31 | export declare function ajaxDelete(url: string, headers?: Object): Observable<AjaxResponse>;
|
---|
| 32 | export declare function ajaxPut(url: string, body?: any, headers?: Object): Observable<AjaxResponse>;
|
---|
| 33 | export declare function ajaxPatch(url: string, body?: any, headers?: Object): Observable<AjaxResponse>;
|
---|
| 34 | export declare function ajaxGetJSON<T>(url: string, headers?: Object): Observable<T>;
|
---|
| 35 | /**
|
---|
| 36 | * We need this JSDoc comment for affecting ESDoc.
|
---|
| 37 | * @extends {Ignored}
|
---|
| 38 | * @hide true
|
---|
| 39 | */
|
---|
| 40 | export declare class AjaxObservable<T> extends Observable<T> {
|
---|
| 41 | /**
|
---|
| 42 | * Creates an observable for an Ajax request with either a request object with
|
---|
| 43 | * url, headers, etc or a string for a URL.
|
---|
| 44 | *
|
---|
| 45 | * ## Example
|
---|
| 46 | * ```ts
|
---|
| 47 | * import { ajax } from 'rxjs/ajax';
|
---|
| 48 | *
|
---|
| 49 | * const source1 = ajax('/products');
|
---|
| 50 | * const source2 = ajax({ url: 'products', method: 'GET' });
|
---|
| 51 | * ```
|
---|
| 52 | *
|
---|
| 53 | * @param {string|Object} request Can be one of the following:
|
---|
| 54 | * A string of the URL to make the Ajax call.
|
---|
| 55 | * An object with the following properties
|
---|
| 56 | * - url: URL of the request
|
---|
| 57 | * - body: The body of the request
|
---|
| 58 | * - method: Method of the request, such as GET, POST, PUT, PATCH, DELETE
|
---|
| 59 | * - async: Whether the request is async
|
---|
| 60 | * - headers: Optional headers
|
---|
| 61 | * - crossDomain: true if a cross domain request, else false
|
---|
| 62 | * - createXHR: a function to override if you need to use an alternate
|
---|
| 63 | * XMLHttpRequest implementation.
|
---|
| 64 | * - resultSelector: a function to use to alter the output value type of
|
---|
| 65 | * the Observable. Gets {@link AjaxResponse} as an argument.
|
---|
| 66 | * @return {Observable} An observable sequence containing the XMLHttpRequest.
|
---|
| 67 | * @static true
|
---|
| 68 | * @name ajax
|
---|
| 69 | * @owner Observable
|
---|
| 70 | * @nocollapse
|
---|
| 71 | */
|
---|
| 72 | static create: AjaxCreationMethod;
|
---|
| 73 | private request;
|
---|
| 74 | constructor(urlOrRequest: string | AjaxRequest);
|
---|
| 75 | /** @deprecated This is an internal implementation detail, do not use. */
|
---|
| 76 | _subscribe(subscriber: Subscriber<T>): TeardownLogic;
|
---|
| 77 | }
|
---|
| 78 | /**
|
---|
| 79 | * We need this JSDoc comment for affecting ESDoc.
|
---|
| 80 | * @ignore
|
---|
| 81 | * @extends {Ignored}
|
---|
| 82 | */
|
---|
| 83 | export declare class AjaxSubscriber<T> extends Subscriber<Event> {
|
---|
| 84 | request: AjaxRequest;
|
---|
| 85 | private xhr;
|
---|
| 86 | private done;
|
---|
| 87 | constructor(destination: Subscriber<T>, request: AjaxRequest);
|
---|
| 88 | next(e: Event): void;
|
---|
| 89 | private send;
|
---|
| 90 | private serializeBody;
|
---|
| 91 | private setHeaders;
|
---|
| 92 | private getHeader;
|
---|
| 93 | private setupEvents;
|
---|
| 94 | unsubscribe(): void;
|
---|
| 95 | }
|
---|
| 96 | /**
|
---|
| 97 | * A normalized AJAX response.
|
---|
| 98 | *
|
---|
| 99 | * @see {@link ajax}
|
---|
| 100 | *
|
---|
| 101 | * @class AjaxResponse
|
---|
| 102 | */
|
---|
| 103 | export declare class AjaxResponse {
|
---|
| 104 | originalEvent: Event;
|
---|
| 105 | xhr: XMLHttpRequest;
|
---|
| 106 | request: AjaxRequest;
|
---|
| 107 | /** @type {number} The HTTP status code */
|
---|
| 108 | status: number;
|
---|
| 109 | /** @type {string|ArrayBuffer|Document|object|any} The response data */
|
---|
| 110 | response: any;
|
---|
| 111 | /** @type {string} The raw responseText */
|
---|
| 112 | responseText: string;
|
---|
| 113 | /** @type {string} The responseType (e.g. 'json', 'arraybuffer', or 'xml') */
|
---|
| 114 | responseType: string;
|
---|
| 115 | constructor(originalEvent: Event, xhr: XMLHttpRequest, request: AjaxRequest);
|
---|
| 116 | }
|
---|
| 117 | export declare type AjaxErrorNames = 'AjaxError' | 'AjaxTimeoutError';
|
---|
| 118 | /**
|
---|
| 119 | * A normalized AJAX error.
|
---|
| 120 | *
|
---|
| 121 | * @see {@link ajax}
|
---|
| 122 | *
|
---|
| 123 | * @class AjaxError
|
---|
| 124 | */
|
---|
| 125 | export interface AjaxError extends Error {
|
---|
| 126 | /** @type {XMLHttpRequest} The XHR instance associated with the error */
|
---|
| 127 | xhr: XMLHttpRequest;
|
---|
| 128 | /** @type {AjaxRequest} The AjaxRequest associated with the error */
|
---|
| 129 | request: AjaxRequest;
|
---|
| 130 | /** @type {number} The HTTP status code */
|
---|
| 131 | status: number;
|
---|
| 132 | /** @type {string} The responseType (e.g. 'json', 'arraybuffer', or 'xml') */
|
---|
| 133 | responseType: string;
|
---|
| 134 | /** @type {string|ArrayBuffer|Document|object|any} The response data */
|
---|
| 135 | response: any;
|
---|
| 136 | }
|
---|
| 137 | export interface AjaxErrorCtor {
|
---|
| 138 | new (message: string, xhr: XMLHttpRequest, request: AjaxRequest): AjaxError;
|
---|
| 139 | }
|
---|
| 140 | export declare const AjaxError: AjaxErrorCtor;
|
---|
| 141 | export interface AjaxTimeoutError extends AjaxError {
|
---|
| 142 | }
|
---|
| 143 | export interface AjaxTimeoutErrorCtor {
|
---|
| 144 | new (xhr: XMLHttpRequest, request: AjaxRequest): AjaxTimeoutError;
|
---|
| 145 | }
|
---|
| 146 | /**
|
---|
| 147 | * @see {@link ajax}
|
---|
| 148 | *
|
---|
| 149 | * @class AjaxTimeoutError
|
---|
| 150 | */
|
---|
| 151 | export declare const AjaxTimeoutError: AjaxTimeoutErrorCtor;
|
---|