mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-10-31 14:18:32 +00:00 
			
		
		
		
	update
This commit is contained in:
		
							
								
								
									
										137
									
								
								node_modules/rxjs/observable/dom/AjaxObservable.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								node_modules/rxjs/observable/dom/AjaxObservable.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,137 @@ | ||||
| import { Observable } from '../../Observable'; | ||||
| import { Subscriber } from '../../Subscriber'; | ||||
| import { TeardownLogic } from '../../Subscription'; | ||||
| export interface AjaxRequest { | ||||
|     url?: string; | ||||
|     body?: any; | ||||
|     user?: string; | ||||
|     async?: boolean; | ||||
|     method?: string; | ||||
|     headers?: Object; | ||||
|     timeout?: number; | ||||
|     password?: string; | ||||
|     hasContent?: boolean; | ||||
|     crossDomain?: boolean; | ||||
|     withCredentials?: boolean; | ||||
|     createXHR?: () => XMLHttpRequest; | ||||
|     progressSubscriber?: Subscriber<any>; | ||||
|     responseType?: string; | ||||
| } | ||||
| export interface AjaxCreationMethod { | ||||
|     (urlOrRequest: string | AjaxRequest): Observable<AjaxResponse>; | ||||
|     get(url: string, headers?: Object): Observable<AjaxResponse>; | ||||
|     post(url: string, body?: any, headers?: Object): Observable<AjaxResponse>; | ||||
|     put(url: string, body?: any, headers?: Object): Observable<AjaxResponse>; | ||||
|     patch(url: string, body?: any, headers?: Object): Observable<AjaxResponse>; | ||||
|     delete(url: string, headers?: Object): Observable<AjaxResponse>; | ||||
|     getJSON<T>(url: string, headers?: Object): Observable<T>; | ||||
| } | ||||
| export declare function ajaxGet(url: string, headers?: Object): AjaxObservable<AjaxResponse>; | ||||
| export declare function ajaxPost(url: string, body?: any, headers?: Object): Observable<AjaxResponse>; | ||||
| export declare function ajaxDelete(url: string, headers?: Object): Observable<AjaxResponse>; | ||||
| export declare function ajaxPut(url: string, body?: any, headers?: Object): Observable<AjaxResponse>; | ||||
| export declare function ajaxPatch(url: string, body?: any, headers?: Object): Observable<AjaxResponse>; | ||||
| export declare function ajaxGetJSON<T>(url: string, headers?: Object): Observable<T>; | ||||
| /** | ||||
|  * We need this JSDoc comment for affecting ESDoc. | ||||
|  * @extends {Ignored} | ||||
|  * @hide true | ||||
|  */ | ||||
| export declare class AjaxObservable<T> extends Observable<T> { | ||||
|     /** | ||||
|      * Creates an observable for an Ajax request with either a request object with | ||||
|      * url, headers, etc or a string for a URL. | ||||
|      * | ||||
|      * @example | ||||
|      * source = Rx.Observable.ajax('/products'); | ||||
|      * source = Rx.Observable.ajax({ url: 'products', method: 'GET' }); | ||||
|      * | ||||
|      * @param {string|Object} request Can be one of the following: | ||||
|      *   A string of the URL to make the Ajax call. | ||||
|      *   An object with the following properties | ||||
|      *   - url: URL of the request | ||||
|      *   - body: The body of the request | ||||
|      *   - method: Method of the request, such as GET, POST, PUT, PATCH, DELETE | ||||
|      *   - async: Whether the request is async | ||||
|      *   - headers: Optional headers | ||||
|      *   - crossDomain: true if a cross domain request, else false | ||||
|      *   - createXHR: a function to override if you need to use an alternate | ||||
|      *   XMLHttpRequest implementation. | ||||
|      *   - resultSelector: a function to use to alter the output value type of | ||||
|      *   the Observable. Gets {@link AjaxResponse} as an argument. | ||||
|      * @return {Observable} An observable sequence containing the XMLHttpRequest. | ||||
|      * @static true | ||||
|      * @name ajax | ||||
|      * @owner Observable | ||||
|     */ | ||||
|     static create: AjaxCreationMethod; | ||||
|     private request; | ||||
|     constructor(urlOrRequest: string | AjaxRequest); | ||||
|     /** @deprecated internal use only */ _subscribe(subscriber: Subscriber<T>): TeardownLogic; | ||||
| } | ||||
| /** | ||||
|  * We need this JSDoc comment for affecting ESDoc. | ||||
|  * @ignore | ||||
|  * @extends {Ignored} | ||||
|  */ | ||||
| export declare class AjaxSubscriber<T> extends Subscriber<Event> { | ||||
|     request: AjaxRequest; | ||||
|     private xhr; | ||||
|     private done; | ||||
|     constructor(destination: Subscriber<T>, request: AjaxRequest); | ||||
|     next(e: Event): void; | ||||
|     private send(); | ||||
|     private serializeBody(body, contentType?); | ||||
|     private setHeaders(xhr, headers); | ||||
|     private setupEvents(xhr, request); | ||||
|     unsubscribe(): void; | ||||
| } | ||||
| /** | ||||
|  * A normalized AJAX response. | ||||
|  * | ||||
|  * @see {@link ajax} | ||||
|  * | ||||
|  * @class AjaxResponse | ||||
|  */ | ||||
| export declare class AjaxResponse { | ||||
|     originalEvent: Event; | ||||
|     xhr: XMLHttpRequest; | ||||
|     request: AjaxRequest; | ||||
|     /** @type {number} The HTTP status code */ | ||||
|     status: number; | ||||
|     /** @type {string|ArrayBuffer|Document|object|any} The response data */ | ||||
|     response: any; | ||||
|     /** @type {string} The raw responseText */ | ||||
|     responseText: string; | ||||
|     /** @type {string} The responseType (e.g. 'json', 'arraybuffer', or 'xml') */ | ||||
|     responseType: string; | ||||
|     constructor(originalEvent: Event, xhr: XMLHttpRequest, request: AjaxRequest); | ||||
| } | ||||
| /** | ||||
|  * A normalized AJAX error. | ||||
|  * | ||||
|  * @see {@link ajax} | ||||
|  * | ||||
|  * @class AjaxError | ||||
|  */ | ||||
| export declare class AjaxError extends Error { | ||||
|     /** @type {XMLHttpRequest} The XHR instance associated with the error */ | ||||
|     xhr: XMLHttpRequest; | ||||
|     /** @type {AjaxRequest} The AjaxRequest associated with the error */ | ||||
|     request: AjaxRequest; | ||||
|     /** @type {number} The HTTP status code */ | ||||
|     status: number; | ||||
|     /** @type {string} The responseType (e.g. 'json', 'arraybuffer', or 'xml') */ | ||||
|     responseType: string; | ||||
|     /** @type {string|ArrayBuffer|Document|object|any} The response data */ | ||||
|     response: any; | ||||
|     constructor(message: string, xhr: XMLHttpRequest, request: AjaxRequest); | ||||
| } | ||||
| /** | ||||
|  * @see {@link ajax} | ||||
|  * | ||||
|  * @class AjaxTimeoutError | ||||
|  */ | ||||
| export declare class AjaxTimeoutError extends AjaxError { | ||||
|     constructor(xhr: XMLHttpRequest, request: AjaxRequest); | ||||
| } | ||||
							
								
								
									
										426
									
								
								node_modules/rxjs/observable/dom/AjaxObservable.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										426
									
								
								node_modules/rxjs/observable/dom/AjaxObservable.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,426 @@ | ||||
