@veloceapps/api 5.0.13-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +3 -0
  2. package/bundles/veloceapps-api.umd.js +2597 -0
  3. package/bundles/veloceapps-api.umd.js.map +1 -0
  4. package/esm2015/index.js +27 -0
  5. package/esm2015/lib/api.module.js +95 -0
  6. package/esm2015/lib/services/account-api.service.js +50 -0
  7. package/esm2015/lib/services/catalog-admin-api.service.js +159 -0
  8. package/esm2015/lib/services/catalog-api.service.js +90 -0
  9. package/esm2015/lib/services/configuration-api.service.js +72 -0
  10. package/esm2015/lib/services/configuration-settings-api.service.js +52 -0
  11. package/esm2015/lib/services/context-api.service.js +26 -0
  12. package/esm2015/lib/services/delta-api.service.js +23 -0
  13. package/esm2015/lib/services/document-attachment-api.service.js +66 -0
  14. package/esm2015/lib/services/document-templates-api.service.js +284 -0
  15. package/esm2015/lib/services/endpoints-api.service.js +79 -0
  16. package/esm2015/lib/services/flows-api.service.js +24 -0
  17. package/esm2015/lib/services/org-info-api.service.js +20 -0
  18. package/esm2015/lib/services/picklists-api.service.js +38 -0
  19. package/esm2015/lib/services/price-api.service.js +63 -0
  20. package/esm2015/lib/services/procedures-api.service.js +93 -0
  21. package/esm2015/lib/services/product-api.service.js +153 -0
  22. package/esm2015/lib/services/product-model-api.service.js +232 -0
  23. package/esm2015/lib/services/quote-api.service.js +48 -0
  24. package/esm2015/lib/services/ramp-api.service.js +21 -0
  25. package/esm2015/lib/services/rule-groups-api.service.js +62 -0
  26. package/esm2015/lib/services/rules-api.service.js +81 -0
  27. package/esm2015/lib/services/salesforce-api.service.js +40 -0
  28. package/esm2015/lib/services/scripts-api.service.js +76 -0
  29. package/esm2015/lib/services/ui-templates-api.service.js +282 -0
  30. package/esm2015/lib/types/clone-request.types.js +2 -0
  31. package/esm2015/lib/types/delta-request.types.js +2 -0
  32. package/esm2015/lib/types/dto/configuration-settings-dto.types.js +22 -0
  33. package/esm2015/lib/types/dto/ui-template-dto.types.js +2 -0
  34. package/esm2015/lib/types/index.js +6 -0
  35. package/esm2015/lib/types/org-info.types.js +2 -0
  36. package/esm2015/lib/types/price.types.js +2 -0
  37. package/esm2015/lib/types/ramp-request.types.js +2 -0
  38. package/esm2015/lib/types/search-request.types.js +2 -0
  39. package/esm2015/lib/utils/ui-template.utils.js +13 -0
  40. package/esm2015/veloceapps-api.js +5 -0
  41. package/fesm2015/veloceapps-api.js +2139 -0
  42. package/fesm2015/veloceapps-api.js.map +1 -0
  43. package/index.d.ts +26 -0
  44. package/lib/api.module.d.ts +7 -0
  45. package/lib/services/account-api.service.d.ts +22 -0
  46. package/lib/services/catalog-admin-api.service.d.ts +34 -0
  47. package/lib/services/catalog-api.service.d.ts +20 -0
  48. package/lib/services/configuration-api.service.d.ts +18 -0
  49. package/lib/services/configuration-settings-api.service.d.ts +17 -0
  50. package/lib/services/context-api.service.d.ts +11 -0
  51. package/lib/services/delta-api.service.d.ts +12 -0
  52. package/lib/services/document-attachment-api.service.d.ts +16 -0
  53. package/lib/services/document-templates-api.service.d.ts +47 -0
  54. package/lib/services/endpoints-api.service.d.ts +21 -0
  55. package/lib/services/flows-api.service.d.ts +13 -0
  56. package/lib/services/org-info-api.service.d.ts +13 -0
  57. package/lib/services/picklists-api.service.d.ts +17 -0
  58. package/lib/services/price-api.service.d.ts +16 -0
  59. package/lib/services/procedures-api.service.d.ts +27 -0
  60. package/lib/services/product-api.service.d.ts +31 -0
  61. package/lib/services/product-model-api.service.d.ts +30 -0
  62. package/lib/services/quote-api.service.d.ts +25 -0
  63. package/lib/services/ramp-api.service.d.ts +13 -0
  64. package/lib/services/rule-groups-api.service.d.ts +18 -0
  65. package/lib/services/rules-api.service.d.ts +21 -0
  66. package/lib/services/salesforce-api.service.d.ts +17 -0
  67. package/lib/services/scripts-api.service.d.ts +21 -0
  68. package/lib/services/ui-templates-api.service.d.ts +49 -0
  69. package/lib/types/clone-request.types.d.ts +5 -0
  70. package/lib/types/delta-request.types.d.ts +5 -0
  71. package/lib/types/dto/configuration-settings-dto.types.d.ts +9 -0
  72. package/lib/types/dto/ui-template-dto.types.d.ts +6 -0
  73. package/lib/types/index.d.ts +5 -0
  74. package/lib/types/org-info.types.d.ts +26 -0
  75. package/lib/types/price.types.d.ts +5 -0
  76. package/lib/types/ramp-request.types.d.ts +13 -0
  77. package/lib/types/search-request.types.d.ts +8 -0
  78. package/lib/utils/ui-template.utils.d.ts +3 -0
  79. package/package.json +37 -0
  80. package/veloceapps-api.d.ts +5 -0
