UNPKG

@miracledevs/paradigm-web-angular

Version:

An angular wrapper with base functionality and helper services.

324 lines 19.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; /*! * Paradigm Framework - Angular Wrapper * Copyright (c) 2017 Miracle Devs, Inc * Licensed under MIT (https://github.com/MiracleDevs/Paradigm.Web.Shared/blob/master/LICENSE) */ import { Injectable } from '@angular/core'; import { ArrayList } from '@miracledevs/paradigm-ui-web-shared'; import { LoggingService, LogType } from './logging.service'; import { ServiceBase } from './base.service'; import * as i0 from "@angular/core"; import * as i1 from "./logging.service"; /** @enum {number} */ var AlertType = { /** * Represents a message alert. * It's the equivalent of @see LogType.Information */ Message: 2, /** * Represents a warning alert. * It's the equivalent of @see LogType.Warning */ Warning: 3, /** * Represents an error alert. * It's the equivalent of @see LogType.Error */ Error: 4, }; export { AlertType }; AlertType[AlertType.Message] = 'Message'; AlertType[AlertType.Warning] = 'Warning'; AlertType[AlertType.Error] = 'Error'; /** * Represents an alert thrown by the system. */ var /** * Represents an alert thrown by the system. */ Alert = /** @class */ (function () { /** * Creates a new instance of @see Alert. */ function Alert(alertType, message) { this.alertType = alertType; this.innerMessage = message; } Object.defineProperty(Alert.prototype, "type", { /** * Gets the type of the alert. */ get: /** * Gets the type of the alert. * @return {?} */ function () { return this.alertType; }, enumerable: true, configurable: true }); Object.defineProperty(Alert.prototype, "typeName", { /** * Gets the type name. */ get: /** * Gets the type name. * @return {?} */ function () { return AlertType[this.alertType]; }, enumerable: true, configurable: true }); Object.defineProperty(Alert.prototype, "message", { /** * Gets the alert message. */ get: /** * Gets the alert message. * @return {?} */ function () { return this.innerMessage; }, enumerable: true, configurable: true }); return Alert; }()); /** * Represents an alert thrown by the system. */ export { Alert }; if (false) { /** * The alert type. * @type {?} * @private */ Alert.prototype.alertType; /** * The alert inner message. * @type {?} * @private */ Alert.prototype.innerMessage; } var AlertService = /** @class */ (function (_super) { tslib_1.__extends(AlertService, _super); /** * Creates a new instance of @see AlertService * @param logger The current logging service. */ function AlertService(logger) { var _this = _super.call(this) || this; _this.logger = logger; _this.alerts = new ArrayList(); return _this; } /** * Gets the equivalent @see LogType for the specified @see AlertType. * @param alertType The specified alert type. * @returns the log type. */ /** * Gets the equivalent \@see LogType for the specified \@see AlertType. * @param {?} alertType The specified alert type. * @return {?} the log type. */ AlertService.getLogType = /** * Gets the equivalent \@see LogType for the specified \@see AlertType. * @param {?} alertType The specified alert type. * @return {?} the log type. */ function (alertType) { switch (alertType) { case AlertType.Message: return LogType.Information; case AlertType.Warning: return LogType.Warning; case AlertType.Error: return LogType.Error; } throw new Error('The alert type is not recognized.'); }; /** * Adds a new alert. * The alert service will also notify the @see LoggingService. * @param alertType the alert type. * @param message the alert message. */ /** * Adds a new alert. * The alert service will also notify the \@see LoggingService. * @param {?} alertType the alert type. * @param {?} message the alert message. * @return {?} */ AlertService.prototype.add = /** * Adds a new alert. * The alert service will also notify the \@see LoggingService. * @param {?} alertType the alert type. * @param {?} message the alert message. * @return {?} */ function (alertType, message) { this.alerts.add(new Alert(alertType, message)); this.logger.log(message, AlertService.getLogType(alertType)); }; /** * Adds a new error alert. * The alert service will also notify the @see LoggingService. * @param message the error message. */ /** * Adds a new error alert. * The alert service will also notify the \@see LoggingService. * @param {?} message the error message. * @return {?} */ AlertService.prototype.addError = /** * Adds a new error alert. * The alert service will also notify the \@see LoggingService. * @param {?} message the error message. * @return {?} */ function (message) { this.add(AlertType.Error, message); }; /** * Adds a new warning alert. * The alert service will also notify the @see LoggingService. * @param message the error message. */ /** * Adds a new warning alert. * The alert service will also notify the \@see LoggingService. * @param {?} message the error message. * @return {?} */ AlertService.prototype.addWarning = /** * Adds a new warning alert. * The alert service will also notify the \@see LoggingService. * @param {?} message the error message. * @return {?} */ function (message) { this.add(AlertType.Warning, message); }; /** * Adds a new message alert. * The alert service will also notify the @see LoggingService. * @param message the error message. */ /** * Adds a new message alert. * The alert service will also notify the \@see LoggingService. * @param {?} message the error message. * @return {?} */ AlertService.prototype.addMessage = /** * Adds a new message alert. * The alert service will also notify the \@see LoggingService. * @param {?} message the error message. * @return {?} */ function (message) { this.add(AlertType.Message, message); }; /** * Removes one of the alerts from the alerts collection. * @param index The index of the alert, or the alert that needs to be removed. */ /** * Removes one of the alerts from the alerts collection. * @param {?} index The index of the alert, or the alert that needs to be removed. * @return {?} */ AlertService.prototype.remove = /** * Removes one of the alerts from the alerts collection. * @param {?} index The index of the alert, or the alert that needs to be removed. * @return {?} */ function (index) { if (index instanceof Alert) { this.alerts.remove(index); } else { this.alerts.removeAt((/** @type {?} */ (index))); } }; /** * Gets the specified alert by its index. * @param index the alert index. */ /** * Gets the specified alert by its index. * @param {?} index the alert index. * @return {?} */ AlertService.prototype.get = /** * Gets the specified alert by its index. * @param {?} index the alert index. * @return {?} */ function (index) { return this.alerts.get(index); }; /** * Gets the alert collection. */ /** * Gets the alert collection. * @return {?} */ AlertService.prototype.getAlerts = /** * Gets the alert collection. * @return {?} */ function () { return this.alerts; }; /** * Clears the alert collection. */ /** * Clears the alert collection. * @return {?} */ AlertService.prototype.clear = /** * Clears the alert collection. * @return {?} */ function () { this.alerts.clear(); }; AlertService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ AlertService.ctorParameters = function () { return [ { type: LoggingService } ]; }; /** @nocollapse */ AlertService.ngInjectableDef = i0.defineInjectable({ factory: function AlertService_Factory() { return new AlertService(i0.inject(i1.LoggingService)); }, token: AlertService, providedIn: "root" }); return AlertService; }(ServiceBase)); export { AlertService }; if (false) { /** * An array holding the alerts that are currently alive. * @type {?} * @private */ AlertService.prototype.alerts; /** * @type {?} * @private */ AlertService.prototype.logger; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtaXJhY2xlZGV2cy9wYXJhZGlnbS13ZWItYW5ndWxhci8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFNQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7SUFPekM7OztPQUdHO0lBQ0gsVUFBNkI7SUFFN0I7OztPQUdHO0lBQ0gsVUFBeUI7SUFFekI7OztPQUdHO0lBQ0gsUUFBcUI7Ozs7Ozs7OztBQU16Qjs7OztJQTJCSTs7T0FFRztJQUNILGVBQVksU0FBb0IsRUFBRSxPQUFlO1FBRTdDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDO0lBQ2hDLENBQUM7SUFuQkQsc0JBQUksdUJBQUk7UUFIUjs7V0FFRzs7Ozs7UUFDSCxjQUF3QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUtoRCxzQkFBSSwyQkFBUTtRQUhaOztXQUVHOzs7OztRQUNILGNBQXlCLE9BQU8sU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBSzVELHNCQUFJLDBCQUFPO1FBSFg7O1dBRUc7Ozs7O1FBQ0gsY0FBd0IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzs7O09BQUE7SUFVdkQsWUFBQztBQUFELENBQUMsQUFuQ0QsSUFtQ0M7Ozs7Ozs7Ozs7O0lBOUJHLDBCQUE2Qjs7Ozs7O0lBSzdCLDZCQUE2Qjs7QUEyQmpDO0lBR2tDLHdDQUFXO0lBT3pDOzs7T0FHRztJQUNILHNCQUFvQixNQUFzQjtRQUExQyxZQUVJLGlCQUFPLFNBRVY7UUFKbUIsWUFBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFHdEMsS0FBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBUyxDQUFDOztJQUN6QyxDQUFDO0lBRUQ7Ozs7T0FJRzs7Ozs7O0lBQ0ksdUJBQVU7Ozs7O0lBQWpCLFVBQWtCLFNBQW9CO1FBRWxDLFFBQVEsU0FBUyxFQUNqQjtZQUNJLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ2xCLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQztZQUUvQixLQUFLLFNBQVMsQ0FBQyxPQUFPO2dCQUNsQixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUM7WUFFM0IsS0FBSyxTQUFTLENBQUMsS0FBSztnQkFDaEIsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO1NBQzVCO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7Ozs7T0FLRzs7Ozs7Ozs7SUFDSCwwQkFBRzs7Ozs7OztJQUFILFVBQUksU0FBb0IsRUFBRSxPQUFlO1FBRXJDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVEOzs7O09BSUc7Ozs7Ozs7SUFDSCwrQkFBUTs7Ozs7O0lBQVIsVUFBUyxPQUFlO1FBRXBCLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7T0FJRzs7Ozs7OztJQUNILGlDQUFVOzs7Ozs7SUFBVixVQUFXLE9BQWU7UUFFdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7OztPQUlHOzs7Ozs7O0lBQ0gsaUNBQVU7Ozs7OztJQUFWLFVBQVcsT0FBZTtRQUV0QixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7T0FHRzs7Ozs7O0lBQ0gsNkJBQU07Ozs7O0lBQU4sVUFBTyxLQUFxQjtRQUV4QixJQUFJLEtBQUssWUFBWSxLQUFLLEVBQzFCO1lBQ0ksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0I7YUFFRDtZQUNJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLG1CQUFBLEtBQUssRUFBVSxDQUFDLENBQUM7U0FDekM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHOzs7Ozs7SUFDSCwwQkFBRzs7Ozs7SUFBSCxVQUFJLEtBQWE7UUFFYixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7T0FFRzs7Ozs7SUFDSCxnQ0FBUzs7OztJQUFUO1FBRUksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRzs7Ozs7SUFDSCw0QkFBSzs7OztJQUFMO1FBRUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDOztnQkEzSEosVUFBVSxTQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7OztnQkFyRVEsY0FBYzs7O3VCQVJ2QjtDQXVNQyxBQTVIRCxDQUdrQyxXQUFXLEdBeUg1QztTQXpIWSxZQUFZOzs7Ozs7O0lBS3JCLDhCQUFpQzs7Ozs7SUFNckIsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBQYXJhZGlnbSBGcmFtZXdvcmsgLSBBbmd1bGFyIFdyYXBwZXJcbiAqIENvcHlyaWdodCAoYykgMjAxNyBNaXJhY2xlIERldnMsIEluY1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vTWlyYWNsZURldnMvUGFyYWRpZ20uV2ViLlNoYXJlZC9ibG9iL21hc3Rlci9MSUNFTlNFKVxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFycmF5TGlzdCB9IGZyb20gJ0BtaXJhY2xlZGV2cy9wYXJhZGlnbS11aS13ZWItc2hhcmVkJztcbmltcG9ydCB7IExvZ2dpbmdTZXJ2aWNlLCBMb2dUeXBlIH0gZnJvbSAnLi9sb2dnaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VydmljZUJhc2UgfSBmcm9tICcuL2Jhc2Uuc2VydmljZSc7XG5cbi8qKlxuICogRW51bWVyYXRlcyB0aGUgZGlmZmVyZW50IHR5cGVzIG9mIGFsZXJ0cy5cbiAqL1xuZXhwb3J0IGVudW0gQWxlcnRUeXBlXG57XG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhIG1lc3NhZ2UgYWxlcnQuXG4gICAgICogSXQncyB0aGUgZXF1aXZhbGVudCBvZiBAc2VlIExvZ1R5cGUuSW5mb3JtYXRpb25cbiAgICAgKi9cbiAgICBNZXNzYWdlID0gTG9nVHlwZS5JbmZvcm1hdGlvbixcblxuICAgIC8qKlxuICAgICAqIFJlcHJlc2VudHMgYSB3YXJuaW5nIGFsZXJ0LlxuICAgICAqIEl0J3MgdGhlIGVxdWl2YWxlbnQgb2YgQHNlZSBMb2dUeXBlLldhcm5pbmdcbiAgICAgKi9cbiAgICBXYXJuaW5nID0gTG9nVHlwZS5XYXJuaW5nLFxuXG4gICAgLyoqXG4gICAgICogUmVwcmVzZW50cyBhbiBlcnJvciBhbGVydC5cbiAgICAgKiBJdCdzIHRoZSBlcXVpdmFsZW50IG9mIEBzZWUgTG9nVHlwZS5FcnJvclxuICAgICAqL1xuICAgIEVycm9yID0gTG9nVHlwZS5FcnJvclxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gYWxlcnQgdGhyb3duIGJ5IHRoZSBzeXN0ZW0uXG4gKi9cbmV4cG9ydCBjbGFzcyBBbGVydFxue1xuICAgIC8qKlxuICAgICAqIFRoZSBhbGVydCB0eXBlLlxuICAgICAqL1xuICAgIHByaXZhdGUgYWxlcnRUeXBlOiBBbGVydFR5cGU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYWxlcnQgaW5uZXIgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBwcml2YXRlIGlubmVyTWVzc2FnZTogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgdHlwZSBvZiB0aGUgYWxlcnQuXG4gICAgICovXG4gICAgZ2V0IHR5cGUoKTogQWxlcnRUeXBlIHsgcmV0dXJuIHRoaXMuYWxlcnRUeXBlOyB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSB0eXBlIG5hbWUuXG4gICAgICovXG4gICAgZ2V0IHR5cGVOYW1lKCk6IHN0cmluZyB7IHJldHVybiBBbGVydFR5cGVbdGhpcy5hbGVydFR5cGVdOyB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBhbGVydCBtZXNzYWdlLlxuICAgICAqL1xuICAgIGdldCBtZXNzYWdlKCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmlubmVyTWVzc2FnZTsgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBAc2VlIEFsZXJ0LlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGFsZXJ0VHlwZTogQWxlcnRUeXBlLCBtZXNzYWdlOiBzdHJpbmcpXG4gICAge1xuICAgICAgICB0aGlzLmFsZXJ0VHlwZSA9IGFsZXJ0VHlwZTtcbiAgICAgICAgdGhpcy5pbm5lck1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIH1cbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBbGVydFNlcnZpY2UgZXh0ZW5kcyBTZXJ2aWNlQmFzZVxue1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IGhvbGRpbmcgdGhlIGFsZXJ0cyB0aGF0IGFyZSBjdXJyZW50bHkgYWxpdmUuXG4gICAgICovXG4gICAgcHJpdmF0ZSBhbGVydHM6IEFycmF5TGlzdDxBbGVydD47XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIEBzZWUgQWxlcnRTZXJ2aWNlXG4gICAgICogQHBhcmFtIGxvZ2dlciBUaGUgY3VycmVudCBsb2dnaW5nIHNlcnZpY2UuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2dnZXI6IExvZ2dpbmdTZXJ2aWNlKVxuICAgIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5hbGVydHMgPSBuZXcgQXJyYXlMaXN0PEFsZXJ0PigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIGVxdWl2YWxlbnQgQHNlZSBMb2dUeXBlIGZvciB0aGUgc3BlY2lmaWVkIEBzZWUgQWxlcnRUeXBlLlxuICAgICAqIEBwYXJhbSBhbGVydFR5cGUgVGhlIHNwZWNpZmllZCBhbGVydCB0eXBlLlxuICAgICAqIEByZXR1cm5zIHRoZSBsb2cgdHlwZS5cbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0TG9nVHlwZShhbGVydFR5cGU6IEFsZXJ0VHlwZSk6IExvZ1R5cGVcbiAgICB7XG4gICAgICAgIHN3aXRjaCAoYWxlcnRUeXBlKVxuICAgICAgICB7XG4gICAgICAgICAgICBjYXNlIEFsZXJ0VHlwZS5NZXNzYWdlOlxuICAgICAgICAgICAgICAgIHJldHVybiBMb2dUeXBlLkluZm9ybWF0aW9uO1xuXG4gICAgICAgICAgICBjYXNlIEFsZXJ0VHlwZS5XYXJuaW5nOlxuICAgICAgICAgICAgICAgIHJldHVybiBMb2dUeXBlLldhcm5pbmc7XG5cbiAgICAgICAgICAgIGNhc2UgQWxlcnRUeXBlLkVycm9yOlxuICAgICAgICAgICAgICAgIHJldHVybiBMb2dUeXBlLkVycm9yO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYWxlcnQgdHlwZSBpcyBub3QgcmVjb2duaXplZC4nKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgbmV3IGFsZXJ0LlxuICAgICAqIFRoZSBhbGVydCBzZXJ2aWNlIHdpbGwgYWxzbyBub3RpZnkgdGhlIEBzZWUgTG9nZ2luZ1NlcnZpY2UuXG4gICAgICogQHBhcmFtIGFsZXJ0VHlwZSB0aGUgYWxlcnQgdHlwZS5cbiAgICAgKiBAcGFyYW0gbWVzc2FnZSB0aGUgYWxlcnQgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBhZGQoYWxlcnRUeXBlOiBBbGVydFR5cGUsIG1lc3NhZ2U6IHN0cmluZyk6IHZvaWRcbiAgICB7XG4gICAgICAgIHRoaXMuYWxlcnRzLmFkZChuZXcgQWxlcnQoYWxlcnRUeXBlLCBtZXNzYWdlKSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmxvZyhtZXNzYWdlLCBBbGVydFNlcnZpY2UuZ2V0TG9nVHlwZShhbGVydFR5cGUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgbmV3IGVycm9yIGFsZXJ0LlxuICAgICAqIFRoZSBhbGVydCBzZXJ2aWNlIHdpbGwgYWxzbyBub3RpZnkgdGhlIEBzZWUgTG9nZ2luZ1NlcnZpY2UuXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgdGhlIGVycm9yIG1lc3NhZ2UuXG4gICAgICovXG4gICAgYWRkRXJyb3IobWVzc2FnZTogc3RyaW5nKTogdm9pZFxuICAgIHtcbiAgICAgICAgdGhpcy5hZGQoQWxlcnRUeXBlLkVycm9yLCBtZXNzYWdlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgbmV3IHdhcm5pbmcgYWxlcnQuXG4gICAgICogVGhlIGFsZXJ0IHNlcnZpY2Ugd2lsbCBhbHNvIG5vdGlmeSB0aGUgQHNlZSBMb2dnaW5nU2VydmljZS5cbiAgICAgKiBAcGFyYW0gbWVzc2FnZSB0aGUgZXJyb3IgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBhZGRXYXJuaW5nKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWRcbiAgICB7XG4gICAgICAgIHRoaXMuYWRkKEFsZXJ0VHlwZS5XYXJuaW5nLCBtZXNzYWdlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgbmV3IG1lc3NhZ2UgYWxlcnQuXG4gICAgICogVGhlIGFsZXJ0IHNlcnZpY2Ugd2lsbCBhbHNvIG5vdGlmeSB0aGUgQHNlZSBMb2dnaW5nU2VydmljZS5cbiAgICAgKiBAcGFyYW0gbWVzc2FnZSB0aGUgZXJyb3IgbWVzc2FnZS5cbiAgICAgKi9cbiAgICBhZGRNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWRcbiAgICB7XG4gICAgICAgIHRoaXMuYWRkKEFsZXJ0VHlwZS5NZXNzYWdlLCBtZXNzYWdlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIG9uZSBvZiB0aGUgYWxlcnRzIGZyb20gdGhlIGFsZXJ0cyBjb2xsZWN0aW9uLlxuICAgICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggb2YgdGhlIGFsZXJ0LCBvciB0aGUgYWxlcnQgdGhhdCBuZWVkcyB0byBiZSByZW1vdmVkLlxuICAgICAqL1xuICAgIHJlbW92ZShpbmRleDogbnVtYmVyIHwgQWxlcnQpOiB2b2lkXG4gICAge1xuICAgICAgICBpZiAoaW5kZXggaW5zdGFuY2VvZiBBbGVydClcbiAgICAgICAge1xuICAgICAgICAgICAgdGhpcy5hbGVydHMucmVtb3ZlKGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMuYWxlcnRzLnJlbW92ZUF0KGluZGV4IGFzIG51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBzcGVjaWZpZWQgYWxlcnQgYnkgaXRzIGluZGV4LlxuICAgICAqIEBwYXJhbSBpbmRleCB0aGUgYWxlcnQgaW5kZXguXG4gICAgICovXG4gICAgZ2V0KGluZGV4OiBudW1iZXIpOiBBbGVydFxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxlcnRzLmdldChpbmRleCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyB0aGUgYWxlcnQgY29sbGVjdGlvbi5cbiAgICAgKi9cbiAgICBnZXRBbGVydHMoKTogQXJyYXlMaXN0PEFsZXJ0PlxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxlcnRzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsZWFycyB0aGUgYWxlcnQgY29sbGVjdGlvbi5cbiAgICAgKi9cbiAgICBjbGVhcigpOiB2b2lkXG4gICAge1xuICAgICAgICB0aGlzLmFsZXJ0cy5jbGVhcigpO1xuICAgIH1cbn1cbiJdfQ==