| "use strict"; | ||||
| var __extends = (this && this.__extends) || function (d, b) { | ||||
|     for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||||
|     function __() { this.constructor = d; } | ||||
|     d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||||
| }; | ||||
| var root_1 = require('../../util/root'); | ||||
| var tryCatch_1 = require('../../util/tryCatch'); | ||||
| var errorObject_1 = require('../../util/errorObject'); | ||||
| var Observable_1 = require('../../Observable'); | ||||
| var Subscriber_1 = require('../../Subscriber'); | ||||
| var map_1 = require('../../operators/map'); | ||||
| function getCORSRequest() { | ||||
|     if (root_1.root.XMLHttpRequest) { | ||||
|         return new root_1.root.XMLHttpRequest(); | ||||
|     } | ||||
|     else if (!!root_1.root.XDomainRequest) { | ||||
|         return new root_1.root.XDomainRequest(); | ||||
|     } | ||||
|     else { | ||||
|         throw new Error('CORS is not supported by your browser'); | ||||
|     } | ||||
| } | ||||
| function getXMLHttpRequest() { | ||||
|     if (root_1.root.XMLHttpRequest) { | ||||
|         return new root_1.root.XMLHttpRequest(); | ||||
|     } | ||||
|     else { | ||||
|         var progId = void 0; | ||||
|         try { | ||||
|             var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0']; | ||||
|             for (var i = 0; i < 3; i++) { | ||||
|                 try { | ||||
|                     progId = progIds[i]; | ||||
|                     if (new root_1.root.ActiveXObject(progId)) { | ||||
|                         break; | ||||
|                     } | ||||
|                 } | ||||
|                 catch (e) { | ||||
|                 } | ||||
|             } | ||||
|             return new root_1.root.ActiveXObject(progId); | ||||
|         } | ||||
|         catch (e) { | ||||
|             throw new Error('XMLHttpRequest is not supported by your browser'); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| function ajaxGet(url, headers) { | ||||
|     if (headers === void 0) { headers = null; } | ||||
|     return new AjaxObservable({ method: 'GET', url: url, headers: headers }); | ||||
| } | ||||
| exports.ajaxGet = ajaxGet; | ||||
| ; | ||||
| function ajaxPost(url, body, headers) { | ||||
|     return new AjaxObservable({ method: 'POST', url: url, body: body, headers: headers }); | ||||
| } | ||||
| exports.ajaxPost = ajaxPost; | ||||
| ; | ||||
| function ajaxDelete(url, headers) { | ||||
|     return new AjaxObservable({ method: 'DELETE', url: url, headers: headers }); | ||||
| } | ||||
| exports.ajaxDelete = ajaxDelete; | ||||
| ; | ||||
| function ajaxPut(url, body, headers) { | ||||
|     return new AjaxObservable({ method: 'PUT', url: url, body: body, headers: headers }); | ||||
| } | ||||
| exports.ajaxPut = ajaxPut; | ||||
| ; | ||||
| function ajaxPatch(url, body, headers) { | ||||
|     return new AjaxObservable({ method: 'PATCH', url: url, body: body, headers: headers }); | ||||
| } | ||||
| exports.ajaxPatch = ajaxPatch; | ||||
| ; | ||||
| var mapResponse = map_1.map(function (x, index) { return x.response; }); | ||||
| function ajaxGetJSON(url, headers) { | ||||
|     return mapResponse(new AjaxObservable({ | ||||
|         method: 'GET', | ||||
|         url: url, | ||||
|         responseType: 'json', | ||||
|         headers: headers | ||||
|     })); | ||||
| } | ||||
| exports.ajaxGetJSON = ajaxGetJSON; | ||||
| ; | ||||
| /** | ||||
|  * We need this JSDoc comment for affecting ESDoc. | ||||
|  * @extends {Ignored} | ||||
|  * @hide true | ||||
|  */ | ||||
| var AjaxObservable = (function (_super) { | ||||
|     __extends(AjaxObservable, _super); | ||||
|     function AjaxObservable(urlOrRequest) { | ||||
|         _super.call(this); | ||||
|         var request = { | ||||
|             async: true, | ||||
|             createXHR: function () { | ||||
|                 return this.crossDomain ? getCORSRequest.call(this) : getXMLHttpRequest(); | ||||
|             }, | ||||
|             crossDomain: false, | ||||
|             withCredentials: false, | ||||
|             headers: {}, | ||||
|             method: 'GET', | ||||
|             responseType: 'json', | ||||
|             timeout: 0 | ||||
|         }; | ||||
|         if (typeof urlOrRequest === 'string') { | ||||
|             request.url = urlOrRequest; | ||||
|         } | ||||
|         else { | ||||
|             for (var prop in urlOrRequest) { | ||||
|                 if (urlOrRequest.hasOwnProperty(prop)) { | ||||
|                     request[prop] = urlOrRequest[prop]; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         this.request = request; | ||||
|     } | ||||
|     /** @deprecated internal use only */ AjaxObservable.prototype._subscribe = function (subscriber) { | ||||
|         return new AjaxSubscriber(subscriber, this.request); | ||||
|     }; | ||||
|     /** | ||||
|      * Creates an observable for an Ajax request with either a request object with | ||||
|      * url, headers, etc or a string for a URL. | ||||
|      * | ||||
|      * @example | ||||
|      * source = Rx.Observable.ajax('/products'); | ||||
|      * source = Rx.Observable.ajax({ url: 'products', method: 'GET' }); | ||||
|      * | ||||
|      * @param {string|Object} request Can be one of the following: | ||||
|      *   A string of the URL to make the Ajax call. | ||||
|      *   An object with the following properties | ||||
|      *   - url: URL of the request | ||||
|      *   - body: The body of the request | ||||
|      *   - method: Method of the request, such as GET, POST, PUT, PATCH, DELETE | ||||
|      *   - async: Whether the request is async | ||||
|      *   - headers: Optional headers | ||||
|      *   - crossDomain: true if a cross domain request, else false | ||||
|      *   - createXHR: a function to override if you need to use an alternate | ||||
|      *   XMLHttpRequest implementation. | ||||
|      *   - resultSelector: a function to use to alter the output value type of | ||||
|      *   the Observable. Gets {@link AjaxResponse} as an argument. | ||||
|      * @return {Observable} An observable sequence containing the XMLHttpRequest. | ||||
|      * @static true | ||||
|      * @name ajax | ||||
|      * @owner Observable | ||||
|     */ | ||||
|     AjaxObservable.create = (function () { | ||||
|         var create = function (urlOrRequest) { | ||||
|             return new AjaxObservable(urlOrRequest); | ||||
|         }; | ||||
|         create.get = ajaxGet; | ||||
|         create.post = ajaxPost; | ||||
|         create.delete = ajaxDelete; | ||||
|         create.put = ajaxPut; | ||||
|         create.patch = ajaxPatch; | ||||
|         create.getJSON = ajaxGetJSON; | ||||
|         return create; | ||||
|     })(); | ||||
|     return AjaxObservable; | ||||
| }(Observable_1.Observable)); | ||||
| exports.AjaxObservable = AjaxObservable; | ||||
| /** | ||||
|  * We need this JSDoc comment for affecting ESDoc. | ||||
|  * @ignore | ||||
|  * @extends {Ignored} | ||||
|  */ | ||||
| var AjaxSubscriber = (function (_super) { | ||||
|     __extends(AjaxSubscriber, _super); | ||||
|     function AjaxSubscriber(destination, request) { | ||||
|         _super.call(this, destination); | ||||
|         this.request = request; | ||||
|         this.done = false; | ||||
|         var headers = request.headers = request.headers || {}; | ||||
|         // force CORS if requested | ||||
|         if (!request.crossDomain && !headers['X-Requested-With']) { | ||||
|             headers['X-Requested-With'] = 'XMLHttpRequest'; | ||||
|         } | ||||
|         // ensure content type is set | ||||
|         if (!('Content-Type' in headers) && !(root_1.root.FormData && request.body instanceof root_1.root.FormData) && typeof request.body !== 'undefined') { | ||||
|             headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; | ||||
|         } | ||||
|         // properly serialize body | ||||
|         request.body = this.serializeBody(request.body, request.headers['Content-Type']); | ||||
|         this.send(); | ||||
|     } | ||||
|     AjaxSubscriber.prototype.next = function (e) { | ||||
|         this.done = true; | ||||
|         var _a = this, xhr = _a.xhr, request = _a.request, destination = _a.destination; | ||||
|         var response = new AjaxResponse(e, xhr, request); | ||||
|         destination.next(response); | ||||
|     }; | ||||
|     AjaxSubscriber.prototype.send = function () { | ||||
|         var _a = this, request = _a.request, _b = _a.request, user = _b.user, method = _b.method, url = _b.url, async = _b.async, password = _b.password, headers = _b.headers, body = _b.body; | ||||
|         var createXHR = request.createXHR; | ||||
|         var xhr = tryCatch_1.tryCatch(createXHR).call(request); | ||||
|         if (xhr === errorObject_1.errorObject) { | ||||
|             this.error(errorObject_1.errorObject.e); | ||||
|         } | ||||
|         else { | ||||
|             this.xhr = xhr; | ||||
|             // set up the events before open XHR | ||||
|             // https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest | ||||
|             // You need to add the event listeners before calling open() on the request. | ||||
|             // Otherwise the progress events will not fire. | ||||
|             this.setupEvents(xhr, request); | ||||
|             // open XHR | ||||
|             var result = void 0; | ||||
|             if (user) { | ||||
|                 result = tryCatch_1.tryCatch(xhr.open).call(xhr, method, url, async, user, password); | ||||
|             } | ||||
|             else { | ||||
|                 result = tryCatch_1.tryCatch(xhr.open).call(xhr, method, url, async); | ||||
|             } | ||||
|             if (result === errorObject_1.errorObject) { | ||||
|                 this.error(errorObject_1.errorObject.e); | ||||
|                 return null; | ||||
|             } | ||||
|             // timeout, responseType and withCredentials can be set once the XHR is open | ||||
|             if (async) { | ||||
|                 xhr.timeout = request.timeout; | ||||
|                 xhr.responseType = request.responseType; | ||||
|             } | ||||
|             if ('withCredentials' in xhr) { | ||||
|                 xhr.withCredentials = !!request.withCredentials; | ||||
|             } | ||||
|             // set headers | ||||
|             this.setHeaders(xhr, headers); | ||||
|             // finally send the request | ||||
|             result = body ? tryCatch_1.tryCatch(xhr.send).call(xhr, body) : tryCatch_1.tryCatch(xhr.send).call(xhr); | ||||
|             if (result === errorObject_1.errorObject) { | ||||
|                 this.error(errorObject_1.errorObject.e); | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
|         return xhr; | ||||
|     }; | ||||
|     AjaxSubscriber.prototype.serializeBody = function (body, contentType) { | ||||
|         if (!body || typeof body === 'string') { | ||||
|             return body; | ||||
|         } | ||||
|         else if (root_1.root.FormData && body instanceof root_1.root.FormData) { | ||||
|             return body; | ||||
|         } | ||||
|         if (contentType) { | ||||
|             var splitIndex = contentType.indexOf(';'); | ||||
|             if (splitIndex !== -1) { | ||||
|                 contentType = contentType.substring(0, splitIndex); | ||||
|             } | ||||
|         } | ||||
|         switch (contentType) { | ||||
|             case 'application/x-www-form-urlencoded': | ||||
|                 return Object.keys(body).map(function (key) { return (encodeURIComponent(key) + "=" + encodeURIComponent(body[key])); }).join('&'); | ||||
|             case 'application/json': | ||||
|                 return JSON.stringify(body); | ||||
|             default: | ||||
|                 return body; | ||||
|         } | ||||
|     }; | ||||
|     AjaxSubscriber.prototype.setHeaders = function (xhr, headers) { | ||||
|         for (var key in headers) { | ||||
|             if (headers.hasOwnProperty(key)) { | ||||
|                 xhr.setRequestHeader(key, headers[key]); | ||||
|             } | ||||
|         } | ||||
|     }; | ||||
|     AjaxSubscriber.prototype.setupEvents = function (xhr, request) { | ||||
|         var progressSubscriber = request.progressSubscriber; | ||||
|         function xhrTimeout(e) { | ||||
|             var _a = xhrTimeout, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request; | ||||
|             if (progressSubscriber) { | ||||
|                 progressSubscriber.error(e); | ||||
|             } | ||||
|             subscriber.error(new AjaxTimeoutError(this, request)); //TODO: Make betterer. | ||||
|         } | ||||
|         ; | ||||
|         xhr.ontimeout = xhrTimeout; | ||||
|         xhrTimeout.request = request; | ||||
|         xhrTimeout.subscriber = this; | ||||
|         xhrTimeout.progressSubscriber = progressSubscriber; | ||||
|         if (xhr.upload && 'withCredentials' in xhr) { | ||||
|             if (progressSubscriber) { | ||||
|                 var xhrProgress_1; | ||||
|                 xhrProgress_1 = function (e) { | ||||
|                     var progressSubscriber = xhrProgress_1.progressSubscriber; | ||||
|                     progressSubscriber.next(e); | ||||
|                 }; | ||||
|                 if (root_1.root.XDomainRequest) { | ||||
|                     xhr.onprogress = xhrProgress_1; | ||||
|                 } | ||||
|                 else { | ||||
|                     xhr.upload.onprogress = xhrProgress_1; | ||||
|                 } | ||||
|                 xhrProgress_1.progressSubscriber = progressSubscriber; | ||||
|             } | ||||
|             var xhrError_1; | ||||
|             xhrError_1 = function (e) { | ||||
|                 var _a = xhrError_1, progressSubscriber = _a.progressSubscriber, subscriber = _a.subscriber, request = _a.request; | ||||
|                 if (progressSubscriber) { | ||||
|                     progressSubscriber.error(e); | ||||
|                 } | ||||
|                 subscriber.error(new AjaxError('ajax error', this, request)); | ||||
|             }; | ||||
|             xhr.onerror = xhrError_1; | ||||
|             xhrError_1.request = request; | ||||
|             xhrError_1.subscriber = this; | ||||
|             xhrError_1.progressSubscriber = progressSubscriber; | ||||
|         } | ||||
|         function xhrReadyStateChange(e) { | ||||
|             var _a = xhrReadyStateChange, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request; | ||||
|             if (this.readyState === 4) { | ||||
|                 // normalize IE9 bug (http://bugs.jquery.com/ticket/1450) | ||||
|                 var status_1 = this.status === 1223 ? 204 : this.status; | ||||
|                 var response = (this.responseType === 'text' ? (this.response || this.responseText) : this.response); | ||||
|                 // fix status code when it is 0 (0 status is undocumented). | ||||
|                 // Occurs when accessing file resources or on Android 4.1 stock browser | ||||
|                 // while retrieving files from application cache. | ||||
|                 if (status_1 === 0) { | ||||
|                     status_1 = response ? 200 : 0; | ||||
|                 } | ||||
|                 if (200 <= status_1 && status_1 < 300) { | ||||
|                     if (progressSubscriber) { | ||||
|                         progressSubscriber.complete(); | ||||
|                     } | ||||
|                     subscriber.next(e); | ||||
|                     subscriber.complete(); | ||||
|                 } | ||||
|                 else { | ||||
|                     if (progressSubscriber) { | ||||
|                         progressSubscriber.error(e); | ||||
|                     } | ||||
|                     subscriber.error(new AjaxError('ajax error ' + status_1, this, request)); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         ; | ||||
|         xhr.onreadystatechange = xhrReadyStateChange; | ||||
|         xhrReadyStateChange.subscriber = this; | ||||
|         xhrReadyStateChange.progressSubscriber = progressSubscriber; | ||||
|         xhrReadyStateChange.request = request; | ||||
|     }; | ||||
|     AjaxSubscriber.prototype.unsubscribe = function () { | ||||
|         var _a = this, done = _a.done, xhr = _a.xhr; | ||||
|         if (!done && xhr && xhr.readyState !== 4 && typeof xhr.abort === 'function') { | ||||
|             xhr.abort(); | ||||
|         } | ||||
|         _super.prototype.unsubscribe.call(this); | ||||
|     }; | ||||
|     return AjaxSubscriber; | ||||
| }(Subscriber_1.Subscriber)); | ||||
| exports.AjaxSubscriber = AjaxSubscriber; | ||||
| /** | ||||
|  * A normalized AJAX response. | ||||
|  * | ||||
|  * @see {@link ajax} | ||||
|  * | ||||
|  * @class AjaxResponse | ||||
|  */ | ||||
| var AjaxResponse = (function () { | ||||
|     function AjaxResponse(originalEvent, xhr, request) { | ||||
|         this.originalEvent = originalEvent; | ||||
|         this.xhr = xhr; | ||||
|         this.request = request; | ||||
|         this.status = xhr.status; | ||||
|         this.responseType = xhr.responseType || request.responseType; | ||||
|         this.response = parseXhrResponse(this.responseType, xhr); | ||||
|     } | ||||
|     return AjaxResponse; | ||||
| }()); | ||||
| exports.AjaxResponse = AjaxResponse; | ||||
| /** | ||||
|  * A normalized AJAX error. | ||||
|  * | ||||
|  * @see {@link ajax} | ||||
|  * | ||||
|  * @class AjaxError | ||||
|  */ | ||||
| var AjaxError = (function (_super) { | ||||
|     __extends(AjaxError, _super); | ||||
|     function AjaxError(message, xhr, request) { | ||||
|         _super.call(this, message); | ||||
|         this.message = message; | ||||
|         this.xhr = xhr; | ||||
|         this.request = request; | ||||
|         this.status = xhr.status; | ||||
|         this.responseType = xhr.responseType || request.responseType; | ||||
|         this.response = parseXhrResponse(this.responseType, xhr); | ||||
|     } | ||||
|     return AjaxError; | ||||
| }(Error)); | ||||
| exports.AjaxError = AjaxError; | ||||
| function parseXhrResponse(responseType, xhr) { | ||||
|     switch (responseType) { | ||||
|         case 'json': | ||||
|             if ('response' in xhr) { | ||||
|                 //IE does not support json as responseType, parse it internally | ||||
|                 return xhr.responseType ? xhr.response : JSON.parse(xhr.response || xhr.responseText || 'null'); | ||||
|             } | ||||
|             else { | ||||
|                 // HACK(benlesh): TypeScript shennanigans | ||||
|                 // tslint:disable-next-line:no-any latest TS seems to think xhr is "never" here. | ||||
|                 return JSON.parse(xhr.responseText || 'null'); | ||||
|             } | ||||
|         case 'xml': | ||||
|             return xhr.responseXML; | ||||
|         case 'text': | ||||
|         default: | ||||
|             // HACK(benlesh): TypeScript shennanigans | ||||
|             // tslint:disable-next-line:no-any latest TS seems to think xhr is "never" here. | ||||
|             return ('response' in xhr) ? xhr.response : xhr.responseText; | ||||
|     } | ||||
| } | ||||
| /** | ||||
|  * @see {@link ajax} | ||||
|  * | ||||
|  * @class AjaxTimeoutError | ||||
|  */ | ||||
| var AjaxTimeoutError = (function (_super) { | ||||
|     __extends(AjaxTimeoutError, _super); | ||||
|     function AjaxTimeoutError(xhr, request) { | ||||
|         _super.call(this, 'ajax timeout', xhr, request); | ||||
|     } | ||||
|     return AjaxTimeoutError; | ||||
| }(AjaxError)); | ||||
| exports.AjaxTimeoutError = AjaxTimeoutError; | ||||
| //# sourceMappingURL=AjaxObservable.js.map | ||||
							
								
								
									
										1
									
								
								node_modules/rxjs/observable/dom/AjaxObservable.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/rxjs/observable/dom/AjaxObservable.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										83
									
								
								node_modules/rxjs/observable/dom/WebSocketSubject.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								node_modules/rxjs/observable/dom/WebSocketSubject.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| import { AnonymousSubject } from '../../Subject'; | ||||
| import { Subscriber } from '../../Subscriber'; | ||||
| import { Observable } from '../../Observable'; | ||||
| import { Subscription } from '../../Subscription'; | ||||
| import { Operator } from '../../Operator'; | ||||
| import { Observer, NextObserver } from '../../Observer'; | ||||
| export interface WebSocketSubjectConfig { | ||||
|     url: string; | ||||
|     protocol?: string | Array<string>; | ||||
|     resultSelector?: <T>(e: MessageEvent) => T; | ||||
|     openObserver?: NextObserver<Event>; | ||||
|     closeObserver?: NextObserver<CloseEvent>; | ||||
|     closingObserver?: NextObserver<void>; | ||||
|     WebSocketCtor?: { | ||||
|         new (url: string, protocol?: string | Array<string>): WebSocket; | ||||
|     }; | ||||
|     binaryType?: 'blob' | 'arraybuffer'; | ||||
| } | ||||
| /** | ||||
|  * We need this JSDoc comment for affecting ESDoc. | ||||
|  * @extends {Ignored} | ||||
|  * @hide true | ||||
|  */ | ||||
| export declare class WebSocketSubject<T> extends AnonymousSubject<T> { | ||||
|     url: string; | ||||
|     protocol: string | Array<string>; | ||||
|     socket: WebSocket; | ||||
|     openObserver: NextObserver<Event>; | ||||
|     closeObserver: NextObserver<CloseEvent>; | ||||
|     closingObserver: NextObserver<void>; | ||||
|     WebSocketCtor: { | ||||
|         new (url: string, protocol?: string | Array<string>): WebSocket; | ||||
|     }; | ||||
|     binaryType?: 'blob' | 'arraybuffer'; | ||||
|     private _output; | ||||
|     resultSelector(e: MessageEvent): any; | ||||
|     /** | ||||
|      * Wrapper around the w3c-compatible WebSocket object provided by the browser. | ||||
|      * | ||||
|      * @example <caption>Wraps browser WebSocket</caption> | ||||
|      * | ||||
|      * let socket$ = Observable.webSocket('ws://localhost:8081'); | ||||
|      * | ||||
|      * socket$.subscribe( | ||||
|      *    (msg) => console.log('message received: ' + msg), | ||||
|      *    (err) => console.log(err), | ||||
|      *    () => console.log('complete') | ||||
|      *  ); | ||||
|      * | ||||
|      * socket$.next(JSON.stringify({ op: 'hello' })); | ||||
|      * | ||||
|      * @example <caption>Wraps WebSocket from nodejs-websocket (using node.js)</caption> | ||||
|      * | ||||
|      * import { w3cwebsocket } from 'websocket'; | ||||
|      * | ||||
|      * let socket$ = Observable.webSocket({ | ||||
|      *   url: 'ws://localhost:8081', | ||||
|      *   WebSocketCtor: w3cwebsocket | ||||
|      * }); | ||||
|      * | ||||
|      * socket$.subscribe( | ||||
|      *    (msg) => console.log('message received: ' + msg), | ||||
|      *    (err) => console.log(err), | ||||
|      *    () => console.log('complete') | ||||
|      *  ); | ||||
|      * | ||||
|      * socket$.next(JSON.stringify({ op: 'hello' })); | ||||
|      * | ||||
|      * @param {string | WebSocketSubjectConfig} urlConfigOrSource the source of the websocket as an url or a structure defining the websocket object | ||||
|      * @return {WebSocketSubject} | ||||
|      * @static true | ||||
|      * @name webSocket | ||||
|      * @owner Observable | ||||
|      */ | ||||
|     static create<T>(urlConfigOrSource: string | WebSocketSubjectConfig): WebSocketSubject<T>; | ||||
|     constructor(urlConfigOrSource: string | WebSocketSubjectConfig | Observable<T>, destination?: Observer<T>); | ||||
|     lift<R>(operator: Operator<T, R>): WebSocketSubject<R>; | ||||
|     private _resetState(); | ||||
|     multiplex(subMsg: () => any, unsubMsg: () => any, messageFilter: (value: T) => boolean): Observable<any>; | ||||
|     private _connectSocket(); | ||||
|     /** @deprecated internal use only */ _subscribe(subscriber: Subscriber<T>): Subscription; | ||||
|     unsubscribe(): void; | ||||
| } | ||||
							
								
								
									
										250
									
								
								node_modules/rxjs/observable/dom/WebSocketSubject.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										250
									
								
								node_modules/rxjs/observable/dom/WebSocketSubject.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,250 @@ | ||||
| "use strict"; | ||||
| var __extends = (this && this.__extends) || function (d, b) { | ||||
|     for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||||
|     function __() { this.constructor = d; } | ||||
|     d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||||
| }; | ||||
| var Subject_1 = require('../../Subject'); | ||||
| var Subscriber_1 = require('../../Subscriber'); | ||||
| var Observable_1 = require('../../Observable'); | ||||
| var Subscription_1 = require('../../Subscription'); | ||||
| var root_1 = require('../../util/root'); | ||||
| var ReplaySubject_1 = require('../../ReplaySubject'); | ||||
| var tryCatch_1 = require('../../util/tryCatch'); | ||||
| var errorObject_1 = require('../../util/errorObject'); | ||||
| var assign_1 = require('../../util/assign'); | ||||
| /** | ||||
|  * We need this JSDoc comment for affecting ESDoc. | ||||
|  * @extends {Ignored} | ||||
|  * @hide true | ||||
|  */ | ||||
| var WebSocketSubject = (function (_super) { | ||||
|     __extends(WebSocketSubject, _super); | ||||
|     function WebSocketSubject(urlConfigOrSource, destination) { | ||||
|         if (urlConfigOrSource instanceof Observable_1.Observable) { | ||||
|             _super.call(this, destination, urlConfigOrSource); | ||||
|         } | ||||
|         else { | ||||
|             _super.call(this); | ||||
|             this.WebSocketCtor = root_1.root.WebSocket; | ||||
|             this._output = new Subject_1.Subject(); | ||||
|             if (typeof urlConfigOrSource === 'string') { | ||||
|                 this.url = urlConfigOrSource; | ||||
|             } | ||||
|             else { | ||||
|                 // WARNING: config object could override important members here. | ||||
|                 assign_1.assign(this, urlConfigOrSource); | ||||
|             } | ||||
|             if (!this.WebSocketCtor) { | ||||
|                 throw new Error('no WebSocket constructor can be found'); | ||||
|             } | ||||
|             this.destination = new ReplaySubject_1.ReplaySubject(); | ||||
|         } | ||||
|     } | ||||
|     WebSocketSubject.prototype.resultSelector = function (e) { | ||||
|         return JSON.parse(e.data); | ||||
|     }; | ||||
|     /** | ||||
|      * Wrapper around the w3c-compatible WebSocket object provided by the browser. | ||||
|      * | ||||
|      * @example <caption>Wraps browser WebSocket</caption> | ||||
|      * | ||||
|      * let socket$ = Observable.webSocket('ws://localhost:8081'); | ||||
|      * | ||||
|      * socket$.subscribe( | ||||
|      *    (msg) => console.log('message received: ' + msg), | ||||
|      *    (err) => console.log(err), | ||||
|      *    () => console.log('complete') | ||||
|      *  ); | ||||
|      * | ||||
|      * socket$.next(JSON.stringify({ op: 'hello' })); | ||||
|      * | ||||
|      * @example <caption>Wraps WebSocket from nodejs-websocket (using node.js)</caption> | ||||
|      * | ||||
|      * import { w3cwebsocket } from 'websocket'; | ||||
|      * | ||||
|      * let socket$ = Observable.webSocket({ | ||||
|      *   url: 'ws://localhost:8081', | ||||
|      *   WebSocketCtor: w3cwebsocket | ||||
|      * }); | ||||
|      * | ||||
|      * socket$.subscribe( | ||||
|      *    (msg) => console.log('message received: ' + msg), | ||||
|      *    (err) => console.log(err), | ||||
|      *    () => console.log('complete') | ||||
|      *  ); | ||||
|      * | ||||
|      * socket$.next(JSON.stringify({ op: 'hello' })); | ||||
|      * | ||||
|      * @param {string | WebSocketSubjectConfig} urlConfigOrSource the source of the websocket as an url or a structure defining the websocket object | ||||
|      * @return {WebSocketSubject} | ||||
|      * @static true | ||||
|      * @name webSocket | ||||
|      * @owner Observable | ||||
|      */ | ||||
|     WebSocketSubject.create = function (urlConfigOrSource) { | ||||
|         return new WebSocketSubject(urlConfigOrSource); | ||||
|     }; | ||||
|     WebSocketSubject.prototype.lift = function (operator) { | ||||
|         var sock = new WebSocketSubject(this, this.destination); | ||||
|         sock.operator = operator; | ||||
|         return sock; | ||||
|     }; | ||||
|     WebSocketSubject.prototype._resetState = function () { | ||||
|         this.socket = null; | ||||
|         if (!this.source) { | ||||
|             this.destination = new ReplaySubject_1.ReplaySubject(); | ||||
|         } | ||||
|         this._output = new Subject_1.Subject(); | ||||
|     }; | ||||
|     // TODO: factor this out to be a proper Operator/Subscriber implementation and eliminate closures | ||||
|     WebSocketSubject.prototype.multiplex = function (subMsg, unsubMsg, messageFilter) { | ||||
|         var self = this; | ||||
|         return new Observable_1.Observable(function (observer) { | ||||
|             var result = tryCatch_1.tryCatch(subMsg)(); | ||||
|             if (result === errorObject_1.errorObject) { | ||||
|                 observer.error(errorObject_1.errorObject.e); | ||||
|             } | ||||
|             else { | ||||
|                 self.next(result); | ||||
|             } | ||||
|             var subscription = self.subscribe(function (x) { | ||||
|                 var result = tryCatch_1.tryCatch(messageFilter)(x); | ||||
|                 if (result === errorObject_1.errorObject) { | ||||
|                     observer.error(errorObject_1.errorObject.e); | ||||
|                 } | ||||
|                 else if (result) { | ||||
|                     observer.next(x); | ||||
|                 } | ||||
|             }, function (err) { return observer.error(err); }, function () { return observer.complete(); }); | ||||
|             return function () { | ||||
|                 var result = tryCatch_1.tryCatch(unsubMsg)(); | ||||
|                 if (result === errorObject_1.errorObject) { | ||||
|                     observer.error(errorObject_1.errorObject.e); | ||||
|                 } | ||||
|                 else { | ||||
|                     self.next(result); | ||||
|                 } | ||||
|                 subscription.unsubscribe(); | ||||
|             }; | ||||
|         }); | ||||
|     }; | ||||
|     WebSocketSubject.prototype._connectSocket = function () { | ||||
|         var _this = this; | ||||
|         var WebSocketCtor = this.WebSocketCtor; | ||||
|         var observer = this._output; | ||||
|         var socket = null; | ||||
|         try { | ||||
|             socket = this.protocol ? | ||||
|                 new WebSocketCtor(this.url, this.protocol) : | ||||
|                 new WebSocketCtor(this.url); | ||||
|             this.socket = socket; | ||||
|             if (this.binaryType) { | ||||
|                 this.socket.binaryType = this.binaryType; | ||||
|             } | ||||
|         } | ||||
|         catch (e) { | ||||
|             observer.error(e); | ||||
|             return; | ||||
|         } | ||||
|         var subscription = new Subscription_1.Subscription(function () { | ||||
|             _this.socket = null; | ||||
|             if (socket && socket.readyState === 1) { | ||||
|                 socket.close(); | ||||
|             } | ||||
|         }); | ||||
|         socket.onopen = function (e) { | ||||
|             var openObserver = _this.openObserver; | ||||
|             if (openObserver) { | ||||
|                 openObserver.next(e); | ||||
|             } | ||||
|             var queue = _this.destination; | ||||
|             _this.destination = Subscriber_1.Subscriber.create(function (x) { return socket.readyState === 1 && socket.send(x); }, function (e) { | ||||
|                 var closingObserver = _this.closingObserver; | ||||
|                 if (closingObserver) { | ||||
|                     closingObserver.next(undefined); | ||||
|                 } | ||||
|                 if (e && e.code) { | ||||
|                     socket.close(e.code, e.reason); | ||||
|                 } | ||||
|                 else { | ||||
|                     observer.error(new TypeError('WebSocketSubject.error must be called with an object with an error code, ' + | ||||
|                         'and an optional reason: { code: number, reason: string }')); | ||||
|                 } | ||||
|                 _this._resetState(); | ||||
|             }, function () { | ||||
|                 var closingObserver = _this.closingObserver; | ||||
|                 if (closingObserver) { | ||||
|                     closingObserver.next(undefined); | ||||
|                 } | ||||
|                 socket.close(); | ||||
|                 _this._resetState(); | ||||
|             }); | ||||
|             if (queue && queue instanceof ReplaySubject_1.ReplaySubject) { | ||||
|                 subscription.add(queue.subscribe(_this.destination)); | ||||
|             } | ||||
|         }; | ||||
|         socket.onerror = function (e) { | ||||
|             _this._resetState(); | ||||
|             observer.error(e); | ||||
|         }; | ||||
|         socket.onclose = function (e) { | ||||
|             _this._resetState(); | ||||
|             var closeObserver = _this.closeObserver; | ||||
|             if (closeObserver) { | ||||
|                 closeObserver.next(e); | ||||
|             } | ||||
|             if (e.wasClean) { | ||||
|                 observer.complete(); | ||||
|             } | ||||
|             else { | ||||
|                 observer.error(e); | ||||
|             } | ||||
|         }; | ||||
|         socket.onmessage = function (e) { | ||||
|             var result = tryCatch_1.tryCatch(_this.resultSelector)(e); | ||||
|             if (result === errorObject_1.errorObject) { | ||||
|                 observer.error(errorObject_1.errorObject.e); | ||||
|             } | ||||
|             else { | ||||
|                 observer.next(result); | ||||
|             } | ||||
|         }; | ||||
|     }; | ||||
|     /** @deprecated internal use only */ WebSocketSubject.prototype._subscribe = function (subscriber) { | ||||
|         var _this = this; | ||||
|         var source = this.source; | ||||
|         if (source) { | ||||
|             return source.subscribe(subscriber); | ||||
|         } | ||||
|         if (!this.socket) { | ||||
|             this._connectSocket(); | ||||
|         } | ||||
|         var subscription = new Subscription_1.Subscription(); | ||||
|         subscription.add(this._output.subscribe(subscriber)); | ||||
|         subscription.add(function () { | ||||
|             var socket = _this.socket; | ||||
|             if (_this._output.observers.length === 0) { | ||||
|                 if (socket && socket.readyState === 1) { | ||||
|                     socket.close(); | ||||
|                 } | ||||
|                 _this._resetState(); | ||||
|             } | ||||
|         }); | ||||
|         return subscription; | ||||
|     }; | ||||
|     WebSocketSubject.prototype.unsubscribe = function () { | ||||
|         var _a = this, source = _a.source, socket = _a.socket; | ||||
|         if (socket && socket.readyState === 1) { | ||||
|             socket.close(); | ||||
|             this._resetState(); | ||||
|         } | ||||
|         _super.prototype.unsubscribe.call(this); | ||||
|         if (!source) { | ||||
|             this.destination = new ReplaySubject_1.ReplaySubject(); | ||||
|         } | ||||
|     }; | ||||
|     return WebSocketSubject; | ||||
| }(Subject_1.AnonymousSubject)); | ||||
| exports.WebSocketSubject = WebSocketSubject; | ||||
| //# sourceMappingURL=WebSocketSubject.js.map | ||||
							
								
								
									
										1
									
								
								node_modules/rxjs/observable/dom/WebSocketSubject.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/rxjs/observable/dom/WebSocketSubject.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								node_modules/rxjs/observable/dom/ajax.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								node_modules/rxjs/observable/dom/ajax.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| import { AjaxCreationMethod } from './AjaxObservable'; | ||||
| export declare const ajax: AjaxCreationMethod; | ||||
							
								
								
									
										4
									
								
								node_modules/rxjs/observable/dom/ajax.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								node_modules/rxjs/observable/dom/ajax.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| "use strict"; | ||||
| var AjaxObservable_1 = require('./AjaxObservable'); | ||||
| exports.ajax = AjaxObservable_1.AjaxObservable.create; | ||||
| //# sourceMappingURL=ajax.js.map | ||||
							
								
								
									
										1
									
								
								node_modules/rxjs/observable/dom/ajax.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/rxjs/observable/dom/ajax.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| {"version":3,"file":"ajax.js","sourceRoot":"","sources":["../../../src/observable/dom/ajax.ts"],"names":[],"mappings":";AAAA,+BAAqD,kBAAkB,CAAC,CAAA;AAE3D,YAAI,GAAuB,+BAAc,CAAC,MAAM,CAAC","sourcesContent":["import {  AjaxObservable, AjaxCreationMethod  } from './AjaxObservable';\n\nexport const ajax: AjaxCreationMethod = AjaxObservable.create;"]} | ||||
							
								
								
									
										2
									
								
								node_modules/rxjs/observable/dom/webSocket.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								node_modules/rxjs/observable/dom/webSocket.d.ts
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| import { WebSocketSubject } from './WebSocketSubject'; | ||||
| export declare const webSocket: typeof WebSocketSubject.create; | ||||
							
								
								
									
										4
									
								
								node_modules/rxjs/observable/dom/webSocket.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								node_modules/rxjs/observable/dom/webSocket.js
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| "use strict"; | ||||
| var WebSocketSubject_1 = require('./WebSocketSubject'); | ||||
| exports.webSocket = WebSocketSubject_1.WebSocketSubject.create; | ||||
| //# sourceMappingURL=webSocket.js.map | ||||
							
								
								
									
										1
									
								
								node_modules/rxjs/observable/dom/webSocket.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								node_modules/rxjs/observable/dom/webSocket.js.map
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| {"version":3,"file":"webSocket.js","sourceRoot":"","sources":["../../../src/observable/dom/webSocket.ts"],"names":[],"mappings":";AAAA,iCAAmC,oBAAoB,CAAC,CAAA;AAE3C,iBAAS,GAAG,mCAAgB,CAAC,MAAM,CAAC","sourcesContent":["import {  WebSocketSubject  } from './WebSocketSubject';\n\nexport const webSocket = WebSocketSubject.create;"]} | ||||
		Reference in New Issue
	
	Block a user
	 tatianamac
					tatianamac