@@ -0,0 +1,66 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { map, tap } from 'rxjs/operators';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@veloceapps/core";
5
+ export class DocumentAttachmentApiService {
6
+ constructor(httpService, fileDownloadService) {
7
+ this.httpService = httpService;
8
+ this.fileDownloadService = fileDownloadService;
9
+ this.SERVICE_URL = '/attachments';
10
+ }
11
+ getAttachments(searchRequest) {
12
+ return this.httpService.api({
13
+ url: `${this.SERVICE_URL}/search`,
14
+ method: 'post',
15
+ body: searchRequest,
16
+ });
17
+ }
18
+ createAttachment(attachment, file, reportProgress) {
19
+ const formData = new FormData();
20
+ if (file) {
21
+ formData.append('file', file, file.name);
22
+ }
23
+ formData.append('attachment', new Blob([JSON.stringify(attachment)], {
24
+ type: 'application/json',
25
+ }));
26
+ return this.httpService.upload({
27
+ url: `${this.SERVICE_URL}`,
28
+ body: formData,
29
+ method: 'post',
30
+ observe: reportProgress ? 'events' : undefined,
31
+ reportProgress,
32
+ });
33
+ }
34
+ updateAttachment(id, attachment) {
35
+ return this.httpService.api({
36
+ url: `${this.SERVICE_URL}/${id}`,
37
+ body: attachment,
38
+ method: 'put',
39
+ });
40
+ }
41
+ getAttachmentFile(id, isPreventDownload) {
42
+ return this.httpService
43
+ .api({
44
+ url: `${this.SERVICE_URL}/${id}/file`,
45
+ responseType: isPreventDownload ? 'arraybuffer' : 'blob',
46
+ observe: isPreventDownload ? 'body' : 'response',
47
+ })
48
+ .pipe(tap(response => {
49
+ if (!isPreventDownload) {
50
+ this.fileDownloadService.processDownload(response);
51
+ }
52
+ }), map(response => (isPreventDownload ? new Blob([response.body || response]) : response.body || response)));
53
+ }
54
+ removeAttachment(id) {
55
+ return this.httpService.api({
56
+ url: `${this.SERVICE_URL}/${id}`,
57
+ method: 'delete',
58
+ });
59
+ }
60
+ }
61
+ DocumentAttachmentApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DocumentAttachmentApiService, deps: [{ token: i1.BaseHttpService }, { token: i1.FileDownloadService }], target: i0.ɵɵFactoryTarget.Injectable });
62
+ DocumentAttachmentApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DocumentAttachmentApiService });
63
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DocumentAttachmentApiService, decorators: [{
64
+ type: Injectable
65
+ }], ctorParameters: function () { return [{ type: i1.BaseHttpService }, { type: i1.FileDownloadService }]; } });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtYXR0YWNobWVudC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL3NyYy9saWIvc2VydmljZXMvZG9jdW1lbnQtYXR0YWNobWVudC1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUcxQyxNQUFNLE9BQU8sNEJBQTRCO0lBR3ZDLFlBQW9CLFdBQTRCLEVBQVUsbUJBQXdDO1FBQTlFLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUFVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFGakYsZ0JBQVcsR0FBRyxjQUFjLENBQUM7SUFFdUQsQ0FBQztJQUUvRixjQUFjLENBQUMsYUFBOEM7UUFDbEUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUMxQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxTQUFTO1lBQ2pDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLGFBQWE7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFVBQXNCLEVBQUUsSUFBVyxFQUFFLGNBQXdCO1FBQ25GLE1BQU0sUUFBUSxHQUFhLElBQUksUUFBUSxFQUFFLENBQUM7UUFFMUMsSUFBSSxJQUFJLEVBQUU7WUFDUixRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFDO1FBRUQsUUFBUSxDQUFDLE1BQU0sQ0FDYixZQUFZLEVBQ1osSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUU7WUFDckMsSUFBSSxFQUFFLGtCQUFrQjtTQUN6QixDQUFDLENBQ0gsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDN0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUMxQixJQUFJLEVBQUUsUUFBUTtZQUNkLE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQzlDLGNBQWM7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsRUFBVSxFQUFFLFVBQXNCO1FBQ3hELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDMUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUU7WUFDaEMsSUFBSSxFQUFFLFVBQVU7WUFDaEIsTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0saUJBQWlCLENBQUMsRUFBVSxFQUFFLGlCQUEyQjtRQUM5RCxPQUFPLElBQUksQ0FBQyxXQUFXO2FBQ3BCLEdBQUcsQ0FBQztZQUNILEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRSxPQUFPO1lBQ3JDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQ3hELE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVO1NBQ2pELENBQUM7YUFDRCxJQUFJLENBQ0gsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2IsSUFBSSxDQUFDLGlCQUFpQixFQUFFO2dCQUN0QixJQUFJLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3BEO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLENBQUMsQ0FDekcsQ0FBQztJQUNOLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxFQUFVO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDMUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUU7WUFDaEMsTUFBTSxFQUFFLFFBQVE7U0FDakIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7MEhBbEVVLDRCQUE0Qjs4SEFBNUIsNEJBQTRCOzRGQUE1Qiw0QkFBNEI7a0JBRHhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdHRhY2htZW50LCBCYXNlSHR0cFNlcnZpY2UsIEZpbGVEb3dubG9hZFNlcnZpY2UsIFRlbXBsYXRlQXR0YWNobWVudFNlYXJjaFJlcXVlc3QgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRBdHRhY2htZW50QXBpU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgU0VSVklDRV9VUkwgPSAnL2F0dGFjaG1lbnRzJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBTZXJ2aWNlOiBCYXNlSHR0cFNlcnZpY2UsIHByaXZhdGUgZmlsZURvd25sb2FkU2VydmljZTogRmlsZURvd25sb2FkU2VydmljZSkge31cblxuICBwdWJsaWMgZ2V0QXR0YWNobWVudHMoc2VhcmNoUmVxdWVzdDogVGVtcGxhdGVBdHRhY2htZW50U2VhcmNoUmVxdWVzdCk6IE9ic2VydmFibGU8QXR0YWNobWVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIHVybDogYCR7dGhpcy5TRVJWSUNFX1VSTH0vc2VhcmNoYCxcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgYm9keTogc2VhcmNoUmVxdWVzdCxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVBdHRhY2htZW50KGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQsIGZpbGU/OiBGaWxlLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgIGlmIChmaWxlKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlLCBmaWxlLm5hbWUpO1xuICAgIH1cblxuICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICdhdHRhY2htZW50JyxcbiAgICAgIG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShhdHRhY2htZW50KV0sIHtcbiAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnVwbG9hZCh7XG4gICAgICB1cmw6IGAke3RoaXMuU0VSVklDRV9VUkx9YCxcbiAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICBvYnNlcnZlOiByZXBvcnRQcm9ncmVzcyA/ICdldmVudHMnIDogdW5kZWZpbmVkLFxuICAgICAgcmVwb3J0UHJvZ3Jlc3MsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQXR0YWNobWVudChpZDogc3RyaW5nLCBhdHRhY2htZW50OiBBdHRhY2htZW50KTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIHVybDogYCR7dGhpcy5TRVJWSUNFX1VSTH0vJHtpZH1gLFxuICAgICAgYm9keTogYXR0YWNobWVudCxcbiAgICAgIG1ldGhvZDogJ3B1dCcsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXR0YWNobWVudEZpbGUoaWQ6IHN0cmluZywgaXNQcmV2ZW50RG93bmxvYWQ/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxuICAgICAgLmFwaSh7XG4gICAgICAgIHVybDogYCR7dGhpcy5TRVJWSUNFX1VSTH0vJHtpZH0vZmlsZWAsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogaXNQcmV2ZW50RG93bmxvYWQgPyAnYXJyYXlidWZmZXInIDogJ2Jsb2InLFxuICAgICAgICBvYnNlcnZlOiBpc1ByZXZlbnREb3dubG9hZCA/ICdib2R5JyA6ICdyZXNwb25zZScsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcChyZXNwb25zZSA9PiB7XG4gICAgICAgICAgaWYgKCFpc1ByZXZlbnREb3dubG9hZCkge1xuICAgICAgICAgICAgdGhpcy5maWxlRG93bmxvYWRTZXJ2aWNlLnByb2Nlc3NEb3dubG9hZChyZXNwb25zZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgbWFwKHJlc3BvbnNlID0+IChpc1ByZXZlbnREb3dubG9hZCA/IG5ldyBCbG9iKFtyZXNwb25zZS5ib2R5IHx8IHJlc3BvbnNlXSkgOiByZXNwb25zZS5ib2R5IHx8IHJlc3BvbnNlKSksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUF0dGFjaG1lbnQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICB1cmw6IGAke3RoaXMuU0VSVklDRV9VUkx9LyR7aWR9YCxcbiAgICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,284 @@
1
+ import { CurrencyPipe } from '@angular/common';
2
+ import { Injectable } from '@angular/core';
3
+ import { DocxTemplater, isLegacyDocumentTemplate, QuoteDraft, StringUtils, } from '@veloceapps/core';
4
+ import * as _ from 'lodash';
5
+ import * as moment_ from 'moment';
6
+ import { forkJoin, of, zip } from 'rxjs';
7
+ import { defaultIfEmpty, map, switchMap, tap } from 'rxjs/operators';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@veloceapps/core";
10
+ import * as i2 from "./salesforce-api.service";
11
+ import * as i3 from "./document-attachment-api.service";
12
+ import * as i4 from "@angular/common/http";
13
+ const moment = moment_;
14
+ export class DocumentTemplatesApiService {
15
+ constructor(service, salesforceApiService, fileDownloadService, documentAttachmentService, http) {
16
+ this.service = service;
17
+ this.salesforceApiService = salesforceApiService;
18
+ this.fileDownloadService = fileDownloadService;
19
+ this.documentAttachmentService = documentAttachmentService;
20
+ this.http = http;
21
+ this.DOCGEN_TAG = 'docgen';
22
+ this.SERVICE_URL = '/templates';
23
+ this.DOC_GEN_URL_FALLBACK = 'https://dev-dp1.velocpq.com/docgen';
24
+ this.mapSfQueryResult = (limit) => map((records) => {
25
+ if (!records.length) {
26
+ return { _result: 'No Records Found' };
27
+ }
28
+ if (limit === 1) {
29
+ return records[0];
30
+ }
31
+ return records;
32
+ });
33
+ this.mapBooleanIfAplicable = (value) => {
34
+ if (value === 'true') {
35
+ return true;
36
+ }
37
+ if (value === 'false') {
38
+ return false;
39
+ }
40
+ return value;
41
+ };
42
+ if (window.VELO_DOCGEN_API) {
43
+ this.DOC_GEN_URL = window.VELO_DOCGEN_API;
44
+ }
45
+ else {
46
+ console.log(`window.VELO_DOCGEN_API not set, will use fallback "${this.DOC_GEN_URL_FALLBACK}"`);
47
+ this.DOC_GEN_URL = this.DOC_GEN_URL_FALLBACK;
48
+ }
49
+ }
50
+ getTemplates(tag) {
51
+ return this.service.api({
52
+ url: `${this.SERVICE_URL}`,
53
+ method: 'get',
54
+ params: Object.assign({}, (tag && { tag })),
55
+ });
56
+ }
57
+ getTemplate(id) {
58
+ return this.service.api({
59
+ url: `${this.SERVICE_URL}/${id}`,
60
+ method: 'get',
61
+ });
62
+ }
63
+ upsertTemplate(template, file, reportProgress) {
64
+ const formData = new FormData();
65
+ if (file) {
66
+ formData.append('file', file, file.name);
67
+ }
68
+ formData.append('template', new Blob([JSON.stringify(template)], {
69
+ type: 'application/json',
70
+ }));
71
+ let url = `${this.SERVICE_URL}`;
72
+ if (template.id) {
73
+ url += `/${template.id}`;
74
+ }
75
+ return this.service.upload({
76
+ url,
77
+ body: formData,
78
+ method: template.id ? 'put' : 'post',
79
+ reportProgress,
80
+ });
81
+ }
82
+ removeTemplate(id) {
83
+ return this.service.api({
84
+ url: `${this.SERVICE_URL}/${id}`,
85
+ method: 'delete',
86
+ });
87
+ }
88
+ restoreTemplate(id) {
89
+ return this.service.api({
90
+ url: `${this.SERVICE_URL}/${id}/restore`,
91
+ method: 'patch',
92
+ });
93
+ }
94
+ cloneTemplate(id, propertiesToOverride = {}) {
95
+ return this.service.api({
96
+ url: `${this.SERVICE_URL}/clone/${id}`,
97
+ method: 'post',
98
+ body: {
99
+ id,
100
+ propertiesToOverride,
101
+ },
102
+ });
103
+ }
104
+ getTemplateFile(id) {
105
+ return this.service.api({
106
+ method: 'get',
107
+ url: `${this.SERVICE_URL}/${id}/file`,
108
+ responseType: 'arraybuffer',
109
+ });
110
+ }
111
+ downloadTemplateFile(id) {
112
+ return this.service
113
+ .api({
114
+ url: `${this.SERVICE_URL}/${id}/file`,
115
+ responseType: 'blob',
116
+ observe: 'response',
117
+ })
118
+ .pipe(tap(response => {
119
+ this.fileDownloadService.processDownload(response);
120
+ }), map(response => response.body || response));
121
+ }
122
+ mergeDocuments(document, attachments) {
123
+ const body = new FormData();
124
+ attachments.forEach(attachment => {
125
+ body.append('attachments', new Blob([attachment]));
126
+ });
127
+ body.append('orderform', document);
128
+ return this.http.post(`${this.DOC_GEN_URL}/documents/merge`, body, {
129
+ responseType: 'arraybuffer',
130
+ });
131
+ }
132
+ getAttachments(searchRequest) {
133
+ return this.documentAttachmentService.getAttachments(searchRequest);
134
+ }
135
+ getAttachmentFile(id) {
136
+ return this.documentAttachmentService.getAttachmentFile(id);
137
+ }
138
+ createAttachment(attachment, file, reportProgress) {
139
+ return this.documentAttachmentService.createAttachment(attachment, file, reportProgress);
140
+ }
141
+ removeAttachment(id) {
142
+ return this.documentAttachmentService.removeAttachment(id);
143
+ }
144
+ generateDocumentData(template, object, params = {}) {
145
+ var _a;
146
+ if (isLegacyDocumentTemplate(template)) {
147
+ return this.generateDocumentDataLegacy(template, object, params);
148
+ }
149
+ const templateProperties = (_a = template.properties) === null || _a === void 0 ? void 0 : _a.reduce((acc, { name, value }) => (Object.assign(Object.assign({}, acc), { [name]: this.mapBooleanIfAplicable(value) })), {});
150
+ /*
151
+ Resolve quote and template properties for now
152
+ When procedures are ready, whey will replace template scripts.
153
+
154
+ TODO: run procedure to resolve document data
155
+ */
156
+ return of(Object.assign(Object.assign({}, (typeof object === 'object' ? object : { object })), templateProperties));
157
+ }
158
+ generateDocument(template, object, params = {}) {
159
+ const documentData$ = this.generateDocumentData(template, object, Object.assign(Object.assign({}, params), { shouldPreventDownload: true }));
160
+ return zip(this.getTemplateFile(template.id), documentData$, this.resolveAttachments$(template)).pipe(switchMap(([templateFile, data, attachments]) => {
161
+ var _a, _b, _c, _d, _e, _f;
162
+ const document = DocxTemplater.generate(templateFile, data);
163
+ const properties = (_c = (_b = (_a = object === null || object === void 0 ? void 0 : object.context) === null || _a === void 0 ? void 0 : _a.properties) !== null && _b !== void 0 ? _b : object === null || object === void 0 ? void 0 : object.properties) !== null && _c !== void 0 ? _c : {};
164
+ const documentName = properties.Name || template.name;
165
+ const documentFormat = (_d = params.documentFormat) !== null && _d !== void 0 ? _d : (_f = (_e = template.properties) === null || _e === void 0 ? void 0 : _e.find(p => p.name === 'documentFormat')) === null || _f === void 0 ? void 0 : _f.value;
166
+ if (documentFormat === 'DOCX') {
167
+ this.fileDownloadService.processDownload(document, documentName);
168
+ return of(document);
169
+ }
170
+ return this.mergeDocuments(document, attachments).pipe(switchMap(pdf => {
171
+ if (params.attachToQuote && QuoteDraft.isQuote(object)) {
172
+ const file = new File([pdf], `${documentName}.pdf`);
173
+ return this.documentAttachmentService
174
+ .createAttachment({
175
+ linkedEntityId: object.quoteId,
176
+ fileName: documentName,
177
+ fileExtension: 'pdf',
178
+ tags: this.DOCGEN_TAG,
179
+ }, file)
180
+ .pipe(map(() => pdf));
181
+ }
182
+ return of(pdf);
183
+ }), map(pdf => {
184
+ const blob = new Blob([pdf]);
185
+ if (!params.shouldPreventDownload) {
186
+ this.fileDownloadService.processDownload(blob, `${documentName}.pdf`);
187
+ }
188
+ return blob;
189
+ }));
190
+ }));
191
+ }
192
+ generateDocumentDataLegacy(template, object, params = {}) {
193
+ var _a, _b, _c, _d;
194
+ const shouldPreventDownload = params.shouldPreventDownload;
195
+ const allQueries = [...((_a = template === null || template === void 0 ? void 0 : template.queries) !== null && _a !== void 0 ? _a : [])];
196
+ const properties = (_d = (_c = (_b = object === null || object === void 0 ? void 0 : object.context) === null || _b === void 0 ? void 0 : _b.properties) !== null && _c !== void 0 ? _c : object === null || object === void 0 ? void 0 : object.properties) !== null && _d !== void 0 ? _d : {};
197
+ const accountId = properties === null || properties === void 0 ? void 0 : properties.AccountId;
198
+ const userId = properties === null || properties === void 0 ? void 0 : properties.UserId;
199
+ if (accountId) {
200
+ allQueries.push({
201
+ queryName: 'QuoteAccountQuery',
202
+ objectName: 'Account',
203
+ resultObjectName: 'account',
204
+ statement: `Id ='${accountId}'`,
205
+ fields: [],
206
+ });
207
+ }
208
+ if (userId) {
209
+ allQueries.push({
210
+ queryName: 'QuoteUserQuery',
211
+ objectName: 'User',
212
+ resultObjectName: 'agent',
213
+ statement: `Id ='${userId}'`,
214
+ fields: [],
215
+ });
216
+ }
217
+ const queries = allQueries.map(query => this.queryObject(query, { properties })) || [];
218
+ return forkJoin([...queries]).pipe(defaultIfEmpty([]), map(results => {
219
+ var _a, _b, _c, _d;
220
+ const queriesResult = _.chain(results)
221
+ .reduce((acc, r) => {
222
+ if (r) {
223
+ return Object.assign(Object.assign({}, acc), r);
224
+ }
225
+ return acc;
226
+ }, {})
227
+ .value();
228
+ const templateProperties = ((template === null || template === void 0 ? void 0 : template.properties) || []).reduce((trunk, { name, value }) => {
229
+ return Object.assign(Object.assign({}, trunk), { [name]: this.mapBooleanIfAplicable(value) });
230
+ }, {});
231
+ const data = Object.assign(Object.assign(Object.assign({}, (typeof object === 'object' ? object : { object })), queriesResult), templateProperties);
232
+ if (template.script && template.script.trim().length) {
233
+ const currencyFormat = ((_b = (_a = template.properties) === null || _a === void 0 ? void 0 : _a.find(({ name }) => name === 'currencyFormat')) === null || _b === void 0 ? void 0 : _b.value) || '1.2-2';
234
+ const dateFormat = ((_d = (_c = template.properties) === null || _c === void 0 ? void 0 : _c.find(({ name }) => name === 'dateFormat')) === null || _d === void 0 ? void 0 : _d.value) || 'D/MMM/YYYY';
235
+ const formatDate = (value) => {
236
+ return value ? moment(value).format(dateFormat) : value;
237
+ };
238
+ const transform = new Function(`return ${template.script}`)();
239
+ const transformedData = transform(Object.assign(Object.assign({}, data), { utils: {
240
+ lodash: _,
241
+ currency: (value) => new CurrencyPipe('en-US').transform(value, 'USD', 'symbol', currencyFormat),
242
+ date: formatDate,
243
+ }, ToDay: formatDate(Date.now()) }));
244
+ if (!shouldPreventDownload) {
245
+ const blob = new Blob([JSON.stringify(transformedData)]);
246
+ this.fileDownloadService.processDownload(blob, 'data.json');
247
+ }
248
+ return transformedData;
249
+ }
250
+ return data;
251
+ }));
252
+ }
253
+ resolveAttachments$(template) {
254
+ var _a, _b;
255
+ const attachmentIds = (_b = (_a = template.attachments) === null || _a === void 0 ? void 0 : _a.map(({ id }) => id).filter(Boolean)) !== null && _b !== void 0 ? _b : [];
256
+ if (!attachmentIds.length) {
257
+ return of([]);
258
+ }
259
+ return forkJoin(attachmentIds.map(id => this.documentAttachmentService.getAttachmentFile(id, true)));
260
+ }
261
+ queryObject({ objectName, resultObjectName, fields, statement }, { properties }) {
262
+ var _a;
263
+ const patternLimit = /(\s*limit\s\d*)/i;
264
+ let limit = 1;
265
+ if (statement && patternLimit.test(statement)) {
266
+ const limitStr = (_a = statement === null || statement === void 0 ? void 0 : statement.match(patternLimit)) === null || _a === void 0 ? void 0 : _a[1].trim().substring(5).trim();
267
+ if (limitStr) {
268
+ limit = Number.parseInt(limitStr, 10);
269
+ }
270
+ statement = statement.replace(patternLimit, '');
271
+ }
272
+ const resolvedStatement = statement
273
+ ? StringUtils.fillPlaceholders(statement, properties, /:\s*(\w[\w\d_.]+)/i)
274
+ : undefined;
275
+ const searchRequest = Object.assign({ skip: 0, count: limit, rawCondition: resolvedStatement }, ((fields === null || fields === void 0 ? void 0 : fields.length) && !!fields[0] && { fields }));
276
+ return this.salesforceApiService.query(searchRequest, objectName).pipe(this.mapSfQueryResult(limit), map(value => ({ [resultObjectName]: value })));
277
+ }
278
+ }
279
+ DocumentTemplatesApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DocumentTemplatesApiService, deps: [{ token: i1.BaseHttpService }, { token: i2.SalesforceApiService }, { token: i1.FileDownloadService }, { token: i3.DocumentAttachmentApiService }, { token: i4.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
280
+ DocumentTemplatesApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DocumentTemplatesApiService });
281
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DocumentTemplatesApiService, decorators: [{
282
+ type: Injectable
283
+ }], ctorParameters: function () { return [{ type: i1.BaseHttpService }, { type: i2.SalesforceApiService }, { type: i1.FileDownloadService }, { type: i3.DocumentAttachmentApiService }, { type: i4.HttpClient }]; } });
284
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdGVtcGxhdGVzLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvc3JjL2xpYi9zZXJ2aWNlcy9kb2N1bWVudC10ZW1wbGF0ZXMtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUtMLGFBQWEsRUFFYix3QkFBd0IsRUFDeEIsVUFBVSxFQUVWLFdBQVcsR0FJWixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQUlyRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFVdkIsTUFBTSxPQUFPLDJCQUEyQjtJQU90QyxZQUNVLE9BQXdCLEVBQ3hCLG9CQUEwQyxFQUMxQyxtQkFBd0MsRUFDeEMseUJBQXVELEVBQ3ZELElBQWdCO1FBSmhCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ3hCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyw4QkFBeUIsR0FBekIseUJBQXlCLENBQThCO1FBQ3ZELFNBQUksR0FBSixJQUFJLENBQVk7UUFYVixlQUFVLEdBQUcsUUFBUSxDQUFDO1FBRXJCLGdCQUFXLEdBQUcsWUFBWSxDQUFDO1FBQzNCLHlCQUFvQixHQUFHLG9D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LENBQUM7UUFFbkIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQ3BFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFDNUIsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQzlDLENBQUM7SUFDSixDQUFDOzt5SEEzWFUsMkJBQTJCOzZIQUEzQiwyQkFBMkI7NEZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1cnJlbmN5UGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQW55V2l0aFByb3BlcnRpZXMsXG4gIEF0dGFjaG1lbnQsXG4gIEJhc2VIdHRwU2VydmljZSxcbiAgRG9jdW1lbnRUZW1wbGF0ZSxcbiAgRG9jeFRlbXBsYXRlcixcbiAgRmlsZURvd25sb2FkU2VydmljZSxcbiAgaXNMZWdhY3lEb2N1bWVudFRlbXBsYXRlLFxuICBRdW90ZURyYWZ0LFxuICBTZWFyY2hSZXF1ZXN0LFxuICBTdHJpbmdVdGlscyxcbiAgVGVtcGxhdGVBdHRhY2htZW50U2VhcmNoUmVxdWVzdCxcbiAgVGVtcGxhdGVRdWVyeSxcbiAgVmxXaW5kb3csXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCB6aXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlZmF1bHRJZkVtcHR5LCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRG9jdW1lbnRBdHRhY2htZW50QXBpU2VydmljZSB9IGZyb20gJy4vZG9jdW1lbnQtYXR0YWNobWVudC1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBTYWxlc2ZvcmNlQXBpU2VydmljZSB9IGZyb20gJy4vc2FsZXNmb3JjZS1hcGkuc2VydmljZSc7XG5cbmNvbnN0IG1vbWVudCA9IG1vbWVudF87XG5kZWNsYXJlIGNvbnN0IHdpbmRvdzogVmxXaW5kb3c7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9jdW1lbnRHZW5lcmF0aW9uUGFyYW1zIHtcbiAgYXR0YWNoVG9RdW90ZT86IGJvb2xlYW47XG4gIGRvY3VtZW50Rm9ybWF0PzogJ0RPQ1gnO1xuICBzaG91bGRQcmV2ZW50RG93bmxvYWQ/OiBib29sZWFuO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRUZW1wbGF0ZXNBcGlTZXJ2aWNlIHtcbiAgcHVibGljIHJlYWRvbmx5IERPQ0dFTl9UQUcgPSAnZG9jZ2VuJztcblxuICBwcml2YXRlIHJlYWRvbmx5IFNFUlZJQ0VfVVJMID0gJy90ZW1wbGF0ZXMnO1xuICBwcml2YXRlIHJlYWRvbmx5IERPQ19HRU5fVVJMX0ZBTExCQUNLID0gJ2h0dHBzOi8vZGV2LWRwMS52ZWxvY3BxLmNvbS9kb2NnZW4nO1xuICBwcml2YXRlIHJlYWRvbmx5IERPQ19HRU5fVVJMO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VydmljZTogQmFzZUh0dHBTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FsZXNmb3JjZUFwaVNlcnZpY2U6IFNhbGVzZm9yY2VBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmlsZURvd25sb2FkU2VydmljZTogRmlsZURvd25sb2FkU2VydmljZSxcbiAgICBwcml2YXRlIGRvY3VtZW50QXR0YWNobWVudFNlcnZpY2U6IERvY3VtZW50QXR0YWNobWVudEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICApIHtcbiAgICBpZiAod2luZG93LlZFTE9fRE9DR0VOX0FQSSkge1xuICAgICAgdGhpcy5ET0NfR0VOX1VSTCA9IHdpbmRvdy5WRUxPX0RPQ0dFTl9BUEk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKGB3aW5kb3cuVkVMT19ET0NHRU5fQVBJIG5vdCBzZXQsIHdpbGwgdXNlIGZhbGxiYWNrIFwiJHt0aGlzLkRPQ19HRU5fVVJMX0ZBTExCQUNLfVwiYCk7XG4gICAgICB0aGlzLkRPQ19HRU5fVVJMID0gdGhpcy5ET0NfR0VOX1VSTF9GQUxMQkFDSztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0VGVtcGxhdGVzKHRhZz86IHN0cmluZyk6IE9ic2VydmFibGU8RG9jdW1lbnRUZW1wbGF0ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5hcGkoe1xuICAgICAgdXJsOiBgJHt0aGlzLlNFUlZJQ0VfVVJMfWAsXG4gICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIC4uLih0YWcgJiYgeyB0YWcgfSksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFRlbXBsYXRlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERvY3VtZW50VGVtcGxhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmFwaSh7XG4gICAgICB1cmw6IGAke3RoaXMuU0VSVklDRV9VUkx9LyR7aWR9YCxcbiAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBzZXJ0VGVtcGxhdGUoXG4gICAgdGVtcGxhdGU6IERvY3VtZW50VGVtcGxhdGUsXG4gICAgZmlsZT86IEZpbGUsXG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLFxuICApOiBPYnNlcnZhYmxlPERvY3VtZW50VGVtcGxhdGU+IHtcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgIGlmIChmaWxlKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlLCBmaWxlLm5hbWUpO1xuICAgIH1cbiAgICBmb3JtRGF0YS5hcHBlbmQoXG4gICAgICAndGVtcGxhdGUnLFxuICAgICAgbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHRlbXBsYXRlKV0sIHtcbiAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGxldCB1cmwgPSBgJHt0aGlzLlNFUlZJQ0VfVVJMfWA7XG4gICAgaWYgKHRlbXBsYXRlLmlkKSB7XG4gICAgICB1cmwgKz0gYC8ke3RlbXBsYXRlLmlkfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS51cGxvYWQoe1xuICAgICAgdXJsLFxuICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICBtZXRob2Q6IHRlbXBsYXRlLmlkID8gJ3B1dCcgOiAncG9zdCcsXG4gICAgICByZXBvcnRQcm9ncmVzcyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVUZW1wbGF0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxEb2N1bWVudFRlbXBsYXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5hcGkoe1xuICAgICAgdXJsOiBgJHt0aGlzLlNFUlZJQ0VfVVJMfS8ke2lkfWAsXG4gICAgICBtZXRob2Q6ICdkZWxldGUnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlc3RvcmVUZW1wbGF0ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5hcGkoe1xuICAgICAgdXJsOiBgJHt0aGlzLlNFUlZJQ0VfVVJMfS8ke2lkfS9yZXN0b3JlYCxcbiAgICAgIG1ldGhvZDogJ3BhdGNoJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9uZVRlbXBsYXRlKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcGVydGllc1RvT3ZlcnJpZGU6IFBhcnRpYWw8RG9jdW1lbnRUZW1wbGF0ZT4gPSB7fSxcbiAgKTogT2JzZXJ2YWJsZTx7IGNsb25lZFJlY29yZElkOiBzdHJpbmcgfT4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZpY2UuYXBpKHtcbiAgICAgIHVybDogYCR7dGhpcy5TRVJWSUNFX1VSTH0vY2xvbmUvJHtpZH1gLFxuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICBib2R5OiB7XG4gICAgICAgIGlkLFxuICAgICAgICBwcm9wZXJ0aWVzVG9PdmVycmlkZSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGVtcGxhdGVGaWxlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEFycmF5QnVmZmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5hcGkoe1xuICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgIHVybDogYCR7dGhpcy5TRVJWSUNFX1VSTH0vJHtpZH0vZmlsZWAsXG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZG93bmxvYWRUZW1wbGF0ZUZpbGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8QmxvYj4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZpY2VcbiAgICAgIC5hcGkoe1xuICAgICAgICB1cmw6IGAke3RoaXMuU0VSVklDRV9VUkx9LyR7aWR9L2ZpbGVgLFxuICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICB0aGlzLmZpbGVEb3dubG9hZFNlcnZpY2UucHJvY2Vzc0Rvd25sb2FkKHJlc3BvbnNlKTtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcChyZXNwb25zZSA9PiByZXNwb25zZS5ib2R5IHx8IHJlc3BvbnNlKSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgbWVyZ2VEb2N1bWVudHMoZG9jdW1lbnQ6IEJsb2IsIGF0dGFjaG1lbnRzOiBBcnJheUJ1ZmZlcltdKTogT2JzZXJ2YWJsZTxBcnJheUJ1ZmZlcj4ge1xuICAgIGNvbnN0IGJvZHkgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgIGF0dGFjaG1lbnRzLmZvckVhY2goYXR0YWNobWVudCA9PiB7XG4gICAgICBib2R5LmFwcGVuZCgnYXR0YWNobWVudHMnLCBuZXcgQmxvYihbYXR0YWNobWVudF0pKTtcbiAgICB9KTtcblxuICAgIGJvZHkuYXBwZW5kKCdvcmRlcmZvcm0nLCBkb2N1bWVudCk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5ET0NfR0VOX1VSTH0vZG9jdW1lbnRzL21lcmdlYCwgYm9keSwge1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEF0dGFjaG1lbnRzKHNlYXJjaFJlcXVlc3Q6IFRlbXBsYXRlQXR0YWNobWVudFNlYXJjaFJlcXVlc3QpOiBPYnNlcnZhYmxlPEF0dGFjaG1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50QXR0YWNobWVudFNlcnZpY2UuZ2V0QXR0YWNobWVudHMoc2VhcmNoUmVxdWVzdCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QXR0YWNobWVudEZpbGUoaWQ6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRBdHRhY2htZW50U2VydmljZS5nZXRBdHRhY2htZW50RmlsZShpZCk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQXR0YWNobWVudChhdHRhY2htZW50OiBBdHRhY2htZW50LCBmaWxlPzogRmlsZSwgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxBdHRhY2htZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRBdHRhY2htZW50U2VydmljZS5jcmVhdGVBdHRhY2htZW50KGF0dGFjaG1lbnQsIGZpbGUsIHJlcG9ydFByb2dyZXNzKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVBdHRhY2htZW50KGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudEF0dGFjaG1lbnRTZXJ2aWNlLnJlbW92ZUF0dGFjaG1lbnQoaWQpO1xuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlRG9jdW1lbnREYXRhKFxuICAgIHRlbXBsYXRlOiBEb2N1bWVudFRlbXBsYXRlLFxuICAgIG9iamVjdDogYW55LFxuICAgIHBhcmFtczogRG9jdW1lbnRHZW5lcmF0aW9uUGFyYW1zID0ge30sXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKGlzTGVnYWN5RG9jdW1lbnRUZW1wbGF0ZSh0ZW1wbGF0ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlRG9jdW1lbnREYXRhTGVnYWN5KHRlbXBsYXRlLCBvYmplY3QsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgY29uc3QgdGVtcGxhdGVQcm9wZXJ0aWVzID0gdGVtcGxhdGUucHJvcGVydGllcz8ucmVkdWNlKFxuICAgICAgKGFjYywgeyBuYW1lLCB2YWx1ZSB9KSA9PiAoeyAuLi5hY2MsIFtuYW1lXTogdGhpcy5tYXBCb29sZWFuSWZBcGxpY2FibGUodmFsdWUpIH0pLFxuICAgICAge30sXG4gICAgKTtcblxuICAgIC8qXG4gICAgICBSZXNvbHZlIHF1b3RlIGFuZCB0ZW1wbGF0ZSBwcm9wZXJ0aWVzIGZvciBub3dcbiAgICAgIFdoZW4gcHJvY2VkdXJlcyBhcmUgcmVhZHksIHdoZXkgd2lsbCByZXBsYWNlIHRlbXBsYXRlIHNjcmlwdHMuXG5cbiAgICAgIFRPRE86IHJ1biBwcm9jZWR1cmUgdG8gcmVzb2x2ZSBkb2N1bWVudCBkYXRhXG4gICAgKi9cbiAgICByZXR1cm4gb2Yoe1xuICAgICAgLi4uKHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnID8gb2JqZWN0IDogeyBvYmplY3QgfSksXG4gICAgICAuLi50ZW1wbGF0ZVByb3BlcnRpZXMsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVEb2N1bWVudChcbiAgICB0ZW1wbGF0ZTogRG9jdW1lbnRUZW1wbGF0ZSxcbiAgICBvYmplY3Q6IGFueSxcbiAgICBwYXJhbXM6IERvY3VtZW50R2VuZXJhdGlvblBhcmFtcyA9IHt9LFxuICApOiBPYnNlcnZhYmxlPEJsb2I+IHtcbiAgICBjb25zdCBkb2N1bWVudERhdGEkID0gdGhpcy5nZW5lcmF0ZURvY3VtZW50RGF0YSh0ZW1wbGF0ZSwgb2JqZWN0LCB7IC4uLnBhcmFtcywgc2hvdWxkUHJldmVudERvd25sb2FkOiB0cnVlIH0pO1xuXG4gICAgcmV0dXJuIHppcCh0aGlzLmdldFRlbXBsYXRlRmlsZSh0ZW1wbGF0ZS5pZCksIGRvY3VtZW50RGF0YSQsIHRoaXMucmVzb2x2ZUF0dGFjaG1lbnRzJCh0ZW1wbGF0ZSkpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKFt0ZW1wbGF0ZUZpbGUsIGRhdGEsIGF0dGFjaG1lbnRzXSkgPT4ge1xuICAgICAgICBjb25zdCBkb2N1bWVudCA9IERvY3hUZW1wbGF0ZXIuZ2VuZXJhdGUodGVtcGxhdGVGaWxlLCBkYXRhKTtcbiAgICAgICAgY29uc3QgcHJvcGVydGllczogXy5EaWN0aW9uYXJ5PHN0cmluZz4gPSBvYmplY3Q/LmNvbnRleHQ/LnByb3BlcnRpZXMgPz8gb2JqZWN0Py5wcm9wZXJ0aWVzID8/IHt9O1xuICAgICAgICBjb25zdCBkb2N1bWVudE5hbWUgPSBwcm9wZXJ0aWVzLk5hbWUgfHwgdGVtcGxhdGUubmFtZTtcblxuICAgICAgICBjb25zdCBkb2N1bWVudEZvcm1hdCA9XG4gICAgICAgICAgcGFyYW1zLmRvY3VtZW50Rm9ybWF0ID8/IHRlbXBsYXRlLnByb3BlcnRpZXM/LmZpbmQocCA9PiBwLm5hbWUgPT09ICdkb2N1bWVudEZvcm1hdCcpPy52YWx1ZTtcbiAgICAgICAgaWYgKGRvY3VtZW50Rm9ybWF0ID09PSAnRE9DWCcpIHtcbiAgICAgICAgICB0aGlzLmZpbGVEb3dubG9hZFNlcnZpY2UucHJvY2Vzc0Rvd25sb2FkKGRvY3VtZW50LCBkb2N1bWVudE5hbWUpO1xuXG4gICAgICAgICAgcmV0dXJuIG9mKGRvY3VtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLm1lcmdlRG9jdW1lbnRzKGRvY3VtZW50LCBhdHRhY2htZW50cykucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAocGRmID0+IHtcbiAgICAgICAgICAgIGlmIChwYXJhbXMuYXR0YWNoVG9RdW90ZSAmJiBRdW90ZURyYWZ0LmlzUXVvdGUob2JqZWN0KSkge1xuICAgICAgICAgICAgICBjb25zdCBmaWxlID0gbmV3IEZpbGUoW3BkZl0sIGAke2RvY3VtZW50TmFtZX0ucGRmYCk7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50QXR0YWNobWVudFNlcnZpY2VcbiAgICAgICAgICAgICAgICAuY3JlYXRlQXR0YWNobWVudChcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGlua2VkRW50aXR5SWQ6IG9iamVjdC5xdW90ZUlkLFxuICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZTogZG9jdW1lbnROYW1lLFxuICAgICAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9uOiAncGRmJyxcbiAgICAgICAgICAgICAgICAgICAgdGFnczogdGhpcy5ET0NHRU5fVEFHLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGZpbGUsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5waXBlKG1hcCgoKSA9PiBwZGYpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIG9mKHBkZik7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgbWFwKHBkZiA9PiB7XG4gICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3BkZl0pO1xuXG4gICAgICAgICAgICBpZiAoIXBhcmFtcy5zaG91bGRQcmV2ZW50RG93bmxvYWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5maWxlRG93bmxvYWRTZXJ2aWNlLnByb2Nlc3NEb3dubG9hZChibG9iLCBgJHtkb2N1bWVudE5hbWV9LnBkZmApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gYmxvYjtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlRG9jdW1lbnREYXRhTGVnYWN5KFxuICAgIHRlbXBsYXRlOiBEb2N1bWVudFRlbXBsYXRlLFxuICAgIG9iamVjdDogYW55LFxuICAgIHBhcmFtczogRG9jdW1lbnRHZW5lcmF0aW9uUGFyYW1zID0ge30sXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3Qgc2hvdWxkUHJldmVudERvd25sb2FkID0gcGFyYW1zLnNob3VsZFByZXZlbnREb3dubG9hZDtcbiAgICBjb25zdCBhbGxRdWVyaWVzOiBUZW1wbGF0ZVF1ZXJ5W10gPSBbLi4uKHRlbXBsYXRlPy5xdWVyaWVzID8/IFtdKV07XG4gICAgY29uc3QgcHJvcGVydGllczogXy5EaWN0aW9uYXJ5PHN0cmluZz4gPSBvYmplY3Q/LmNvbnRleHQ/LnByb3BlcnRpZXMgPz8gb2JqZWN0Py5wcm9wZXJ0aWVzID8/IHt9O1xuICAgIGNvbnN0IGFjY291bnRJZCA9IHByb3BlcnRpZXM/LkFjY291bnRJZDtcbiAgICBjb25zdCB1c2VySWQgPSBwcm9wZXJ0aWVzPy5Vc2VySWQ7XG5cbiAgICBpZiAoYWNjb3VudElkKSB7XG4gICAgICBhbGxRdWVyaWVzLnB1c2goe1xuICAgICAgICBxdWVyeU5hbWU6ICdRdW90ZUFjY291bnRRdWVyeScsXG4gICAgICAgIG9iamVjdE5hbWU6ICdBY2NvdW50JyxcbiAgICAgICAgcmVzdWx0T2JqZWN0TmFtZTogJ2FjY291bnQnLFxuICAgICAgICBzdGF0ZW1lbnQ6IGBJZCA9JyR7YWNjb3VudElkfSdgLFxuICAgICAgICBmaWVsZHM6IFtdLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh1c2VySWQpIHtcbiAgICAgIGFsbFF1ZXJpZXMucHVzaCh7XG4gICAgICAgIHF1ZXJ5TmFtZTogJ1F1b3RlVXNlclF1ZXJ5JyxcbiAgICAgICAgb2JqZWN0TmFtZTogJ1VzZXInLFxuICAgICAgICByZXN1bHRPYmplY3ROYW1lOiAnYWdlbnQnLFxuICAgICAgICBzdGF0ZW1lbnQ6IGBJZCA9JyR7dXNlcklkfSdgLFxuICAgICAgICBmaWVsZHM6IFtdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgcXVlcmllcyA9IGFsbFF1ZXJpZXMubWFwKHF1ZXJ5ID0+IHRoaXMucXVlcnlPYmplY3QocXVlcnksIHsgcHJvcGVydGllcyB9KSkgfHwgW107XG5cbiAgICByZXR1cm4gZm9ya0pvaW4oWy4uLnF1ZXJpZXNdKS5waXBlKFxuICAgICAgZGVmYXVsdElmRW1wdHkoW10gYXMgYW55W10pLFxuICAgICAgbWFwKHJlc3VsdHMgPT4ge1xuICAgICAgICBjb25zdCBxdWVyaWVzUmVzdWx0ID0gXy5jaGFpbihyZXN1bHRzKVxuICAgICAgICAgIC5yZWR1Y2UoKGFjYywgcikgPT4ge1xuICAgICAgICAgICAgaWYgKHIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCAuLi5yIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgfSwge30pXG4gICAgICAgICAgLnZhbHVlKCk7XG5cbiAgICAgICAgY29uc3QgdGVtcGxhdGVQcm9wZXJ0aWVzID0gKHRlbXBsYXRlPy5wcm9wZXJ0aWVzIHx8IFtdKS5yZWR1Y2UoKHRydW5rLCB7IG5hbWUsIHZhbHVlIH0pID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4udHJ1bmssXG4gICAgICAgICAgICBbbmFtZSBhcyBzdHJpbmddOiB0aGlzLm1hcEJvb2xlYW5JZkFwbGljYWJsZSh2YWx1ZSBhcyBhbnkpLFxuICAgICAgICAgIH07XG4gICAgICAgIH0sIHt9KTtcblxuICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgIC4uLih0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyA/IG9iamVjdCA6IHsgb2JqZWN0IH0pLFxuICAgICAgICAgIC4uLnF1ZXJpZXNSZXN1bHQsXG4gICAgICAgICAgLi4udGVtcGxhdGVQcm9wZXJ0aWVzLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICh0ZW1wbGF0ZS5zY3JpcHQgJiYgdGVtcGxhdGUuc2NyaXB0LnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW5jeUZvcm1hdCA9IHRlbXBsYXRlLnByb3BlcnRpZXM/LmZpbmQoKHsgbmFtZSB9KSA9PiBuYW1lID09PSAnY3VycmVuY3lGb3JtYXQnKT8udmFsdWUgfHwgJzEuMi0yJztcbiAgICAgICAgICBjb25zdCBkYXRlRm9ybWF0ID0gdGVtcGxhdGUucHJvcGVydGllcz8uZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdkYXRlRm9ybWF0Jyk/LnZhbHVlIHx8ICdEL01NTS9ZWVlZJztcbiAgICAgICAgICBjb25zdCBmb3JtYXREYXRlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSA/IG1vbWVudCh2YWx1ZSkuZm9ybWF0KGRhdGVGb3JtYXQpIDogdmFsdWU7XG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCB0cmFuc2Zvcm0gPSBuZXcgRnVuY3Rpb24oYHJldHVybiAke3RlbXBsYXRlLnNjcmlwdH1gKSgpO1xuICAgICAgICAgIGNvbnN0IHRyYW5zZm9ybWVkRGF0YSA9IHRyYW5zZm9ybSh7XG4gICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgdXRpbHM6IHtcbiAgICAgICAgICAgICAgbG9kYXNoOiBfLFxuICAgICAgICAgICAgICBjdXJyZW5jeTogKHZhbHVlOiBhbnkpID0+IG5ldyBDdXJyZW5jeVBpcGUoJ2VuLVVTJykudHJhbnNmb3JtKHZhbHVlLCAnVVNEJywgJ3N5bWJvbCcsIGN1cnJlbmN5Rm9ybWF0KSxcbiAgICAgICAgICAgICAgZGF0ZTogZm9ybWF0RGF0ZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBUb0RheTogZm9ybWF0RGF0ZShEYXRlLm5vdygpIGFzIGFueSksXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKCFzaG91bGRQcmV2ZW50RG93bmxvYWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkodHJhbnNmb3JtZWREYXRhKV0pO1xuICAgICAgICAgICAgdGhpcy5maWxlRG93bmxvYWRTZXJ2aWNlLnByb2Nlc3NEb3dubG9hZChibG9iLCAnZGF0YS5qc29uJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1lZERhdGE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlQXR0YWNobWVudHMkKHRlbXBsYXRlOiBEb2N1bWVudFRlbXBsYXRlKTogT2JzZXJ2YWJsZTxBcnJheUJ1ZmZlcltdPiB7XG4gICAgY29uc3QgYXR0YWNobWVudElkcyA9ICh0ZW1wbGF0ZS5hdHRhY2htZW50cz8ubWFwKCh7IGlkIH0pID0+IGlkKS5maWx0ZXIoQm9vbGVhbikgYXMgc3RyaW5nW10pID8/IFtdO1xuXG4gICAgaWYgKCFhdHRhY2htZW50SWRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm9ya0pvaW4oYXR0YWNobWVudElkcy5tYXAoaWQgPT4gdGhpcy5kb2N1bWVudEF0dGFjaG1lbnRTZXJ2aWNlLmdldEF0dGFjaG1lbnRGaWxlKGlkLCB0cnVlKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZlF1ZXJ5UmVzdWx0ID0gPFQ+KGxpbWl0OiBudW1iZXIpID0+XG4gICAgbWFwKChyZWNvcmRzOiBUW10pID0+IHtcbiAgICAgIGlmICghcmVjb3Jkcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHsgX3Jlc3VsdDogJ05vIFJlY29yZHMgRm91bmQnIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChsaW1pdCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gcmVjb3Jkc1swXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlY29yZHM7XG4gICAgfSk7XG5cbiAgcHJpdmF0ZSBtYXBCb29sZWFuSWZBcGxpY2FibGUgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICAgIGlmICh2YWx1ZSA9PT0gJ3RydWUnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG5cbiAgcHJpdmF0ZSBxdWVyeU9iamVjdChcbiAgICB7IG9iamVjdE5hbWUsIHJlc3VsdE9iamVjdE5hbWUsIGZpZWxkcywgc3RhdGVtZW50IH06IFRlbXBsYXRlUXVlcnksXG4gICAgeyBwcm9wZXJ0aWVzIH06IEFueVdpdGhQcm9wZXJ0aWVzLFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHBhdHRlcm5MaW1pdCA9IC8oXFxzKmxpbWl0XFxzXFxkKikvaTtcbiAgICBsZXQgbGltaXQgPSAxO1xuICAgIGlmIChzdGF0ZW1lbnQgJiYgcGF0dGVybkxpbWl0LnRlc3Qoc3RhdGVtZW50KSkge1xuICAgICAgY29uc3QgbGltaXRTdHIgPSBzdGF0ZW1lbnQ/Lm1hdGNoKHBhdHRlcm5MaW1pdCk/LlsxXS50cmltKCkuc3Vic3RyaW5nKDUpLnRyaW0oKTtcbiAgICAgIGlmIChsaW1pdFN0cikge1xuICAgICAgICBsaW1pdCA9IE51bWJlci5wYXJzZUludChsaW1pdFN0ciwgMTApO1xuICAgICAgfVxuICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50LnJlcGxhY2UocGF0dGVybkxpbWl0LCAnJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb2x2ZWRTdGF0ZW1lbnQgPSBzdGF0ZW1lbnRcbiAgICAgID8gU3RyaW5nVXRpbHMuZmlsbFBsYWNlaG9sZGVycyhzdGF0ZW1lbnQsIHByb3BlcnRpZXMsIC86XFxzKihcXHdbXFx3XFxkXy5dKykvaSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3Qgc2VhcmNoUmVxdWVzdCA9IHtcbiAgICAgIHNraXA6IDAsXG4gICAgICBjb3VudDogbGltaXQsXG4gICAgICByYXdDb25kaXRpb246IHJlc29sdmVkU3RhdGVtZW50LFxuICAgICAgLi4uKGZpZWxkcz8ubGVuZ3RoICYmICEhZmllbGRzWzBdICYmIHsgZmllbGRzIH0pLFxuICAgIH0gYXMgU2VhcmNoUmVxdWVzdDtcblxuICAgIHJldHVybiB0aGlzLnNhbGVzZm9yY2VBcGlTZXJ2aWNlLnF1ZXJ5KHNlYXJjaFJlcXVlc3QsIG9iamVjdE5hbWUpLnBpcGUoXG4gICAgICB0aGlzLm1hcFNmUXVlcnlSZXN1bHQobGltaXQpLFxuICAgICAgbWFwKHZhbHVlID0+ICh7IFtyZXN1bHRPYmplY3ROYW1lXTogdmFsdWUgfSkpLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,79 @@
1
+ import { HttpParams } from '@angular/common/http';
2
+ import { Injectable } from '@angular/core';
3
+ import { Expression } from '@veloceapps/core';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@veloceapps/core";
6
+ export class EndpointsApiService {
7
+ constructor(baseHttpService) {
8
+ this.baseHttpService = baseHttpService;
9
+ this.adminServiceUrl = '/admin/api-endpoints';
10
+ this.serviceUrl = '/api-endpoints';
11
+ }
12
+ fetchEndpoints$() {
13
+ return this.searchEndpoints$(new Expression(), 0, -1);
14
+ }
15
+ searchEndpoints$(expression, skip, count) {
16
+ let params = new HttpParams();
17
+ params = params.set('skip', '' + skip);
18
+ params = params.set('count', '' + count);
19
+ return this.baseHttpService.api({
20
+ method: 'post',
21
+ url: `${this.adminServiceUrl}/search`,
22
+ params,
23
+ body: expression,
24
+ });
25
+ }
26
+ removeEndpoint$(id) {
27
+ return this.baseHttpService.api({
28
+ url: `${this.adminServiceUrl}/${id}`,
29
+ method: 'delete',
30
+ });
31
+ }
32
+ restoreEndpoint$(id) {
33
+ return this.baseHttpService.api({
34
+ url: `${this.adminServiceUrl}/${id}/restore`,
35
+ method: 'patch',
36
+ });
37
+ }
38
+ fetchEndpoint$(id) {
39
+ return this.baseHttpService.api({
40
+ url: `${this.adminServiceUrl}/${id}`,
41
+ method: 'get',
42
+ });
43
+ }
44
+ createEndpoint$(body) {
45
+ return this.baseHttpService.api({
46
+ url: `${this.adminServiceUrl}`,
47
+ method: 'post',
48
+ body,
49
+ });
50
+ }
51
+ updateEndpoint$(body) {
52
+ return this.baseHttpService.api({
53
+ url: `${this.adminServiceUrl}/${body.id}`,
54
+ method: 'put',
55
+ body,
56
+ });
57
+ }
58
+ duplicateEndpoint$(cloneRequest) {
59
+ return this.baseHttpService.api({
60
+ url: `${this.adminServiceUrl}/${cloneRequest.id}/clone`,
61
+ method: 'post',
62
+ body: cloneRequest,
63
+ });
64
+ }
65
+ executeEndpoint$(body) {
66
+ return this.baseHttpService.api({
67
+ url: `${this.serviceUrl}/execute`,
68
+ method: 'post',
69
+ body,
70
+ responseType: 'text',
71
+ });
72
+ }
73
+ }
74
+ EndpointsApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: EndpointsApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
75
+ EndpointsApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: EndpointsApiService });
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: EndpointsApiService, decorators: [{
77
+ type: Injectable
78
+ }], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kcG9pbnRzLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvc3JjL2xpYi9zZXJ2aWNlcy9lbmRwb2ludHMtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFxRCxVQUFVLEVBQWUsTUFBTSxrQkFBa0IsQ0FBQzs7O0FBSzlHLE1BQU0sT0FBTyxtQkFBbUI7SUFJOUIsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBSG5DLG9CQUFlLEdBQVcsc0JBQXNCLENBQUM7UUFDakQsZUFBVSxHQUFXLGdCQUFnQixDQUFDO0lBRUEsQ0FBQztJQUVqRCxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVNLGdCQUFnQixDQUFDLFVBQXNCLEVBQUUsSUFBWSxFQUFFLEtBQWE7UUFDekUsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUM5QixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQztZQUM5QixNQUFNLEVBQUUsTUFBTTtZQUNkLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLFNBQVM7WUFDckMsTUFBTTtZQUNOLElBQUksRUFBRSxVQUFVO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxlQUFlLENBQUMsRUFBVTtRQUMvQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDO1lBQzlCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxFQUFFO1lBQ3BDLE1BQU0sRUFBRSxRQUFRO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxFQUFVO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUM7WUFDOUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLFVBQVU7WUFDNUMsTUFBTSxFQUFFLE9BQU87U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGNBQWMsQ0FBQyxFQUFVO1FBQzlCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUM7WUFDOUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUU7WUFDcEMsTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sZUFBZSxDQUFDLElBQWlCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUM7WUFDOUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUM5QixNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUk7U0FDTCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sZUFBZSxDQUFDLElBQWM7UUFDbkMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQztZQUM5QixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDekMsTUFBTSxFQUFFLEtBQUs7WUFDYixJQUFJO1NBQ0wsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGtCQUFrQixDQUFDLFlBQTBCO1FBQ2xELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUM7WUFDOUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxZQUFZLENBQUMsRUFBRSxRQUFRO1lBQ3ZELE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLFlBQVk7U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGdCQUFnQixDQUFDLElBQTRCO1FBQ2xELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQVM7WUFDdEMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsVUFBVTtZQUNqQyxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUk7WUFDSixZQUFZLEVBQUUsTUFBTTtTQUNyQixDQUFDLENBQUM7SUFDTCxDQUFDOztpSEExRVUsbUJBQW1CO3FIQUFuQixtQkFBbUI7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlSHR0cFNlcnZpY2UsIEVuZHBvaW50LCBFbmRwb2ludEV4ZWN1dGVSZXF1ZXN0LCBFeHByZXNzaW9uLCBOZXdFbmRwb2ludCB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2xvbmVSZXF1ZXN0IH0gZnJvbSAnLi4vdHlwZXMvY2xvbmUtcmVxdWVzdC50eXBlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbmRwb2ludHNBcGlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBhZG1pblNlcnZpY2VVcmw6IHN0cmluZyA9ICcvYWRtaW4vYXBpLWVuZHBvaW50cyc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZVVybDogc3RyaW5nID0gJy9hcGktZW5kcG9pbnRzJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhc2VIdHRwU2VydmljZTogQmFzZUh0dHBTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBmZXRjaEVuZHBvaW50cyQoKTogT2JzZXJ2YWJsZTxFbmRwb2ludFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoRW5kcG9pbnRzJChuZXcgRXhwcmVzc2lvbigpLCAwLCAtMSk7XG4gIH1cblxuICBwdWJsaWMgc2VhcmNoRW5kcG9pbnRzJChleHByZXNzaW9uOiBFeHByZXNzaW9uLCBza2lwOiBudW1iZXIsIGNvdW50OiBudW1iZXIpOiBPYnNlcnZhYmxlPEVuZHBvaW50W10+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdza2lwJywgJycgKyBza2lwKTtcbiAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KCdjb3VudCcsICcnICsgY291bnQpO1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGkoe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IGAke3RoaXMuYWRtaW5TZXJ2aWNlVXJsfS9zZWFyY2hgLFxuICAgICAgcGFyYW1zLFxuICAgICAgYm9keTogZXhwcmVzc2lvbixcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVFbmRwb2ludCQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGkoe1xuICAgICAgdXJsOiBgJHt0aGlzLmFkbWluU2VydmljZVVybH0vJHtpZH1gLFxuICAgICAgbWV0aG9kOiAnZGVsZXRlJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZXN0b3JlRW5kcG9pbnQkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIHVybDogYCR7dGhpcy5hZG1pblNlcnZpY2VVcmx9LyR7aWR9L3Jlc3RvcmVgLFxuICAgICAgbWV0aG9kOiAncGF0Y2gnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGZldGNoRW5kcG9pbnQkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPEVuZHBvaW50PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICB1cmw6IGAke3RoaXMuYWRtaW5TZXJ2aWNlVXJsfS8ke2lkfWAsXG4gICAgICBtZXRob2Q6ICdnZXQnLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUVuZHBvaW50JChib2R5OiBOZXdFbmRwb2ludCk6IE9ic2VydmFibGU8RW5kcG9pbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIHVybDogYCR7dGhpcy5hZG1pblNlcnZpY2VVcmx9YCxcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgYm9keSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVFbmRwb2ludCQoYm9keTogRW5kcG9pbnQpOiBPYnNlcnZhYmxlPEVuZHBvaW50PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICB1cmw6IGAke3RoaXMuYWRtaW5TZXJ2aWNlVXJsfS8ke2JvZHkuaWR9YCxcbiAgICAgIG1ldGhvZDogJ3B1dCcsXG4gICAgICBib2R5LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGR1cGxpY2F0ZUVuZHBvaW50JChjbG9uZVJlcXVlc3Q6IENsb25lUmVxdWVzdCk6IE9ic2VydmFibGU8RW5kcG9pbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIHVybDogYCR7dGhpcy5hZG1pblNlcnZpY2VVcmx9LyR7Y2xvbmVSZXF1ZXN0LmlkfS9jbG9uZWAsXG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIGJvZHk6IGNsb25lUmVxdWVzdCxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBleGVjdXRlRW5kcG9pbnQkKGJvZHk6IEVuZHBvaW50RXhlY3V0ZVJlcXVlc3QpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGk8c3RyaW5nPih7XG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vZXhlY3V0ZWAsXG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIGJvZHksXG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,24 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { map } from 'rxjs/operators';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./configuration-settings-api.service";
5
+ export class FlowsApiService {
6
+ constructor(configurationSettingsApiService) {
7
+ this.configurationSettingsApiService = configurationSettingsApiService;
8
+ this.flowsKey = 'flows';
9
+ }
10
+ getFlow(id) {
11
+ return this.fetchFlows().pipe(map(flows => flows.find(flow => flow.id == id)));
12
+ }
13
+ fetchFlows() {
14
+ return this.configurationSettingsApiService
15
+ .fetchSetting(this.flowsKey)
16
+ .pipe(map((flow) => ((flow === null || flow === void 0 ? void 0 : flow.value) ? JSON.parse(flow.value) : [])));
17
+ }
18
+ }
19
+ FlowsApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowsApiService, deps: [{ token: i1.ConfigurationSettingsApiService }], target: i0.ɵɵFactoryTarget.Injectable });
20
+ FlowsApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowsApiService });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowsApiService, decorators: [{
22
+ type: Injectable
23
+ }], ctorParameters: function () { return [{ type: i1.ConfigurationSettingsApiService }]; } });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvd3MtYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9zcmMvbGliL3NlcnZpY2VzL2Zsb3dzLWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFJckMsTUFBTSxPQUFPLGVBQWU7SUFHMUIsWUFBb0IsK0JBQWdFO1FBQWhFLG9DQUErQixHQUEvQiwrQkFBK0IsQ0FBaUM7UUFGbkUsYUFBUSxHQUFHLE9BQU8sQ0FBQztJQUVtRCxDQUFDO0lBRWpGLE9BQU8sQ0FBQyxFQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQywrQkFBK0I7YUFDeEMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7YUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUUsQ0FBQzs7NkdBYlUsZUFBZTtpSEFBZixlQUFlOzRGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGbG93IH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uU2V0dGluZ3NBcGlTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWd1cmF0aW9uLXNldHRpbmdzLWFwaS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZsb3dzQXBpU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmxvd3NLZXkgPSAnZmxvd3MnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlndXJhdGlvblNldHRpbmdzQXBpU2VydmljZTogQ29uZmlndXJhdGlvblNldHRpbmdzQXBpU2VydmljZSkge31cblxuICBwdWJsaWMgZ2V0RmxvdyhpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxGbG93IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuZmV0Y2hGbG93cygpLnBpcGUobWFwKGZsb3dzID0+IGZsb3dzLmZpbmQoZmxvdyA9PiBmbG93LmlkID09IGlkKSkpO1xuICB9XG5cbiAgcHVibGljIGZldGNoRmxvd3MoKTogT2JzZXJ2YWJsZTxGbG93W10+IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uU2V0dGluZ3NBcGlTZXJ2aWNlXG4gICAgICAuZmV0Y2hTZXR0aW5nKHRoaXMuZmxvd3NLZXkpXG4gICAgICAucGlwZShtYXAoKGZsb3cpOiBGbG93W10gPT4gKGZsb3c/LnZhbHVlID8gSlNPTi5wYXJzZShmbG93LnZhbHVlKSA6IFtdKSkpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,20 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common/http";
4
+ export class OrgInfoApiService {
5
+ constructor(http) {
6
+ var _a;
7
+ this.http = http;
8
+ this.CANVAS_URL_FALLBACK = 'https://canvas.velocpq.com';
9
+ this.hostUrl = (_a = window.VELO_CANVAS_API) !== null && _a !== void 0 ? _a : this.CANVAS_URL_FALLBACK;
10
+ }
11
+ getOrgInfo$(organizationId) {
12
+ return this.http.get(`${this.hostUrl}/org-info/${organizationId}`);
13
+ }
14
+ }
15
+ OrgInfoApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: OrgInfoApiService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
16
+ OrgInfoApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: OrgInfoApiService });
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: OrgInfoApiService, decorators: [{
18
+ type: Injectable
19
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWluZm8tYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9zcmMvbGliL3NlcnZpY2VzL29yZy1pbmZvLWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVEzQyxNQUFNLE9BQU8saUJBQWlCO0lBSTVCLFlBQW9CLElBQWdCOztRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBSG5CLHdCQUFtQixHQUFHLDRCQUE0QixDQUFDO1FBQ25ELFlBQU8sR0FBVyxNQUFBLE1BQU0sQ0FBQyxlQUFlLG1DQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUUvQyxDQUFDO0lBRWpDLFdBQVcsQ0FBQyxjQUFzQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sYUFBYSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7OytHQVJVLGlCQUFpQjttSEFBakIsaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmxXaW5kb3cgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE9yZ0luZm8gfSBmcm9tICcuLi90eXBlcy9vcmctaW5mby50eXBlcyc7XG5cbmRlY2xhcmUgY29uc3Qgd2luZG93OiBWbFdpbmRvdztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9yZ0luZm9BcGlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBDQU5WQVNfVVJMX0ZBTExCQUNLID0gJ2h0dHBzOi8vY2FudmFzLnZlbG9jcHEuY29tJztcbiAgcHJpdmF0ZSByZWFkb25seSBob3N0VXJsOiBzdHJpbmcgPSB3aW5kb3cuVkVMT19DQU5WQVNfQVBJID8/IHRoaXMuQ0FOVkFTX1VSTF9GQUxMQkFDSztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgcHVibGljIGdldE9yZ0luZm8kKG9yZ2FuaXphdGlvbklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9yZ0luZm8+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxPcmdJbmZvPihgJHt0aGlzLmhvc3RVcmx9L29yZy1pbmZvLyR7b3JnYW5pemF0aW9uSWR9YCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,38 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@veloceapps/core";
4
+ export class PicklistsApiService {
5
+ constructor(baseHttpService) {
6
+ this.baseHttpService = baseHttpService;
7
+ this.serviceUrl = '/admin';
8
+ this.fetchAllPicklists$ = () => this.baseHttpService.api({ url: `${this.serviceUrl}/picklists` });
9
+ this.fetchPicklist$ = (code) => this.baseHttpService.api({ url: `${this.serviceUrl}/picklists/${code}` });
10
+ this.createPicklist$ = (picklist) => {
11
+ return this.baseHttpService.api({ method: 'post', url: `${this.serviceUrl}/picklists`, body: picklist });
12
+ };
13
+ this.updatePicklist$ = (picklist) => {
14
+ return this.baseHttpService.api({
15
+ method: 'put',
16
+ url: `${this.serviceUrl}/picklists/${picklist.id}`,
17
+ body: picklist,
18
+ });
19
+ };
20
+ this.removePicklist$ = (id) => this.baseHttpService.api({ method: 'delete', url: `${this.serviceUrl}/picklists/${id}` });
21
+ this.restorePicklist$ = (id) => {
22
+ return this.baseHttpService.api({
23
+ url: `${this.serviceUrl}/picklists/${id}/restore`,
24
+ method: 'patch',
25
+ });
26
+ };
27
+ this.addPicklistValue$ = (picklist, value) => {
28
+ const data = Object.assign(Object.assign({}, picklist), { values: [...picklist.values, value] });
29
+ return this.baseHttpService.api({ method: 'put', url: `${this.serviceUrl}/picklists/${picklist.id}`, body: data });
30
+ };
31
+ }
32
+ }
33
+ PicklistsApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PicklistsApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
34
+ PicklistsApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PicklistsApiService });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PicklistsApiService, decorators: [{
36
+ type: Injectable
37
+ }], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2xpc3RzLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvc3JjL2xpYi9zZXJ2aWNlcy9waWNrbGlzdHMtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBSzNDLE1BQU0sT0FBTyxtQkFBbUI7SUFHOUIsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBRm5DLGVBQVUsR0FBVyxRQUFRLENBQUM7UUFJeEMsdUJBQWtCLEdBQUcsR0FBMkIsRUFBRSxDQUN2RCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLFlBQVksRUFBRSxDQUFDLENBQUM7UUFFN0QsbUJBQWMsR0FBRyxDQUFDLElBQVksRUFBd0IsRUFBRSxDQUM3RCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLGNBQWMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXJFLG9CQUFlLEdBQUcsQ0FBQyxRQUFxQixFQUF3QixFQUFFO1lBQ3ZFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLFlBQVksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMzRyxDQUFDLENBQUM7UUFFSyxvQkFBZSxHQUFHLENBQUMsUUFBa0IsRUFBd0IsRUFBRTtZQUNwRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDO2dCQUM5QixNQUFNLEVBQUUsS0FBSztnQkFDYixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxjQUFjLFFBQVEsQ0FBQyxFQUFFLEVBQUU7Z0JBQ2xELElBQUksRUFBRSxRQUFRO2FBQ2YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBRUssb0JBQWUsR0FBRyxDQUFDLEVBQVUsRUFBb0IsRUFBRSxDQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsY0FBYyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFckYscUJBQWdCLEdBQUcsQ0FBQyxFQUFVLEVBQW9CLEVBQUU7WUFDekQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQztnQkFDOUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsY0FBYyxFQUFFLFVBQVU7Z0JBQ2pELE1BQU0sRUFBRSxPQUFPO2FBQ2hCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUVLLHNCQUFpQixHQUFHLENBQUMsUUFBa0IsRUFBRSxLQUF1QixFQUF3QixFQUFFO1lBQy9GLE1BQU0sSUFBSSxtQ0FDTCxRQUFRLEtBQ1gsTUFBTSxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUNwQyxDQUFDO1lBRUYsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsY0FBYyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDckgsQ0FBQyxDQUFDO0lBckNxRCxDQUFDOztpSEFIN0MsbUJBQW1CO3FIQUFuQixtQkFBbUI7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VIdHRwU2VydmljZSwgTmV3UGlja2xpc3QsIE5ld1BpY2tsaXN0VmFsdWUsIFBpY2tsaXN0IH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQaWNrbGlzdHNBcGlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlVXJsOiBzdHJpbmcgPSAnL2FkbWluJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhc2VIdHRwU2VydmljZTogQmFzZUh0dHBTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBmZXRjaEFsbFBpY2tsaXN0cyQgPSAoKTogT2JzZXJ2YWJsZTxQaWNrbGlzdFtdPiA9PlxuICAgIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaSh7IHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS9waWNrbGlzdHNgIH0pO1xuXG4gIHB1YmxpYyBmZXRjaFBpY2tsaXN0JCA9IChjb2RlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFBpY2tsaXN0PiA9PlxuICAgIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaSh7IHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS9waWNrbGlzdHMvJHtjb2RlfWAgfSk7XG5cbiAgcHVibGljIGNyZWF0ZVBpY2tsaXN0JCA9IChwaWNrbGlzdDogTmV3UGlja2xpc3QpOiBPYnNlcnZhYmxlPFBpY2tsaXN0PiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaSh7IG1ldGhvZDogJ3Bvc3QnLCB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vcGlja2xpc3RzYCwgYm9keTogcGlja2xpc3QgfSk7XG4gIH07XG5cbiAgcHVibGljIHVwZGF0ZVBpY2tsaXN0JCA9IChwaWNrbGlzdDogUGlja2xpc3QpOiBPYnNlcnZhYmxlPFBpY2tsaXN0PiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICBtZXRob2Q6ICdwdXQnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9L3BpY2tsaXN0cy8ke3BpY2tsaXN0LmlkfWAsXG4gICAgICBib2R5OiBwaWNrbGlzdCxcbiAgICB9KTtcbiAgfTtcblxuICBwdWJsaWMgcmVtb3ZlUGlja2xpc3QkID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+ID0+XG4gICAgdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpKHsgbWV0aG9kOiAnZGVsZXRlJywgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9L3BpY2tsaXN0cy8ke2lkfWAgfSk7XG5cbiAgcHVibGljIHJlc3RvcmVQaWNrbGlzdCQgPSAoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGkoe1xuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9L3BpY2tsaXN0cy8ke2lkfS9yZXN0b3JlYCxcbiAgICAgIG1ldGhvZDogJ3BhdGNoJyxcbiAgICB9KTtcbiAgfTtcblxuICBwdWJsaWMgYWRkUGlja2xpc3RWYWx1ZSQgPSAocGlja2xpc3Q6IFBpY2tsaXN0LCB2YWx1ZTogTmV3UGlja2xpc3RWYWx1ZSk6IE9ic2VydmFibGU8UGlja2xpc3Q+ID0+IHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgLi4ucGlja2xpc3QsXG4gICAgICB2YWx1ZXM6IFsuLi5waWNrbGlzdC52YWx1ZXMsIHZhbHVlXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaSh7IG1ldGhvZDogJ3B1dCcsIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS9waWNrbGlzdHMvJHtwaWNrbGlzdC5pZH1gLCBib2R5OiBkYXRhIH0pO1xuICB9O1xufVxuIl19