UNPKG

@experteam-mx/ngx-services

Version:

Angular common services for Experteam apps

104 lines 14.4 kB
import { Inject, Injectable } from '@angular/core'; import { map } from 'rxjs'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common/http"; export class ApiNotificationsService { environments; http; constructor(environments, http) { this.environments = environments; this.http = http; } /** * Retrieves the URL for the notifications API from the environment settings. * If the URL is not defined, an empty string is returned. * * @return {string} The API Notifications URL or an empty string if not defined. */ get url() { return this.environments.apiNotificationsUrl ?? ''; } /** * Retrieves notifications based on the provided query parameters. * * @param {QueryParams} params - The query parameters used to filter and retrieve notifications. * @return {Observable<NotificationsOut>} An observable that emits the fetched notifications. */ getNotifications(params) { return this.http.get(`${this.url}/notifications`, { params }) .pipe(map(({ data }) => data)); } /** * Sends a notification request to the server using the provided body. * * @param {NotificationIn} body - The notification data to be sent in the request body. * @return {Observable<NotificationOut>} An observable emitting the response containing the notification output data. */ postNotification(body) { return this.http.post(`${this.url}/notifications`, { body }) .pipe(map(({ data }) => data)); } /** * Sends a PUT request to update a notification with the provided ID and body. * * @param {number} id - The unique identifier of the notification to be updated. * @param {NotificationIn} body - The data to update the notification with. * @return {Observable<NotificationOut>} An observable containing the updated notification data. */ putNotification(id, body) { return this.http.put(`${this.url}/notifications/${id}`, { body }) .pipe(map(({ data }) => data)); } /** * Deletes a notification by its unique identifier. * * @param {number} id - The unique identifier of the notification to delete. * @return {Observable<{}>} An observable that emits the response after deleting the notification. */ deleteNotification(id) { return this.http.delete(`${this.url}/notifications/${id}`) .pipe(map(({ data }) => data)); } /** * Marks the notification as finished for the specified notification ID. * * @param {number} id - The unique identifier of the notification to be marked as finished. * @return {Observable<NotificationOut>} An Observable emitting the updated notification object. */ putNotificationFinish(id) { return this.http.put(`${this.url}/notifications/finish/${id}`, {}) .pipe(map(({ data }) => data)); } /** * Sends a POST request to create or update notification configurations. * * @param {NotificationConfigurationIn} body - The notification configuration payload to be sent in the request. * @return {Observable<NotificationConfigurationOut>} An observable emitting the response containing the created or updated notification configuration. */ postNotificationConfigurations(body) { return this.http.post(`${this.url}/notification-configurations`, { body }) .pipe(map(({ data }) => data)); } /** * Retrieves the notification types based on the provided query parameters. * * @param {QueryParams} params - The query parameters for fetching the notification types. * @return {Observable<NotificationsTypeOut>} An observable that emits the fetched notification types. */ getNotificationsType(params) { return this.http.get(`${this.url}/notifications-type`, { params }) .pipe(map(({ data }) => data)); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiNotificationsService, deps: [{ token: 'env' }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiNotificationsService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ApiNotificationsService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: undefined, decorators: [{ type: Inject, args: ['env'] }] }, { type: i1.HttpClient }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLW5vdGlmaWNhdGlvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V4cGVydGVhbS1teC9uZ3gtc2VydmljZXMvc3JjL2xpYi9hcGlzL2FwaS1ub3RpZmljYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFXbEQsT0FBTyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQTs7O0FBS3RDLE1BQU0sT0FBTyx1QkFBdUI7SUFFVDtJQUNmO0lBRlYsWUFDeUIsWUFBeUIsRUFDeEMsSUFBZ0I7UUFERCxpQkFBWSxHQUFaLFlBQVksQ0FBYTtRQUN4QyxTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3RCLENBQUM7SUFFTDs7Ozs7T0FLRztJQUNILElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUE7SUFDcEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZ0JBQWdCLENBQUUsTUFBbUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBK0IsR0FBRyxJQUFJLENBQUMsR0FBRyxnQkFBZ0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO2FBQ3hGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGdCQUFnQixDQUFFLElBQW9CO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQThCLEdBQUcsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQzthQUN0RixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsZUFBZSxDQUFFLEVBQVUsRUFBRSxJQUFvQjtRQUMvQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUE4QixHQUFHLElBQUksQ0FBQyxHQUFHLGtCQUFrQixFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQzNGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGtCQUFrQixDQUFFLEVBQVU7UUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBaUIsR0FBRyxJQUFJLENBQUMsR0FBRyxrQkFBa0IsRUFBRSxFQUFFLENBQUM7YUFDdkUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gscUJBQXFCLENBQUUsRUFBVTtRQUMvQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUE4QixHQUFHLElBQUksQ0FBQyxHQUFHLHlCQUF5QixFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7YUFDNUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsOEJBQThCLENBQUUsSUFBaUM7UUFDL0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBMkMsR0FBRyxJQUFJLENBQUMsR0FBRyw4QkFBOEIsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO2FBQ2pILElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILG9CQUFvQixDQUFFLE1BQW1CO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQW1DLEdBQUcsSUFBSSxDQUFDLEdBQUcscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUNqRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNsQyxDQUFDO3dHQTVGVSx1QkFBdUIsa0JBRXhCLEtBQUs7NEdBRkosdUJBQXVCLGNBRnRCLE1BQU07OzRGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdJLE1BQU07MkJBQUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcclxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgRW52aXJvbm1lbnQgfSBmcm9tICcuLi9uZ3gtc2VydmljZXMubW9kZWxzJ1xyXG5pbXBvcnQgeyBBcGlTdWNjZXNzLCBRdWVyeVBhcmFtcyB9IGZyb20gJy4vbW9kZWxzL2FwaS5tb2RlbHMnXHJcbmltcG9ydCB7XHJcbiAgTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkluLFxyXG4gIE5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25PdXQsXHJcbiAgTm90aWZpY2F0aW9uSW4sXHJcbiAgTm90aWZpY2F0aW9uT3V0LFxyXG4gIE5vdGlmaWNhdGlvbnNPdXQsXHJcbiAgTm90aWZpY2F0aW9uc1R5cGVPdXRcclxufSBmcm9tICcuL21vZGVscy9hcGktbm90aWZpY2F0aW9ucy50eXBlcydcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFwaU5vdGlmaWNhdGlvbnNTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvciAoXHJcbiAgICBASW5qZWN0KCdlbnYnKSBwcml2YXRlIGVudmlyb25tZW50czogRW52aXJvbm1lbnQsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnRcclxuICApIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIFVSTCBmb3IgdGhlIG5vdGlmaWNhdGlvbnMgQVBJIGZyb20gdGhlIGVudmlyb25tZW50IHNldHRpbmdzLlxyXG4gICAqIElmIHRoZSBVUkwgaXMgbm90IGRlZmluZWQsIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC5cclxuICAgKlxyXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIEFQSSBOb3RpZmljYXRpb25zIFVSTCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgbm90IGRlZmluZWQuXHJcbiAgICovXHJcbiAgZ2V0IHVybCAoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmVudmlyb25tZW50cy5hcGlOb3RpZmljYXRpb25zVXJsID8/ICcnXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgbm90aWZpY2F0aW9ucyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7UXVlcnlQYXJhbXN9IHBhcmFtcyAtIFRoZSBxdWVyeSBwYXJhbWV0ZXJzIHVzZWQgdG8gZmlsdGVyIGFuZCByZXRyaWV2ZSBub3RpZmljYXRpb25zLlxyXG4gICAqIEByZXR1cm4ge09ic2VydmFibGU8Tm90aWZpY2F0aW9uc091dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZmV0Y2hlZCBub3RpZmljYXRpb25zLlxyXG4gICAqL1xyXG4gIGdldE5vdGlmaWNhdGlvbnMgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbnNPdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVN1Y2Nlc3M8Tm90aWZpY2F0aW9uc091dD4+KGAke3RoaXMudXJsfS9ub3RpZmljYXRpb25zYCwgeyBwYXJhbXMgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kcyBhIG5vdGlmaWNhdGlvbiByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgdXNpbmcgdGhlIHByb3ZpZGVkIGJvZHkuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge05vdGlmaWNhdGlvbklufSBib2R5IC0gVGhlIG5vdGlmaWNhdGlvbiBkYXRhIHRvIGJlIHNlbnQgaW4gdGhlIHJlcXVlc3QgYm9keS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbk91dD59IEFuIG9ic2VydmFibGUgZW1pdHRpbmcgdGhlIHJlc3BvbnNlIGNvbnRhaW5pbmcgdGhlIG5vdGlmaWNhdGlvbiBvdXRwdXQgZGF0YS5cclxuICAgKi9cclxuICBwb3N0Tm90aWZpY2F0aW9uIChib2R5OiBOb3RpZmljYXRpb25Jbik6IE9ic2VydmFibGU8Tm90aWZpY2F0aW9uT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxOb3RpZmljYXRpb25PdXQ+PihgJHt0aGlzLnVybH0vbm90aWZpY2F0aW9uc2AsIHsgYm9keSB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgUFVUIHJlcXVlc3QgdG8gdXBkYXRlIGEgbm90aWZpY2F0aW9uIHdpdGggdGhlIHByb3ZpZGVkIElEIGFuZCBib2R5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBub3RpZmljYXRpb24gdG8gYmUgdXBkYXRlZC5cclxuICAgKiBAcGFyYW0ge05vdGlmaWNhdGlvbklufSBib2R5IC0gVGhlIGRhdGEgdG8gdXBkYXRlIHRoZSBub3RpZmljYXRpb24gd2l0aC5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbk91dD59IEFuIG9ic2VydmFibGUgY29udGFpbmluZyB0aGUgdXBkYXRlZCBub3RpZmljYXRpb24gZGF0YS5cclxuICAgKi9cclxuICBwdXROb3RpZmljYXRpb24gKGlkOiBudW1iZXIsIGJvZHk6IE5vdGlmaWNhdGlvbkluKTogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25PdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8Tm90aWZpY2F0aW9uT3V0Pj4oYCR7dGhpcy51cmx9L25vdGlmaWNhdGlvbnMvJHtpZH1gLCB7IGJvZHkgfSlcclxuICAgICAgLnBpcGUobWFwKCh7IGRhdGEgfSkgPT4gZGF0YSkpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGVzIGEgbm90aWZpY2F0aW9uIGJ5IGl0cyB1bmlxdWUgaWRlbnRpZmllci5cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgbm90aWZpY2F0aW9uIHRvIGRlbGV0ZS5cclxuICAgKiBAcmV0dXJuIHtPYnNlcnZhYmxlPHt9Pn0gQW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSByZXNwb25zZSBhZnRlciBkZWxldGluZyB0aGUgbm90aWZpY2F0aW9uLlxyXG4gICAqL1xyXG4gIGRlbGV0ZU5vdGlmaWNhdGlvbiAoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8e30+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPEFwaVN1Y2Nlc3M8e30+PihgJHt0aGlzLnVybH0vbm90aWZpY2F0aW9ucy8ke2lkfWApXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWFya3MgdGhlIG5vdGlmaWNhdGlvbiBhcyBmaW5pc2hlZCBmb3IgdGhlIHNwZWNpZmllZCBub3RpZmljYXRpb24gSUQuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge251bWJlcn0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIG5vdGlmaWNhdGlvbiB0byBiZSBtYXJrZWQgYXMgZmluaXNoZWQuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxOb3RpZmljYXRpb25PdXQ+fSBBbiBPYnNlcnZhYmxlIGVtaXR0aW5nIHRoZSB1cGRhdGVkIG5vdGlmaWNhdGlvbiBvYmplY3QuXHJcbiAgICovXHJcbiAgcHV0Tm90aWZpY2F0aW9uRmluaXNoIChpZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25PdXQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0PEFwaVN1Y2Nlc3M8Tm90aWZpY2F0aW9uT3V0Pj4oYCR7dGhpcy51cmx9L25vdGlmaWNhdGlvbnMvZmluaXNoLyR7aWR9YCwge30pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZHMgYSBQT1NUIHJlcXVlc3QgdG8gY3JlYXRlIG9yIHVwZGF0ZSBub3RpZmljYXRpb24gY29uZmlndXJhdGlvbnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0ge05vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25Jbn0gYm9keSAtIFRoZSBub3RpZmljYXRpb24gY29uZmlndXJhdGlvbiBwYXlsb2FkIHRvIGJlIHNlbnQgaW4gdGhlIHJlcXVlc3QuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxOb3RpZmljYXRpb25Db25maWd1cmF0aW9uT3V0Pn0gQW4gb2JzZXJ2YWJsZSBlbWl0dGluZyB0aGUgcmVzcG9uc2UgY29udGFpbmluZyB0aGUgY3JlYXRlZCBvciB1cGRhdGVkIG5vdGlmaWNhdGlvbiBjb25maWd1cmF0aW9uLlxyXG4gICAqL1xyXG4gIHBvc3ROb3RpZmljYXRpb25Db25maWd1cmF0aW9ucyAoYm9keTogTm90aWZpY2F0aW9uQ29uZmlndXJhdGlvbkluKTogT2JzZXJ2YWJsZTxOb3RpZmljYXRpb25Db25maWd1cmF0aW9uT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8QXBpU3VjY2VzczxOb3RpZmljYXRpb25Db25maWd1cmF0aW9uT3V0Pj4oYCR7dGhpcy51cmx9L25vdGlmaWNhdGlvbi1jb25maWd1cmF0aW9uc2AsIHsgYm9keSB9KVxyXG4gICAgICAucGlwZShtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSlcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgbm90aWZpY2F0aW9uIHR5cGVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHtRdWVyeVBhcmFtc30gcGFyYW1zIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlcnMgZm9yIGZldGNoaW5nIHRoZSBub3RpZmljYXRpb24gdHlwZXMuXHJcbiAgICogQHJldHVybiB7T2JzZXJ2YWJsZTxOb3RpZmljYXRpb25zVHlwZU91dD59IEFuIG9ic2VydmFibGUgdGhhdCBlbWl0cyB0aGUgZmV0Y2hlZCBub3RpZmljYXRpb24gdHlwZXMuXHJcbiAgICovXHJcbiAgZ2V0Tm90aWZpY2F0aW9uc1R5cGUgKHBhcmFtczogUXVlcnlQYXJhbXMpOiBPYnNlcnZhYmxlPE5vdGlmaWNhdGlvbnNUeXBlT3V0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxBcGlTdWNjZXNzPE5vdGlmaWNhdGlvbnNUeXBlT3V0Pj4oYCR7dGhpcy51cmx9L25vdGlmaWNhdGlvbnMtdHlwZWAsIHsgcGFyYW1zIH0pXHJcbiAgICAgIC5waXBlKG1hcCgoeyBkYXRhIH0pID0+IGRhdGEpKVxyXG4gIH1cclxufVxyXG4iXX0=