@kephas/ngx-core
Version:
Provides integration capabilities with Angular 13+.
76 lines • 10.8 kB
JavaScript
var _a, _RootProvidersRegistry_providers;
import { __classPrivateFieldGet } from "tslib";
import { XhrFactory } from '@angular/common';
import { HttpClient, HttpHandler, HttpXhrBackend, HttpBackend } from '@angular/common/http';
import { Injectable, Injector } from '@angular/core';
import { NgTarget } from './angularTarget';
import { BrowserXhrFactory } from "./services/http/browserXhrFactory";
import { HttpInterceptingHandler } from './services/http/httpInterceptingHandler';
/**
* Registry for root services.
*
* @export
* @class RootProvidersRegistry
*/
export class RootProvidersRegistry {
/**
* Gets the providers for the HTTP client.
*
* @returns {((StaticClassProvider | ExistingProvider)[])}
* @memberof HttpClientAppServiceInfoRegistry
*/
static getRootProviders(serviceRegistry) {
const providers = [];
for (const c of serviceRegistry.serviceContracts) {
const serviceContract = c;
if (c.target === NgTarget) {
Injectable()(serviceContract.contractType);
for (const m of serviceContract.services) {
const serviceMetadata = m;
Injectable()(serviceMetadata.serviceType);
providers.push({
provide: serviceContract.contractToken || serviceContract.contractType,
useClass: serviceMetadata.serviceType,
multi: serviceContract.allowMultiple,
deps: RootProvidersRegistry.getDependencies(serviceMetadata.serviceType),
});
}
}
}
providers.push(...__classPrivateFieldGet(RootProvidersRegistry, _a, "f", _RootProvidersRegistry_providers));
return providers;
}
/**
* Loads asynchronously the modules to make sure that the
* overridden services area also loaded into the service registry.
* First of all, loads the Kephas modules, afterwards
* loads the application modules invoking the provided delegate.
*/
static async loadModules(loadAppModules) {
await import('@kephas/core');
await import('@kephas/reflection');
await import('@kephas/commands');
await import('@kephas/messaging');
await import('@kephas/ui');
await import('@angular/common/http');
if (loadAppModules) {
await loadAppModules();
}
}
static getDependencies(serviceType) {
let deps = Reflect.getMetadata('design:paramtypes', serviceType);
if (!deps && serviceType.ctorParameters) {
deps = serviceType.ctorParameters();
}
return deps || [];
}
}
_a = RootProvidersRegistry;
_RootProvidersRegistry_providers = { value: [
{ provide: HttpClient, useClass: HttpClient, deps: [HttpHandler] },
{ provide: HttpHandler, useClass: HttpInterceptingHandler, deps: [HttpBackend, Injector] },
{ provide: HttpBackend, useClass: HttpXhrBackend, deps: [XhrFactory] },
{ provide: HttpXhrBackend, useClass: HttpXhrBackend, deps: [XhrFactory] },
{ provide: XhrFactory, useClass: BrowserXhrFactory, deps: [] },
] };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdFByb3ZpZGVyc1JlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2VwaGFzL25neC1jb3JlL3NyYy9saWIvcm9vdFByb3ZpZGVyc1JlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRWxGOzs7OztFQUtFO0FBRUYsTUFBTSxPQUFPLHFCQUFxQjtJQVNoQzs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxlQUF1QztRQUNwRSxNQUFNLFNBQVMsR0FBNEIsRUFBRSxDQUFDO1FBQzlDLEtBQUssTUFBTSxDQUFDLElBQUksZUFBZSxDQUFDLGdCQUFnQixFQUFFO1lBQ2hELE1BQU0sZUFBZSxHQUFtQixDQUFDLENBQUM7WUFDMUMsSUFBSyxDQUFhLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRTtnQkFDdEMsVUFBVSxFQUFFLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUMzQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLGVBQWUsQ0FBQyxRQUFRLEVBQUU7b0JBQ3hDLE1BQU0sZUFBZSxHQUE0QixDQUFDLENBQUM7b0JBQ25ELFVBQVUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxXQUFZLENBQUMsQ0FBQztvQkFDM0MsU0FBUyxDQUFDLElBQUksQ0FBQzt3QkFDYixPQUFPLEVBQUUsZUFBZSxDQUFDLGFBQWEsSUFBSSxlQUFlLENBQUMsWUFBWTt3QkFDdEUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxXQUFZO3dCQUN0QyxLQUFLLEVBQUUsZUFBZSxDQUFDLGFBQWE7d0JBQ3BDLElBQUksRUFBRSxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLFdBQVksQ0FBQztxQkFDMUUsQ0FBQyxDQUFDO2lCQUNKO2FBQ0Y7U0FDRjtRQUVELFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyx1QkFBQSxxQkFBcUIsNENBQVcsQ0FBQyxDQUFDO1FBRXBELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLGNBQW9DO1FBQ2xFLE1BQU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDbkMsTUFBTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNqQyxNQUFNLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTNCLE1BQU0sTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFFckMsSUFBSSxjQUFjLEVBQUU7WUFDbEIsTUFBTSxjQUFjLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFFTyxNQUFNLENBQUMsZUFBZSxDQUFDLFdBQXNCO1FBQ25ELElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLElBQUksSUFBSSxXQUFXLENBQUMsY0FBYyxFQUFFO1lBQ3ZDLElBQUksR0FBRyxXQUFXLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDckM7UUFFRCxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQzs7O0FBakVELDRDQUEyQztRQUN6QyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUNsRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFFLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsRUFBRTtRQUMxRixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUN0RSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUN6RSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7S0FDL0QsRUFBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgWGhyRmFjdG9yeSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIYW5kbGVyLCBIdHRwWGhyQmFja2VuZCwgSHR0cEJhY2tlbmQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBTdGF0aWNDbGFzc1Byb3ZpZGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwcFNlcnZpY2VJbmZvLCBBcHBTZXJ2aWNlSW5mb1JlZ2lzdHJ5LCBBcHBTZXJ2aWNlTWV0YWRhdGEsIEV4cGFuZG8sIFR5cGUgfSBmcm9tICdAa2VwaGFzL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ1RhcmdldCB9IGZyb20gJy4vYW5ndWxhclRhcmdldCc7XHJcbmltcG9ydCB7IEJyb3dzZXJYaHJGYWN0b3J5IH0gZnJvbSBcIi4vc2VydmljZXMvaHR0cC9icm93c2VyWGhyRmFjdG9yeVwiO1xyXG5pbXBvcnQgeyBIdHRwSW50ZXJjZXB0aW5nSGFuZGxlciB9IGZyb20gJy4vc2VydmljZXMvaHR0cC9odHRwSW50ZXJjZXB0aW5nSGFuZGxlcic7XHJcblxyXG4vKipcclxuKiBSZWdpc3RyeSBmb3Igcm9vdCBzZXJ2aWNlcy5cclxuKlxyXG4qIEBleHBvcnRcclxuKiBAY2xhc3MgUm9vdFByb3ZpZGVyc1JlZ2lzdHJ5XHJcbiovXHJcblxyXG5leHBvcnQgY2xhc3MgUm9vdFByb3ZpZGVyc1JlZ2lzdHJ5IHtcclxuICBzdGF0aWMgI3Byb3ZpZGVyczogU3RhdGljQ2xhc3NQcm92aWRlcltdID0gW1xyXG4gICAgeyBwcm92aWRlOiBIdHRwQ2xpZW50LCB1c2VDbGFzczogSHR0cENsaWVudCwgZGVwczogW0h0dHBIYW5kbGVyXSB9LFxyXG4gICAgeyBwcm92aWRlOiBIdHRwSGFuZGxlciwgdXNlQ2xhc3M6IEh0dHBJbnRlcmNlcHRpbmdIYW5kbGVyLCBkZXBzOiBbSHR0cEJhY2tlbmQsIEluamVjdG9yXSB9LFxyXG4gICAgeyBwcm92aWRlOiBIdHRwQmFja2VuZCwgdXNlQ2xhc3M6IEh0dHBYaHJCYWNrZW5kLCBkZXBzOiBbWGhyRmFjdG9yeV0gfSxcclxuICAgIHsgcHJvdmlkZTogSHR0cFhockJhY2tlbmQsIHVzZUNsYXNzOiBIdHRwWGhyQmFja2VuZCwgZGVwczogW1hockZhY3RvcnldIH0sXHJcbiAgICB7IHByb3ZpZGU6IFhockZhY3RvcnksIHVzZUNsYXNzOiBCcm93c2VyWGhyRmFjdG9yeSwgZGVwczogW10gfSxcclxuICBdO1xyXG5cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBwcm92aWRlcnMgZm9yIHRoZSBIVFRQIGNsaWVudC5cclxuICAgKlxyXG4gICAqIEByZXR1cm5zIHsoKFN0YXRpY0NsYXNzUHJvdmlkZXIgfCBFeGlzdGluZ1Byb3ZpZGVyKVtdKX1cclxuICAgKiBAbWVtYmVyb2YgSHR0cENsaWVudEFwcFNlcnZpY2VJbmZvUmVnaXN0cnlcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGdldFJvb3RQcm92aWRlcnMoc2VydmljZVJlZ2lzdHJ5OiBBcHBTZXJ2aWNlSW5mb1JlZ2lzdHJ5KTogKFN0YXRpY0NsYXNzUHJvdmlkZXIpW10ge1xyXG4gICAgY29uc3QgcHJvdmlkZXJzOiAoU3RhdGljQ2xhc3NQcm92aWRlcilbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBjIG9mIHNlcnZpY2VSZWdpc3RyeS5zZXJ2aWNlQ29udHJhY3RzKSB7XHJcbiAgICAgIGNvbnN0IHNlcnZpY2VDb250cmFjdDogQXBwU2VydmljZUluZm8gPSBjO1xyXG4gICAgICBpZiAoKGMgYXMgRXhwYW5kbykudGFyZ2V0ID09PSBOZ1RhcmdldCkge1xyXG4gICAgICAgIEluamVjdGFibGUoKShzZXJ2aWNlQ29udHJhY3QuY29udHJhY3RUeXBlKTtcclxuICAgICAgICBmb3IgKGNvbnN0IG0gb2Ygc2VydmljZUNvbnRyYWN0LnNlcnZpY2VzKSB7XHJcbiAgICAgICAgICBjb25zdCBzZXJ2aWNlTWV0YWRhdGE6IEFwcFNlcnZpY2VNZXRhZGF0YTxhbnk+ID0gbTtcclxuICAgICAgICAgIEluamVjdGFibGUoKShzZXJ2aWNlTWV0YWRhdGEuc2VydmljZVR5cGUhKTtcclxuICAgICAgICAgIHByb3ZpZGVycy5wdXNoKHtcclxuICAgICAgICAgICAgcHJvdmlkZTogc2VydmljZUNvbnRyYWN0LmNvbnRyYWN0VG9rZW4gfHwgc2VydmljZUNvbnRyYWN0LmNvbnRyYWN0VHlwZSxcclxuICAgICAgICAgICAgdXNlQ2xhc3M6IHNlcnZpY2VNZXRhZGF0YS5zZXJ2aWNlVHlwZSEsXHJcbiAgICAgICAgICAgIG11bHRpOiBzZXJ2aWNlQ29udHJhY3QuYWxsb3dNdWx0aXBsZSxcclxuICAgICAgICAgICAgZGVwczogUm9vdFByb3ZpZGVyc1JlZ2lzdHJ5LmdldERlcGVuZGVuY2llcyhzZXJ2aWNlTWV0YWRhdGEuc2VydmljZVR5cGUhKSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3ZpZGVycy5wdXNoKC4uLlJvb3RQcm92aWRlcnNSZWdpc3RyeS4jcHJvdmlkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcHJvdmlkZXJzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9hZHMgYXN5bmNocm9ub3VzbHkgdGhlIG1vZHVsZXMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlXHJcbiAgICogb3ZlcnJpZGRlbiBzZXJ2aWNlcyBhcmVhIGFsc28gbG9hZGVkIGludG8gdGhlIHNlcnZpY2UgcmVnaXN0cnkuXHJcbiAgICogRmlyc3Qgb2YgYWxsLCBsb2FkcyB0aGUgS2VwaGFzIG1vZHVsZXMsIGFmdGVyd2FyZHNcclxuICAgKiBsb2FkcyB0aGUgYXBwbGljYXRpb24gbW9kdWxlcyBpbnZva2luZyB0aGUgcHJvdmlkZWQgZGVsZWdhdGUuXHJcbiAgICovXHJcbiAgcHVibGljIHN0YXRpYyBhc3luYyBsb2FkTW9kdWxlcyhsb2FkQXBwTW9kdWxlcz86ICgpID0+IFByb21pc2U8dm9pZD4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IGltcG9ydCgnQGtlcGhhcy9jb3JlJyk7XHJcbiAgICBhd2FpdCBpbXBvcnQoJ0BrZXBoYXMvcmVmbGVjdGlvbicpO1xyXG4gICAgYXdhaXQgaW1wb3J0KCdAa2VwaGFzL2NvbW1hbmRzJyk7XHJcbiAgICBhd2FpdCBpbXBvcnQoJ0BrZXBoYXMvbWVzc2FnaW5nJyk7XHJcbiAgICBhd2FpdCBpbXBvcnQoJ0BrZXBoYXMvdWknKTtcclxuXHJcbiAgICBhd2FpdCBpbXBvcnQoJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJyk7XHJcblxyXG4gICAgaWYgKGxvYWRBcHBNb2R1bGVzKSB7XHJcbiAgICAgIGF3YWl0IGxvYWRBcHBNb2R1bGVzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBnZXREZXBlbmRlbmNpZXMoc2VydmljZVR5cGU6IFR5cGU8YW55Pik6IGFueVtdIHtcclxuICAgIGxldCBkZXBzID0gUmVmbGVjdC5nZXRNZXRhZGF0YSgnZGVzaWduOnBhcmFtdHlwZXMnLCBzZXJ2aWNlVHlwZSk7XHJcbiAgICBpZiAoIWRlcHMgJiYgc2VydmljZVR5cGUuY3RvclBhcmFtZXRlcnMpIHtcclxuICAgICAgZGVwcyA9IHNlcnZpY2VUeXBlLmN0b3JQYXJhbWV0ZXJzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRlcHMgfHwgW107XHJcbiAgfVxyXG59XHJcbiJdfQ==