UNPKG

@orchestrator/core

Version:
66 lines 8.04 kB
import { Inject, Injectable, InjectionToken, } from '@angular/core'; import * as i0 from "@angular/core"; /** * Multi-provider of {@link InjectorMap} */ export const INJECTOR_MAP_TOKEN = new InjectionToken('INJECTOR_MAP'); /** * Helper to provide {@link INJECTOR_MAP_TOKEN} */ export function provideInjectorMap(map) { return { provide: INJECTOR_MAP_TOKEN, useValue: map, multi: true }; } /** * Maps tokens to other tokens and then executes parent injector. * * NOT a Service! * Use via {@link MappedInjectorFactory} */ export class MappedInjector { constructor(parent, injectorMaps) { this.parent = parent; this.injectorMaps = injectorMaps; } get(token, notFoundValue, flags) { return this.parent.get(this.mapToken(token), notFoundValue, flags); } mapToken(token) { if (typeof token !== 'string') { return token; } this.maybeInitInjectorMap(); token = this.processToken(token); return token in this.injectorMap ? this.injectorMap[token] : token; } maybeInitInjectorMap() { if (!this.injectorMap) { this.injectorMap = this.injectorMaps.reduce((acc, m) => Object.keys(m).reduce((obj, k) => ({ ...obj, [this.processToken(k)]: m[k] }), acc), Object.create(null)); } } processToken(t) { return t.toLowerCase(); } } /** * Factory for {@link MappedInjector} */ export class MappedInjectorFactory { constructor(injectorMap) { this.injectorMap = injectorMap; } /** * Creates MappedInjector with parent injector and {@link INJECTOR_MAP_TOKEN} from DI */ create(parent) { return new MappedInjector(parent, this.injectorMap); } } /** @nocollapse */ /** @nocollapse */ MappedInjectorFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MappedInjectorFactory, deps: [{ token: INJECTOR_MAP_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); /** @nocollapse */ /** @nocollapse */ MappedInjectorFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MappedInjectorFactory }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.0", ngImport: i0, type: MappedInjectorFactory, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: undefined, decorators: [{ type: Inject, args: [INJECTOR_MAP_TOKEN] }] }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVkLWluamVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvaW5qZWN0b3JzL21hcHBlZC1pbmplY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLFVBQVUsRUFFVixjQUFjLEdBSWYsTUFBTSxlQUFlLENBQUM7O0FBTXZCOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQ2xELGNBQWMsQ0FDZixDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBZ0I7SUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNyRSxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUNVLE1BQWdCLEVBQ2hCLFlBQThCO1FBRDlCLFdBQU0sR0FBTixNQUFNLENBQVU7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQWtCO0lBQ3JDLENBQUM7SUFRSixHQUFHLENBQUMsS0FBVSxFQUFFLGFBQW1CLEVBQUUsS0FBVztRQUM5QyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTyxRQUFRLENBQUMsS0FBVTtRQUN6QixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUM3QixPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFNUIsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakMsT0FBTyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3JFLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FDekMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FDVCxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDbkIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFDdEQsR0FBRyxDQUNKLEVBQ0gsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FDcEIsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxDQUFTO1FBQzVCLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3pCLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQyxZQUNzQyxXQUE2QjtRQUE3QixnQkFBVyxHQUFYLFdBQVcsQ0FBa0I7SUFDaEUsQ0FBQztJQUVKOztPQUVHO0lBQ0gsTUFBTSxDQUFDLE1BQWdCO1FBQ3JCLE9BQU8sSUFBSSxjQUFjLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RCxDQUFDOzt3SkFWVSxxQkFBcUIsa0JBRXRCLGtCQUFrQjs0SkFGakIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5qZWN0LFxuICBJbmplY3RhYmxlLFxuICBJbmplY3RGbGFncyxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIEluamVjdG9yLFxuICBQcm92aWRlcixcbiAgVHlwZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEluamVjdG9yTWFwIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluamVjdG9yTWFwVG9rZW4gZXh0ZW5kcyBBcnJheTxJbmplY3Rvck1hcD4ge31cblxuLyoqXG4gKiBNdWx0aS1wcm92aWRlciBvZiB7QGxpbmsgSW5qZWN0b3JNYXB9XG4gKi9cbmV4cG9ydCBjb25zdCBJTkpFQ1RPUl9NQVBfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48SW5qZWN0b3JNYXBUb2tlbj4oXG4gICdJTkpFQ1RPUl9NQVAnLFxuKTtcblxuLyoqXG4gKiBIZWxwZXIgdG8gcHJvdmlkZSB7QGxpbmsgSU5KRUNUT1JfTUFQX1RPS0VOfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZUluamVjdG9yTWFwKG1hcDogSW5qZWN0b3JNYXApOiBQcm92aWRlciB7XG4gIHJldHVybiB7IHByb3ZpZGU6IElOSkVDVE9SX01BUF9UT0tFTiwgdXNlVmFsdWU6IG1hcCwgbXVsdGk6IHRydWUgfTtcbn1cblxuLyoqXG4gKiBNYXBzIHRva2VucyB0byBvdGhlciB0b2tlbnMgYW5kIHRoZW4gZXhlY3V0ZXMgcGFyZW50IGluamVjdG9yLlxuICpcbiAqIE5PVCBhIFNlcnZpY2UhXG4gKiBVc2UgdmlhIHtAbGluayBNYXBwZWRJbmplY3RvckZhY3Rvcnl9XG4gKi9cbmV4cG9ydCBjbGFzcyBNYXBwZWRJbmplY3RvciBpbXBsZW1lbnRzIEluamVjdG9yIHtcbiAgcHJpdmF0ZSBpbmplY3Rvck1hcDogSW5qZWN0b3JNYXA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBwYXJlbnQ6IEluamVjdG9yLFxuICAgIHByaXZhdGUgaW5qZWN0b3JNYXBzOiBJbmplY3Rvck1hcFRva2VuLFxuICApIHt9XG5cbiAgZ2V0PFQ+KFxuICAgIHRva2VuOiBUeXBlPFQ+IHwgSW5qZWN0aW9uVG9rZW48VD4sXG4gICAgbm90Rm91bmRWYWx1ZT86IFQsXG4gICAgZmxhZ3M/OiBJbmplY3RGbGFncyxcbiAgKTogVDtcbiAgZ2V0KHRva2VuOiBhbnksIG5vdEZvdW5kVmFsdWU/OiBhbnksIGZsYWdzPzogSW5qZWN0RmxhZ3MpOiBhbnk7XG4gIGdldCh0b2tlbjogYW55LCBub3RGb3VuZFZhbHVlPzogYW55LCBmbGFncz86IGFueSkge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5nZXQodGhpcy5tYXBUb2tlbih0b2tlbiksIG5vdEZvdW5kVmFsdWUsIGZsYWdzKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwVG9rZW4odG9rZW46IGFueSk6IGFueSB7XG4gICAgaWYgKHR5cGVvZiB0b2tlbiAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB0b2tlbjtcbiAgICB9XG5cbiAgICB0aGlzLm1heWJlSW5pdEluamVjdG9yTWFwKCk7XG5cbiAgICB0b2tlbiA9IHRoaXMucHJvY2Vzc1Rva2VuKHRva2VuKTtcblxuICAgIHJldHVybiB0b2tlbiBpbiB0aGlzLmluamVjdG9yTWFwID8gdGhpcy5pbmplY3Rvck1hcFt0b2tlbl0gOiB0b2tlbjtcbiAgfVxuXG4gIHByaXZhdGUgbWF5YmVJbml0SW5qZWN0b3JNYXAoKSB7XG4gICAgaWYgKCF0aGlzLmluamVjdG9yTWFwKSB7XG4gICAgICB0aGlzLmluamVjdG9yTWFwID0gdGhpcy5pbmplY3Rvck1hcHMucmVkdWNlKFxuICAgICAgICAoYWNjLCBtKSA9PlxuICAgICAgICAgIE9iamVjdC5rZXlzKG0pLnJlZHVjZShcbiAgICAgICAgICAgIChvYmosIGspID0+ICh7IC4uLm9iaiwgW3RoaXMucHJvY2Vzc1Rva2VuKGspXTogbVtrXSB9KSxcbiAgICAgICAgICAgIGFjYyxcbiAgICAgICAgICApLFxuICAgICAgICBPYmplY3QuY3JlYXRlKG51bGwpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NUb2tlbih0OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdC50b0xvd2VyQ2FzZSgpO1xuICB9XG59XG5cbi8qKlxuICogRmFjdG9yeSBmb3Ige0BsaW5rIE1hcHBlZEluamVjdG9yfVxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWFwcGVkSW5qZWN0b3JGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChJTkpFQ1RPUl9NQVBfVE9LRU4pIHByaXZhdGUgaW5qZWN0b3JNYXA6IEluamVjdG9yTWFwVG9rZW4sXG4gICkge31cblxuICAvKipcbiAgICogQ3JlYXRlcyBNYXBwZWRJbmplY3RvciB3aXRoIHBhcmVudCBpbmplY3RvciBhbmQge0BsaW5rIElOSkVDVE9SX01BUF9UT0tFTn0gZnJvbSBESVxuICAgKi9cbiAgY3JlYXRlKHBhcmVudDogSW5qZWN0b3IpOiBJbmplY3RvciB7XG4gICAgcmV0dXJuIG5ldyBNYXBwZWRJbmplY3RvcihwYXJlbnQsIHRoaXMuaW5qZWN0b3JNYXApO1xuICB9XG59XG4iXX0=