UNPKG

@kephas/angular

Version:

Provides integration capabilities with Angular.

98 lines 10.9 kB
import { SingletonAppServiceContract, AppServiceContract, AppService, Priority } from '@kephas/core'; import { HttpClient, HttpHandler, HttpXhrBackend, HttpBackend, XhrFactory, HTTP_INTERCEPTORS } from '@angular/common/http'; import { Injector, Injectable } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "../../../public-api"; import * as i2 from "@angular/common/http"; SingletonAppServiceContract()(XhrFactory); AppServiceContract()(HttpBackend); AppServiceContract()(Injector); AppServiceContract()(HttpXhrBackend); AppService({ overridePriority: Priority.Low })(HttpXhrBackend); // tslint:disable: max-classes-per-file /** * Browser implementation for an `XhrFactory`. * * @export * @class BrowserXhrFactory * @implements {XhrFactory} */ export class BrowserXhrFactory { build() { return new XMLHttpRequest(); } } /** * `HttpHandler` which applies an `HttpInterceptor` to an `HttpRequest`. * * */ export class HttpInterceptorHandler { constructor(next, interceptor) { this.next = next; this.interceptor = interceptor; } handle(req) { return this.interceptor.intercept(req, this.next); } } /** * An injectable `HttpHandler` that applies multiple interceptors * to a request before passing it to the given `HttpBackend`. * * The interceptors are loaded lazily from the injector, to allow * interceptors to themselves inject classes depending indirectly * on `HttpInterceptingHandler` itself. * @see `HttpInterceptor` */ export class HttpInterceptingHandler { /** * Creates an instance of HttpInterceptingHandler. * @param {HttpBackend} backend * @param {Injector} injector * @memberof HttpInterceptingHandler */ constructor(backend, injector) { this.backend = backend; this.injector = injector; this.chain = null; } handle(req) { if (this.chain === null) { const interceptors = this.injector.get(HTTP_INTERCEPTORS, []); this.chain = interceptors.reduceRight((next, interceptor) => new HttpInterceptorHandler(next, interceptor), this.backend); } return this.chain.handle(req); } } HttpInterceptingHandler.ɵprov = i0.ɵɵdefineInjectable({ factory: function HttpInterceptingHandler_Factory() { return new i1.HttpInterceptingHandler(i0.ɵɵinject(i2.HttpBackend), i0.ɵɵinject(i0.INJECTOR)); }, token: i1.HttpInterceptingHandler, providedIn: "root" }); HttpInterceptingHandler.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; HttpInterceptingHandler.ctorParameters = () => [ { type: HttpBackend }, { type: Injector } ]; /** * Registry for HTTP client services. * * @export * @class HttpClientAppServiceInfoRegistry */ export class HttpClientAppServiceInfoRegistry { /** * Gets the providers for the HTTP client. * * @returns {((StaticClassProvider | ExistingProvider)[])} * @memberof HttpClientAppServiceInfoRegistry */ getHttpClientProviders() { return [ { provide: HttpClient, useClass: HttpClient, deps: [HttpHandler] }, { provide: HttpHandler, useClass: HttpInterceptingHandler, deps: [HttpBackend, Injector] }, { provide: HttpBackend, useClass: HttpXhrBackend, deps: [XhrFactory] }, { provide: XhrFactory, useClass: BrowserXhrFactory, deps: [] }, ]; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cEFwcFNlcnZpY2VJbmZvUmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvaHR0cC9odHRwQXBwU2VydmljZUluZm9SZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsMkJBQTJCLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFDeEUsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUNILFVBQVUsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFDcEQsVUFBVSxFQUEwQixpQkFBaUIsRUFDeEQsTUFBTSxzQkFBc0IsQ0FBQztBQUU5QixPQUFPLEVBQUUsUUFBUSxFQUF1QixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFFMUUsMkJBQTJCLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxQyxrQkFBa0IsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ2xDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDL0Isa0JBQWtCLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUNyQyxVQUFVLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUUvRCx1Q0FBdUM7QUFFdkM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQixLQUFLO1FBQ0QsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDSjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBQy9CLFlBQW9CLElBQWlCLEVBQVUsV0FBNEI7UUFBdkQsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUFVLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtJQUMzRSxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQXFCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0o7QUFFRDs7Ozs7Ozs7R0FRRztBQUVILE1BQU0sT0FBTyx1QkFBdUI7SUFHaEM7Ozs7O09BS0c7SUFDSCxZQUFvQixPQUFvQixFQUFVLFFBQWtCO1FBQWhELFlBQU8sR0FBUCxPQUFPLENBQWE7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBUjVELFVBQUssR0FBdUIsSUFBSSxDQUFDO0lBU3pDLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBcUI7UUFDeEIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUNyQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM5RCxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQ2pDLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzNGO1FBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDOzs7O1lBcEJKLFVBQVUsU0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OztZQWxEVyxXQUFXO1lBSS9DLFFBQVE7O0FBcUVqQjs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxnQ0FBZ0M7SUFFekM7Ozs7O09BS0c7SUFDSSxzQkFBc0I7UUFDekIsT0FBTztZQUNILEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2xFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQzFGLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3RFLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtTQUNqRSxDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIFNpbmdsZXRvbkFwcFNlcnZpY2VDb250cmFjdCwgQXBwU2VydmljZUNvbnRyYWN0LCBBcHBTZXJ2aWNlLCBQcmlvcml0eVxyXG59IGZyb20gJ0BrZXBoYXMvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBIdHRwQ2xpZW50LCBIdHRwSGFuZGxlciwgSHR0cFhockJhY2tlbmQsIEh0dHBCYWNrZW5kLFxyXG4gICAgWGhyRmFjdG9yeSwgSHR0cFJlcXVlc3QsIEh0dHBFdmVudCwgSFRUUF9JTlRFUkNFUFRPUlMsIEh0dHBJbnRlcmNlcHRvclxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJbmplY3RvciwgU3RhdGljQ2xhc3NQcm92aWRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuU2luZ2xldG9uQXBwU2VydmljZUNvbnRyYWN0KCkoWGhyRmFjdG9yeSk7XHJcbkFwcFNlcnZpY2VDb250cmFjdCgpKEh0dHBCYWNrZW5kKTtcclxuQXBwU2VydmljZUNvbnRyYWN0KCkoSW5qZWN0b3IpO1xyXG5BcHBTZXJ2aWNlQ29udHJhY3QoKShIdHRwWGhyQmFja2VuZCk7XHJcbkFwcFNlcnZpY2UoeyBvdmVycmlkZVByaW9yaXR5OiBQcmlvcml0eS5Mb3cgfSkoSHR0cFhockJhY2tlbmQpO1xyXG5cclxuLy8gdHNsaW50OmRpc2FibGU6IG1heC1jbGFzc2VzLXBlci1maWxlXHJcblxyXG4vKipcclxuICogQnJvd3NlciBpbXBsZW1lbnRhdGlvbiBmb3IgYW4gYFhockZhY3RvcnlgLlxyXG4gKlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBCcm93c2VyWGhyRmFjdG9yeVxyXG4gKiBAaW1wbGVtZW50cyB7WGhyRmFjdG9yeX1cclxuICovXHJcbmV4cG9ydCBjbGFzcyBCcm93c2VyWGhyRmFjdG9yeSBpbXBsZW1lbnRzIFhockZhY3Rvcnkge1xyXG4gICAgYnVpbGQoKTogWE1MSHR0cFJlcXVlc3Qge1xyXG4gICAgICAgIHJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIGBIdHRwSGFuZGxlcmAgd2hpY2ggYXBwbGllcyBhbiBgSHR0cEludGVyY2VwdG9yYCB0byBhbiBgSHR0cFJlcXVlc3RgLlxyXG4gKlxyXG4gKlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEh0dHBJbnRlcmNlcHRvckhhbmRsZXIgaW1wbGVtZW50cyBIdHRwSGFuZGxlciB7XHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5leHQ6IEh0dHBIYW5kbGVyLCBwcml2YXRlIGludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3IpIHtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGUocmVxOiBIdHRwUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmludGVyY2VwdG9yLmludGVyY2VwdChyZXEsIHRoaXMubmV4dCk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBBbiBpbmplY3RhYmxlIGBIdHRwSGFuZGxlcmAgdGhhdCBhcHBsaWVzIG11bHRpcGxlIGludGVyY2VwdG9yc1xyXG4gKiB0byBhIHJlcXVlc3QgYmVmb3JlIHBhc3NpbmcgaXQgdG8gdGhlIGdpdmVuIGBIdHRwQmFja2VuZGAuXHJcbiAqXHJcbiAqIFRoZSBpbnRlcmNlcHRvcnMgYXJlIGxvYWRlZCBsYXppbHkgZnJvbSB0aGUgaW5qZWN0b3IsIHRvIGFsbG93XHJcbiAqIGludGVyY2VwdG9ycyB0byB0aGVtc2VsdmVzIGluamVjdCBjbGFzc2VzIGRlcGVuZGluZyBpbmRpcmVjdGx5XHJcbiAqIG9uIGBIdHRwSW50ZXJjZXB0aW5nSGFuZGxlcmAgaXRzZWxmLlxyXG4gKiBAc2VlIGBIdHRwSW50ZXJjZXB0b3JgXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgSHR0cEludGVyY2VwdGluZ0hhbmRsZXIgaW1wbGVtZW50cyBIdHRwSGFuZGxlciB7XHJcbiAgICBwcml2YXRlIGNoYWluOiBIdHRwSGFuZGxlciB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBIdHRwSW50ZXJjZXB0aW5nSGFuZGxlci5cclxuICAgICAqIEBwYXJhbSB7SHR0cEJhY2tlbmR9IGJhY2tlbmRcclxuICAgICAqIEBwYXJhbSB7SW5qZWN0b3J9IGluamVjdG9yXHJcbiAgICAgKiBAbWVtYmVyb2YgSHR0cEludGVyY2VwdGluZ0hhbmRsZXJcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBiYWNrZW5kOiBIdHRwQmFja2VuZCwgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGUocmVxOiBIdHRwUmVxdWVzdDxhbnk+KTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG4gICAgICAgIGlmICh0aGlzLmNoYWluID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGludGVyY2VwdG9ycyA9IHRoaXMuaW5qZWN0b3IuZ2V0KEhUVFBfSU5URVJDRVBUT1JTLCBbXSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhaW4gPSBpbnRlcmNlcHRvcnMucmVkdWNlUmlnaHQoXHJcbiAgICAgICAgICAgICAgICAobmV4dCwgaW50ZXJjZXB0b3IpID0+IG5ldyBIdHRwSW50ZXJjZXB0b3JIYW5kbGVyKG5leHQsIGludGVyY2VwdG9yKSwgdGhpcy5iYWNrZW5kKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhaW4uaGFuZGxlKHJlcSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBSZWdpc3RyeSBmb3IgSFRUUCBjbGllbnQgc2VydmljZXMuXHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIEh0dHBDbGllbnRBcHBTZXJ2aWNlSW5mb1JlZ2lzdHJ5XHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgSHR0cENsaWVudEFwcFNlcnZpY2VJbmZvUmVnaXN0cnkge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgcHJvdmlkZXJzIGZvciB0aGUgSFRUUCBjbGllbnQuXHJcbiAgICAgKlxyXG4gICAgICogQHJldHVybnMgeygoU3RhdGljQ2xhc3NQcm92aWRlciB8IEV4aXN0aW5nUHJvdmlkZXIpW10pfVxyXG4gICAgICogQG1lbWJlcm9mIEh0dHBDbGllbnRBcHBTZXJ2aWNlSW5mb1JlZ2lzdHJ5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRIdHRwQ2xpZW50UHJvdmlkZXJzKCk6IChTdGF0aWNDbGFzc1Byb3ZpZGVyKVtdIHtcclxuICAgICAgICByZXR1cm4gW1xyXG4gICAgICAgICAgICB7IHByb3ZpZGU6IEh0dHBDbGllbnQsIHVzZUNsYXNzOiBIdHRwQ2xpZW50LCBkZXBzOiBbSHR0cEhhbmRsZXJdIH0sXHJcbiAgICAgICAgICAgIHsgcHJvdmlkZTogSHR0cEhhbmRsZXIsIHVzZUNsYXNzOiBIdHRwSW50ZXJjZXB0aW5nSGFuZGxlciwgZGVwczogW0h0dHBCYWNrZW5kLCBJbmplY3Rvcl0gfSxcclxuICAgICAgICAgICAgeyBwcm92aWRlOiBIdHRwQmFja2VuZCwgdXNlQ2xhc3M6IEh0dHBYaHJCYWNrZW5kLCBkZXBzOiBbWGhyRmFjdG9yeV0gfSxcclxuICAgICAgICAgICAgeyBwcm92aWRlOiBYaHJGYWN0b3J5LCB1c2VDbGFzczogQnJvd3NlclhockZhY3RvcnksIGRlcHM6IFtdIH0sXHJcbiAgICAgICAgXTtcclxuICAgIH1cclxufVxyXG4iXX0=