@orchestrator/core
Version:
> Core package of Orchestrator library.
66 lines • 8.04 kB
JavaScript
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=