@kephas/core
Version:
Provides a common infrastructure for all the other Kephas Framework components: ambient services, dynamic reflection, composition, application management, and others.
38 lines • 4.86 kB
JavaScript
var Injector_1;
import { __decorate } from "tslib";
import { InjectionError } from "./injectionError";
import { SingletonAppServiceContract } from "../services/appServiceContract";
/**
* Contract for composition context.
*
* @export
* @abstract
* @class Injector
*/
let Injector = Injector_1 = class Injector {
/**
* Gets or sets the static instance of the Injector.
*
* @readonly
* @static
* @type {Injector}
* @memberof Injector
*/
static get instance() {
return Injector_1._instance;
}
static set instance(value) {
if (value === Injector_1._instance) {
return;
}
if (value && Injector_1._instance) {
throw new InjectionError(`Both the instance (${Injector_1._instance}) and the new value (${value}) are set. If you really intend to change the injector, set it first to null and then set the new value.`);
}
Injector_1._instance = value;
}
};
Injector = Injector_1 = __decorate([
SingletonAppServiceContract()
], Injector);
export { Injector };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZXBoYXMvY29yZS9zcmMvbGliL2luamVjdGlvbi9pbmplY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUc3RTs7Ozs7O0dBTUc7QUFFSCxJQUFzQixRQUFRLGdCQUE5QixNQUFzQixRQUFRO0lBRzVCOzs7Ozs7O09BT0c7SUFDSSxNQUFNLEtBQUssUUFBUTtRQUN4QixPQUFPLFVBQVEsQ0FBQyxTQUFTLENBQUM7SUFDNUIsQ0FBQztJQUVNLE1BQU0sS0FBSyxRQUFRLENBQUMsS0FBZTtRQUN4QyxJQUFJLEtBQUssS0FBSyxVQUFRLENBQUMsU0FBUyxFQUFFO1lBQ2hDLE9BQU87U0FDUjtRQUVELElBQUksS0FBSyxJQUFJLFVBQVEsQ0FBQyxTQUFTLEVBQUU7WUFDL0IsTUFBTSxJQUFJLGNBQWMsQ0FBQyxzQkFBc0IsVUFBUSxDQUFDLFNBQVMsd0JBQXdCLEtBQUssMEdBQTBHLENBQUMsQ0FBQztTQUMzTTtRQUVELFVBQVEsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7Q0F1QkYsQ0FBQTtBQWhEcUIsUUFBUTtJQUQ3QiwyQkFBMkIsRUFBRTtHQUNSLFFBQVEsQ0FnRDdCO1NBaERxQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uRXJyb3IgfSBmcm9tIFwiLi9pbmplY3Rpb25FcnJvclwiO1xyXG5pbXBvcnQgeyBTaW5nbGV0b25BcHBTZXJ2aWNlQ29udHJhY3QgfSBmcm9tIFwiLi4vc2VydmljZXMvYXBwU2VydmljZUNvbnRyYWN0XCI7XHJcbmltcG9ydCB7IEFic3RyYWN0VHlwZSwgVHlwZSB9IGZyb20gXCIuLi90eXBlXCI7XHJcblxyXG4vKipcclxuICogQ29udHJhY3QgZm9yIGNvbXBvc2l0aW9uIGNvbnRleHQuXHJcbiAqXHJcbiAqIEBleHBvcnRcclxuICogQGFic3RyYWN0XHJcbiAqIEBjbGFzcyBJbmplY3RvclxyXG4gKi9cclxuQFNpbmdsZXRvbkFwcFNlcnZpY2VDb250cmFjdCgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJbmplY3RvciB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBJbmplY3RvcjtcclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBvciBzZXRzIHRoZSBzdGF0aWMgaW5zdGFuY2Ugb2YgdGhlIEluamVjdG9yLlxyXG4gICAqXHJcbiAgICogQHJlYWRvbmx5XHJcbiAgICogQHN0YXRpY1xyXG4gICAqIEB0eXBlIHtJbmplY3Rvcn1cclxuICAgKiBAbWVtYmVyb2YgSW5qZWN0b3JcclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIGdldCBpbnN0YW5jZSgpOiBJbmplY3RvciB7XHJcbiAgICByZXR1cm4gSW5qZWN0b3IuX2luc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBzZXQgaW5zdGFuY2UodmFsdWU6IEluamVjdG9yKSB7XHJcbiAgICBpZiAodmFsdWUgPT09IEluamVjdG9yLl9pbnN0YW5jZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlICYmIEluamVjdG9yLl9pbnN0YW5jZSkge1xyXG4gICAgICB0aHJvdyBuZXcgSW5qZWN0aW9uRXJyb3IoYEJvdGggdGhlIGluc3RhbmNlICgke0luamVjdG9yLl9pbnN0YW5jZX0pIGFuZCB0aGUgbmV3IHZhbHVlICgke3ZhbHVlfSkgYXJlIHNldC4gSWYgeW91IHJlYWxseSBpbnRlbmQgdG8gY2hhbmdlIHRoZSBpbmplY3Rvciwgc2V0IGl0IGZpcnN0IHRvIG51bGwgYW5kIHRoZW4gc2V0IHRoZSBuZXcgdmFsdWUuYCk7XHJcbiAgICB9XHJcblxyXG4gICAgSW5qZWN0b3IuX2luc3RhbmNlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgICAqIEdldHMgdGhlIHNlcnZpY2UgaW5zdGFuY2Ugb2YgdGhlIHJlcXVpcmVkIHNlcnZpY2UgY29udHJhY3QgdHlwZS5cclxuICAgICAqXHJcbiAgICAgKiBAdGVtcGxhdGUgVFxyXG4gICAgICogQHBhcmFtIHtUeXBlPFQ+fSB0eXBlIFRoZSBzZXJ2aWNlIGNvbnRyYWN0IHR5cGUuXHJcbiAgICAgKiBAcGFyYW0gbm90Rm91bmRSZXNvbHZlciBBIHJlc29sdmVyIGZvciB0aGUgY2FzZSB3aGVuIGEgdHlwZSBjYW5ub3QgYmUgcmVzb2x2ZWQuXHJcbiAgICAgKiBAcmV0dXJucyB7VH0gVGhlIHJlcXVlc3RlZCBzZXJ2aWNlLlxyXG4gICAgICogQG1lbWJlcm9mIEluamVjdG9yXHJcbiAgICAgKi9cclxuICBhYnN0cmFjdCByZXNvbHZlPFQ+KHR5cGU6IFR5cGU8VD4gfCBBYnN0cmFjdFR5cGUsIG5vdEZvdW5kUmVzb2x2ZXI/OiAodHlwZTogVHlwZTxUPiB8IEFic3RyYWN0VHlwZSkgPT4gYW55KTogVDtcclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBhbiBhcnJheSBvZiBzZXJ2aWNlIGluc3RhbmNlcy5cclxuICAgKlxyXG4gICAqIEB0ZW1wbGF0ZSBUXHJcbiAgICogQHBhcmFtIHtUeXBlPFQ+fSB0eXBlIFRoZSBzZXJ2aWNlIGNvbnRyYWN0IHR5cGUuXHJcbiAgICogQHBhcmFtIG5vdEZvdW5kUmVzb2x2ZXIgQSByZXNvbHZlciBmb3IgdGhlIGNhc2Ugd2hlbiBhIHR5cGUgY2Fubm90IGJlIHJlc29sdmVkLlxyXG4gICAqIEByZXR1cm5zIHtUW119IFRoZSBhcnJheSBvZiB0aGUgcmVxdWVzdGVkIHNlcnZpY2UuXHJcbiAgICogQG1lbWJlcm9mIEluamVjdG9yXHJcbiAgICovXHJcbiAgYWJzdHJhY3QgcmVzb2x2ZU1hbnk8VD4odHlwZTogVHlwZTxUPiB8IEFic3RyYWN0VHlwZSwgbm90Rm91bmRSZXNvbHZlcj86ICh0eXBlOiBUeXBlPFQ+IHwgQWJzdHJhY3RUeXBlKSA9PiBhbnkpOiBUW107XHJcbn1cclxuIl19