@veloceapps/api 7.0.0-9 → 7.0.1-1

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 (73) hide show
  1. package/{esm2015/lib/api.module.js → esm2020/lib/api.module.mjs} +6 -6
  2. package/esm2020/lib/services/account-api.service.mjs +80 -0
  3. package/esm2020/lib/services/catalog-admin-api.service.mjs +165 -0
  4. package/{esm2015/lib/services/catalog-api.service.js → esm2020/lib/services/catalog-api.service.mjs} +4 -4
  5. package/esm2020/lib/services/configuration-api.service.mjs +78 -0
  6. package/esm2020/lib/services/configuration-settings-api.service.mjs +96 -0
  7. package/{esm2015/lib/services/context-api.service.js → esm2020/lib/services/context-api.service.mjs} +4 -4
  8. package/{esm2015/lib/services/delta-api.service.js → esm2020/lib/services/delta-api.service.mjs} +4 -4
  9. package/{esm2015/lib/services/document-attachment-api.service.js → esm2020/lib/services/document-attachment-api.service.mjs} +4 -4
  10. package/esm2020/lib/services/document-templates-api.service.mjs +298 -0
  11. package/{esm2015/lib/services/endpoints-api.service.js → esm2020/lib/services/endpoints-api.service.mjs} +4 -4
  12. package/esm2020/lib/services/flows-api.service.mjs +24 -0
  13. package/esm2020/lib/services/guided-sellings-admin-api.service.mjs +65 -0
  14. package/esm2020/lib/services/guided-sellings-api.service.mjs +27 -0
  15. package/{esm2015/lib/services/offers-api.service.js → esm2020/lib/services/offers-api.service.mjs} +4 -4
  16. package/esm2020/lib/services/org-info-api.service.mjs +19 -0
  17. package/{esm2015/lib/services/picklists-api.service.js → esm2020/lib/services/picklists-api.service.mjs} +8 -5
  18. package/{esm2015/lib/services/price-api.service.js → esm2020/lib/services/price-api.service.mjs} +4 -4
  19. package/{esm2015/lib/services/procedures-api.service.js → esm2020/lib/services/procedures-api.service.mjs} +4 -4
  20. package/{esm2015/lib/services/product-api.service.js → esm2020/lib/services/product-api.service.mjs} +4 -4
  21. package/esm2020/lib/services/product-model-api.service.mjs +232 -0
  22. package/esm2020/lib/services/quote-api.service.mjs +58 -0
  23. package/esm2020/lib/services/ramp-api.service.mjs +31 -0
  24. package/{esm2015/lib/services/rule-groups-api.service.js → esm2020/lib/services/rule-groups-api.service.mjs} +4 -4
  25. package/{esm2015/lib/services/rules-api.service.js → esm2020/lib/services/rules-api.service.mjs} +4 -4
  26. package/esm2020/lib/services/salesforce-api.service.mjs +61 -0
  27. package/{esm2015/lib/services/scripts-api.service.js → esm2020/lib/services/scripts-api.service.mjs} +4 -4
  28. package/esm2020/lib/services/shopping-cart-settings-api.service.mjs +28 -0
  29. package/esm2020/lib/services/ui-templates-api.service.mjs +281 -0
  30. package/esm2020/lib/types/dto/configuration-settings-dto.types.mjs +22 -0
  31. package/fesm2015/{veloceapps-api.js → veloceapps-api.mjs} +100 -101
  32. package/fesm2015/veloceapps-api.mjs.map +1 -0
  33. package/fesm2020/veloceapps-api.mjs +2468 -0
  34. package/fesm2020/veloceapps-api.mjs.map +1 -0
  35. package/lib/services/catalog-admin-api.service.d.ts +2 -2
  36. package/lib/services/guided-sellings-admin-api.service.d.ts +2 -2
  37. package/lib/services/quote-api.service.d.ts +1 -1
  38. package/lib/services/ui-templates-api.service.d.ts +3 -3
  39. package/lib/types/dto/offers-dto.types.d.ts +2 -2
  40. package/lib/types/search-request.types.d.ts +1 -1
  41. package/package.json +26 -24
  42. package/bundles/veloceapps-api.umd.js +0 -2880
  43. package/bundles/veloceapps-api.umd.js.map +0 -1
  44. package/esm2015/lib/services/account-api.service.js +0 -50
  45. package/esm2015/lib/services/catalog-admin-api.service.js +0 -165
  46. package/esm2015/lib/services/configuration-api.service.js +0 -72
  47. package/esm2015/lib/services/configuration-settings-api.service.js +0 -61
  48. package/esm2015/lib/services/document-templates-api.service.js +0 -284
  49. package/esm2015/lib/services/flows-api.service.js +0 -24
  50. package/esm2015/lib/services/guided-sellings-admin-api.service.js +0 -65
  51. package/esm2015/lib/services/guided-sellings-api.service.js +0 -27
  52. package/esm2015/lib/services/org-info-api.service.js +0 -20
  53. package/esm2015/lib/services/product-model-api.service.js +0 -232
  54. package/esm2015/lib/services/quote-api.service.js +0 -48
  55. package/esm2015/lib/services/ramp-api.service.js +0 -21
  56. package/esm2015/lib/services/salesforce-api.service.js +0 -43
  57. package/esm2015/lib/services/shopping-cart-settings-api.service.js +0 -28
  58. package/esm2015/lib/services/ui-templates-api.service.js +0 -282
  59. package/esm2015/lib/types/dto/configuration-settings-dto.types.js +0 -22
  60. package/fesm2015/veloceapps-api.js.map +0 -1
  61. package/veloceapps-api.d.ts +0 -5
  62. /package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  63. /package/{esm2015/lib/types/clone-request.types.js → esm2020/lib/types/clone-request.types.mjs} +0 -0
  64. /package/{esm2015/lib/types/delta-request.types.js → esm2020/lib/types/delta-request.types.mjs} +0 -0
  65. /package/{esm2015/lib/types/dto/offers-dto.types.js → esm2020/lib/types/dto/offers-dto.types.mjs} +0 -0
  66. /package/{esm2015/lib/types/dto/ui-template-dto.types.js → esm2020/lib/types/dto/ui-template-dto.types.mjs} +0 -0
  67. /package/{esm2015/lib/types/index.js → esm2020/lib/types/index.mjs} +0 -0
  68. /package/{esm2015/lib/types/org-info.types.js → esm2020/lib/types/org-info.types.mjs} +0 -0
  69. /package/{esm2015/lib/types/price.types.js → esm2020/lib/types/price.types.mjs} +0 -0
  70. /package/{esm2015/lib/types/ramp-request.types.js → esm2020/lib/types/ramp-request.types.mjs} +0 -0
  71. /package/{esm2015/lib/types/search-request.types.js → esm2020/lib/types/search-request.types.mjs} +0 -0
  72. /package/{esm2015/lib/utils/ui-template.utils.js → esm2020/lib/utils/ui-template.utils.mjs} +0 -0
  73. /package/{esm2015/veloceapps-api.js → esm2020/veloceapps-api.mjs} +0 -0
