dynamic-display-shared
Version:
A library for dynamic view
176 lines • 25.2 kB
JavaScript
import { Inject, Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { EntityBaseService } from './entity-base.service';
import { OAuthService } from 'angular-oauth2-oidc';
import { Store } from '@ngrx/store';
import { addBackgroundUpdateProcess, endBackgroundUpdateProcess } from '../store/entity-management.actions';
import { UserService } from '../auth/user.service';
import { Logger } from '../../infrastructure/logger';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common/http";
import * as i2 from "../../infrastructure/logger";
import * as i3 from "angular-oauth2-oidc";
import * as i4 from "@ngrx/store";
import * as i5 from "../auth/user.service";
export class UploadFileData {
constructor(
// public entityId: number,
// public parameterMetadataId: number,
storedFileName, file) {
this.storedFileName = storedFileName;
this.file = file;
}
}
export class ParameterForUpdate {
constructor(parameterMetadataId, value, storedFileName) {
this.parameterMetadataId = parameterMetadataId;
this.value = value;
this.storedFileName = storedFileName;
}
}
export class EntityForUpdate {
}
export class EntitiesStatusForUpdate {
}
export class BackgroundUpdateEntityParameters {
}
export class BackgroundUpdateStatus {
}
export class UpdateResult {
}
export class UpdateEntityService extends EntityBaseService {
constructor(http, logger, oauthService, store, userService, env) {
super(http, logger, oauthService, env);
this.http = http;
this.logger = logger;
this.oauthService = oauthService;
this.store = store;
this.userService = userService;
this.env = env;
// this.subscriptions.push( this.store.pipe(select(selectBackgroundUpdateProcesses))
// .subscribe((x) => console.log(`'${x}' background update processees`)));
}
updateEntity(entityForUpdate) {
const self = this;
entityForUpdate.createUser = this.givenName;
entityForUpdate.entrepreneurId = this.userService.entrepreneurCode;
// const entityForUpdate: EntityForUpdate = {
// id: entity.id,
// entityMetadataId: entity.type,
// parameters: entity.parametersGroups.flatMap(grp => grp.parameters)
// .filter(parameter => isSimpleParameter(parameter))
// .map(parameter => parameter as SimpleParameter)
// .map(parameter => ({
// parameterMetadataId: parameter.metadata.id,
// value: parameter.value
// }))
// };
return new Observable(observer => {
const url = `${this.getUrl()}/Update`;
const requestBody = entityForUpdate;
const options = {
// responseType: 'text' as 'json',
headers: new HttpHeaders({
'Content-Type': 'application/json',
})
};
this.http.post(url, requestBody, options).subscribe(response => {
observer.next(response);
self.logger.info(`Update entity '${entityForUpdate.id}' completed`);
observer.complete();
}, error => {
self.logger.error(`An error occurred while update entity '${entityForUpdate.id}'`, error);
observer.error(error);
});
});
}
backgroundUpdate(backgroundUpdateEntityParameters) {
const self = this;
return new Observable(observer => {
const url = `${this.getUrl()}/BackgroundUpdate`; ///${fixedId}/${id}/${presentationEntityId}`;
const requestBody = backgroundUpdateEntityParameters;
const options = {
// responseType: 'text' as 'json',
headers: new HttpHeaders({
'Content-Type': 'application/json',
})
};
self.store.dispatch(addBackgroundUpdateProcess());
this.http.post(url, requestBody, options).subscribe((response) => {
observer.next(response);
self.logger.info(`Background update entities completed`);
self.store.dispatch(endBackgroundUpdateProcess());
//observer.complete();
}, error => {
self.logger.error(`An error occurred while background update entities`, error);
observer.error(error);
});
});
}
backgroundUpdateOfStatuses(backgroundUpdateStatus) {
const self = this;
return new Observable(observer => {
const url = `${this.getUrl()}/BackgroundUpdateOfStatus`; ///${fixedId}/${id}/${presentationEntityId}`;
const requestBody = backgroundUpdateStatus;
const options = {
// responseType: 'text' as 'json',
headers: new HttpHeaders({
'Content-Type': 'application/json',
})
};
self.store.dispatch(addBackgroundUpdateProcess());
this.http.post(url, requestBody, options).subscribe((response) => {
observer.next(response);
self.logger.info(`Background update entities completed`);
self.store.dispatch(endBackgroundUpdateProcess());
//observer.complete();
}, error => {
self.logger.error(`An error occurred while background update entities`, error);
observer.error(error);
self.store.dispatch(endBackgroundUpdateProcess());
});
});
}
updateEntitiesStatus(statusId, entitiesStatus) {
const self = this;
const updateUser = this.givenName;
return new Observable(observer => {
const url = `${this.getUrl()}/UpdateEntitiesStatus`;
const requestBody = { statusId, updateUser, entitiesStatus };
const options = {
responseType: 'text',
headers: new HttpHeaders({
'Content-Type': 'application/json',
})
};
this.http.post(url, requestBody, options).subscribe(response => {
observer.next(response);
self.logger.info(`Update entity completed`);
observer.complete();
}, error => {
self.logger.error(`An error occurred while update entity`, error);
observer.error(error);
});
});
}
get givenName() {
const claims = this.oauthService.getIdentityClaims();
if (!claims) {
return null;
}
return claims['given_name'];
}
}
UpdateEntityService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: UpdateEntityService, deps: [{ token: i1.HttpClient }, { token: i2.Logger }, { token: i3.OAuthService }, { token: i4.Store }, { token: i5.UserService }, { token: 'env' }], target: i0.ɵɵFactoryTarget.Injectable });
UpdateEntityService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: UpdateEntityService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: UpdateEntityService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.Logger }, { type: i3.OAuthService }, { type: i4.Store }, { type: i5.UserService }, { type: undefined, decorators: [{
type: Inject,
args: ['env']
}] }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWVudGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHluYW1pYy1kaXNwbGF5LXNoYXJlZC9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy91cGRhdGUtZW50aXR5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXBDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBRzVHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7QUFFckQsTUFBTSxPQUFPLGNBQWM7SUFDekI7SUFDRSwyQkFBMkI7SUFDM0Isc0NBQXNDO0lBQy9CLGNBQXNCLEVBQ3RCLElBQVU7UUFEVixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUFNO0lBRW5CLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFDUyxtQkFBMkIsRUFDM0IsS0FBVSxFQUNWLGNBQXNCO1FBRnRCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBUTtRQUMzQixVQUFLLEdBQUwsS0FBSyxDQUFLO1FBQ1YsbUJBQWMsR0FBZCxj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QztZQUVGLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFNLEdBQUcsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUN0RCxRQUFRLENBQUMsRUFBRTtnQkFDVCxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO2dCQUM1QyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEIsQ0FBQyxFQUNELEtBQUssQ0FBQyxFQUFFO2dCQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsRSxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBeUIsQ0FBQztRQUM1RSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlCLENBQUM7O2dIQTFKVSxtQkFBbUIsOElBS3BCLEtBQUs7b0hBTEosbUJBQW1CLGNBRmxCLE1BQU07MkZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBTUksTUFBTTsyQkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEVudGl0eUJhc2VTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHktYmFzZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnYW5ndWxhci1vYXV0aDItb2lkYyc7XHJcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBFbnRpdHlNYW5hZ2VtZW50U3RhdGUgfSBmcm9tICcuLi9zdG9yZS9lbnRpdHktbWFuYWdlbWVudC5yZWR1Y2VyJztcclxuaW1wb3J0IHsgYWRkQmFja2dyb3VuZFVwZGF0ZVByb2Nlc3MsIGVuZEJhY2tncm91bmRVcGRhdGVQcm9jZXNzIH0gZnJvbSAnLi4vc3RvcmUvZW50aXR5LW1hbmFnZW1lbnQuYWN0aW9ucyc7XHJcbmltcG9ydCB7IEVudGl0eVN0YXR1cyB9IGZyb20gJy4uL21vZGVsL2VudGl0eS1zdGF0dXMnO1xyXG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuLi9tb2RlbC9lbnRpdHknO1xyXG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJy4uL2F1dGgvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnLi4vLi4vaW5mcmFzdHJ1Y3R1cmUvbG9nZ2VyJztcclxuXHJcbmV4cG9ydCBjbGFzcyBVcGxvYWRGaWxlRGF0YSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBwdWJsaWMgZW50aXR5SWQ6IG51bWJlcixcclxuICAgIC8vIHB1YmxpYyBwYXJhbWV0ZXJNZXRhZGF0YUlkOiBudW1iZXIsXHJcbiAgICBwdWJsaWMgc3RvcmVkRmlsZU5hbWU6IHN0cmluZyxcclxuICAgIHB1YmxpYyBmaWxlOiBGaWxlKSB7XHJcblxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFBhcmFtZXRlckZvclVwZGF0ZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcGFyYW1ldGVyTWV0YWRhdGFJZDogbnVtYmVyLFxyXG4gICAgcHVibGljIHZhbHVlOiBhbnksXHJcbiAgICBwdWJsaWMgc3RvcmVkRmlsZU5hbWU6IHN0cmluZykge1xyXG5cclxuICB9XHJcbn1cclxuZXhwb3J0IGNsYXNzIEVudGl0eUZvclVwZGF0ZSB7XHJcbiAgaWQhOiBudW1iZXI7XHJcbiAgZW50aXR5TWV0YWRhdGFJZCE6IG51bWJlcjtcclxuICBwcmVzZW50YXRpb25UeXBlSWQhOiBudW1iZXI7XHJcbiAgcHJlc2VudGF0aW9uRW50aXR5SWQhOiBudW1iZXI7XHJcbiAgY3JlYXRlVXNlciE6IHN0cmluZztcclxuICBlbnRyZXByZW5ldXJJZDogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICBwYXJhbWV0ZXJzITogUGFyYW1ldGVyRm9yVXBkYXRlW107XHJcbiAgcmVsYXRlZEVudGl0aWVzITogRW50aXR5Rm9yVXBkYXRlW107XHJcbiAgaXNTcGVjaWZpY1ByZXNlbnRhdGlvbiE6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBFbnRpdGllc1N0YXR1c0ZvclVwZGF0ZSB7XHJcbiAgcHJvY2Vzc0lkITogbnVtYmVyO1xyXG4gIHN0YXR1c0lkITogbnVtYmVyO1xyXG4gIGVudGl0aWVzITogRW50aXR5U3RhdHVzW107XHJcbn1cclxuZXhwb3J0IGNsYXNzIEJhY2tncm91bmRVcGRhdGVFbnRpdHlQYXJhbWV0ZXJzIHtcclxuICBpZCE6IG51bWJlcjtcclxuICBmaXhlZElkITogc3RyaW5nO1xyXG4gIHByZXNlbnRhdGlvbkVudGl0eUlkITogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQmFja2dyb3VuZFVwZGF0ZVN0YXR1cyB7XHJcbiAgZW50aXR5SWQhOiBudW1iZXI7XHJcbiAgc3RhdHVzSWQhOiBudW1iZXI7XHJcbn1cclxuZXhwb3J0IGNsYXNzIFVwZGF0ZVJlc3VsdCB7XHJcbiAgdXBkYXRlZEVudGl0eSE6IEVudGl0eTtcclxuICBhbGxVcGRhdGRFbnRpdGllcyE6IEJhY2tncm91bmRVcGRhdGVFbnRpdHlQYXJhbWV0ZXJzW107XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFVwZGF0ZUVudGl0eVNlcnZpY2UgZXh0ZW5kcyBFbnRpdHlCYXNlU2VydmljZSB7XHJcblxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgb3ZlcnJpZGUgaHR0cDogSHR0cENsaWVudCwgcHJvdGVjdGVkIG92ZXJyaWRlIGxvZ2dlcjogTG9nZ2VyLCBwcm90ZWN0ZWQgb3ZlcnJpZGUgb2F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UsIHByaXZhdGUgc3RvcmU6IFN0b3JlPEVudGl0eU1hbmFnZW1lbnRTdGF0ZT4sXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIEBJbmplY3QoJ2VudicpIHByb3RlY3RlZCBvdmVycmlkZSBlbnY6IGFueSkge1xyXG4gICAgc3VwZXIoaHR0cCwgbG9nZ2VyLCBvYXV0aFNlcnZpY2UsIGVudik7XHJcbiAgICAvLyB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCggdGhpcy5zdG9yZS5waXBlKHNlbGVjdChzZWxlY3RCYWNrZ3JvdW5kVXBkYXRlUHJvY2Vzc2VzKSlcclxuICAgIC8vIC5zdWJzY3JpYmUoKHgpID0+IGNvbnNvbGUubG9nKGAnJHt4fScgYmFja2dyb3VuZCB1cGRhdGUgcHJvY2Vzc2Vlc2ApKSk7XHJcbiAgfVxyXG4gIHB1YmxpYyB1cGRhdGVFbnRpdHkoZW50aXR5Rm9yVXBkYXRlOiBFbnRpdHlGb3JVcGRhdGUpXHJcbiAgICA6IE9ic2VydmFibGU8VXBkYXRlUmVzdWx0PiB7XHJcblxyXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICBlbnRpdHlGb3JVcGRhdGUuY3JlYXRlVXNlciA9IHRoaXMuZ2l2ZW5OYW1lO1xyXG4gICAgZW50aXR5Rm9yVXBkYXRlLmVudHJlcHJlbmV1cklkID0gdGhpcy51c2VyU2VydmljZS5lbnRyZXByZW5ldXJDb2RlO1xyXG4gICAgLy8gY29uc3QgZW50aXR5Rm9yVXBkYXRlOiBFbnRpdHlGb3JVcGRhdGUgPSB7XHJcbiAgICAvLyAgIGlkOiBlbnRpdHkuaWQsXHJcbiAgICAvLyAgIGVudGl0eU1ldGFkYXRhSWQ6IGVudGl0eS50eXBlLFxyXG4gICAgLy8gICBwYXJhbWV0ZXJzOiBlbnRpdHkucGFyYW1ldGVyc0dyb3Vwcy5mbGF0TWFwKGdycCA9PiBncnAucGFyYW1ldGVycylcclxuICAgIC8vICAgICAuZmlsdGVyKHBhcmFtZXRlciA9PiBpc1NpbXBsZVBhcmFtZXRlcihwYXJhbWV0ZXIpKVxyXG4gICAgLy8gICAgIC5tYXAocGFyYW1ldGVyID0+IHBhcmFtZXRlciBhcyBTaW1wbGVQYXJhbWV0ZXIpXHJcbiAgICAvLyAgICAgLm1hcChwYXJhbWV0ZXIgPT4gKHtcclxuICAgIC8vICAgICAgIHBhcmFtZXRlck1ldGFkYXRhSWQ6IHBhcmFtZXRlci5tZXRhZGF0YS5pZCxcclxuICAgIC8vICAgICAgIHZhbHVlOiBwYXJhbWV0ZXIudmFsdWVcclxuICAgIC8vICAgICB9KSlcclxuICAgIC8vIH07XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xyXG4gICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmdldFVybCgpfS9VcGRhdGVgO1xyXG4gICAgICBjb25zdCByZXF1ZXN0Qm9keSA9IGVudGl0eUZvclVwZGF0ZTtcclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICAvLyByZXNwb25zZVR5cGU6ICd0ZXh0JyBhcyAnanNvbicsXHJcbiAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgfSlcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMuaHR0cC5wb3N0PFVwZGF0ZVJlc3VsdD4odXJsLCByZXF1ZXN0Qm9keSwgb3B0aW9ucykuc3Vic2NyaWJlKFxyXG4gICAgICAgIHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgIG9ic2VydmVyLm5leHQocmVzcG9uc2UpO1xyXG4gICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbyhgVXBkYXRlIGVudGl0eSAnJHtlbnRpdHlGb3JVcGRhdGUuaWR9JyBjb21wbGV0ZWRgKTtcclxuICAgICAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcihgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgdXBkYXRlIGVudGl0eSAnJHtlbnRpdHlGb3JVcGRhdGUuaWR9J2AsIGVycm9yKTtcclxuICAgICAgICAgIG9ic2VydmVyLmVycm9yKGVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBiYWNrZ3JvdW5kVXBkYXRlKGJhY2tncm91bmRVcGRhdGVFbnRpdHlQYXJhbWV0ZXJzOiBCYWNrZ3JvdW5kVXBkYXRlRW50aXR5UGFyYW1ldGVyc1tdKVxyXG4gICAgOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuXHJcbiAgICBjb25zdCBzZWxmID0gdGhpcztcclxuXHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xyXG4gICAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmdldFVybCgpfS9CYWNrZ3JvdW5kVXBkYXRlYDsvLy8ke2ZpeGVkSWR9LyR7aWR9LyR7cHJlc2VudGF0aW9uRW50aXR5SWR9YDtcclxuICAgICAgY29uc3QgcmVxdWVzdEJvZHkgPSBiYWNrZ3JvdW5kVXBkYXRlRW50aXR5UGFyYW1ldGVycztcclxuXHJcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgLy8gcmVzcG9uc2VUeXBlOiAndGV4dCcgYXMgJ2pzb24nLFxyXG4gICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH07XHJcbiAgICAgIHNlbGYuc3RvcmUuZGlzcGF0Y2goYWRkQmFja2dyb3VuZFVwZGF0ZVByb2Nlc3MoKSk7XHJcblxyXG4gICAgICB0aGlzLmh0dHAucG9zdDxib29sZWFuPih1cmwsIHJlcXVlc3RCb2R5LCBvcHRpb25zKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlc3BvbnNlKTtcclxuICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oYEJhY2tncm91bmQgdXBkYXRlIGVudGl0aWVzIGNvbXBsZXRlZGApO1xyXG4gICAgICAgICAgc2VsZi5zdG9yZS5kaXNwYXRjaChlbmRCYWNrZ3JvdW5kVXBkYXRlUHJvY2VzcygpKTtcclxuXHJcbiAgICAgICAgICAvL29ic2VydmVyLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcihgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgYmFja2dyb3VuZCB1cGRhdGUgZW50aXRpZXNgLCBlcnJvcik7XHJcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYmFja2dyb3VuZFVwZGF0ZU9mU3RhdHVzZXMoYmFja2dyb3VuZFVwZGF0ZVN0YXR1czogQmFja2dyb3VuZFVwZGF0ZVN0YXR1c1tdKVxyXG4gIDogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcblxyXG4gIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG5cclxuICByZXR1cm4gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5nZXRVcmwoKX0vQmFja2dyb3VuZFVwZGF0ZU9mU3RhdHVzYDsvLy8ke2ZpeGVkSWR9LyR7aWR9LyR7cHJlc2VudGF0aW9uRW50aXR5SWR9YDtcclxuICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0gYmFja2dyb3VuZFVwZGF0ZVN0YXR1cztcclxuXHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICAvLyByZXNwb25zZVR5cGU6ICd0ZXh0JyBhcyAnanNvbicsXHJcbiAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgfSlcclxuICAgIH07XHJcbiAgICBzZWxmLnN0b3JlLmRpc3BhdGNoKGFkZEJhY2tncm91bmRVcGRhdGVQcm9jZXNzKCkpO1xyXG5cclxuICAgIHRoaXMuaHR0cC5wb3N0PGJvb2xlYW4+KHVybCwgcmVxdWVzdEJvZHksIG9wdGlvbnMpLnN1YnNjcmliZShcclxuICAgICAgKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChyZXNwb25zZSk7XHJcbiAgICAgICAgc2VsZi5sb2dnZXIuaW5mbyhgQmFja2dyb3VuZCB1cGRhdGUgZW50aXRpZXMgY29tcGxldGVkYCk7XHJcbiAgICAgICAgc2VsZi5zdG9yZS5kaXNwYXRjaChlbmRCYWNrZ3JvdW5kVXBkYXRlUHJvY2VzcygpKTtcclxuXHJcbiAgICAgICAgLy9vYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvciA9PiB7XHJcbiAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGJhY2tncm91bmQgdXBkYXRlIGVudGl0aWVzYCwgZXJyb3IpO1xyXG4gICAgICAgIG9ic2VydmVyLmVycm9yKGVycm9yKTtcclxuICAgICAgICBzZWxmLnN0b3JlLmRpc3BhdGNoKGVuZEJhY2tncm91bmRVcGRhdGVQcm9jZXNzKCkpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH0pO1xyXG59XHJcblxyXG5cclxuICBwdWJsaWMgdXBkYXRlRW50aXRpZXNTdGF0dXMoc3RhdHVzSWQ6IG51bWJlciwgZW50aXRpZXNTdGF0dXM6IEVudGl0eVN0YXR1c1tdKVxyXG4gICAgOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgY29uc3QgdXBkYXRlVXNlciA9IHRoaXMuZ2l2ZW5OYW1lO1xyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcclxuICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy5nZXRVcmwoKX0vVXBkYXRlRW50aXRpZXNTdGF0dXNgO1xyXG4gICAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHsgc3RhdHVzSWQsIHVwZGF0ZVVzZXIsIGVudGl0aWVzU3RhdHVzIH07XHJcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcgYXMgJ2pzb24nLFxyXG4gICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLmh0dHAucG9zdDxhbnk+KHVybCwgcmVxdWVzdEJvZHksIG9wdGlvbnMpLnN1YnNjcmliZShcclxuICAgICAgICByZXNwb25zZSA9PiB7XHJcbiAgICAgICAgICBvYnNlcnZlci5uZXh0KHJlc3BvbnNlKTtcclxuICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oYFVwZGF0ZSBlbnRpdHkgY29tcGxldGVkYCk7XHJcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoYEFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHVwZGF0ZSBlbnRpdHlgLCBlcnJvcik7XHJcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2l2ZW5OYW1lKCkge1xyXG4gICAgY29uc3QgY2xhaW1zID0gdGhpcy5vYXV0aFNlcnZpY2UuZ2V0SWRlbnRpdHlDbGFpbXMoKSBhcyB7IGdpdmVuX25hbWUgOiBhbnl9O1xyXG4gICAgaWYgKCFjbGFpbXMpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2xhaW1zWydnaXZlbl9uYW1lJ107XHJcbiAgfVxyXG5cclxufVxyXG5cclxuIl19