UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

68 lines 8.72 kB
import { inject, Injector, NgModule, Optional, runInInjectionContext, SkipSelf } from '@angular/core'; import { BasicAuth, FetchClient, Realtime, CookieAuth } from '@c8y/client'; import { ApiService } from './api.service'; import * as services from './services'; import * as i0 from "@angular/core"; function toProvider(provide) { let deps = [FetchClient, Realtime]; if (provide === FetchClient) { deps = [CookieAuth]; } if (provide === BasicAuth || provide === CookieAuth) { deps = []; } if (provide === Realtime) { deps = [FetchClient]; } const depsWithExistingProvider = [ [provide, new Optional(), new SkipSelf()], // let's see if we can find an existing provider (possibly null) ...deps ]; return { provide, deps: depsWithExistingProvider, useFactory: (...args) => { // if there was an existing provider, it would be first in the list and we can return it if (args.length && args[0] !== null) { return args[0]; } // otherwise we need to drop the first element as it would be null const providers = args.slice(1); // the other providers are the dependencies we need. They match the order of the deps array const existingProviders = deps.map((dep, index) => { return { provide: dep, useValue: providers[index] }; }); // use this to dependency inject the dependencies and instantiate the class return runInInjectionContext(Injector.create({ providers: [...existingProviders, { provide, useClass: provide, deps: deps }] }), () => { return inject(provide); }); } }; } const providers = Object.keys(services) .map(k => toProvider(services[k])) .concat([{ provide: ApiService, useClass: ApiService, deps: [FetchClient] }]); // @dynamic export class DataModule { static providers() { return providers; } static forRoot() { return { ngModule: DataModule, providers }; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: DataModule }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataModule, providers: providers }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DataModule, decorators: [{ type: NgModule, args: [{ providers }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvZGF0YS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBRVIsUUFBUSxFQUNSLFFBQVEsRUFFUixxQkFBcUIsRUFDckIsUUFBUSxFQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEtBQUssUUFBUSxNQUFNLFlBQVksQ0FBQzs7QUFFdkMsU0FBUyxVQUFVLENBQUksT0FBZ0I7SUFDckMsSUFBSSxJQUFJLEdBQXFELENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JGLElBQUksT0FBTyxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQzVCLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUFJLE9BQU8sS0FBSyxTQUFTLElBQUksT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ3BELElBQUksR0FBRyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUNELE1BQU0sd0JBQXdCLEdBQUc7UUFDL0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxRQUFRLEVBQUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxDQUFDLEVBQUUsZ0VBQWdFO1FBQzNHLEdBQUcsSUFBSTtLQUNSLENBQUM7SUFDRixPQUFPO1FBQ0wsT0FBTztRQUNQLElBQUksRUFBRSx3QkFBd0I7UUFDOUIsVUFBVSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsRUFBRTtZQUN0Qix3RkFBd0Y7WUFDeEYsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDcEMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsQ0FBQztZQUVELGtFQUFrRTtZQUNsRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLDJGQUEyRjtZQUMzRixNQUFNLGlCQUFpQixHQUFvQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNqRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEQsQ0FBQyxDQUFDLENBQUM7WUFFSCwyRUFBMkU7WUFDM0UsT0FBTyxxQkFBcUIsQ0FDMUIsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDZCxTQUFTLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixFQUFFLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQzlFLENBQUMsRUFDRixHQUFHLEVBQUU7Z0JBQ0gsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUNGLENBQUM7UUFDSixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFNBQVMsR0FBZSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztLQUNoRCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDakMsTUFBTSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDaEYsV0FBVztBQUlYLE1BQU0sT0FBTyxVQUFVO0lBQ3JCLE1BQU0sQ0FBQyxTQUFTO1FBQ2QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELE1BQU0sQ0FBQyxPQUFPO1FBQ1osT0FBTztZQUNMLFFBQVEsRUFBRSxVQUFVO1lBQ3BCLFNBQVM7U0FDVixDQUFDO0lBQ0osQ0FBQzsrR0FUVSxVQUFVO2dIQUFWLFVBQVU7Z0hBQVYsVUFBVSxhQUZyQixTQUFTOzs0RkFFRSxVQUFVO2tCQUh0QixRQUFRO21CQUFDO29CQUNSLFNBQVM7aUJBQ1YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpbmplY3QsXG4gIEluamVjdG9yLFxuICBNb2R1bGVXaXRoUHJvdmlkZXJzLFxuICBOZ01vZHVsZSxcbiAgT3B0aW9uYWwsXG4gIFByb3ZpZGVyLFxuICBydW5JbkluamVjdGlvbkNvbnRleHQsXG4gIFNraXBTZWxmLFxuICBUeXBlLFxuICBWYWx1ZVByb3ZpZGVyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzaWNBdXRoLCBGZXRjaENsaWVudCwgUmVhbHRpbWUsIENvb2tpZUF1dGggfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi9hcGkuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBzZXJ2aWNlcyBmcm9tICcuL3NlcnZpY2VzJztcblxuZnVuY3Rpb24gdG9Qcm92aWRlcjxUPihwcm92aWRlOiBUeXBlPFQ+KTogUHJvdmlkZXIge1xuICBsZXQgZGVwczogQXJyYXk8VHlwZTxGZXRjaENsaWVudCB8IFJlYWx0aW1lIHwgQ29va2llQXV0aD4+ID0gW0ZldGNoQ2xpZW50LCBSZWFsdGltZV07XG4gIGlmIChwcm92aWRlID09PSBGZXRjaENsaWVudCkge1xuICAgIGRlcHMgPSBbQ29va2llQXV0aF07XG4gIH1cbiAgaWYgKHByb3ZpZGUgPT09IEJhc2ljQXV0aCB8fCBwcm92aWRlID09PSBDb29raWVBdXRoKSB7XG4gICAgZGVwcyA9IFtdO1xuICB9XG4gIGlmIChwcm92aWRlID09PSBSZWFsdGltZSkge1xuICAgIGRlcHMgPSBbRmV0Y2hDbGllbnRdO1xuICB9XG4gIGNvbnN0IGRlcHNXaXRoRXhpc3RpbmdQcm92aWRlciA9IFtcbiAgICBbcHJvdmlkZSwgbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpXSwgLy8gbGV0J3Mgc2VlIGlmIHdlIGNhbiBmaW5kIGFuIGV4aXN0aW5nIHByb3ZpZGVyIChwb3NzaWJseSBudWxsKVxuICAgIC4uLmRlcHNcbiAgXTtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlLFxuICAgIGRlcHM6IGRlcHNXaXRoRXhpc3RpbmdQcm92aWRlcixcbiAgICB1c2VGYWN0b3J5OiAoLi4uYXJncykgPT4ge1xuICAgICAgLy8gaWYgdGhlcmUgd2FzIGFuIGV4aXN0aW5nIHByb3ZpZGVyLCBpdCB3b3VsZCBiZSBmaXJzdCBpbiB0aGUgbGlzdCBhbmQgd2UgY2FuIHJldHVybiBpdFxuICAgICAgaWYgKGFyZ3MubGVuZ3RoICYmIGFyZ3NbMF0gIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbMF07XG4gICAgICB9XG5cbiAgICAgIC8vIG90aGVyd2lzZSB3ZSBuZWVkIHRvIGRyb3AgdGhlIGZpcnN0IGVsZW1lbnQgYXMgaXQgd291bGQgYmUgbnVsbFxuICAgICAgY29uc3QgcHJvdmlkZXJzID0gYXJncy5zbGljZSgxKTtcbiAgICAgIC8vIHRoZSBvdGhlciBwcm92aWRlcnMgYXJlIHRoZSBkZXBlbmRlbmNpZXMgd2UgbmVlZC4gVGhleSBtYXRjaCB0aGUgb3JkZXIgb2YgdGhlIGRlcHMgYXJyYXlcbiAgICAgIGNvbnN0IGV4aXN0aW5nUHJvdmlkZXJzOiBWYWx1ZVByb3ZpZGVyW10gPSBkZXBzLm1hcCgoZGVwLCBpbmRleCkgPT4ge1xuICAgICAgICByZXR1cm4geyBwcm92aWRlOiBkZXAsIHVzZVZhbHVlOiBwcm92aWRlcnNbaW5kZXhdIH07XG4gICAgICB9KTtcblxuICAgICAgLy8gdXNlIHRoaXMgdG8gZGVwZW5kZW5jeSBpbmplY3QgdGhlIGRlcGVuZGVuY2llcyBhbmQgaW5zdGFudGlhdGUgdGhlIGNsYXNzXG4gICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KFxuICAgICAgICBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgICAgIHByb3ZpZGVyczogWy4uLmV4aXN0aW5nUHJvdmlkZXJzLCB7IHByb3ZpZGUsIHVzZUNsYXNzOiBwcm92aWRlLCBkZXBzOiBkZXBzIH1dXG4gICAgICAgIH0pLFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGluamVjdChwcm92aWRlKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG5cbmNvbnN0IHByb3ZpZGVyczogUHJvdmlkZXJbXSA9IE9iamVjdC5rZXlzKHNlcnZpY2VzKVxuICAubWFwKGsgPT4gdG9Qcm92aWRlcihzZXJ2aWNlc1trXSkpXG4gIC5jb25jYXQoW3sgcHJvdmlkZTogQXBpU2VydmljZSwgdXNlQ2xhc3M6IEFwaVNlcnZpY2UsIGRlcHM6IFtGZXRjaENsaWVudF0gfV0pO1xuLy8gQGR5bmFtaWNcbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyc1xufSlcbmV4cG9ydCBjbGFzcyBEYXRhTW9kdWxlIHtcbiAgc3RhdGljIHByb3ZpZGVycygpOiBQcm92aWRlcltdIHtcbiAgICByZXR1cm4gcHJvdmlkZXJzO1xuICB9XG4gIHN0YXRpYyBmb3JSb290KCk6IE1vZHVsZVdpdGhQcm92aWRlcnM8RGF0YU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogRGF0YU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyc1xuICAgIH07XG4gIH1cbn1cbiJdfQ==