@@ -0,0 +1,281 @@
1
+ import { HttpParams } from '@angular/common/http';
2
+ import { Injectable } from '@angular/core';
3
+ import { catchError, forkJoin, map, noop, of, switchMap } from 'rxjs';
4
+ import { fromUIComponentStoryDTO } from '../utils/ui-template.utils';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@veloceapps/core";
7
+ export class UITemplatesApiService {
8
+ constructor(baseHttpService) {
9
+ this.baseHttpService = baseHttpService;
10
+ this.serviceUrl = '/uitemplates';
11
+ this.fetchTemplates$ = (name) => {
12
+ let params = new HttpParams();
13
+ if (name) {
14
+ params = params.append('name', name);
15
+ }
16
+ return this.baseHttpService.api({ url: `${this.serviceUrl}`, params });
17
+ };
18
+ this.createTemplate$ = (template) => {
19
+ return this.baseHttpService.api({
20
+ method: 'post',
21
+ url: `${this.serviceUrl}`,
22
+ body: template,
23
+ });
24
+ };
25
+ this.updateTemplate$ = (template) => {
26
+ return this.baseHttpService.api({
27
+ method: 'put',
28
+ url: `${this.serviceUrl}/${template.id}`,
29
+ body: template,
30
+ });
31
+ };
32
+ this.duplicateTemplate$ = (template, cloneRequest) => {
33
+ return this.baseHttpService
34
+ .api({
35
+ url: `${this.serviceUrl}/${template.id}/clone`,
36
+ method: 'post',
37
+ body: cloneRequest,
38
+ })
39
+ .pipe(map(response => response.clonedRecordId));
40
+ };
41
+ this.removeTemplate$ = (id) => {
42
+ return this.baseHttpService.api({
43
+ method: 'delete',
44
+ url: `${this.serviceUrl}/${id}`,
45
+ });
46
+ };
47
+ this.restoreTemplate$ = (id) => {
48
+ return this.baseHttpService.api({
49
+ method: 'patch',
50
+ url: `${this.serviceUrl}/${id}`,
51
+ });
52
+ };
53
+ this.searchTemplates$ = (data) => {
54
+ return this.baseHttpService.api({
55
+ method: 'post',
56
+ url: `${this.serviceUrl}/search`,
57
+ params: data.params,
58
+ body: data.expression,
59
+ });
60
+ };
61
+ this.fetchComponents$ = (templateId, name) => {
62
+ let params = new HttpParams();
63
+ if (name) {
64
+ params = params.append('name', name);
65
+ }
66
+ return this.baseHttpService.api({
67
+ url: `${this.serviceUrl}/${templateId}/components`,
68
+ params,
69
+ });
70
+ };
71
+ this.fetchComponent$ = (templateId, componentId) => {
72
+ return this.baseHttpService.api({
73
+ url: `${this.serviceUrl}/${templateId}/components/${componentId}`,
74
+ });
75
+ };
76
+ this.createComponent$ = (component) => {
77
+ return this.baseHttpService.api({
78
+ method: 'post',
79
+ url: `${this.serviceUrl}/${component.uiTemplateId}/components`,
80
+ body: component,
81
+ });
82
+ };
83
+ this.updateComponent$ = (component) => {
84
+ return this.baseHttpService.api({
85
+ method: 'put',
86
+ url: `${this.serviceUrl}/${component.uiTemplateId}/components/${component.id}`,
87
+ body: component,
88
+ });
89
+ };
90
+ this.duplicateComponent$ = (component, cloneRequest) => {
91
+ return this.baseHttpService
92
+ .api({
93
+ url: `${this.serviceUrl}/${component.uiTemplateId}/components/${component.id}/clone`,
94
+ method: 'post',
95
+ body: cloneRequest,
96
+ })
97
+ .pipe(map(response => response.clonedRecordId));
98
+ };
99
+ this.removeComponent$ = (templateId, componentId) => {
100
+ return this.baseHttpService.api({
101
+ method: 'delete',
102
+ url: `${this.serviceUrl}/${templateId}/components/${componentId}`,
103
+ });
104
+ };
105
+ this.restoreComponent$ = (templateId, componentId) => {
106
+ return this.baseHttpService.api({
107
+ method: 'patch',
108
+ url: `${this.serviceUrl}/${templateId}/components/${componentId}`,
109
+ });
110
+ };
111
+ this.searchComponents$ = (templateId, data) => {
112
+ return this.baseHttpService.api({
113
+ method: 'post',
114
+ url: `${this.serviceUrl}/${templateId}/components/search`,
115
+ params: data.params,
116
+ body: data.expression,
117
+ });
118
+ };
119
+ this.fetchStoryAttachment = (templateId, componentId, storyId, type) => {
120
+ return this.baseHttpService
121
+ .api({
122
+ url: `${this.serviceUrl}/${templateId}/components/${componentId}/stories/${storyId}/attachments/${type}/file`,
123
+ responseType: 'text',
124
+ errorHandler: noop,
125
+ })
126
+ .pipe(catchError(() => of('')));
127
+ };
128
+ this.convertToComponentStory$ = (templateId, componentId, storyDto) => {
129
+ return forkJoin([
130
+ this.fetchStoryAttachment(templateId, componentId, storyDto.id, 'html'),
131
+ this.fetchStoryAttachment(templateId, componentId, storyDto.id, 'js'),
132
+ this.fetchStoryAttachment(templateId, componentId, storyDto.id, 'css'),
133
+ this.fetchStoryAttachment(templateId, componentId, storyDto.id, 'json'),
134
+ ]).pipe(map(([html, js, css, json]) => ({ html, js, css, json })), map(attachments => fromUIComponentStoryDTO(storyDto, attachments)));
135
+ };
136
+ this.fetchStories$ = (templateId, componentId, name) => {
137
+ let params = new HttpParams();
138
+ if (name) {
139
+ params = params.append('name', name);
140
+ }
141
+ return this.baseHttpService
142
+ .api({
143
+ url: `${this.serviceUrl}/${templateId}/components/${componentId}/stories`,
144
+ params,
145
+ })
146
+ .pipe(switchMap(dtos => {
147
+ if (!dtos.length) {
148
+ return of([]);
149
+ }
150
+ return forkJoin(dtos.map(dto => this.convertToComponentStory$(templateId, componentId, dto)));
151
+ }));
152
+ };
153
+ this.fetchStory$ = (templateId, componentId, storyId) => {
154
+ return this.baseHttpService
155
+ .api({
156
+ url: `${this.serviceUrl}/${templateId}/components/${componentId}/stories/${storyId}`,
157
+ })
158
+ .pipe(switchMap(dto => this.convertToComponentStory$(templateId, componentId, dto)));
159
+ };
160
+ this.createComponentStory$ = (templateId, story) => {
161
+ return this.baseHttpService.api({
162
+ method: 'post',
163
+ url: `${this.serviceUrl}/${templateId}/components/${story.uiComponentId}/stories`,
164
+ body: story,
165
+ });
166
+ };
167
+ this.updateComponentStory$ = (templateId, story) => {
168
+ const { script, template, styles, section, ...rest } = story;
169
+ return this.baseHttpService
170
+ .api({
171
+ method: 'put',
172
+ url: `${this.serviceUrl}/${templateId}/components/${story.uiComponentId}/stories/${story.id}`,
173
+ body: rest,
174
+ })
175
+ .pipe(map(dto => fromUIComponentStoryDTO(dto, { html: template, js: script, css: styles, json: section })));
176
+ };
177
+ this.duplicateComponentStory$ = (story, cloneRequest) => {
178
+ return this.baseHttpService
179
+ .api({
180
+ url: `${this.serviceUrl}/${story.template}/components/${story.uiComponentId}/stories/${story.id}/clone`,
181
+ method: 'post',
182
+ body: cloneRequest,
183
+ })
184
+ .pipe(map(response => response.clonedRecordId));
185
+ };
186
+ this.deleteComponentStory$ = (templateId, componentId, storyId) => {
187
+ return this.baseHttpService.api({
188
+ method: 'delete',
189
+ url: `${this.serviceUrl}/${templateId}/components/${componentId}/stories/${storyId}`,
190
+ });
191
+ };
192
+ this.restoreComponentStory$ = (templateId, componentId, storyId) => {
193
+ return this.baseHttpService.api({
194
+ method: 'patch',
195
+ url: `${this.serviceUrl}/${templateId}/components/${componentId}/stories/${storyId}`,
196
+ });
197
+ };
198
+ this.uploadStoryAttachments$ = (templateId, componentId, storyId, attachments) => {
199
+ const formData = new FormData();
200
+ if (attachments.html != null) {
201
+ formData.append('html', new Blob([attachments.html]), 'story-template.html');
202
+ }
203
+ if (attachments.css != null) {
204
+ formData.append('css', new Blob([attachments.css]), 'story-styles.css');
205
+ }
206
+ if (attachments.js != null) {
207
+ formData.append('js', new Blob([attachments.js]), 'story-script.js');
208
+ }
209
+ if (attachments.json != null) {
210
+ formData.append('json', new Blob([attachments.json]), 'story-section.json');
211
+ }
212
+ return this.baseHttpService.upload({
213
+ method: 'post',
214
+ url: `${this.serviceUrl}/${templateId}/components/${componentId}/stories/${storyId}/attachments`,
215
+ body: formData,
216
+ });
217
+ };
218
+ this.fetchComponentAttachments$ = (templateId, component) => {
219
+ return forkJoin([
220
+ this.fetchComponentAttachmentFile$(templateId, component.id, 'html'),
221
+ this.fetchComponentAttachmentFile$(templateId, component.id, 'js'),
222
+ this.fetchComponentAttachmentFile$(templateId, component.id, 'css'),
223
+ this.fetchComponentAttachmentFile$(templateId, component.id, 'json'),
224
+ ]).pipe(map(([html, js, css, json]) => ({ html, js, css, json })));
225
+ };
226
+ this.fetchComponentAttachmentFile$ = (templateId, componentId, attachmentType) => {
227
+ return this.baseHttpService
228
+ .api({
229
+ method: 'get',
230
+ url: `${this.serviceUrl}/${templateId}/components/${componentId}/attachments/${attachmentType}/file`,
231
+ responseType: 'text',
232
+ errorHandler: noop,
233
+ })
234
+ .pipe(catchError(() => of('')));
235
+ };
236
+ this.uploadComponentAttachments$ = (templateId, componentId, attachments) => {
237
+ const formData = new FormData();
238
+ if (attachments.html != null) {
239
+ formData.append('html', new Blob([attachments.html]), 'template.html');
240
+ }
241
+ if (attachments.css != null) {
242
+ formData.append('css', new Blob([attachments.css]), 'styles.css');
243
+ }
244
+ if (attachments.js != null) {
245
+ formData.append('js', new Blob([attachments.js]), 'script.js');
246
+ }
247
+ if (attachments.json != null) {
248
+ formData.append('json', new Blob([attachments.json]), 'section.json');
249
+ }
250
+ return this.baseHttpService.upload({
251
+ method: 'post',
252
+ url: `${this.serviceUrl}/${templateId}/components/${componentId}/attachments`,
253
+ body: formData,
254
+ });
255
+ };
256
+ }
257
+ getTemplateThumbnailUrl(templateId) {
258
+ return `${this.serviceUrl}/${templateId}/thumbnail/file`;
259
+ }
260
+ attachTemplateThumbnail$(templateId, file) {
261
+ const data = new FormData();
262
+ data.append('thumb', file);
263
+ return this.baseHttpService.upload({
264
+ method: 'post',
265
+ url: `${this.serviceUrl}/${templateId}/thumbnail`,
266
+ body: data,
267
+ });
268
+ }
269
+ removeTemplateThumbnail$(templateId) {
270
+ return this.baseHttpService.api({
271
+ method: 'delete',
272
+ url: `${this.serviceUrl}/${templateId}/thumbnail`,
273
+ });
274
+ }
275
+ }
276
+ UITemplatesApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: UITemplatesApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
277
+ UITemplatesApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: UITemplatesApiService });
278
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.8", ngImport: i0, type: UITemplatesApiService, decorators: [{
279
+ type: Injectable
280
+ }], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGVtcGxhdGVzLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvc3JjL2xpYi9zZXJ2aWNlcy91aS10ZW1wbGF0ZXMtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFlM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBYyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR2xGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7QUFHckUsTUFBTSxPQUFPLHFCQUFxQjtJQUdoQyxZQUFvQixlQUFnQztRQUFoQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFGbkMsZUFBVSxHQUFXLGNBQWMsQ0FBQztRQUk5QyxvQkFBZSxHQUFHLENBQUMsSUFBYSxFQUE0QixFQUFFO1lBQ25FLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7WUFDOUIsSUFBSSxJQUFJLEVBQUU7Z0JBQ1IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQ3RDO1lBRUQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBZSxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLENBQUMsQ0FBQztRQUVLLG9CQUFlLEdBQUcsQ0FBQyxRQUF1QixFQUEwQixFQUFFO1lBQzNFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQWE7Z0JBQzFDLE1BQU0sRUFBRSxNQUFNO2dCQUNkLEdBQUcsRUFBRSxHQUFH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IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJhc2VIdHRwU2VydmljZSxcbiAgQ29tcG9uZW50QXR0YWNobWVudHMsXG4gIENvbXBvbmVudFN0b3J5LFxuICBDb21wb25lbnRTdG9yeUF0dGFjaG1lbnRzLFxuICBFeHByZXNzaW9uLFxuICBOZXdDb21wb25lbnRTdG9yeSxcbiAgTmV3VGVtcGxhdGVDb21wb25lbnQsXG4gIE5ld1VJVGVtcGxhdGUsXG4gIFRlbXBsYXRlQXR0YWNobWVudFR5cGUsXG4gIFRlbXBsYXRlQ29tcG9uZW50LFxuICBVSVRlbXBsYXRlLFxufSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IERpY3Rpb25hcnkgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZm9ya0pvaW4sIG1hcCwgbm9vcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2xvbmVSZXF1ZXN0IH0gZnJvbSAnLi4vdHlwZXMvY2xvbmUtcmVxdWVzdC50eXBlcyc7XG5pbXBvcnQgeyBVSUNvbXBvbmVudFN0b3J5RFRPIH0gZnJvbSAnLi4vdHlwZXMvZHRvL3VpLXRlbXBsYXRlLWR0by50eXBlcyc7XG5pbXBvcnQgeyBmcm9tVUlDb21wb25lbnRTdG9yeURUTyB9IGZyb20gJy4uL3V0aWxzL3VpLXRlbXBsYXRlLnV0aWxzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVJVGVtcGxhdGVzQXBpU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZVVybDogc3RyaW5nID0gJy91aXRlbXBsYXRlcyc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBiYXNlSHR0cFNlcnZpY2U6IEJhc2VIdHRwU2VydmljZSkge31cblxuICBwdWJsaWMgZmV0Y2hUZW1wbGF0ZXMkID0gKG5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVJVGVtcGxhdGVbXT4gPT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCduYW1lJywgbmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaTxVSVRlbXBsYXRlW10+KHsgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9YCwgcGFyYW1zIH0pO1xuICB9O1xuXG4gIHB1YmxpYyBjcmVhdGVUZW1wbGF0ZSQgPSAodGVtcGxhdGU6IE5ld1VJVGVtcGxhdGUpOiBPYnNlcnZhYmxlPFVJVGVtcGxhdGU+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpPFVJVGVtcGxhdGU+KHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9YCxcbiAgICAgIGJvZHk6IHRlbXBsYXRlLFxuICAgIH0pO1xuICB9O1xuXG4gIHB1YmxpYyB1cGRhdGVUZW1wbGF0ZSQgPSAodGVtcGxhdGU6IFVJVGVtcGxhdGUpOiBPYnNlcnZhYmxlPFVJVGVtcGxhdGU+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpPFVJVGVtcGxhdGU+KHtcbiAgICAgIG1ldGhvZDogJ3B1dCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZS5pZH1gLFxuICAgICAgYm9keTogdGVtcGxhdGUsXG4gICAgfSk7XG4gIH07XG5cbiAgcHVibGljIGR1cGxpY2F0ZVRlbXBsYXRlJCA9ICh0ZW1wbGF0ZTogVUlUZW1wbGF0ZSwgY2xvbmVSZXF1ZXN0OiBDbG9uZVJlcXVlc3QpOiBPYnNlcnZhYmxlPHN0cmluZz4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZVxuICAgICAgLmFwaSh7XG4gICAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlLmlkfS9jbG9uZWAsXG4gICAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgICBib2R5OiBjbG9uZVJlcXVlc3QsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlLmNsb25lZFJlY29yZElkKSk7XG4gIH07XG5cbiAgcHVibGljIHJlbW92ZVRlbXBsYXRlJCA9IChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICBtZXRob2Q6ICdkZWxldGUnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7aWR9YCxcbiAgICB9KTtcbiAgfTtcblxuICBwdWJsaWMgcmVzdG9yZVRlbXBsYXRlJCA9IChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICBtZXRob2Q6ICdwYXRjaCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHtpZH1gLFxuICAgIH0pO1xuICB9O1xuXG4gIHB1YmxpYyBzZWFyY2hUZW1wbGF0ZXMkID0gKGRhdGE6IHtcbiAgICBwYXJhbXM/OiBEaWN0aW9uYXJ5PHN0cmluZz47XG4gICAgZXhwcmVzc2lvbj86IEV4cHJlc3Npb247XG4gIH0pOiBPYnNlcnZhYmxlPFVJVGVtcGxhdGVbXT4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGkoe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vc2VhcmNoYCxcbiAgICAgIHBhcmFtczogZGF0YS5wYXJhbXMsXG4gICAgICBib2R5OiBkYXRhLmV4cHJlc3Npb24sXG4gICAgfSk7XG4gIH07XG5cbiAgcHVibGljIGZldGNoQ29tcG9uZW50cyQgPSAodGVtcGxhdGVJZDogc3RyaW5nLCBuYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxUZW1wbGF0ZUNvbXBvbmVudFtdPiA9PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ25hbWUnLCBuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpPFRlbXBsYXRlQ29tcG9uZW50W10+KHtcbiAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L2NvbXBvbmVudHNgLFxuICAgICAgcGFyYW1zLFxuICAgIH0pO1xuICB9O1xuXG4gIHB1YmxpYyBmZXRjaENvbXBvbmVudCQgPSAodGVtcGxhdGVJZDogc3RyaW5nLCBjb21wb25lbnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUZW1wbGF0ZUNvbXBvbmVudD4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGk8VGVtcGxhdGVDb21wb25lbnQ+KHtcbiAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L2NvbXBvbmVudHMvJHtjb21wb25lbnRJZH1gLFxuICAgIH0pO1xuICB9O1xuXG4gIHB1YmxpYyBjcmVhdGVDb21wb25lbnQkID0gKGNvbXBvbmVudDogTmV3VGVtcGxhdGVDb21wb25lbnQpOiBPYnNlcnZhYmxlPFRlbXBsYXRlQ29tcG9uZW50PiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaTxUZW1wbGF0ZUNvbXBvbmVudD4oe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHtjb21wb25lbnQudWlUZW1wbGF0ZUlkfS9jb21wb25lbnRzYCxcbiAgICAgIGJvZHk6IGNvbXBvbmVudCxcbiAgICB9KTtcbiAgfTtcblxuICBwdWJsaWMgdXBkYXRlQ29tcG9uZW50JCA9IChjb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50KTogT2JzZXJ2YWJsZTxUZW1wbGF0ZUNvbXBvbmVudD4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGk8VGVtcGxhdGVDb21wb25lbnQ+KHtcbiAgICAgIG1ldGhvZDogJ3B1dCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHtjb21wb25lbnQudWlUZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50LmlkfWAsXG4gICAgICBib2R5OiBjb21wb25lbnQsXG4gICAgfSk7XG4gIH07XG5cbiAgcHVibGljIGR1cGxpY2F0ZUNvbXBvbmVudCQgPSAoY29tcG9uZW50OiBUZW1wbGF0ZUNvbXBvbmVudCwgY2xvbmVSZXF1ZXN0OiBDbG9uZVJlcXVlc3QpOiBPYnNlcnZhYmxlPHN0cmluZz4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZVxuICAgICAgLmFwaSh7XG4gICAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke2NvbXBvbmVudC51aVRlbXBsYXRlSWR9L2NvbXBvbmVudHMvJHtjb21wb25lbnQuaWR9L2Nsb25lYCxcbiAgICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICAgIGJvZHk6IGNsb25lUmVxdWVzdCxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2UuY2xvbmVkUmVjb3JkSWQpKTtcbiAgfTtcblxuICBwdWJsaWMgcmVtb3ZlQ29tcG9uZW50JCA9ICh0ZW1wbGF0ZUlkOiBzdHJpbmcsIGNvbXBvbmVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50SWR9YCxcbiAgICB9KTtcbiAgfTtcblxuICBwdWJsaWMgcmVzdG9yZUNvbXBvbmVudCQgPSAodGVtcGxhdGVJZDogc3RyaW5nLCBjb21wb25lbnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICBtZXRob2Q6ICdwYXRjaCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50SWR9YCxcbiAgICB9KTtcbiAgfTtcblxuICBwdWJsaWMgc2VhcmNoQ29tcG9uZW50cyQgPSAoXG4gICAgdGVtcGxhdGVJZDogc3RyaW5nLFxuICAgIGRhdGE6IHsgcGFyYW1zPzogRGljdGlvbmFyeTxzdHJpbmc+OyBleHByZXNzaW9uPzogRXhwcmVzc2lvbiB9LFxuICApOiBPYnNlcnZhYmxlPFRlbXBsYXRlQ29tcG9uZW50W10+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vY29tcG9uZW50cy9zZWFyY2hgLFxuICAgICAgcGFyYW1zOiBkYXRhLnBhcmFtcyxcbiAgICAgIGJvZHk6IGRhdGEuZXhwcmVzc2lvbixcbiAgICB9KTtcbiAgfTtcblxuICBwdWJsaWMgZmV0Y2hTdG9yeUF0dGFjaG1lbnQgPSAoXG4gICAgdGVtcGxhdGVJZDogc3RyaW5nLFxuICAgIGNvbXBvbmVudElkOiBzdHJpbmcsXG4gICAgc3RvcnlJZDogc3RyaW5nLFxuICAgIHR5cGU6IFRlbXBsYXRlQXR0YWNobWVudFR5cGUsXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlXG4gICAgICAuYXBpPHN0cmluZz4oe1xuICAgICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50SWR9L3N0b3JpZXMvJHtzdG9yeUlkfS9hdHRhY2htZW50cy8ke3R5cGV9L2ZpbGVgLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgZXJyb3JIYW5kbGVyOiBub29wLFxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoJycpKSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VG9Db21wb25lbnRTdG9yeSQgPSAoXG4gICAgdGVtcGxhdGVJZDogc3RyaW5nLFxuICAgIGNvbXBvbmVudElkOiBzdHJpbmcsXG4gICAgc3RvcnlEdG86IFVJQ29tcG9uZW50U3RvcnlEVE8sXG4gICk6IE9ic2VydmFibGU8Q29tcG9uZW50U3Rvcnk+ID0+IHtcbiAgICByZXR1cm4gZm9ya0pvaW4oW1xuICAgICAgdGhpcy5mZXRjaFN0b3J5QXR0YWNobWVudCh0ZW1wbGF0ZUlkLCBjb21wb25lbnRJZCwgc3RvcnlEdG8uaWQsICdodG1sJyksXG4gICAgICB0aGlzLmZldGNoU3RvcnlBdHRhY2htZW50KHRlbXBsYXRlSWQsIGNvbXBvbmVudElkLCBzdG9yeUR0by5pZCwgJ2pzJyksXG4gICAgICB0aGlzLmZldGNoU3RvcnlBdHRhY2htZW50KHRlbXBsYXRlSWQsIGNvbXBvbmVudElkLCBzdG9yeUR0by5pZCwgJ2NzcycpLFxuICAgICAgdGhpcy5mZXRjaFN0b3J5QXR0YWNobWVudCh0ZW1wbGF0ZUlkLCBjb21wb25lbnRJZCwgc3RvcnlEdG8uaWQsICdqc29uJyksXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2h0bWwsIGpzLCBjc3MsIGpzb25dKSA9PiAoeyBodG1sLCBqcywgY3NzLCBqc29uIH0pKSxcbiAgICAgIG1hcChhdHRhY2htZW50cyA9PiBmcm9tVUlDb21wb25lbnRTdG9yeURUTyhzdG9yeUR0bywgYXR0YWNobWVudHMpKSxcbiAgICApO1xuICB9O1xuXG4gIHB1YmxpYyBmZXRjaFN0b3JpZXMkID0gKHRlbXBsYXRlSWQ6IHN0cmluZywgY29tcG9uZW50SWQ6IHN0cmluZywgbmFtZT86IHN0cmluZyk6IE9ic2VydmFibGU8Q29tcG9uZW50U3RvcnlbXT4gPT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCduYW1lJywgbmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlXG4gICAgICAuYXBpPFVJQ29tcG9uZW50U3RvcnlEVE9bXT4oe1xuICAgICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50SWR9L3N0b3JpZXNgLFxuICAgICAgICBwYXJhbXMsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChkdG9zID0+IHtcbiAgICAgICAgICBpZiAoIWR0b3MubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZm9ya0pvaW4oZHRvcy5tYXAoZHRvID0+IHRoaXMuY29udmVydFRvQ29tcG9uZW50U3RvcnkkKHRlbXBsYXRlSWQsIGNvbXBvbmVudElkLCBkdG8pKSk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfTtcblxuICBwdWJsaWMgZmV0Y2hTdG9yeSQgPSAodGVtcGxhdGVJZDogc3RyaW5nLCBjb21wb25lbnRJZDogc3RyaW5nLCBzdG9yeUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENvbXBvbmVudFN0b3J5PiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlXG4gICAgICAuYXBpPFVJQ29tcG9uZW50U3RvcnlEVE8+KHtcbiAgICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vY29tcG9uZW50cy8ke2NvbXBvbmVudElkfS9zdG9yaWVzLyR7c3RvcnlJZH1gLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHN3aXRjaE1hcChkdG8gPT4gdGhpcy5jb252ZXJ0VG9Db21wb25lbnRTdG9yeSQodGVtcGxhdGVJZCwgY29tcG9uZW50SWQsIGR0bykpKTtcbiAgfTtcblxuICBwdWJsaWMgY3JlYXRlQ29tcG9uZW50U3RvcnkkID0gKHRlbXBsYXRlSWQ6IHN0cmluZywgc3Rvcnk6IE5ld0NvbXBvbmVudFN0b3J5KTogT2JzZXJ2YWJsZTxDb21wb25lbnRTdG9yeT4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGk8Q29tcG9uZW50U3Rvcnk+KHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vY29tcG9uZW50cy8ke3N0b3J5LnVpQ29tcG9uZW50SWR9L3N0b3JpZXNgLFxuICAgICAgYm9keTogc3RvcnksXG4gICAgfSk7XG4gIH07XG5cbiAgcHVibGljIHVwZGF0ZUNvbXBvbmVudFN0b3J5JCA9ICh0ZW1wbGF0ZUlkOiBzdHJpbmcsIHN0b3J5OiBDb21wb25lbnRTdG9yeSk6IE9ic2VydmFibGU8Q29tcG9uZW50U3Rvcnk+ID0+IHtcbiAgICBjb25zdCB7IHNjcmlwdCwgdGVtcGxhdGUsIHN0eWxlcywgc2VjdGlvbiwgLi4ucmVzdCB9ID0gc3Rvcnk7XG5cbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2VcbiAgICAgIC5hcGk8VUlDb21wb25lbnRTdG9yeURUTz4oe1xuICAgICAgICBtZXRob2Q6ICdwdXQnLFxuICAgICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7c3RvcnkudWlDb21wb25lbnRJZH0vc3Rvcmllcy8ke3N0b3J5LmlkfWAsXG4gICAgICAgIGJvZHk6IHJlc3QsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKGR0byA9PiBmcm9tVUlDb21wb25lbnRTdG9yeURUTyhkdG8sIHsgaHRtbDogdGVtcGxhdGUsIGpzOiBzY3JpcHQsIGNzczogc3R5bGVzLCBqc29uOiBzZWN0aW9uIH0pKSk7XG4gIH07XG5cbiAgcHVibGljIGR1cGxpY2F0ZUNvbXBvbmVudFN0b3J5JCA9IChzdG9yeTogQ29tcG9uZW50U3RvcnksIGNsb25lUmVxdWVzdDogQ2xvbmVSZXF1ZXN0KTogT2JzZXJ2YWJsZTxzdHJpbmc+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2VcbiAgICAgIC5hcGkoe1xuICAgICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHtzdG9yeS50ZW1wbGF0ZX0vY29tcG9uZW50cy8ke3N0b3J5LnVpQ29tcG9uZW50SWR9L3N0b3JpZXMvJHtzdG9yeS5pZH0vY2xvbmVgLFxuICAgICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgICAgYm9keTogY2xvbmVSZXF1ZXN0LFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcChyZXNwb25zZSA9PiByZXNwb25zZS5jbG9uZWRSZWNvcmRJZCkpO1xuICB9O1xuXG4gIHB1YmxpYyBkZWxldGVDb21wb25lbnRTdG9yeSQgPSAodGVtcGxhdGVJZDogc3RyaW5nLCBjb21wb25lbnRJZDogc3RyaW5nLCBzdG9yeUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50SWR9L3N0b3JpZXMvJHtzdG9yeUlkfWAsXG4gICAgfSk7XG4gIH07XG5cbiAgcHVibGljIHJlc3RvcmVDb21wb25lbnRTdG9yeSQgPSAodGVtcGxhdGVJZDogc3RyaW5nLCBjb21wb25lbnRJZDogc3RyaW5nLCBzdG9yeUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIG1ldGhvZDogJ3BhdGNoJyxcbiAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L2NvbXBvbmVudHMvJHtjb21wb25lbnRJZH0vc3Rvcmllcy8ke3N0b3J5SWR9YCxcbiAgICB9KTtcbiAgfTtcblxuICBwdWJsaWMgdXBsb2FkU3RvcnlBdHRhY2htZW50cyQgPSAoXG4gICAgdGVtcGxhdGVJZDogc3RyaW5nLFxuICAgIGNvbXBvbmVudElkOiBzdHJpbmcsXG4gICAgc3RvcnlJZDogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzOiBDb21wb25lbnRTdG9yeUF0dGFjaG1lbnRzLFxuICApOiBPYnNlcnZhYmxlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGlmIChhdHRhY2htZW50cy5odG1sICE9IG51bGwpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnaHRtbCcsIG5ldyBCbG9iKFthdHRhY2htZW50cy5odG1sXSksICdzdG9yeS10ZW1wbGF0ZS5odG1sJyk7XG4gICAgfVxuICAgIGlmIChhdHRhY2htZW50cy5jc3MgIT0gbnVsbCkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdjc3MnLCBuZXcgQmxvYihbYXR0YWNobWVudHMuY3NzXSksICdzdG9yeS1zdHlsZXMuY3NzJyk7XG4gICAgfVxuICAgIGlmIChhdHRhY2htZW50cy5qcyAhPSBudWxsKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzJywgbmV3IEJsb2IoW2F0dGFjaG1lbnRzLmpzXSksICdzdG9yeS1zY3JpcHQuanMnKTtcbiAgICB9XG4gICAgaWYgKGF0dGFjaG1lbnRzLmpzb24gIT0gbnVsbCkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uJywgbmV3IEJsb2IoW2F0dGFjaG1lbnRzLmpzb25dKSwgJ3N0b3J5LXNlY3Rpb24uanNvbicpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS51cGxvYWQoe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50SWR9L3N0b3JpZXMvJHtzdG9yeUlkfS9hdHRhY2htZW50c2AsXG4gICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICB9KTtcbiAgfTtcblxuICBwdWJsaWMgZ2V0VGVtcGxhdGVUaHVtYm5haWxVcmwodGVtcGxhdGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS90aHVtYm5haWwvZmlsZWA7XG4gIH1cblxuICBwdWJsaWMgYXR0YWNoVGVtcGxhdGVUaHVtYm5haWwkKHRlbXBsYXRlSWQ6IHN0cmluZywgZmlsZTogRmlsZSkge1xuICAgIGNvbnN0IGRhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBkYXRhLmFwcGVuZCgndGh1bWInLCBmaWxlKTtcblxuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS51cGxvYWQoe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS90aHVtYm5haWxgLFxuICAgICAgYm9keTogZGF0YSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVUZW1wbGF0ZVRodW1ibmFpbCQodGVtcGxhdGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICBtZXRob2Q6ICdkZWxldGUnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vdGh1bWJuYWlsYCxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBmZXRjaENvbXBvbmVudEF0dGFjaG1lbnRzJCA9IChcbiAgICB0ZW1wbGF0ZUlkOiBzdHJpbmcsXG4gICAgY29tcG9uZW50OiBUZW1wbGF0ZUNvbXBvbmVudCxcbiAgKTogT2JzZXJ2YWJsZTxDb21wb25lbnRBdHRhY2htZW50cz4gPT4ge1xuICAgIHJldHVybiBmb3JrSm9pbihbXG4gICAgICB0aGlzLmZldGNoQ29tcG9uZW50QXR0YWNobWVudEZpbGUkKHRlbXBsYXRlSWQsIGNvbXBvbmVudC5pZCwgJ2h0bWwnKSxcbiAgICAgIHRoaXMuZmV0Y2hDb21wb25lbnRBdHRhY2htZW50RmlsZSQodGVtcGxhdGVJZCwgY29tcG9uZW50LmlkLCAnanMnKSxcbiAgICAgIHRoaXMuZmV0Y2hDb21wb25lbnRBdHRhY2htZW50RmlsZSQodGVtcGxhdGVJZCwgY29tcG9uZW50LmlkLCAnY3NzJyksXG4gICAgICB0aGlzLmZldGNoQ29tcG9uZW50QXR0YWNobWVudEZpbGUkKHRlbXBsYXRlSWQsIGNvbXBvbmVudC5pZCwgJ2pzb24nKSxcbiAgICBdKS5waXBlKG1hcCgoW2h0bWwsIGpzLCBjc3MsIGpzb25dKSA9PiAoeyBodG1sLCBqcywgY3NzLCBqc29uIH0pKSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBmZXRjaENvbXBvbmVudEF0dGFjaG1lbnRGaWxlJCA9IChcbiAgICB0ZW1wbGF0ZUlkOiBzdHJpbmcsXG4gICAgY29tcG9uZW50SWQ6IHN0cmluZyxcbiAgICBhdHRhY2htZW50VHlwZTogVGVtcGxhdGVBdHRhY2htZW50VHlwZSxcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2VcbiAgICAgIC5hcGkoe1xuICAgICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50SWR9L2F0dGFjaG1lbnRzLyR7YXR0YWNobWVudFR5cGV9L2ZpbGVgLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgZXJyb3JIYW5kbGVyOiBub29wLFxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoJycpKSk7XG4gIH07XG5cbiAgcHVibGljIHVwbG9hZENvbXBvbmVudEF0dGFjaG1lbnRzJCA9IChcbiAgICB0ZW1wbGF0ZUlkOiBzdHJpbmcsXG4gICAgY29tcG9uZW50SWQ6IHN0cmluZyxcbiAgICBhdHRhY2htZW50czogQ29tcG9uZW50QXR0YWNobWVudHMsXG4gICk6IE9ic2VydmFibGU8dm9pZD4gPT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgaWYgKGF0dGFjaG1lbnRzLmh0bWwgIT0gbnVsbCkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdodG1sJywgbmV3IEJsb2IoW2F0dGFjaG1lbnRzLmh0bWxdKSwgJ3RlbXBsYXRlLmh0bWwnKTtcbiAgICB9XG4gICAgaWYgKGF0dGFjaG1lbnRzLmNzcyAhPSBudWxsKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2NzcycsIG5ldyBCbG9iKFthdHRhY2htZW50cy5jc3NdKSwgJ3N0eWxlcy5jc3MnKTtcbiAgICB9XG4gICAgaWYgKGF0dGFjaG1lbnRzLmpzICE9IG51bGwpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanMnLCBuZXcgQmxvYihbYXR0YWNobWVudHMuanNdKSwgJ3NjcmlwdC5qcycpO1xuICAgIH1cbiAgICBpZiAoYXR0YWNobWVudHMuanNvbiAhPSBudWxsKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb24nLCBuZXcgQmxvYihbYXR0YWNobWVudHMuanNvbl0pLCAnc2VjdGlvbi5qc29uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLnVwbG9hZCh7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L2NvbXBvbmVudHMvJHtjb21wb25lbnRJZH0vYXR0YWNobWVudHNgLFxuICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgfSk7XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,22 @@
1
+ export class ConfigurationSettingsDTO {
2
+ static fromDTO(dto, key) {
3
+ return {
4
+ id: dto?.id,
5
+ key: dto?.key || key || '',
6
+ value: dto?.value,
7
+ };
8
+ }
9
+ static toDTO(data) {
10
+ return {
11
+ id: data.id,
12
+ key: data.key,
13
+ value: data.value,
14
+ };
15
+ }
16
+ constructor(id, key, value) {
17
+ this.id = id;
18
+ this.key = key;
19
+ this.value = value;
20
+ }
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1zZXR0aW5ncy1kdG8udHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9zcmMvbGliL3R5cGVzL2R0by9jb25maWd1cmF0aW9uLXNldHRpbmdzLWR0by50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sd0JBQXdCO0lBQzVCLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBNkIsRUFBRSxHQUFZO1FBQy9ELE9BQU87WUFDTCxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDWCxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLElBQUksRUFBRTtZQUMxQixLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUs7U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQTJCO1FBQzdDLE9BQU87WUFDTCxFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDWCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbEIsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFtQixFQUFVLEVBQVMsR0FBVyxFQUFTLEtBQWE7UUFBcEQsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFRO0lBQUcsQ0FBQztDQUM1RSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZ3VyYXRpb25TZXR0aW5ncyB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvblNldHRpbmdzRFRPIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tRFRPKGR0bzogQ29uZmlndXJhdGlvblNldHRpbmdzRFRPLCBrZXk/OiBzdHJpbmcpOiBDb25maWd1cmF0aW9uU2V0dGluZ3Mge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogZHRvPy5pZCxcbiAgICAgIGtleTogZHRvPy5rZXkgfHwga2V5IHx8ICcnLFxuICAgICAgdmFsdWU6IGR0bz8udmFsdWUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdG9EVE8oZGF0YTogQ29uZmlndXJhdGlvblNldHRpbmdzKTogQ29uZmlndXJhdGlvblNldHRpbmdzRFRPIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGRhdGEuaWQsXG4gICAgICBrZXk6IGRhdGEua2V5LFxuICAgICAgdmFsdWU6IGRhdGEudmFsdWUsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpZDogc3RyaW5nLCBwdWJsaWMga2V5OiBzdHJpbmcsIHB1YmxpYyB2YWx1ZTogc3RyaW5nKSB7fVxufVxuIl19