@miracledevs/paradigm-web-angular
Version:
An angular wrapper with base functionality and helper services.
324 lines • 19.7 kB
JavaScript
/**
* @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==