UNPKG

@kephas/core

Version:

Provides a common infrastructure for all the other Kephas Framework components: ambient services, dynamic reflection, composition, application management, and others.

110 lines 11.6 kB
/** * Enumerates the priority values. * They are practically a convenient way to provide integer values for defining priorities. * A lower value indicates a higher priority. * * @export * @enum {number} */ export var Priority; (function (Priority) { /** * The lowest priority. Typically used by the null services. */ Priority[Priority["Lowest"] = 2147483647] = "Lowest"; /** * The low priority. Typically used by the default services. */ Priority[Priority["Low"] = 1000000] = "Low"; /** * The below normal priority. Typically used by services with a higher specialization than the default ones. */ Priority[Priority["BelowNormal"] = 1000] = "BelowNormal"; /** * The normal priority (the default). */ Priority[Priority["Normal"] = 0] = "Normal"; /** * The above normal priority. */ Priority[Priority["AboveNormal"] = -1000] = "AboveNormal"; /** * The high priority. */ Priority[Priority["High"] = -1000000] = "High"; /** * The highest priority. */ Priority[Priority["Highest"] = -2147483648] = "Highest"; })(Priority || (Priority = {})); /** * Metadata for application services. * * @export * @class AppServiceMetadata */ export class AppServiceMetadata { /** * Creates an instance of AppServiceMetadata. * * @param {number|Priority} [overridePriority=Priority.Normal] Optional. The override priority. * @param {number|Priority} [processingPriority=Priority.Normal] Optional. The processing priority. * @param {string} [serviceName] Optional. The service name. * @param {Type<T>} [serviceType] Optional. The service implementation type. * @param {() => T} [serviceFactory] Optional. The service factory. * @param {T} [serviceInstance] Optional. The service instance. * @param {AppServiceInfo} [serviceContract] Optional. The service contract. * @memberof AppServiceMetadata */ constructor({ overridePriority = Priority.Normal, processingPriority = Priority.Normal, serviceName, serviceType, serviceFactory, serviceInstance, ...args } = {}) { /** * Gets the override priority. * * @type {number} * @memberof AppServiceInfo */ this.overridePriority = Priority.Normal; /** * Gets the processing priority. * * @type {number} * @memberof AppServiceInfo */ this.processingPriority = Priority.Normal; this.overridePriority = overridePriority; this.processingPriority = processingPriority; this.serviceName = serviceName; this.serviceFactory = serviceFactory; this._serviceInstance = serviceInstance; this._serviceType = serviceType; Object.assign(this, args); } /** * Gets the service implementation type. * * @type {Function} * @memberof AppServiceMetadata */ get serviceType() { return this._serviceType; } /** * Gets the application service contract information. * * @type {AppServiceInfo} * @memberof AppServiceMetadata */ get serviceContract() { return this._serviceContract; } /** * Gets the service instance. * * @type {T} * @memberof AppServiceMetadata */ get serviceInstance() { return this._serviceInstance; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwU2VydmljZU1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2VwaGFzL2NvcmUvc3JjL2xpYi9zZXJ2aWNlcy9hcHBTZXJ2aWNlTWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBTixJQUFZLFFBbUNYO0FBbkNELFdBQVksUUFBUTtJQUNoQjs7T0FFRztJQUNILG9EQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsMkNBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsd0RBQWtCLENBQUE7SUFFbEI7O09BRUc7SUFDSCwyQ0FBVSxDQUFBO0lBRVY7O09BRUc7SUFDSCx5REFBbUIsQ0FBQTtJQUVuQjs7T0FFRztJQUNILDhDQUFlLENBQUE7SUFFZjs7T0FFRztJQUNILHVEQUFxQixDQUFBO0FBQ3pCLENBQUMsRUFuQ1csUUFBUSxLQUFSLFFBQVEsUUFtQ25CO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBbUUzQjs7Ozs7Ozs7Ozs7T0FXRztJQUNILFlBQ0ksRUFDSSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUNsQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUNwQyxXQUFXLEVBQ1gsV0FBVyxFQUNYLGNBQWMsRUFDZCxlQUFlLEVBQ2YsR0FBRyxJQUFJLEtBU1AsRUFBRTtRQS9GVjs7Ozs7V0FLRztRQUNhLHFCQUFnQixHQUFXLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFFM0Q7Ozs7O1dBS0c7UUFDYSx1QkFBa0IsR0FBVyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBa0Z6RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQzdDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7UUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQS9FRDs7Ozs7T0FLRztJQUNILElBQVcsV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBVyxlQUFlO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0NBb0RKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tIFwiLi4vaW5qZWN0aW9uL2luamVjdG9yXCI7XHJcbmltcG9ydCB7IFR5cGUgfSBmcm9tIFwiLi4vdHlwZVwiO1xyXG5pbXBvcnQgeyBBcHBTZXJ2aWNlSW5mbyB9IGZyb20gXCIuL2FwcFNlcnZpY2VJbmZvXCI7XHJcblxyXG4vKipcclxuICogRW51bWVyYXRlcyB0aGUgcHJpb3JpdHkgdmFsdWVzLlxyXG4gKiBUaGV5IGFyZSBwcmFjdGljYWxseSBhIGNvbnZlbmllbnQgd2F5IHRvIHByb3ZpZGUgaW50ZWdlciB2YWx1ZXMgZm9yIGRlZmluaW5nIHByaW9yaXRpZXMuXHJcbiAqIEEgbG93ZXIgdmFsdWUgaW5kaWNhdGVzIGEgaGlnaGVyIHByaW9yaXR5LlxyXG4gKlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBlbnVtIHtudW1iZXJ9XHJcbiAqL1xyXG5leHBvcnQgZW51bSBQcmlvcml0eSB7XHJcbiAgICAvKipcclxuICAgICAqIFRoZSBsb3dlc3QgcHJpb3JpdHkuIFR5cGljYWxseSB1c2VkIGJ5IHRoZSBudWxsIHNlcnZpY2VzLlxyXG4gICAgICovXHJcbiAgICBMb3dlc3QgPSAyMTQ3NDgzNjQ3LFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGxvdyBwcmlvcml0eS4gVHlwaWNhbGx5IHVzZWQgYnkgdGhlIGRlZmF1bHQgc2VydmljZXMuXHJcbiAgICAgKi9cclxuICAgIExvdyA9IDEwMDAwMDAsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgYmVsb3cgbm9ybWFsIHByaW9yaXR5LiBUeXBpY2FsbHkgdXNlZCBieSBzZXJ2aWNlcyB3aXRoIGEgaGlnaGVyIHNwZWNpYWxpemF0aW9uIHRoYW4gdGhlIGRlZmF1bHQgb25lcy5cclxuICAgICAqL1xyXG4gICAgQmVsb3dOb3JtYWwgPSAxMDAwLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG5vcm1hbCBwcmlvcml0eSAodGhlIGRlZmF1bHQpLlxyXG4gICAgICovXHJcbiAgICBOb3JtYWwgPSAwLFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIGFib3ZlIG5vcm1hbCBwcmlvcml0eS5cclxuICAgICAqL1xyXG4gICAgQWJvdmVOb3JtYWwgPSAtMTAwMCxcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBoaWdoIHByaW9yaXR5LlxyXG4gICAgICovXHJcbiAgICBIaWdoID0gLTEwMDAwMDAsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgaGlnaGVzdCBwcmlvcml0eS5cclxuICAgICAqL1xyXG4gICAgSGlnaGVzdCA9IC0yMTQ3NDgzNjQ4LFxyXG59XHJcblxyXG4vKipcclxuICogTWV0YWRhdGEgZm9yIGFwcGxpY2F0aW9uIHNlcnZpY2VzLlxyXG4gKlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBBcHBTZXJ2aWNlTWV0YWRhdGFcclxuICovXHJcbmV4cG9ydCBjbGFzcyBBcHBTZXJ2aWNlTWV0YWRhdGE8VD4ge1xyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBvdmVycmlkZSBwcmlvcml0eS5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICogQG1lbWJlcm9mIEFwcFNlcnZpY2VJbmZvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWFkb25seSBvdmVycmlkZVByaW9yaXR5OiBudW1iZXIgPSBQcmlvcml0eS5Ob3JtYWw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBwcm9jZXNzaW5nIHByaW9yaXR5LlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgKiBAbWVtYmVyb2YgQXBwU2VydmljZUluZm9cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlYWRvbmx5IHByb2Nlc3NpbmdQcmlvcml0eTogbnVtYmVyID0gUHJpb3JpdHkuTm9ybWFsO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgc2VydmljZSBuYW1lLlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtzdHJpbmd9XHJcbiAgICAgKiBAbWVtYmVyb2YgQXBwU2VydmljZU1ldGFkYXRhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlTmFtZT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gdHlwZS5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7RnVuY3Rpb259XHJcbiAgICAgKiBAbWVtYmVyb2YgQXBwU2VydmljZU1ldGFkYXRhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgc2VydmljZVR5cGUoKTogVHlwZTxUPiB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlcnZpY2VUeXBlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgYXBwbGljYXRpb24gc2VydmljZSBjb250cmFjdCBpbmZvcm1hdGlvbi5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7QXBwU2VydmljZUluZm99XHJcbiAgICAgKiBAbWVtYmVyb2YgQXBwU2VydmljZU1ldGFkYXRhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgc2VydmljZUNvbnRyYWN0KCk6IEFwcFNlcnZpY2VJbmZvIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc2VydmljZUNvbnRyYWN0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgc2VydmljZSBpbnN0YW5jZS5cclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7VH1cclxuICAgICAqIEBtZW1iZXJvZiBBcHBTZXJ2aWNlTWV0YWRhdGFcclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBzZXJ2aWNlSW5zdGFuY2UoKTogVCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NlcnZpY2VJbnN0YW5jZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgb3Igc2V0cyB0aGUgc2VydmljZSBmYWN0b3J5LlxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHsoYzogSW5qZWN0b3IpID0+IFR9XHJcbiAgICAgKiBAbWVtYmVyb2YgQXBwU2VydmljZU1ldGFkYXRhXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlRmFjdG9yeT86IChjOiBJbmplY3RvcikgPT4gVDtcclxuXHJcbiAgICBwcml2YXRlIF9zZXJ2aWNlQ29udHJhY3Q/OiBBcHBTZXJ2aWNlSW5mbztcclxuICAgIHByaXZhdGUgX3NlcnZpY2VUeXBlPzogVHlwZTxUPjtcclxuICAgIHByaXZhdGUgX3NlcnZpY2VJbnN0YW5jZT86IFQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIEFwcFNlcnZpY2VNZXRhZGF0YS5cclxuICAgICAqXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcnxQcmlvcml0eX0gW292ZXJyaWRlUHJpb3JpdHk9UHJpb3JpdHkuTm9ybWFsXSBPcHRpb25hbC4gVGhlIG92ZXJyaWRlIHByaW9yaXR5LlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ8UHJpb3JpdHl9IFtwcm9jZXNzaW5nUHJpb3JpdHk9UHJpb3JpdHkuTm9ybWFsXSBPcHRpb25hbC4gVGhlIHByb2Nlc3NpbmcgcHJpb3JpdHkuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3NlcnZpY2VOYW1lXSBPcHRpb25hbC4gVGhlIHNlcnZpY2UgbmFtZS5cclxuICAgICAqIEBwYXJhbSB7VHlwZTxUPn0gW3NlcnZpY2VUeXBlXSBPcHRpb25hbC4gVGhlIHNlcnZpY2UgaW1wbGVtZW50YXRpb24gdHlwZS5cclxuICAgICAqIEBwYXJhbSB7KCkgPT4gVH0gW3NlcnZpY2VGYWN0b3J5XSBPcHRpb25hbC4gVGhlIHNlcnZpY2UgZmFjdG9yeS5cclxuICAgICAqIEBwYXJhbSB7VH0gW3NlcnZpY2VJbnN0YW5jZV0gT3B0aW9uYWwuIFRoZSBzZXJ2aWNlIGluc3RhbmNlLlxyXG4gICAgICogQHBhcmFtIHtBcHBTZXJ2aWNlSW5mb30gW3NlcnZpY2VDb250cmFjdF0gT3B0aW9uYWwuIFRoZSBzZXJ2aWNlIGNvbnRyYWN0LlxyXG4gICAgICogQG1lbWJlcm9mIEFwcFNlcnZpY2VNZXRhZGF0YVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIG92ZXJyaWRlUHJpb3JpdHkgPSBQcmlvcml0eS5Ob3JtYWwsXHJcbiAgICAgICAgICAgIHByb2Nlc3NpbmdQcmlvcml0eSA9IFByaW9yaXR5Lk5vcm1hbCxcclxuICAgICAgICAgICAgc2VydmljZU5hbWUsXHJcbiAgICAgICAgICAgIHNlcnZpY2VUeXBlLFxyXG4gICAgICAgICAgICBzZXJ2aWNlRmFjdG9yeSxcclxuICAgICAgICAgICAgc2VydmljZUluc3RhbmNlLFxyXG4gICAgICAgICAgICAuLi5hcmdzXHJcbiAgICAgICAgfToge1xyXG4gICAgICAgICAgICBvdmVycmlkZVByaW9yaXR5PzogbnVtYmVyIHwgUHJpb3JpdHk7XHJcbiAgICAgICAgICAgIHByb2Nlc3NpbmdQcmlvcml0eT86IG51bWJlciB8IFByaW9yaXR5O1xyXG4gICAgICAgICAgICBzZXJ2aWNlTmFtZT86IHN0cmluZztcclxuICAgICAgICAgICAgc2VydmljZVR5cGU/OiBUeXBlPFQ+O1xyXG4gICAgICAgICAgICBzZXJ2aWNlRmFjdG9yeT86IChjOiBJbmplY3RvcikgPT4gVDtcclxuICAgICAgICAgICAgc2VydmljZUluc3RhbmNlPzogVDtcclxuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xyXG4gICAgICAgIH0gPSB7fSkge1xyXG4gICAgICAgIHRoaXMub3ZlcnJpZGVQcmlvcml0eSA9IG92ZXJyaWRlUHJpb3JpdHk7XHJcbiAgICAgICAgdGhpcy5wcm9jZXNzaW5nUHJpb3JpdHkgPSBwcm9jZXNzaW5nUHJpb3JpdHk7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlTmFtZSA9IHNlcnZpY2VOYW1lO1xyXG4gICAgICAgIHRoaXMuc2VydmljZUZhY3RvcnkgPSBzZXJ2aWNlRmFjdG9yeTtcclxuICAgICAgICB0aGlzLl9zZXJ2aWNlSW5zdGFuY2UgPSBzZXJ2aWNlSW5zdGFuY2U7XHJcbiAgICAgICAgdGhpcy5fc2VydmljZVR5cGUgPSBzZXJ2aWNlVHlwZTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGFyZ3MpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==