@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
184 lines • 22 kB
JavaScript
import { Injectable } from '@angular/core';
import { map } from 'rxjs/operators';
import { AbstractResourceService } from '../abstract-endpoint/abstract-resource.service';
import * as i0 from "@angular/core";
import * as i1 from "../resource-provider.service";
import * as i2 from "../../configuration/configuration.service";
export class UserResourceService extends AbstractResourceService {
constructor(provider, configService) {
super('user', provider, configService);
}
/**
* Assign authority to the user
*
* **Request Type:** POST
*
* **Request URL:** {{baseUrl}}/api/users/{id}/authority/assign
*/
assignAuthority(userId, body, realmId = 'default', params) {
return this._resourceProvider.post$('users/' + realmId + '/' + userId + '/authority', this.SERVER_URL, body, params, // TODO 2025-05-08 refactor this for exact realm id
{ 'Content-Type': 'text/plain' })
.pipe(map(r => this.changeType(r, undefined)));
}
/**
* Assign role to the user
*
* **Request Type:** POST
*
* **Request URL:** {{baseUrl}}/api/users/{id}/role/assign
*/
assignRoles(userId, realmId, body, params) {
return this._resourceProvider.put$('users/' + realmId + '/' + userId + '/roles', this.SERVER_URL, body, params)
.pipe(map(r => this.changeType(r, undefined)));
}
/**
* Get all authorities of the system
*
* **Request Type:** GET
*
* **Request URL:** {{baseUrl}}/api/users/authority
*/
getAllAuthorities() {
return this._resourceProvider.get$('users/authority', this.SERVER_URL)
.pipe(map(r => this.changeType(r, 'authorities')));
}
/**
* Get all users
*
* **Request Type:** GET
*
* **Request URL:** {{baseUrl}}/api/user
*/
getAll(params) {
return this._resourceProvider.get$('users', this.SERVER_URL, params)
.pipe(map(r => this.mapToPage(r)));
}
/**
* Get all users with specified roles
*
* **Request Type:** POST
*
* **Request URL:** {{baseUrl}}/api/users/role
*/
getAllWithRole(body, params) {
return this._resourceProvider.post$('users/role', this.SERVER_URL, body, params)
.pipe(map(r => this.changeType(r, 'users')));
}
/**
* Get logged user
*
* **Request Type:** GET
*
* **Request URL:** {{baseUrl}}/api/users/me
*/
getLoggedUser(params) {
return this._resourceProvider.get$('users/me', this.SERVER_URL, params).pipe(map(r => this.changeType(r, undefined)));
}
/**
* Get logged user
*
* **Request Type:** GET
*
* **Request URL:** {{baseUrl}}/api/users/me
*/
getPublicLoggedUser(params) {
return this._resourceProvider.get$('public/users/me', this.SERVER_URL, params).pipe(map(r => this.changeType(r, undefined)));
}
/**
* Get user by id
*
* **Request Type:** GET
*
* **Request URL:** {{baseUrl}}/api/users/{id}
*/
getUser(userId, realmId = 'default', params) {
return this._resourceProvider.get$('users/' + realmId + '/' + userId, this.SERVER_URL, params)
.pipe(map(r => this.changeType(r, undefined)));
}
/**
* Get user's preferences
*
* **Request Type:** GET
*
* **Request URL:** {{baseUrl}}/api/users/preferences
*/
getPreferences(params) {
return this._resourceProvider.get$('users/preferences', this.SERVER_URL, params)
.pipe(map(r => this.changeType(r, undefined)));
}
/**
* Set user's preferences
*
* **Request Type:** POST
*
* **Request URL:** {{baseUrl}}/api/users/preferences
*/
setPreferences(body, params) {
return this._resourceProvider.post$('users/preferences', this.SERVER_URL, body, params)
.pipe(map(r => this.changeType(r, undefined)));
}
/**
* Get user's preferences
*
* **Request Type:** GET
*
* **Request URL:** {{baseUrl}}/api/users/preferences
*/
getPublicPreferences(params) {
return this._resourceProvider.get$('public/users/preferences', this.SERVER_URL, params)
.pipe(map(r => this.changeType(r, undefined)));
}
/**
* Set user's preferences
*
* **Request Type:** POST
*
* **Request URL:** {{baseUrl}}/api/users/preferences
*/
setPublicPreferences(body, params) {
return this._resourceProvider.post$('public/users/preferences', this.SERVER_URL, body, params)
.pipe(map(r => this.changeType(r, undefined)));
}
/**
* Generic user search
*
* **Request Type:** POST
*
* **Request URL:** {{baseUrl}}/api/users/search
*/
search(body, params) {
return this._resourceProvider.post$('users/search', this.SERVER_URL, body, params)
.pipe(map(r => this.mapToPage(r)));
}
/**
* Update user
*
* **Request Type:** POST
*
* **Request URL:** {{baseUrl}}/api/users/{id}
*/
updateUser(userId, body, realmId = 'default', params) {
return this._resourceProvider.post$('users/' + realmId + '/' + userId, this.SERVER_URL, body, params) // TODO 2025-05-08 refactor this for exact realm id
.pipe(map(r => this.changeType(r, undefined)));
}
/**
* get all groups
*
* **Request Type:** GET
*
* **Request URL:** {{baseUrl}}/api/group/all
*/
getAllGroups(params) {
return this._resourceProvider.get$('group/all', this.SERVER_URL, params)
.pipe(map(r => this.changeType(r, undefined)));
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserResourceService, deps: [{ token: i1.ResourceProvider }, { token: i2.ConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserResourceService, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserResourceService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: () => [{ type: i1.ResourceProvider }, { type: i2.ConfigurationService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1yZXNvdXJjZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9yZXNvdXJjZXMvZW5naW5lLWVuZHBvaW50L3VzZXItcmVzb3VyY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQVFuQyxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQzs7OztBQU12RixNQUFNLE9BQU8sbUJBQW9CLFNBQVEsdUJBQXVCO0lBRTVELFlBQVksUUFBMEIsRUFBRSxhQUFtQztRQUN2RSxLQUFLLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksZUFBZSxDQUFDLE1BQWMsRUFBRSxJQUFZLEVBQUUsVUFBa0IsU0FBUyxFQUFFLE1BQWU7UUFDN0YsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLEdBQUcsR0FBRyxHQUFHLE1BQU0sR0FBRyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLG1EQUFtRDtRQUNwSyxFQUFDLGNBQWMsRUFBRSxZQUFZLEVBQUMsQ0FBQzthQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxXQUFXLENBQUMsTUFBYyxFQUFFLE9BQWUsRUFBRSxJQUFZLEVBQUUsTUFBZTtRQUM3RSxPQUFP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SSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDO2FBQzdFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksVUFBVSxDQUFDLE1BQWMsRUFBRSxJQUFZLEVBQUUsVUFBa0IsU0FBUyxFQUFFLE1BQWU7UUFDeEYsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxPQUFPLEdBQUcsR0FBRyxHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxtREFBbUQ7YUFDcEosSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksWUFBWSxDQUFDLE1BQWU7UUFDL0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQzthQUNuRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7d0dBekxRLG1CQUFtQjs0R0FBbkIsbUJBQW1CLGNBRmhCLE1BQU07OzRGQUVULG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1BhcmFtcywgUmVzb3VyY2VQcm92aWRlcn0gZnJvbSAnLi4vcmVzb3VyY2UtcHJvdmlkZXIuc2VydmljZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi9jb25maWd1cmF0aW9uL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XG5pbXBvcnQge01lc3NhZ2VSZXNvdXJjZX0gZnJvbSAnLi4vaW50ZXJmYWNlL21lc3NhZ2UtcmVzb3VyY2UnO1xuaW1wb3J0IHtBdXRob3JpdHl9IGZyb20gJy4uL2ludGVyZmFjZS9hdXRob3JpdHknO1xuaW1wb3J0IHtQcmVmZXJlbmNlc30gZnJvbSAnLi4vaW50ZXJmYWNlL3ByZWZlcmVuY2VzJztcbmltcG9ydCB7UGFnZX0gZnJvbSAnLi4vaW50ZXJmYWNlL3BhZ2UnO1xuaW1wb3J0IHtHcm91cHNJbnRlcmZhY2V9IGZyb20gJy4uL2ludGVyZmFjZS9ncm91cCc7XG5pbXBvcnQge0Fic3RyYWN0UmVzb3VyY2VTZXJ2aWNlfSBmcm9tICcuLi9hYnN0cmFjdC1lbmRwb2ludC9hYnN0cmFjdC1yZXNvdXJjZS5zZXJ2aWNlJztcbmltcG9ydCB7VXNlclJlc291cmNlfSBmcm9tICcuLi9pbnRlcmZhY2UvdXNlci1yZXNvdXJjZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJSZXNvdXJjZVNlcnZpY2UgZXh0ZW5kcyBBYnN0cmFjdFJlc291cmNlU2VydmljZSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm92aWRlcjogUmVzb3VyY2VQcm92aWRlciwgY29uZmlnU2VydmljZTogQ29uZmlndXJhdGlvblNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoJ3VzZXInLCBwcm92aWRlciwgY29uZmlnU2VydmljZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXNzaWduIGF1dGhvcml0eSB0byB0aGUgdXNlclxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFR5cGU6KiogUE9TVFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFVSTDoqKiB7e2Jhc2VVcmx9fS9hcGkvdXNlcnMve2lkfS9hdXRob3JpdHkvYXNzaWduXG4gICAgICovXG4gICAgcHVibGljIGFzc2lnbkF1dGhvcml0eSh1c2VySWQ6IHN0cmluZywgYm9keTogb2JqZWN0LCByZWFsbUlkOiBzdHJpbmcgPSAnZGVmYXVsdCcsIHBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8TWVzc2FnZVJlc291cmNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLnBvc3QkKCd1c2Vycy8nICsgcmVhbG1JZCArICcvJyArIHVzZXJJZCArICcvYXV0aG9yaXR5JywgdGhpcy5TRVJWRVJfVVJMLCBib2R5LCBwYXJhbXMsIC8vIFRPRE8gMjAyNS0wNS0wOCByZWZhY3RvciB0aGlzIGZvciBleGFjdCByZWFsbSBpZFxuICAgICAgICAgICAgeydDb250ZW50LVR5cGUnOiAndGV4dC9wbGFpbid9KVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBc3NpZ24gcm9sZSB0byB0aGUgdXNlclxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFR5cGU6KiogUE9TVFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFVSTDoqKiB7e2Jhc2VVcmx9fS9hcGkvdXNlcnMve2lkfS9yb2xlL2Fzc2lnblxuICAgICAqL1xuICAgIHB1YmxpYyBhc3NpZ25Sb2xlcyh1c2VySWQ6IHN0cmluZywgcmVhbG1JZDogc3RyaW5nLCBib2R5OiBvYmplY3QsIHBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8TWVzc2FnZVJlc291cmNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLnB1dCQoJ3VzZXJzLycgKyByZWFsbUlkICsgJy8nICsgdXNlcklkICsgJy9yb2xlcycsIHRoaXMuU0VSVkVSX1VSTCwgYm9keSwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIGF1dGhvcml0aWVzIG9mIHRoZSBzeXN0ZW1cbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBUeXBlOioqIEdFVFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFVSTDoqKiB7e2Jhc2VVcmx9fS9hcGkvdXNlcnMvYXV0aG9yaXR5XG4gICAgICovXG4gICAgcHVibGljIGdldEFsbEF1dGhvcml0aWVzKCk6IE9ic2VydmFibGU8QXJyYXk8QXV0aG9yaXR5Pj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5nZXQkKCd1c2Vycy9hdXRob3JpdHknLCB0aGlzLlNFUlZFUl9VUkwpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgJ2F1dGhvcml0aWVzJykpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIHVzZXJzXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBHRVRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3VzZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QWxsKHBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8UGFnZTxVc2VyUmVzb3VyY2U+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLmdldCQoJ3VzZXJzJywgdGhpcy5TRVJWRVJfVVJMLCBwYXJhbXMpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLm1hcFRvUGFnZTxVc2VyUmVzb3VyY2U+KHIpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCB1c2VycyB3aXRoIHNwZWNpZmllZCByb2xlc1xuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFR5cGU6KiogUE9TVFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFVSTDoqKiB7e2Jhc2VVcmx9fS9hcGkvdXNlcnMvcm9sZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRBbGxXaXRoUm9sZShib2R5OiBvYmplY3QsIHBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8QXJyYXk8VXNlclJlc291cmNlPj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5wb3N0JCgndXNlcnMvcm9sZScsIHRoaXMuU0VSVkVSX1VSTCwgYm9keSwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsICd1c2VycycpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGxvZ2dlZCB1c2VyXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBHRVRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3VzZXJzL21lXG4gICAgICovXG4gICAgcHVibGljIGdldExvZ2dlZFVzZXIocGFyYW1zPzogUGFyYW1zKTogT2JzZXJ2YWJsZTxVc2VyUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgndXNlcnMvbWUnLCB0aGlzLlNFUlZFUl9VUkwsIHBhcmFtcykucGlwZShcbiAgICAgICAgICAgIG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGxvZ2dlZCB1c2VyXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBHRVRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3VzZXJzL21lXG4gICAgICovXG4gICAgcHVibGljIGdldFB1YmxpY0xvZ2dlZFVzZXIocGFyYW1zPzogUGFyYW1zKTogT2JzZXJ2YWJsZTxVc2VyUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgncHVibGljL3VzZXJzL21lJywgdGhpcy5TRVJWRVJfVVJMLCBwYXJhbXMpLnBpcGUoXG4gICAgICAgICAgICBtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB1c2VyIGJ5IGlkXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBHRVRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3VzZXJzL3tpZH1cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VXNlcih1c2VySWQ6IHN0cmluZywgcmVhbG1JZDogc3RyaW5nID0gJ2RlZmF1bHQnLCBwYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPFVzZXJSZXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5nZXQkKCd1c2Vycy8nICsgcmVhbG1JZCArICcvJyArIHVzZXJJZCwgdGhpcy5TRVJWRVJfVVJMLCBwYXJhbXMpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB1c2VyJ3MgcHJlZmVyZW5jZXNcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBUeXBlOioqIEdFVFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFVSTDoqKiB7e2Jhc2VVcmx9fS9hcGkvdXNlcnMvcHJlZmVyZW5jZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UHJlZmVyZW5jZXMocGFyYW1zPzogUGFyYW1zKTogT2JzZXJ2YWJsZTxQcmVmZXJlbmNlcz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5nZXQkKCd1c2Vycy9wcmVmZXJlbmNlcycsIHRoaXMuU0VSVkVSX1VSTCwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXQgdXNlcidzIHByZWZlcmVuY2VzXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBQT1NUXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVVJMOioqIHt7YmFzZVVybH19L2FwaS91c2Vycy9wcmVmZXJlbmNlc1xuICAgICAqL1xuICAgIHB1YmxpYyBzZXRQcmVmZXJlbmNlcyhib2R5OiBvYmplY3QsIHBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8TWVzc2FnZVJlc291cmNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVByb3ZpZGVyLnBvc3QkKCd1c2Vycy9wcmVmZXJlbmNlcycsIHRoaXMuU0VSVkVSX1VSTCwgYm9keSwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdXNlcidzIHByZWZlcmVuY2VzXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBHRVRcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3VzZXJzL3ByZWZlcmVuY2VzXG4gICAgICovXG4gICAgcHVibGljIGdldFB1YmxpY1ByZWZlcmVuY2VzKHBhcmFtcz86IFBhcmFtcyk6IE9ic2VydmFibGU8UHJlZmVyZW5jZXM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIuZ2V0JCgncHVibGljL3VzZXJzL3ByZWZlcmVuY2VzJywgdGhpcy5TRVJWRVJfVVJMLCBwYXJhbXMpXG4gICAgICAgICAgICAucGlwZShtYXAociA9PiB0aGlzLmNoYW5nZVR5cGUociwgdW5kZWZpbmVkKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldCB1c2VyJ3MgcHJlZmVyZW5jZXNcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBUeXBlOioqIFBPU1RcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBVUkw6Kioge3tiYXNlVXJsfX0vYXBpL3VzZXJzL3ByZWZlcmVuY2VzXG4gICAgICovXG4gICAgcHVibGljIHNldFB1YmxpY1ByZWZlcmVuY2VzKGJvZHk6IG9iamVjdCwgcGFyYW1zPzogUGFyYW1zKTogT2JzZXJ2YWJsZTxNZXNzYWdlUmVzb3VyY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIucG9zdCQoJ3B1YmxpYy91c2Vycy9wcmVmZXJlbmNlcycsIHRoaXMuU0VSVkVSX1VSTCwgYm9keSwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5jaGFuZ2VUeXBlKHIsIHVuZGVmaW5lZCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmljIHVzZXIgc2VhcmNoXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBQT1NUXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVVJMOioqIHt7YmFzZVVybH19L2FwaS91c2Vycy9zZWFyY2hcbiAgICAgKi9cbiAgICBwdWJsaWMgc2VhcmNoKGJvZHk6IG9iamVjdCwgcGFyYW1zPzogUGFyYW1zKTogT2JzZXJ2YWJsZTxQYWdlPFVzZXJSZXNvdXJjZT4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlUHJvdmlkZXIucG9zdCQoJ3VzZXJzL3NlYXJjaCcsIHRoaXMuU0VSVkVSX1VSTCwgYm9keSwgcGFyYW1zKVxuICAgICAgICAgICAgLnBpcGUobWFwKHIgPT4gdGhpcy5tYXBUb1BhZ2U8VXNlclJlc291cmNlPihyKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZSB1c2VyXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVHlwZToqKiBQT1NUXG4gICAgICpcbiAgICAgKiAqKlJlcXVlc3QgVVJMOioqIHt7YmFzZVVybH19L2FwaS91c2Vycy97aWR9XG4gICAgICovXG4gICAgcHVibGljIHVwZGF0ZVVzZXIodXNlcklkOiBzdHJpbmcsIGJvZHk6IG9iamVjdCwgcmVhbG1JZDogc3RyaW5nID0gJ2RlZmF1bHQnLCBwYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPFVzZXJSZXNvdXJjZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5wb3N0JCgndXNlcnMvJyArIHJlYWxtSWQgKyAnLycgKyB1c2VySWQsIHRoaXMuU0VSVkVSX1VSTCwgYm9keSwgcGFyYW1zKSAvLyBUT0RPIDIwMjUtMDUtMDggcmVmYWN0b3IgdGhpcyBmb3IgZXhhY3QgcmVhbG0gaWRcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2V0IGFsbCBncm91cHNcbiAgICAgKlxuICAgICAqICoqUmVxdWVzdCBUeXBlOioqIEdFVFxuICAgICAqXG4gICAgICogKipSZXF1ZXN0IFVSTDoqKiB7e2Jhc2VVcmx9fS9hcGkvZ3JvdXAvYWxsXG4gICAgICovXG4gICAgcHVibGljIGdldEFsbEdyb3VwcyhwYXJhbXM/OiBQYXJhbXMpOiBPYnNlcnZhYmxlPEdyb3Vwc0ludGVyZmFjZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VQcm92aWRlci5nZXQkKCdncm91cC9hbGwnLCB0aGlzLlNFUlZFUl9VUkwsIHBhcmFtcylcbiAgICAgICAgICAgIC5waXBlKG1hcChyID0+IHRoaXMuY2hhbmdlVHlwZShyLCB1bmRlZmluZWQpKSk7XG4gICAgfVxuXG59XG4iXX0=