@veloceapps/api 1.0.1 → 2.0.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.
- package/bundles/veloce-api.umd.js +95 -58
- package/bundles/veloce-api.umd.js.map +1 -1
- package/esm2015/lib/api.module.js +8 -5
- package/esm2015/lib/services/configuration-api.service.js +3 -3
- package/esm2015/lib/services/configuration-settings-api.service.js +3 -3
- package/esm2015/lib/services/context-api.service.js +3 -3
- package/esm2015/lib/services/document-attachment-api.service.js +3 -3
- package/esm2015/lib/services/document-templates-api.service.js +3 -3
- package/esm2015/lib/services/price-api.service.js +3 -3
- package/esm2015/lib/services/product-model-api.service.js +3 -3
- package/esm2015/lib/services/quote-api.service.js +3 -3
- package/esm2015/lib/services/ramp-api.service.js +3 -3
- package/esm2015/lib/services/rules-api.service.js +20 -0
- package/esm2015/lib/services/salesforce-api.service.js +3 -3
- package/esm2015/lib/services/scripts-api.service.js +3 -3
- package/esm2015/lib/services/ui-templates-api.service.js +40 -20
- package/esm2015/lib/types/ui-template-dto.types.js +1 -1
- package/esm2015/lib/utils/ui-template.utils.js +1 -5
- package/fesm2015/veloce-api.js +95 -60
- package/fesm2015/veloce-api.js.map +1 -1
- package/lib/services/rules-api.service.d.ts +11 -0
- package/lib/services/ui-templates-api.service.d.ts +4 -2
- package/lib/types/ui-template-dto.types.d.ts +0 -4
- package/package.json +2 -2
@@ -1,8 +1,7 @@
|
|
1
1
|
import { __rest } from "tslib";
|
2
2
|
import { HttpParams } from '@angular/common/http';
|
3
3
|
import { Injectable } from '@angular/core';
|
4
|
-
import {
|
5
|
-
import { catchError, forkJoin, map, of, switchMap } from 'rxjs';
|
4
|
+
import { catchError, forkJoin, map, noop, of, switchMap } from 'rxjs';
|
6
5
|
import { fromUIComponentStoryDTO } from '../utils/ui-template.utils';
|
7
6
|
import * as i0 from "@angular/core";
|
8
7
|
import * as i1 from "@veloce/core";
|
@@ -31,9 +30,14 @@ export class UITemplatesApiService {
|
|
31
30
|
body: template,
|
32
31
|
});
|
33
32
|
};
|
34
|
-
this.duplicateTemplate$ = (template) => {
|
35
|
-
|
36
|
-
|
33
|
+
this.duplicateTemplate$ = (template, cloneRequest) => {
|
34
|
+
return this.baseHttpService
|
35
|
+
.api({
|
36
|
+
url: `${this.serviceUrl}/${template.id}/clone`,
|
37
|
+
method: 'post',
|
38
|
+
body: cloneRequest,
|
39
|
+
})
|
40
|
+
.pipe(map(response => response.clonedRecordId));
|
37
41
|
};
|
38
42
|
this.removeTemplate$ = (id) => {
|
39
43
|
return this.baseHttpService.api({
|
@@ -84,9 +88,14 @@ export class UITemplatesApiService {
|
|
84
88
|
body: component,
|
85
89
|
});
|
86
90
|
};
|
87
|
-
this.duplicateComponent$ = (component) => {
|
88
|
-
|
89
|
-
|
91
|
+
this.duplicateComponent$ = (component, cloneRequest) => {
|
92
|
+
return this.baseHttpService
|
93
|
+
.api({
|
94
|
+
url: `${this.serviceUrl}/${component.uiTemplateId}/components/${component.id}/clone`,
|
95
|
+
method: 'post',
|
96
|
+
body: cloneRequest,
|
97
|
+
})
|
98
|
+
.pipe(map(response => response.clonedRecordId));
|
90
99
|
};
|
91
100
|
this.removeComponent$ = (templateId, componentId) => {
|
92
101
|
return this.baseHttpService.api({
|
@@ -113,15 +122,16 @@ export class UITemplatesApiService {
|
|
113
122
|
.api({
|
114
123
|
url: `${this.serviceUrl}/${templateId}/components/${componentId}/stories/${storyId}/attachments/${type}/file`,
|
115
124
|
responseType: 'text',
|
125
|
+
errorHandler: noop,
|
116
126
|
})
|
117
127
|
.pipe(catchError(() => of('')));
|
118
128
|
};
|
119
129
|
this.convertToComponentStory$ = (templateId, componentId, storyDto) => {
|
120
130
|
return forkJoin([
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
131
|
+
this.fetchStoryAttachment(templateId, componentId, storyDto.id, 'html'),
|
132
|
+
this.fetchStoryAttachment(templateId, componentId, storyDto.id, 'js'),
|
133
|
+
this.fetchStoryAttachment(templateId, componentId, storyDto.id, 'css'),
|
134
|
+
this.fetchStoryAttachment(templateId, componentId, storyDto.id, 'json'),
|
125
135
|
]).pipe(map(([html, js, css, json]) => ({ html, js, css, json })), map(attachments => fromUIComponentStoryDTO(storyDto, attachments)));
|
126
136
|
};
|
127
137
|
this.fetchStories$ = (templateId, componentId, name) => {
|
@@ -165,6 +175,15 @@ export class UITemplatesApiService {
|
|
165
175
|
})
|
166
176
|
.pipe(map(dto => fromUIComponentStoryDTO(dto, { html: template, js: script, css: styles, json: section })));
|
167
177
|
};
|
178
|
+
this.duplicateComponentStory$ = (story, cloneRequest) => {
|
179
|
+
return this.baseHttpService
|
180
|
+
.api({
|
181
|
+
url: `${this.serviceUrl}/${story.template}/components/${story.uiComponentId}/stories/${story.id}/clone`,
|
182
|
+
method: 'post',
|
183
|
+
body: cloneRequest,
|
184
|
+
})
|
185
|
+
.pipe(map(response => response.clonedRecordId));
|
186
|
+
};
|
168
187
|
this.deleteComponentStory$ = (templateId, componentId, storyId) => {
|
169
188
|
return this.baseHttpService.api({
|
170
189
|
method: 'delete',
|
@@ -199,10 +218,10 @@ export class UITemplatesApiService {
|
|
199
218
|
};
|
200
219
|
this.fetchComponentAttachments$ = (templateId, component) => {
|
201
220
|
return forkJoin([
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
221
|
+
this.fetchComponentAttachmentFile$(templateId, component.id, 'html'),
|
222
|
+
this.fetchComponentAttachmentFile$(templateId, component.id, 'js'),
|
223
|
+
this.fetchComponentAttachmentFile$(templateId, component.id, 'css'),
|
224
|
+
this.fetchComponentAttachmentFile$(templateId, component.id, 'json'),
|
206
225
|
]).pipe(map(([html, js, css, json]) => ({ html, js, css, json })));
|
207
226
|
};
|
208
227
|
this.fetchComponentAttachmentFile$ = (templateId, componentId, attachmentType) => {
|
@@ -211,6 +230,7 @@ export class UITemplatesApiService {
|
|
211
230
|
method: 'get',
|
212
231
|
url: `${this.serviceUrl}/${templateId}/components/${componentId}/attachments/${attachmentType}/file`,
|
213
232
|
responseType: 'text',
|
233
|
+
errorHandler: noop,
|
214
234
|
})
|
215
235
|
.pipe(catchError(() => of('')));
|
216
236
|
};
|
@@ -254,9 +274,9 @@ export class UITemplatesApiService {
|
|
254
274
|
});
|
255
275
|
}
|
256
276
|
}
|
257
|
-
UITemplatesApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
258
|
-
UITemplatesApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
259
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
277
|
+
UITemplatesApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: UITemplatesApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
278
|
+
UITemplatesApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: UITemplatesApiService });
|
279
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: UITemplatesApiService, decorators: [{
|
260
280
|
type: Injectable
|
261
281
|
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGVtcGxhdGVzLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvc3JjL2xpYi9zZXJ2aWNlcy91aS10ZW1wbGF0ZXMtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFZTCxJQUFJLEdBQ0wsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUdyRSxNQUFNLE9BQU8scUJBQXFCO0lBR2hDLFlBQW9CLGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUZuQyxlQUFVLEdBQVcsY0FBYyxDQUFDO1FBSXJELG9CQUFlLEdBQUcsQ0FBQyxJQUFhLEVBQTRCLEVBQUU7WUFDNUQsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUM5QixJQUFJLElBQUksRUFBRTtnQkFDUixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDdEM7WUFFRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFlLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDdkYsQ0FBQyxDQUFDO1FBRUYsb0JBQWUsR0FBRyxDQUFDLFFBQXVCLEVBQTBCLEVBQUU7WUFDcEUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBYTtnQkFDMUMsTUFB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LFdBQVcsY0FBYztnQkFDN0UsSUFBSSxFQUFFLFFBQVE7YUFDZixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7SUFyVHFELENBQUM7SUFnUHhELHVCQUF1QixDQUFDLFVBQWtCO1FBQ3hDLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLFVBQVUsaUJBQWlCLENBQUM7SUFDM0QsQ0FBQztJQUVELHdCQUF3QixDQUFDLFVBQWtCLEVBQUUsSUFBVTtRQUNyRCxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRTNCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7WUFDakMsTUFBTSxFQUFFLE1BQU07WUFDZCxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLFVBQVUsWUFBWTtZQUNqRCxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxVQUFrQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDO1lBQzlCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksVUFBVSxZQUFZO1NBQ2xELENBQUMsQ0FBQztJQUNMLENBQUM7O21IQXZRVSxxQkFBcUI7dUhBQXJCLHFCQUFxQjs0RkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJhc2VIdHRwU2VydmljZSxcbiAgQ29tcG9uZW50QXR0YWNobWVudHMsXG4gIENvbXBvbmVudFN0b3J5LFxuICBDb21wb25lbnRTdG9yeUF0dGFjaG1lbnRzLFxuICBFeHByZXNzaW9uLFxuICBOZXdDb21wb25lbnRTdG9yeSxcbiAgTmV3VGVtcGxhdGVDb21wb25lbnQsXG4gIE5ld1VJVGVtcGxhdGUsXG4gIFRlbXBsYXRlQXR0YWNobWVudFR5cGUsXG4gIFRlbXBsYXRlQ29tcG9uZW50LFxuICBVSVRlbXBsYXRlLFxuICBVVUlELFxufSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmb3JrSm9pbiwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVSUNvbXBvbmVudFN0b3J5RFRPIH0gZnJvbSAnLi4vdHlwZXMvdWktdGVtcGxhdGUtZHRvLnR5cGVzJztcbmltcG9ydCB7IGZyb21VSUNvbXBvbmVudFN0b3J5RFRPIH0gZnJvbSAnLi4vdXRpbHMvdWktdGVtcGxhdGUudXRpbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVUlUZW1wbGF0ZXNBcGlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlVXJsOiBzdHJpbmcgPSAnL3VpdGVtcGxhdGVzJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhc2VIdHRwU2VydmljZTogQmFzZUh0dHBTZXJ2aWNlKSB7fVxuXG4gIGZldGNoVGVtcGxhdGVzJCA9IChuYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxVSVRlbXBsYXRlW10+ID0+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnbmFtZScsIG5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGk8VUlUZW1wbGF0ZVtdPih7IHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfWAsIHBhcmFtcyB9KTtcbiAgfTtcblxuICBjcmVhdGVUZW1wbGF0ZSQgPSAodGVtcGxhdGU6IE5ld1VJVGVtcGxhdGUpOiBPYnNlcnZhYmxlPFVJVGVtcGxhdGU+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpPFVJVGVtcGxhdGU+KHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9YCxcbiAgICAgIGJvZHk6IHRlbXBsYXRlLFxuICAgIH0pO1xuICB9O1xuXG4gIHVwZGF0ZVRlbXBsYXRlJCA9ICh0ZW1wbGF0ZTogVUlUZW1wbGF0ZSk6IE9ic2VydmFibGU8VUlUZW1wbGF0ZT4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGk8VUlUZW1wbGF0ZT4oe1xuICAgICAgbWV0aG9kOiAncHV0JyxcbiAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlLmlkfWAsXG4gICAgICBib2R5OiB0ZW1wbGF0ZSxcbiAgICB9KTtcbiAgfTtcblxuICBkdXBsaWNhdGVUZW1wbGF0ZSQgPSAodGVtcGxhdGU6IE5ld1VJVGVtcGxhdGUpOiBPYnNlcnZhYmxlPHN0cmluZz4gPT4ge1xuICAgIC8vIFRPRE86IGludGVncmF0ZSB3aXRoIEJFXG4gICAgcmV0dXJuIG9mKFVVSUQuVVVJRCgpKTtcbiAgfTtcblxuICByZW1vdmVUZW1wbGF0ZSQgPSAoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGkoe1xuICAgICAgbWV0aG9kOiAnZGVsZXRlJyxcbiAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke2lkfWAsXG4gICAgfSk7XG4gIH07XG5cbiAgcmVzdG9yZVRlbXBsYXRlJCA9IChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICBtZXRob2Q6ICdwYXRjaCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHtpZH1gLFxuICAgIH0pO1xuICB9O1xuXG4gIHNlYXJjaFRlbXBsYXRlcyQgPSAoZGF0YTogeyBwYXJhbXM/OiBEaWN0aW9uYXJ5PHN0cmluZz47IGV4cHJlc3Npb24/OiBFeHByZXNzaW9uIH0pOiBPYnNlcnZhYmxlPFVJVGVtcGxhdGVbXT4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGkoe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vc2VhcmNoYCxcbiAgICAgIHBhcmFtczogZGF0YS5wYXJhbXMsXG4gICAgICBib2R5OiBkYXRhLmV4cHJlc3Npb24sXG4gICAgfSk7XG4gIH07XG5cbiAgZmV0Y2hDb21wb25lbnRzJCA9ICh0ZW1wbGF0ZUlkOiBzdHJpbmcsIG5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRlbXBsYXRlQ29tcG9uZW50W10+ID0+IHtcbiAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBpZiAobmFtZSkge1xuICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnbmFtZScsIG5hbWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGk8VGVtcGxhdGVDb21wb25lbnRbXT4oe1xuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vY29tcG9uZW50c2AsXG4gICAgICBwYXJhbXMsXG4gICAgfSk7XG4gIH07XG5cbiAgZmV0Y2hDb21wb25lbnQkID0gKHRlbXBsYXRlSWQ6IHN0cmluZywgY29tcG9uZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VGVtcGxhdGVDb21wb25lbnQ+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpPFRlbXBsYXRlQ29tcG9uZW50Pih7XG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50SWR9YCxcbiAgICB9KTtcbiAgfTtcblxuICBjcmVhdGVDb21wb25lbnQkID0gKGNvbXBvbmVudDogTmV3VGVtcGxhdGVDb21wb25lbnQpOiBPYnNlcnZhYmxlPFRlbXBsYXRlQ29tcG9uZW50PiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaTxUZW1wbGF0ZUNvbXBvbmVudD4oe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHtjb21wb25lbnQudWlUZW1wbGF0ZUlkfS9jb21wb25lbnRzYCxcbiAgICAgIGJvZHk6IGNvbXBvbmVudCxcbiAgICB9KTtcbiAgfTtcblxuICB1cGRhdGVDb21wb25lbnQkID0gKGNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiBPYnNlcnZhYmxlPFRlbXBsYXRlQ29tcG9uZW50PiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaTxUZW1wbGF0ZUNvbXBvbmVudD4oe1xuICAgICAgbWV0aG9kOiAncHV0JyxcbiAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke2NvbXBvbmVudC51aVRlbXBsYXRlSWR9L2NvbXBvbmVudHMvJHtjb21wb25lbnQuaWR9YCxcbiAgICAgIGJvZHk6IGNvbXBvbmVudCxcbiAgICB9KTtcbiAgfTtcblxuICBkdXBsaWNhdGVDb21wb25lbnQkID0gKGNvbXBvbmVudDogTmV3VGVtcGxhdGVDb21wb25lbnQpOiBPYnNlcnZhYmxlPHN0cmluZz4gPT4ge1xuICAgIC8vIFRPRE86IGludGVncmF0ZSB3aXRoIEJFXG4gICAgcmV0dXJuIG9mKFVVSUQuVVVJRCgpKTtcbiAgfTtcblxuICByZW1vdmVDb21wb25lbnQkID0gKHRlbXBsYXRlSWQ6IHN0cmluZywgY29tcG9uZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGkoe1xuICAgICAgbWV0aG9kOiAnZGVsZXRlJyxcbiAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L2NvbXBvbmVudHMvJHtjb21wb25lbnRJZH1gLFxuICAgIH0pO1xuICB9O1xuXG4gIHJlc3RvcmVDb21wb25lbnQkID0gKHRlbXBsYXRlSWQ6IHN0cmluZywgY29tcG9uZW50SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGkoe1xuICAgICAgbWV0aG9kOiAncGF0Y2gnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vY29tcG9uZW50cy8ke2NvbXBvbmVudElkfWAsXG4gICAgfSk7XG4gIH07XG5cbiAgc2VhcmNoQ29tcG9uZW50cyQgPSAoXG4gICAgdGVtcGxhdGVJZDogc3RyaW5nLFxuICAgIGRhdGE6IHsgcGFyYW1zPzogRGljdGlvbmFyeTxzdHJpbmc+OyBleHByZXNzaW9uPzogRXhwcmVzc2lvbiB9LFxuICApOiBPYnNlcnZhYmxlPFRlbXBsYXRlQ29tcG9uZW50W10+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vY29tcG9uZW50cy9zZWFyY2hgLFxuICAgICAgcGFyYW1zOiBkYXRhLnBhcmFtcyxcbiAgICAgIGJvZHk6IGRhdGEuZXhwcmVzc2lvbixcbiAgICB9KTtcbiAgfTtcblxuICBmZXRjaFN0b3J5QXR0YWNobWVudCA9IChcbiAgICB0ZW1wbGF0ZUlkOiBzdHJpbmcsXG4gICAgY29tcG9uZW50SWQ6IHN0cmluZyxcbiAgICBzdG9yeUlkOiBzdHJpbmcsXG4gICAgdHlwZTogVGVtcGxhdGVBdHRhY2htZW50VHlwZSxcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2VcbiAgICAgIC5hcGk8c3RyaW5nPih7XG4gICAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L2NvbXBvbmVudHMvJHtjb21wb25lbnRJZH0vc3Rvcmllcy8ke3N0b3J5SWR9L2F0dGFjaG1lbnRzLyR7dHlwZX0vZmlsZWAsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnLFxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoJycpKSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBjb252ZXJ0VG9Db21wb25lbnRTdG9yeSQgPSAoXG4gICAgdGVtcGxhdGVJZDogc3RyaW5nLFxuICAgIGNvbXBvbmVudElkOiBzdHJpbmcsXG4gICAgc3RvcnlEdG86IFVJQ29tcG9uZW50U3RvcnlEVE8sXG4gICk6IE9ic2VydmFibGU8Q29tcG9uZW50U3Rvcnk+ID0+IHtcbiAgICByZXR1cm4gZm9ya0pvaW4oW1xuICAgICAgc3RvcnlEdG8udGVtcGxhdGVIdG1sSWQgPyB0aGlzLmZldGNoU3RvcnlBdHRhY2htZW50KHRlbXBsYXRlSWQsIGNvbXBvbmVudElkLCBzdG9yeUR0by5pZCwgJ2h0bWwnKSA6IG9mKHVuZGVmaW5lZCksXG4gICAgICBzdG9yeUR0by5zY3JpcHRKc0lkID8gdGhpcy5mZXRjaFN0b3J5QXR0YWNobWVudCh0ZW1wbGF0ZUlkLCBjb21wb25lbnRJZCwgc3RvcnlEdG8uaWQsICdqcycpIDogb2YodW5kZWZpbmVkKSxcbiAgICAgIHN0b3J5RHRvLnN0eWxlQ3NzSWQgPyB0aGlzLmZldGNoU3RvcnlBdHRhY2htZW50KHRlbXBsYXRlSWQsIGNvbXBvbmVudElkLCBzdG9yeUR0by5pZCwgJ2NzcycpIDogb2YodW5kZWZpbmVkKSxcbiAgICAgIHN0b3J5RHRvLnNlY3Rpb25Kc29uSWQgPyB0aGlzLmZldGNoU3RvcnlBdHRhY2htZW50KHRlbXBsYXRlSWQsIGNvbXBvbmVudElkLCBzdG9yeUR0by5pZCwgJ2pzb24nKSA6IG9mKHVuZGVmaW5lZCksXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW2h0bWwsIGpzLCBjc3MsIGpzb25dKSA9PiAoeyBodG1sLCBqcywgY3NzLCBqc29uIH0pKSxcbiAgICAgIG1hcChhdHRhY2htZW50cyA9PiBmcm9tVUlDb21wb25lbnRTdG9yeURUTyhzdG9yeUR0bywgYXR0YWNobWVudHMpKSxcbiAgICApO1xuICB9O1xuXG4gIGZldGNoU3RvcmllcyQgPSAodGVtcGxhdGVJZDogc3RyaW5nLCBjb21wb25lbnRJZDogc3RyaW5nLCBuYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxDb21wb25lbnRTdG9yeVtdPiA9PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ25hbWUnLCBuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2VcbiAgICAgIC5hcGk8VUlDb21wb25lbnRTdG9yeURUT1tdPih7XG4gICAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L2NvbXBvbmVudHMvJHtjb21wb25lbnRJZH0vc3Rvcmllc2AsXG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKGR0b3MgPT4ge1xuICAgICAgICAgIGlmICghZHRvcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmb3JrSm9pbihkdG9zLm1hcChkdG8gPT4gdGhpcy5jb252ZXJ0VG9Db21wb25lbnRTdG9yeSQodGVtcGxhdGVJZCwgY29tcG9uZW50SWQsIGR0bykpKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9O1xuXG4gIGZldGNoU3RvcnkkID0gKHRlbXBsYXRlSWQ6IHN0cmluZywgY29tcG9uZW50SWQ6IHN0cmluZywgc3RvcnlJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxDb21wb25lbnRTdG9yeT4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZVxuICAgICAgLmFwaTxVSUNvbXBvbmVudFN0b3J5RFRPPih7XG4gICAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L2NvbXBvbmVudHMvJHtjb21wb25lbnRJZH0vc3Rvcmllcy8ke3N0b3J5SWR9YCxcbiAgICAgIH0pXG4gICAgICAucGlwZShzd2l0Y2hNYXAoZHRvID0+IHRoaXMuY29udmVydFRvQ29tcG9uZW50U3RvcnkkKHRlbXBsYXRlSWQsIGNvbXBvbmVudElkLCBkdG8pKSk7XG4gIH07XG5cbiAgY3JlYXRlQ29tcG9uZW50U3RvcnkkID0gKHRlbXBsYXRlSWQ6IHN0cmluZywgc3Rvcnk6IE5ld0NvbXBvbmVudFN0b3J5KTogT2JzZXJ2YWJsZTxDb21wb25lbnRTdG9yeT4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGk8Q29tcG9uZW50U3Rvcnk+KHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vY29tcG9uZW50cy8ke3N0b3J5LnVpQ29tcG9uZW50SWR9L3N0b3JpZXNgLFxuICAgICAgYm9keTogc3RvcnksXG4gICAgfSk7XG4gIH07XG5cbiAgdXBkYXRlQ29tcG9uZW50U3RvcnkkID0gKHRlbXBsYXRlSWQ6IHN0cmluZywgc3Rvcnk6IENvbXBvbmVudFN0b3J5KTogT2JzZXJ2YWJsZTxDb21wb25lbnRTdG9yeT4gPT4ge1xuICAgIGNvbnN0IHsgc2NyaXB0LCB0ZW1wbGF0ZSwgc3R5bGVzLCBzZWN0aW9uLCAuLi5yZXN0IH0gPSBzdG9yeTtcblxuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZVxuICAgICAgLmFwaTxVSUNvbXBvbmVudFN0b3J5RFRPPih7XG4gICAgICAgIG1ldGhvZDogJ3B1dCcsXG4gICAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L2NvbXBvbmVudHMvJHtzdG9yeS51aUNvbXBvbmVudElkfS9zdG9yaWVzLyR7c3RvcnkuaWR9YCxcbiAgICAgICAgYm9keTogcmVzdCxcbiAgICAgIH0pXG4gICAgICAucGlwZShtYXAoZHRvID0+IGZyb21VSUNvbXBvbmVudFN0b3J5RFRPKGR0bywgeyBodG1sOiB0ZW1wbGF0ZSwganM6IHNjcmlwdCwgY3NzOiBzdHlsZXMsIGpzb246IHNlY3Rpb24gfSkpKTtcbiAgfTtcblxuICBkZWxldGVDb21wb25lbnRTdG9yeSQgPSAodGVtcGxhdGVJZDogc3RyaW5nLCBjb21wb25lbnRJZDogc3RyaW5nLCBzdG9yeUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50SWR9L3N0b3JpZXMvJHtzdG9yeUlkfWAsXG4gICAgfSk7XG4gIH07XG5cbiAgcmVzdG9yZUNvbXBvbmVudFN0b3J5JCA9ICh0ZW1wbGF0ZUlkOiBzdHJpbmcsIGNvbXBvbmVudElkOiBzdHJpbmcsIHN0b3J5SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGkoe1xuICAgICAgbWV0aG9kOiAncGF0Y2gnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vY29tcG9uZW50cy8ke2NvbXBvbmVudElkfS9zdG9yaWVzLyR7c3RvcnlJZH1gLFxuICAgIH0pO1xuICB9O1xuXG4gIHVwbG9hZFN0b3J5QXR0YWNobWVudHMkID0gKFxuICAgIHRlbXBsYXRlSWQ6IHN0cmluZyxcbiAgICBjb21wb25lbnRJZDogc3RyaW5nLFxuICAgIHN0b3J5SWQ6IHN0cmluZyxcbiAgICBhdHRhY2htZW50czogQ29tcG9uZW50U3RvcnlBdHRhY2htZW50cyxcbiAgKTogT2JzZXJ2YWJsZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBpZiAoYXR0YWNobWVudHMuaHRtbCAhPSBudWxsKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2h0bWwnLCBuZXcgQmxvYihbYXR0YWNobWVudHMuaHRtbF0pLCAnc3RvcnktdGVtcGxhdGUuaHRtbCcpO1xuICAgIH1cbiAgICBpZiAoYXR0YWNobWVudHMuY3NzICE9IG51bGwpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnY3NzJywgbmV3IEJsb2IoW2F0dGFjaG1lbnRzLmNzc10pLCAnc3Rvcnktc3R5bGVzLmNzcycpO1xuICAgIH1cbiAgICBpZiAoYXR0YWNobWVudHMuanMgIT0gbnVsbCkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqcycsIG5ldyBCbG9iKFthdHRhY2htZW50cy5qc10pLCAnc3Rvcnktc2NyaXB0LmpzJyk7XG4gICAgfVxuICAgIGlmIChhdHRhY2htZW50cy5qc29uICE9IG51bGwpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbicsIG5ldyBCbG9iKFthdHRhY2htZW50cy5qc29uXSksICdzdG9yeS1zZWN0aW9uLmpzb24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UudXBsb2FkKHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vY29tcG9uZW50cy8ke2NvbXBvbmVudElkfS9zdG9yaWVzLyR7c3RvcnlJZH0vYXR0YWNobWVudHNgLFxuICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgfSk7XG4gIH07XG5cbiAgZ2V0VGVtcGxhdGVUaHVtYm5haWxVcmwodGVtcGxhdGVJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS90aHVtYm5haWwvZmlsZWA7XG4gIH1cblxuICBhdHRhY2hUZW1wbGF0ZVRodW1ibmFpbCQodGVtcGxhdGVJZDogc3RyaW5nLCBmaWxlOiBGaWxlKSB7XG4gICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGRhdGEuYXBwZW5kKCd0aHVtYicsIGZpbGUpO1xuXG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLnVwbG9hZCh7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L3RodW1ibmFpbGAsXG4gICAgICBib2R5OiBkYXRhLFxuICAgIH0pO1xuICB9XG5cbiAgcmVtb3ZlVGVtcGxhdGVUaHVtYm5haWwkKHRlbXBsYXRlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGkoe1xuICAgICAgbWV0aG9kOiAnZGVsZXRlJyxcbiAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L3RodW1ibmFpbGAsXG4gICAgfSk7XG4gIH1cblxuICBmZXRjaENvbXBvbmVudEF0dGFjaG1lbnRzJCA9ICh0ZW1wbGF0ZUlkOiBzdHJpbmcsIGNvbXBvbmVudDogVGVtcGxhdGVDb21wb25lbnQpOiBPYnNlcnZhYmxlPENvbXBvbmVudEF0dGFjaG1lbnRzPiA9PiB7XG4gICAgcmV0dXJuIGZvcmtKb2luKFtcbiAgICAgIGNvbXBvbmVudC50ZW1wbGF0ZUh0bWxJZCA/IHRoaXMuZmV0Y2hDb21wb25lbnRBdHRhY2htZW50RmlsZSQodGVtcGxhdGVJZCwgY29tcG9uZW50LmlkLCAnaHRtbCcpIDogb2YodW5kZWZpbmVkKSxcbiAgICAgIGNvbXBvbmVudC5zY3JpcHRKc0lkID8gdGhpcy5mZXRjaENvbXBvbmVudEF0dGFjaG1lbnRGaWxlJCh0ZW1wbGF0ZUlkLCBjb21wb25lbnQuaWQsICdqcycpIDogb2YodW5kZWZpbmVkKSxcbiAgICAgIGNvbXBvbmVudC5zdHlsZUNzc0lkID8gdGhpcy5mZXRjaENvbXBvbmVudEF0dGFjaG1lbnRGaWxlJCh0ZW1wbGF0ZUlkLCBjb21wb25lbnQuaWQsICdjc3MnKSA6IG9mKHVuZGVmaW5lZCksXG4gICAgICBjb21wb25lbnQucHJvcGVydGllc0pzb25JZCA/IHRoaXMuZmV0Y2hDb21wb25lbnRBdHRhY2htZW50RmlsZSQodGVtcGxhdGVJZCwgY29tcG9uZW50LmlkLCAnanNvbicpIDogb2YodW5kZWZpbmVkKSxcbiAgICBdKS5waXBlKG1hcCgoW2h0bWwsIGpzLCBjc3MsIGpzb25dKSA9PiAoeyBodG1sLCBqcywgY3NzLCBqc29uIH0pKSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBmZXRjaENvbXBvbmVudEF0dGFjaG1lbnRGaWxlJCA9IChcbiAgICB0ZW1wbGF0ZUlkOiBzdHJpbmcsXG4gICAgY29tcG9uZW50SWQ6IHN0cmluZyxcbiAgICBhdHRhY2htZW50VHlwZTogVGVtcGxhdGVBdHRhY2htZW50VHlwZSxcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2VcbiAgICAgIC5hcGkoe1xuICAgICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50SWR9L2F0dGFjaG1lbnRzLyR7YXR0YWNobWVudFR5cGV9L2ZpbGVgLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKCcnKSkpO1xuICB9O1xuXG4gIHVwbG9hZENvbXBvbmVudEF0dGFjaG1lbnRzJCA9IChcbiAgICB0ZW1wbGF0ZUlkOiBzdHJpbmcsXG4gICAgY29tcG9uZW50SWQ6IHN0cmluZyxcbiAgICBhdHRhY2htZW50czogQ29tcG9uZW50QXR0YWNobWVudHMsXG4gICk6IE9ic2VydmFibGU8dm9pZD4gPT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgaWYgKGF0dGFjaG1lbnRzLmh0bWwgIT0gbnVsbCkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdodG1sJywgbmV3IEJsb2IoW2F0dGFjaG1lbnRzLmh0bWxdKSwgJ3RlbXBsYXRlLmh0bWwnKTtcbiAgICB9XG4gICAgaWYgKGF0dGFjaG1lbnRzLmNzcyAhPSBudWxsKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2NzcycsIG5ldyBCbG9iKFthdHRhY2htZW50cy5jc3NdKSwgJ3N0eWxlcy5jc3MnKTtcbiAgICB9XG4gICAgaWYgKGF0dGFjaG1lbnRzLmpzICE9IG51bGwpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanMnLCBuZXcgQmxvYihbYXR0YWNobWVudHMuanNdKSwgJ3NjcmlwdC5qcycpO1xuICAgIH1cbiAgICBpZiAoYXR0YWNobWVudHMuanNvbiAhPSBudWxsKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb24nLCBuZXcgQmxvYihbYXR0YWNobWVudHMuanNvbl0pLCAnc2VjdGlvbi5qc29uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLnVwbG9hZCh7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L2NvbXBvbmVudHMvJHtjb21wb25lbnRJZH0vYXR0YWNobWVudHNgLFxuICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgfSk7XG4gIH07XG59XG4iXX0=
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGVtcGxhdGVzLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvc3JjL2xpYi9zZXJ2aWNlcy91aS10ZW1wbGF0ZXMtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBZTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7O0FBSXJFLE1BQU0sT0FBTyxxQkFBcUI7SUFHaEMsWUFBb0IsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBRm5DLGVBQVUsR0FBVyxjQUFjLENBQUM7UUFJckQsb0JBQWUsR0FBRyxDQUFDLElBQWEsRUFBNEIsRUFBRTtZQUM1RCxJQUFJLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQzlCLElBQUksSUFBSSxFQUFFO2dCQUNSLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQzthQUN0QztZQUVELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQWUsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN2RixDQUFDLENBQUM7UUFFRixvQkFBZSxHQUFHLENBQUMsUUFBdUIsRUFBMEIsRUFBRTtZQUNwRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFhO2dCQUMxQyxNQUFNLEVBQUUsTUFBTTtnQkFDZCxHQUFHLEVBQUUsR0FB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b3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJhc2VIdHRwU2VydmljZSxcbiAgQ29tcG9uZW50QXR0YWNobWVudHMsXG4gIENvbXBvbmVudFN0b3J5LFxuICBDb21wb25lbnRTdG9yeUF0dGFjaG1lbnRzLFxuICBFeHByZXNzaW9uLFxuICBOZXdDb21wb25lbnRTdG9yeSxcbiAgTmV3VGVtcGxhdGVDb21wb25lbnQsXG4gIE5ld1VJVGVtcGxhdGUsXG4gIFRlbXBsYXRlQXR0YWNobWVudFR5cGUsXG4gIFRlbXBsYXRlQ29tcG9uZW50LFxuICBVSVRlbXBsYXRlLFxufSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmb3JrSm9pbiwgbWFwLCBub29wLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVSUNvbXBvbmVudFN0b3J5RFRPIH0gZnJvbSAnLi4vdHlwZXMvdWktdGVtcGxhdGUtZHRvLnR5cGVzJztcbmltcG9ydCB7IGZyb21VSUNvbXBvbmVudFN0b3J5RFRPIH0gZnJvbSAnLi4vdXRpbHMvdWktdGVtcGxhdGUudXRpbHMnO1xuaW1wb3J0IHsgQ2xvbmVSZXF1ZXN0IH0gZnJvbSAnLi4vdHlwZXMvY2xvbmUtcmVxdWVzdC50eXBlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBVSVRlbXBsYXRlc0FwaVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2VVcmw6IHN0cmluZyA9ICcvdWl0ZW1wbGF0ZXMnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYmFzZUh0dHBTZXJ2aWNlOiBCYXNlSHR0cFNlcnZpY2UpIHt9XG5cbiAgZmV0Y2hUZW1wbGF0ZXMkID0gKG5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVJVGVtcGxhdGVbXT4gPT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCduYW1lJywgbmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaTxVSVRlbXBsYXRlW10+KHsgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9YCwgcGFyYW1zIH0pO1xuICB9O1xuXG4gIGNyZWF0ZVRlbXBsYXRlJCA9ICh0ZW1wbGF0ZTogTmV3VUlUZW1wbGF0ZSk6IE9ic2VydmFibGU8VUlUZW1wbGF0ZT4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGk8VUlUZW1wbGF0ZT4oe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH1gLFxuICAgICAgYm9keTogdGVtcGxhdGUsXG4gICAgfSk7XG4gIH07XG5cbiAgdXBkYXRlVGVtcGxhdGUkID0gKHRlbXBsYXRlOiBVSVRlbXBsYXRlKTogT2JzZXJ2YWJsZTxVSVRlbXBsYXRlPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaTxVSVRlbXBsYXRlPih7XG4gICAgICBtZXRob2Q6ICdwdXQnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGUuaWR9YCxcbiAgICAgIGJvZHk6IHRlbXBsYXRlLFxuICAgIH0pO1xuICB9O1xuXG4gIGR1cGxpY2F0ZVRlbXBsYXRlJCA9ICh0ZW1wbGF0ZTogVUlUZW1wbGF0ZSwgY2xvbmVSZXF1ZXN0OiBDbG9uZVJlcXVlc3QpOiBPYnNlcnZhYmxlPHN0cmluZz4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZVxuICAgICAgLmFwaSh7XG4gICAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlLmlkfS9jbG9uZWAsXG4gICAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgICBib2R5OiBjbG9uZVJlcXVlc3QsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlLmNsb25lZFJlY29yZElkKSk7XG4gIH07XG5cbiAgcmVtb3ZlVGVtcGxhdGUkID0gKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHtpZH1gLFxuICAgIH0pO1xuICB9O1xuXG4gIHJlc3RvcmVUZW1wbGF0ZSQgPSAoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGkoe1xuICAgICAgbWV0aG9kOiAncGF0Y2gnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7aWR9YCxcbiAgICB9KTtcbiAgfTtcblxuICBzZWFyY2hUZW1wbGF0ZXMkID0gKGRhdGE6IHsgcGFyYW1zPzogRGljdGlvbmFyeTxzdHJpbmc+OyBleHByZXNzaW9uPzogRXhwcmVzc2lvbiB9KTogT2JzZXJ2YWJsZTxVSVRlbXBsYXRlW10+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9L3NlYXJjaGAsXG4gICAgICBwYXJhbXM6IGRhdGEucGFyYW1zLFxuICAgICAgYm9keTogZGF0YS5leHByZXNzaW9uLFxuICAgIH0pO1xuICB9O1xuXG4gIGZldGNoQ29tcG9uZW50cyQgPSAodGVtcGxhdGVJZDogc3RyaW5nLCBuYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxUZW1wbGF0ZUNvbXBvbmVudFtdPiA9PiB7XG4gICAgbGV0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ25hbWUnLCBuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpPFRlbXBsYXRlQ29tcG9uZW50W10+KHtcbiAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L2NvbXBvbmVudHNgLFxuICAgICAgcGFyYW1zLFxuICAgIH0pO1xuICB9O1xuXG4gIGZldGNoQ29tcG9uZW50JCA9ICh0ZW1wbGF0ZUlkOiBzdHJpbmcsIGNvbXBvbmVudElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRlbXBsYXRlQ29tcG9uZW50PiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaTxUZW1wbGF0ZUNvbXBvbmVudD4oe1xuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vY29tcG9uZW50cy8ke2NvbXBvbmVudElkfWAsXG4gICAgfSk7XG4gIH07XG5cbiAgY3JlYXRlQ29tcG9uZW50JCA9IChjb21wb25lbnQ6IE5ld1RlbXBsYXRlQ29tcG9uZW50KTogT2JzZXJ2YWJsZTxUZW1wbGF0ZUNvbXBvbmVudD4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGk8VGVtcGxhdGVDb21wb25lbnQ+KHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7Y29tcG9uZW50LnVpVGVtcGxhdGVJZH0vY29tcG9uZW50c2AsXG4gICAgICBib2R5OiBjb21wb25lbnQsXG4gICAgfSk7XG4gIH07XG5cbiAgdXBkYXRlQ29tcG9uZW50JCA9IChjb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50KTogT2JzZXJ2YWJsZTxUZW1wbGF0ZUNvbXBvbmVudD4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGk8VGVtcGxhdGVDb21wb25lbnQ+KHtcbiAgICAgIG1ldGhvZDogJ3B1dCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHtjb21wb25lbnQudWlUZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50LmlkfWAsXG4gICAgICBib2R5OiBjb21wb25lbnQsXG4gICAgfSk7XG4gIH07XG5cbiAgZHVwbGljYXRlQ29tcG9uZW50JCA9IChjb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50LCBjbG9uZVJlcXVlc3Q6IENsb25lUmVxdWVzdCk6IE9ic2VydmFibGU8c3RyaW5nPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlXG4gICAgICAuYXBpKHtcbiAgICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7Y29tcG9uZW50LnVpVGVtcGxhdGVJZH0vY29tcG9uZW50cy8ke2NvbXBvbmVudC5pZH0vY2xvbmVgLFxuICAgICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgICAgYm9keTogY2xvbmVSZXF1ZXN0LFxuICAgICAgfSlcbiAgICAgIC5waXBlKG1hcChyZXNwb25zZSA9PiByZXNwb25zZS5jbG9uZWRSZWNvcmRJZCkpO1xuICB9O1xuXG4gIHJlbW92ZUNvbXBvbmVudCQgPSAodGVtcGxhdGVJZDogc3RyaW5nLCBjb21wb25lbnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICBtZXRob2Q6ICdkZWxldGUnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vY29tcG9uZW50cy8ke2NvbXBvbmVudElkfWAsXG4gICAgfSk7XG4gIH07XG5cbiAgcmVzdG9yZUNvbXBvbmVudCQgPSAodGVtcGxhdGVJZDogc3RyaW5nLCBjb21wb25lbnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICBtZXRob2Q6ICdwYXRjaCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50SWR9YCxcbiAgICB9KTtcbiAgfTtcblxuICBzZWFyY2hDb21wb25lbnRzJCA9IChcbiAgICB0ZW1wbGF0ZUlkOiBzdHJpbmcsXG4gICAgZGF0YTogeyBwYXJhbXM/OiBEaWN0aW9uYXJ5PHN0cmluZz47IGV4cHJlc3Npb24/OiBFeHByZXNzaW9uIH0sXG4gICk6IE9ic2VydmFibGU8VGVtcGxhdGVDb21wb25lbnRbXT4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS5hcGkoe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzL3NlYXJjaGAsXG4gICAgICBwYXJhbXM6IGRhdGEucGFyYW1zLFxuICAgICAgYm9keTogZGF0YS5leHByZXNzaW9uLFxuICAgIH0pO1xuICB9O1xuXG4gIGZldGNoU3RvcnlBdHRhY2htZW50ID0gKFxuICAgIHRlbXBsYXRlSWQ6IHN0cmluZyxcbiAgICBjb21wb25lbnRJZDogc3RyaW5nLFxuICAgIHN0b3J5SWQ6IHN0cmluZyxcbiAgICB0eXBlOiBUZW1wbGF0ZUF0dGFjaG1lbnRUeXBlLFxuICApOiBPYnNlcnZhYmxlPHN0cmluZz4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZVxuICAgICAgLmFwaTxzdHJpbmc+KHtcbiAgICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vY29tcG9uZW50cy8ke2NvbXBvbmVudElkfS9zdG9yaWVzLyR7c3RvcnlJZH0vYXR0YWNobWVudHMvJHt0eXBlfS9maWxlYCxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXG4gICAgICAgIGVycm9ySGFuZGxlcjogbm9vcCxcbiAgICAgIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKCgpID0+IG9mKCcnKSkpO1xuICB9O1xuXG4gIHByaXZhdGUgY29udmVydFRvQ29tcG9uZW50U3RvcnkkID0gKFxuICAgIHRlbXBsYXRlSWQ6IHN0cmluZyxcbiAgICBjb21wb25lbnRJZDogc3RyaW5nLFxuICAgIHN0b3J5RHRvOiBVSUNvbXBvbmVudFN0b3J5RFRPLFxuICApOiBPYnNlcnZhYmxlPENvbXBvbmVudFN0b3J5PiA9PiB7XG4gICAgcmV0dXJuIGZvcmtKb2luKFtcbiAgICAgIHRoaXMuZmV0Y2hTdG9yeUF0dGFjaG1lbnQodGVtcGxhdGVJZCwgY29tcG9uZW50SWQsIHN0b3J5RHRvLmlkLCAnaHRtbCcpLFxuICAgICAgdGhpcy5mZXRjaFN0b3J5QXR0YWNobWVudCh0ZW1wbGF0ZUlkLCBjb21wb25lbnRJZCwgc3RvcnlEdG8uaWQsICdqcycpLFxuICAgICAgdGhpcy5mZXRjaFN0b3J5QXR0YWNobWVudCh0ZW1wbGF0ZUlkLCBjb21wb25lbnRJZCwgc3RvcnlEdG8uaWQsICdjc3MnKSxcbiAgICAgIHRoaXMuZmV0Y2hTdG9yeUF0dGFjaG1lbnQodGVtcGxhdGVJZCwgY29tcG9uZW50SWQsIHN0b3J5RHRvLmlkLCAnanNvbicpLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtodG1sLCBqcywgY3NzLCBqc29uXSkgPT4gKHsgaHRtbCwganMsIGNzcywganNvbiB9KSksXG4gICAgICBtYXAoYXR0YWNobWVudHMgPT4gZnJvbVVJQ29tcG9uZW50U3RvcnlEVE8oc3RvcnlEdG8sIGF0dGFjaG1lbnRzKSksXG4gICAgKTtcbiAgfTtcblxuICBmZXRjaFN0b3JpZXMkID0gKHRlbXBsYXRlSWQ6IHN0cmluZywgY29tcG9uZW50SWQ6IHN0cmluZywgbmFtZT86IHN0cmluZyk6IE9ic2VydmFibGU8Q29tcG9uZW50U3RvcnlbXT4gPT4ge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCduYW1lJywgbmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlXG4gICAgICAuYXBpPFVJQ29tcG9uZW50U3RvcnlEVE9bXT4oe1xuICAgICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50SWR9L3N0b3JpZXNgLFxuICAgICAgICBwYXJhbXMsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChkdG9zID0+IHtcbiAgICAgICAgICBpZiAoIWR0b3MubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZm9ya0pvaW4oZHRvcy5tYXAoZHRvID0+IHRoaXMuY29udmVydFRvQ29tcG9uZW50U3RvcnkkKHRlbXBsYXRlSWQsIGNvbXBvbmVudElkLCBkdG8pKSk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfTtcblxuICBmZXRjaFN0b3J5JCA9ICh0ZW1wbGF0ZUlkOiBzdHJpbmcsIGNvbXBvbmVudElkOiBzdHJpbmcsIHN0b3J5SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q29tcG9uZW50U3Rvcnk+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2VcbiAgICAgIC5hcGk8VUlDb21wb25lbnRTdG9yeURUTz4oe1xuICAgICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50SWR9L3N0b3JpZXMvJHtzdG9yeUlkfWAsXG4gICAgICB9KVxuICAgICAgLnBpcGUoc3dpdGNoTWFwKGR0byA9PiB0aGlzLmNvbnZlcnRUb0NvbXBvbmVudFN0b3J5JCh0ZW1wbGF0ZUlkLCBjb21wb25lbnRJZCwgZHRvKSkpO1xuICB9O1xuXG4gIGNyZWF0ZUNvbXBvbmVudFN0b3J5JCA9ICh0ZW1wbGF0ZUlkOiBzdHJpbmcsIHN0b3J5OiBOZXdDb21wb25lbnRTdG9yeSk6IE9ic2VydmFibGU8Q29tcG9uZW50U3Rvcnk+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpPENvbXBvbmVudFN0b3J5Pih7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L2NvbXBvbmVudHMvJHtzdG9yeS51aUNvbXBvbmVudElkfS9zdG9yaWVzYCxcbiAgICAgIGJvZHk6IHN0b3J5LFxuICAgIH0pO1xuICB9O1xuXG4gIHVwZGF0ZUNvbXBvbmVudFN0b3J5JCA9ICh0ZW1wbGF0ZUlkOiBzdHJpbmcsIHN0b3J5OiBDb21wb25lbnRTdG9yeSk6IE9ic2VydmFibGU8Q29tcG9uZW50U3Rvcnk+ID0+IHtcbiAgICBjb25zdCB7IHNjcmlwdCwgdGVtcGxhdGUsIHN0eWxlcywgc2VjdGlvbiwgLi4ucmVzdCB9ID0gc3Rvcnk7XG5cbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2VcbiAgICAgIC5hcGk8VUlDb21wb25lbnRTdG9yeURUTz4oe1xuICAgICAgICBtZXRob2Q6ICdwdXQnLFxuICAgICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7c3RvcnkudWlDb21wb25lbnRJZH0vc3Rvcmllcy8ke3N0b3J5LmlkfWAsXG4gICAgICAgIGJvZHk6IHJlc3QsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKGR0byA9PiBmcm9tVUlDb21wb25lbnRTdG9yeURUTyhkdG8sIHsgaHRtbDogdGVtcGxhdGUsIGpzOiBzY3JpcHQsIGNzczogc3R5bGVzLCBqc29uOiBzZWN0aW9uIH0pKSk7XG4gIH07XG5cbiAgZHVwbGljYXRlQ29tcG9uZW50U3RvcnkkID0gKHN0b3J5OiBDb21wb25lbnRTdG9yeSwgY2xvbmVSZXF1ZXN0OiBDbG9uZVJlcXVlc3QpOiBPYnNlcnZhYmxlPHN0cmluZz4gPT4ge1xuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZVxuICAgICAgLmFwaSh7XG4gICAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3N0b3J5LnRlbXBsYXRlfS9jb21wb25lbnRzLyR7c3RvcnkudWlDb21wb25lbnRJZH0vc3Rvcmllcy8ke3N0b3J5LmlkfS9jbG9uZWAsXG4gICAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgICBib2R5OiBjbG9uZVJlcXVlc3QsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlLmNsb25lZFJlY29yZElkKSk7XG4gIH07XG5cbiAgZGVsZXRlQ29tcG9uZW50U3RvcnkkID0gKHRlbXBsYXRlSWQ6IHN0cmluZywgY29tcG9uZW50SWQ6IHN0cmluZywgc3RvcnlJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICBtZXRob2Q6ICdkZWxldGUnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vY29tcG9uZW50cy8ke2NvbXBvbmVudElkfS9zdG9yaWVzLyR7c3RvcnlJZH1gLFxuICAgIH0pO1xuICB9O1xuXG4gIHJlc3RvcmVDb21wb25lbnRTdG9yeSQgPSAodGVtcGxhdGVJZDogc3RyaW5nLCBjb21wb25lbnRJZDogc3RyaW5nLCBzdG9yeUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIG1ldGhvZDogJ3BhdGNoJyxcbiAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L2NvbXBvbmVudHMvJHtjb21wb25lbnRJZH0vc3Rvcmllcy8ke3N0b3J5SWR9YCxcbiAgICB9KTtcbiAgfTtcblxuICB1cGxvYWRTdG9yeUF0dGFjaG1lbnRzJCA9IChcbiAgICB0ZW1wbGF0ZUlkOiBzdHJpbmcsXG4gICAgY29tcG9uZW50SWQ6IHN0cmluZyxcbiAgICBzdG9yeUlkOiBzdHJpbmcsXG4gICAgYXR0YWNobWVudHM6IENvbXBvbmVudFN0b3J5QXR0YWNobWVudHMsXG4gICk6IE9ic2VydmFibGU8dm9pZD4gPT4ge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgaWYgKGF0dGFjaG1lbnRzLmh0bWwgIT0gbnVsbCkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdodG1sJywgbmV3IEJsb2IoW2F0dGFjaG1lbnRzLmh0bWxdKSwgJ3N0b3J5LXRlbXBsYXRlLmh0bWwnKTtcbiAgICB9XG4gICAgaWYgKGF0dGFjaG1lbnRzLmNzcyAhPSBudWxsKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2NzcycsIG5ldyBCbG9iKFthdHRhY2htZW50cy5jc3NdKSwgJ3N0b3J5LXN0eWxlcy5jc3MnKTtcbiAgICB9XG4gICAgaWYgKGF0dGFjaG1lbnRzLmpzICE9IG51bGwpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanMnLCBuZXcgQmxvYihbYXR0YWNobWVudHMuanNdKSwgJ3N0b3J5LXNjcmlwdC5qcycpO1xuICAgIH1cbiAgICBpZiAoYXR0YWNobWVudHMuanNvbiAhPSBudWxsKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb24nLCBuZXcgQmxvYihbYXR0YWNobWVudHMuanNvbl0pLCAnc3Rvcnktc2VjdGlvbi5qc29uJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuYmFzZUh0dHBTZXJ2aWNlLnVwbG9hZCh7XG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIHVybDogYCR7dGhpcy5zZXJ2aWNlVXJsfS8ke3RlbXBsYXRlSWR9L2NvbXBvbmVudHMvJHtjb21wb25lbnRJZH0vc3Rvcmllcy8ke3N0b3J5SWR9L2F0dGFjaG1lbnRzYCxcbiAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgIH0pO1xuICB9O1xuXG4gIGdldFRlbXBsYXRlVGh1bWJuYWlsVXJsKHRlbXBsYXRlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vdGh1bWJuYWlsL2ZpbGVgO1xuICB9XG5cbiAgYXR0YWNoVGVtcGxhdGVUaHVtYm5haWwkKHRlbXBsYXRlSWQ6IHN0cmluZywgZmlsZTogRmlsZSkge1xuICAgIGNvbnN0IGRhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBkYXRhLmFwcGVuZCgndGh1bWInLCBmaWxlKTtcblxuICAgIHJldHVybiB0aGlzLmJhc2VIdHRwU2VydmljZS51cGxvYWQoe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS90aHVtYm5haWxgLFxuICAgICAgYm9keTogZGF0YSxcbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZVRlbXBsYXRlVGh1bWJuYWlsJCh0ZW1wbGF0ZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS90aHVtYm5haWxgLFxuICAgIH0pO1xuICB9XG5cbiAgZmV0Y2hDb21wb25lbnRBdHRhY2htZW50cyQgPSAodGVtcGxhdGVJZDogc3RyaW5nLCBjb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50KTogT2JzZXJ2YWJsZTxDb21wb25lbnRBdHRhY2htZW50cz4gPT4ge1xuICAgIHJldHVybiBmb3JrSm9pbihbXG4gICAgICB0aGlzLmZldGNoQ29tcG9uZW50QXR0YWNobWVudEZpbGUkKHRlbXBsYXRlSWQsIGNvbXBvbmVudC5pZCwgJ2h0bWwnKSxcbiAgICAgIHRoaXMuZmV0Y2hDb21wb25lbnRBdHRhY2htZW50RmlsZSQodGVtcGxhdGVJZCwgY29tcG9uZW50LmlkLCAnanMnKSxcbiAgICAgIHRoaXMuZmV0Y2hDb21wb25lbnRBdHRhY2htZW50RmlsZSQodGVtcGxhdGVJZCwgY29tcG9uZW50LmlkLCAnY3NzJyksXG4gICAgICB0aGlzLmZldGNoQ29tcG9uZW50QXR0YWNobWVudEZpbGUkKHRlbXBsYXRlSWQsIGNvbXBvbmVudC5pZCwgJ2pzb24nKSxcbiAgICBdKS5waXBlKG1hcCgoW2h0bWwsIGpzLCBjc3MsIGpzb25dKSA9PiAoeyBodG1sLCBqcywgY3NzLCBqc29uIH0pKSk7XG4gIH07XG5cbiAgcHJpdmF0ZSBmZXRjaENvbXBvbmVudEF0dGFjaG1lbnRGaWxlJCA9IChcbiAgICB0ZW1wbGF0ZUlkOiBzdHJpbmcsXG4gICAgY29tcG9uZW50SWQ6IHN0cmluZyxcbiAgICBhdHRhY2htZW50VHlwZTogVGVtcGxhdGVBdHRhY2htZW50VHlwZSxcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2VcbiAgICAgIC5hcGkoe1xuICAgICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgICB1cmw6IGAke3RoaXMuc2VydmljZVVybH0vJHt0ZW1wbGF0ZUlkfS9jb21wb25lbnRzLyR7Y29tcG9uZW50SWR9L2F0dGFjaG1lbnRzLyR7YXR0YWNobWVudFR5cGV9L2ZpbGVgLFxuICAgICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JyxcbiAgICAgICAgZXJyb3JIYW5kbGVyOiBub29wLFxuICAgICAgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoJycpKSk7XG4gIH07XG5cbiAgdXBsb2FkQ29tcG9uZW50QXR0YWNobWVudHMkID0gKFxuICAgIHRlbXBsYXRlSWQ6IHN0cmluZyxcbiAgICBjb21wb25lbnRJZDogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzOiBDb21wb25lbnRBdHRhY2htZW50cyxcbiAgKTogT2JzZXJ2YWJsZTx2b2lkPiA9PiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBpZiAoYXR0YWNobWVudHMuaHRtbCAhPSBudWxsKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2h0bWwnLCBuZXcgQmxvYihbYXR0YWNobWVudHMuaHRtbF0pLCAndGVtcGxhdGUuaHRtbCcpO1xuICAgIH1cbiAgICBpZiAoYXR0YWNobWVudHMuY3NzICE9IG51bGwpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnY3NzJywgbmV3IEJsb2IoW2F0dGFjaG1lbnRzLmNzc10pLCAnc3R5bGVzLmNzcycpO1xuICAgIH1cbiAgICBpZiAoYXR0YWNobWVudHMuanMgIT0gbnVsbCkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqcycsIG5ldyBCbG9iKFthdHRhY2htZW50cy5qc10pLCAnc2NyaXB0LmpzJyk7XG4gICAgfVxuICAgIGlmIChhdHRhY2htZW50cy5qc29uICE9IG51bGwpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbicsIG5ldyBCbG9iKFthdHRhY2htZW50cy5qc29uXSksICdzZWN0aW9uLmpzb24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5iYXNlSHR0cFNlcnZpY2UudXBsb2FkKHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiBgJHt0aGlzLnNlcnZpY2VVcmx9LyR7dGVtcGxhdGVJZH0vY29tcG9uZW50cy8ke2NvbXBvbmVudElkfS9hdHRhY2htZW50c2AsXG4gICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICB9KTtcbiAgfTtcbn1cbiJdfQ==
|
@@ -1,2 +1,2 @@
|
|
1
1
|
export {};
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGVtcGxhdGUtZHRvLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvc3JjL2xpYi90eXBlcy91aS10ZW1wbGF0ZS1kdG8udHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVUlDb21wb25lbnRTdG9yeURUTyB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgdWlDb21wb25lbnRJZDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cbiJdfQ==
|
@@ -4,14 +4,10 @@ export const fromUIComponentStoryDTO = (dto, attachments) => {
|
|
4
4
|
name: dto.name,
|
5
5
|
uiComponentId: dto.uiComponentId,
|
6
6
|
description: dto.description,
|
7
|
-
templateHtmlId: dto.templateHtmlId,
|
8
|
-
scriptJsId: dto.scriptJsId,
|
9
|
-
styleCssId: dto.styleCssId,
|
10
|
-
sectionJsonId: dto.sectionJsonId,
|
11
7
|
section: attachments.json,
|
12
8
|
template: attachments.html,
|
13
9
|
script: attachments.js,
|
14
10
|
styles: attachments.css,
|
15
11
|
};
|
16
12
|
};
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktdGVtcGxhdGUudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9zcmMvbGliL3V0aWxzL3VpLXRlbXBsYXRlLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQ3JDLEdBQXdCLEVBQ3hCLFdBQXNDLEVBQ3RCLEVBQUU7SUFDbEIsT0FBTztRQUNMLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNWLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNkLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYTtRQUNoQyxXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVc7UUFDNUIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxJQUFJO1FBQ3pCLFFBQVEsRUFBRSxXQUFXLENBQUMsSUFBSTtRQUMxQixNQUFNLEVBQUUsV0FBVyxDQUFDLEVBQUU7UUFDdEIsTUFBTSxFQUFFLFdBQVcsQ0FBQyxHQUFHO0tBQ3hCLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRTdG9yeSwgQ29tcG9uZW50U3RvcnlBdHRhY2htZW50cyB9IGZyb20gJ0B2ZWxvY2UvY29yZSc7XG5pbXBvcnQgeyBVSUNvbXBvbmVudFN0b3J5RFRPIH0gZnJvbSAnLi4vdHlwZXMvdWktdGVtcGxhdGUtZHRvLnR5cGVzJztcblxuZXhwb3J0IGNvbnN0IGZyb21VSUNvbXBvbmVudFN0b3J5RFRPID0gKFxuICBkdG86IFVJQ29tcG9uZW50U3RvcnlEVE8sXG4gIGF0dGFjaG1lbnRzOiBDb21wb25lbnRTdG9yeUF0dGFjaG1lbnRzLFxuKTogQ29tcG9uZW50U3RvcnkgPT4ge1xuICByZXR1cm4ge1xuICAgIGlkOiBkdG8uaWQsXG4gICAgbmFtZTogZHRvLm5hbWUsXG4gICAgdWlDb21wb25lbnRJZDogZHRvLnVpQ29tcG9uZW50SWQsXG4gICAgZGVzY3JpcHRpb246IGR0by5kZXNjcmlwdGlvbixcbiAgICBzZWN0aW9uOiBhdHRhY2htZW50cy5qc29uLFxuICAgIHRlbXBsYXRlOiBhdHRhY2htZW50cy5odG1sLFxuICAgIHNjcmlwdDogYXR0YWNobWVudHMuanMsXG4gICAgc3R5bGVzOiBhdHRhY2htZW50cy5jc3MsXG4gIH07XG59O1xuIl19
|
package/fesm2015/veloce-api.js
CHANGED
@@ -3,8 +3,8 @@ import { HttpParams, HttpClientModule } from '@angular/common/http';
|
|
3
3
|
import * as i0 from '@angular/core';
|
4
4
|
import { Injectable, NgModule } from '@angular/core';
|
5
5
|
import * as i1 from '@veloce/core';
|
6
|
-
import { ModelTranslatorUtils, ConfigurationContextMode, QuoteDraft, DocxTemplater, StringUtils, ProductModelsContainer, ModelUtils, EntityUtil,
|
7
|
-
import { throwError, forkJoin, zip, of,
|
6
|
+
import { ModelTranslatorUtils, ConfigurationContextMode, QuoteDraft, DocxTemplater, StringUtils, ProductModelsContainer, ModelUtils, EntityUtil, BaseHttpService, XrayService } from '@veloce/core';
|
7
|
+
import { throwError, forkJoin, zip, of, map as map$1, noop, catchError as catchError$1, switchMap as switchMap$1, delay } from 'rxjs';
|
8
8
|
import { map, tap, defaultIfEmpty, switchMap, catchError } from 'rxjs/operators';
|
9
9
|
import * as _ from 'lodash';
|
10
10
|
import { transform } from 'lodash';
|
@@ -424,9 +424,9 @@ class ConfigurationApiService {
|
|
424
424
|
return Object.assign(Object.assign({}, lineItem), { lineItems: (_c = lineItem.lineItems) === null || _c === void 0 ? void 0 : _c.map(i => this.updatePortDomains(i, runtimeModel)), portDomains });
|
425
425
|
}
|
426
426
|
}
|
427
|
-
ConfigurationApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
428
|
-
ConfigurationApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
429
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
427
|
+
ConfigurationApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ConfigurationApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
428
|
+
ConfigurationApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ConfigurationApiService });
|
429
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ConfigurationApiService, decorators: [{
|
430
430
|
type: Injectable
|
431
431
|
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
|
432
432
|
|
@@ -510,9 +510,9 @@ class ConfigurationSettingsApiService {
|
|
510
510
|
});
|
511
511
|
}
|
512
512
|
}
|
513
|
-
ConfigurationSettingsApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
514
|
-
ConfigurationSettingsApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
515
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
513
|
+
ConfigurationSettingsApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ConfigurationSettingsApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
514
|
+
ConfigurationSettingsApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ConfigurationSettingsApiService });
|
515
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ConfigurationSettingsApiService, decorators: [{
|
516
516
|
type: Injectable
|
517
517
|
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
|
518
518
|
|
@@ -532,9 +532,9 @@ class ContextApiService {
|
|
532
532
|
});
|
533
533
|
}
|
534
534
|
}
|
535
|
-
ContextApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
536
|
-
ContextApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
537
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
535
|
+
ContextApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ContextApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
536
|
+
ContextApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ContextApiService });
|
537
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ContextApiService, decorators: [{
|
538
538
|
type: Injectable
|
539
539
|
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
|
540
540
|
|
@@ -593,9 +593,9 @@ class DocumentAttachmentApiService {
|
|
593
593
|
});
|
594
594
|
}
|
595
595
|
}
|
596
|
-
DocumentAttachmentApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
597
|
-
DocumentAttachmentApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
598
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
596
|
+
DocumentAttachmentApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DocumentAttachmentApiService, deps: [{ token: i1.BaseHttpService }, { token: i1.FileDownloadService }], target: i0.ɵɵFactoryTarget.Injectable });
|
597
|
+
DocumentAttachmentApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DocumentAttachmentApiService });
|
598
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DocumentAttachmentApiService, decorators: [{
|
599
599
|
type: Injectable
|
600
600
|
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }, { type: i1.FileDownloadService }]; } });
|
601
601
|
|
@@ -640,9 +640,9 @@ class SalesforceApiService {
|
|
640
640
|
});
|
641
641
|
}
|
642
642
|
}
|
643
|
-
SalesforceApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
644
|
-
SalesforceApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
645
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
643
|
+
SalesforceApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SalesforceApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
644
|
+
SalesforceApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SalesforceApiService });
|
645
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SalesforceApiService, decorators: [{
|
646
646
|
type: Injectable
|
647
647
|
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
|
648
648
|
|
@@ -906,9 +906,9 @@ class DocumentTemplatesApiService {
|
|
906
906
|
return this.sfRepo.query(searchRequest, objectName).pipe(mapSfQueryResult(limit), map(value => ({ [resultObjectName]: value })));
|
907
907
|
}
|
908
908
|
}
|
909
|
-
DocumentTemplatesApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
910
|
-
DocumentTemplatesApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
911
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
909
|
+
DocumentTemplatesApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DocumentTemplatesApiService, deps: [{ token: i1.BaseHttpService }, { token: SalesforceApiService }, { token: i1.FileDownloadService }, { token: DocumentAttachmentApiService }, { token: i4.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
910
|
+
DocumentTemplatesApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DocumentTemplatesApiService });
|
911
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: DocumentTemplatesApiService, decorators: [{
|
912
912
|
type: Injectable
|
913
913
|
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }, { type: SalesforceApiService }, { type: i1.FileDownloadService }, { type: DocumentAttachmentApiService }, { type: i4.HttpClient }]; } });
|
914
914
|
|
@@ -989,9 +989,9 @@ class PriceApiService {
|
|
989
989
|
});
|
990
990
|
}
|
991
991
|
}
|
992
|
-
PriceApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
993
|
-
PriceApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
994
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
992
|
+
PriceApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PriceApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
993
|
+
PriceApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PriceApiService });
|
994
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: PriceApiService, decorators: [{
|
995
995
|
type: Injectable
|
996
996
|
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
|
997
997
|
|
@@ -1215,9 +1215,9 @@ class ProductModelApiService {
|
|
1215
1215
|
}
|
1216
1216
|
}
|
1217
1217
|
ProductModelApiService.MAX_RESULTS = 200;
|
1218
|
-
ProductModelApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
1219
|
-
ProductModelApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
1220
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
1218
|
+
ProductModelApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ProductModelApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
1219
|
+
ProductModelApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ProductModelApiService });
|
1220
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ProductModelApiService, decorators: [{
|
1221
1221
|
type: Injectable
|
1222
1222
|
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
|
1223
1223
|
|
@@ -1248,9 +1248,9 @@ class QuoteApiService {
|
|
1248
1248
|
});
|
1249
1249
|
}
|
1250
1250
|
}
|
1251
|
-
QuoteApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
1252
|
-
QuoteApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
1253
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
1251
|
+
QuoteApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: QuoteApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
1252
|
+
QuoteApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: QuoteApiService });
|
1253
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: QuoteApiService, decorators: [{
|
1254
1254
|
type: Injectable
|
1255
1255
|
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
|
1256
1256
|
|
@@ -1287,9 +1287,9 @@ class RampApiService {
|
|
1287
1287
|
// );
|
1288
1288
|
}
|
1289
1289
|
}
|
1290
|
-
RampApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
1291
|
-
RampApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
1292
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
1290
|
+
RampApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: RampApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
1291
|
+
RampApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: RampApiService });
|
1292
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: RampApiService, decorators: [{
|
1293
1293
|
type: Injectable
|
1294
1294
|
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
|
1295
1295
|
|
@@ -1299,10 +1299,6 @@ const fromUIComponentStoryDTO = (dto, attachments) => {
|
|
1299
1299
|
name: dto.name,
|
1300
1300
|
uiComponentId: dto.uiComponentId,
|
1301
1301
|
description: dto.description,
|
1302
|
-
templateHtmlId: dto.templateHtmlId,
|
1303
|
-
scriptJsId: dto.scriptJsId,
|
1304
|
-
styleCssId: dto.styleCssId,
|
1305
|
-
sectionJsonId: dto.sectionJsonId,
|
1306
1302
|
section: attachments.json,
|
1307
1303
|
template: attachments.html,
|
1308
1304
|
script: attachments.js,
|
@@ -1335,9 +1331,14 @@ class UITemplatesApiService {
|
|
1335
1331
|
body: template,
|
1336
1332
|
});
|
1337
1333
|
};
|
1338
|
-
this.duplicateTemplate$ = (template) => {
|
1339
|
-
|
1340
|
-
|
1334
|
+
this.duplicateTemplate$ = (template, cloneRequest) => {
|
1335
|
+
return this.baseHttpService
|
1336
|
+
.api({
|
1337
|
+
url: `${this.serviceUrl}/${template.id}/clone`,
|
1338
|
+
method: 'post',
|
1339
|
+
body: cloneRequest,
|
1340
|
+
})
|
1341
|
+
.pipe(map$1(response => response.clonedRecordId));
|
1341
1342
|
};
|
1342
1343
|
this.removeTemplate$ = (id) => {
|
1343
1344
|
return this.baseHttpService.api({
|
@@ -1388,9 +1389,14 @@ class UITemplatesApiService {
|
|
1388
1389
|
body: component,
|
1389
1390
|
});
|
1390
1391
|
};
|
1391
|
-
this.duplicateComponent$ = (component) => {
|
1392
|
-
|
1393
|
-
|
1392
|
+
this.duplicateComponent$ = (component, cloneRequest) => {
|
1393
|
+
return this.baseHttpService
|
1394
|
+
.api({
|
1395
|
+
url: `${this.serviceUrl}/${component.uiTemplateId}/components/${component.id}/clone`,
|
1396
|
+
method: 'post',
|
1397
|
+
body: cloneRequest,
|
1398
|
+
})
|
1399
|
+
.pipe(map$1(response => response.clonedRecordId));
|
1394
1400
|
};
|
1395
1401
|
this.removeComponent$ = (templateId, componentId) => {
|
1396
1402
|
return this.baseHttpService.api({
|
@@ -1417,15 +1423,16 @@ class UITemplatesApiService {
|
|
1417
1423
|
.api({
|
1418
1424
|
url: `${this.serviceUrl}/${templateId}/components/${componentId}/stories/${storyId}/attachments/${type}/file`,
|
1419
1425
|
responseType: 'text',
|
1426
|
+
errorHandler: noop,
|
1420
1427
|
})
|
1421
1428
|
.pipe(catchError$1(() => of('')));
|
1422
1429
|
};
|
1423
1430
|
this.convertToComponentStory$ = (templateId, componentId, storyDto) => {
|
1424
1431
|
return forkJoin([
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1432
|
+
this.fetchStoryAttachment(templateId, componentId, storyDto.id, 'html'),
|
1433
|
+
this.fetchStoryAttachment(templateId, componentId, storyDto.id, 'js'),
|
1434
|
+
this.fetchStoryAttachment(templateId, componentId, storyDto.id, 'css'),
|
1435
|
+
this.fetchStoryAttachment(templateId, componentId, storyDto.id, 'json'),
|
1429
1436
|
]).pipe(map$1(([html, js, css, json]) => ({ html, js, css, json })), map$1(attachments => fromUIComponentStoryDTO(storyDto, attachments)));
|
1430
1437
|
};
|
1431
1438
|
this.fetchStories$ = (templateId, componentId, name) => {
|
@@ -1469,6 +1476,15 @@ class UITemplatesApiService {
|
|
1469
1476
|
})
|
1470
1477
|
.pipe(map$1(dto => fromUIComponentStoryDTO(dto, { html: template, js: script, css: styles, json: section })));
|
1471
1478
|
};
|
1479
|
+
this.duplicateComponentStory$ = (story, cloneRequest) => {
|
1480
|
+
return this.baseHttpService
|
1481
|
+
.api({
|
1482
|
+
url: `${this.serviceUrl}/${story.template}/components/${story.uiComponentId}/stories/${story.id}/clone`,
|
1483
|
+
method: 'post',
|
1484
|
+
body: cloneRequest,
|
1485
|
+
})
|
1486
|
+
.pipe(map$1(response => response.clonedRecordId));
|
1487
|
+
};
|
1472
1488
|
this.deleteComponentStory$ = (templateId, componentId, storyId) => {
|
1473
1489
|
return this.baseHttpService.api({
|
1474
1490
|
method: 'delete',
|
@@ -1503,10 +1519,10 @@ class UITemplatesApiService {
|
|
1503
1519
|
};
|
1504
1520
|
this.fetchComponentAttachments$ = (templateId, component) => {
|
1505
1521
|
return forkJoin([
|
1506
|
-
|
1507
|
-
|
1508
|
-
|
1509
|
-
|
1522
|
+
this.fetchComponentAttachmentFile$(templateId, component.id, 'html'),
|
1523
|
+
this.fetchComponentAttachmentFile$(templateId, component.id, 'js'),
|
1524
|
+
this.fetchComponentAttachmentFile$(templateId, component.id, 'css'),
|
1525
|
+
this.fetchComponentAttachmentFile$(templateId, component.id, 'json'),
|
1510
1526
|
]).pipe(map$1(([html, js, css, json]) => ({ html, js, css, json })));
|
1511
1527
|
};
|
1512
1528
|
this.fetchComponentAttachmentFile$ = (templateId, componentId, attachmentType) => {
|
@@ -1515,6 +1531,7 @@ class UITemplatesApiService {
|
|
1515
1531
|
method: 'get',
|
1516
1532
|
url: `${this.serviceUrl}/${templateId}/components/${componentId}/attachments/${attachmentType}/file`,
|
1517
1533
|
responseType: 'text',
|
1534
|
+
errorHandler: noop,
|
1518
1535
|
})
|
1519
1536
|
.pipe(catchError$1(() => of('')));
|
1520
1537
|
};
|
@@ -1558,9 +1575,9 @@ class UITemplatesApiService {
|
|
1558
1575
|
});
|
1559
1576
|
}
|
1560
1577
|
}
|
1561
|
-
UITemplatesApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
1562
|
-
UITemplatesApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
1563
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
1578
|
+
UITemplatesApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: UITemplatesApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
1579
|
+
UITemplatesApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: UITemplatesApiService });
|
1580
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: UITemplatesApiService, decorators: [{
|
1564
1581
|
type: Injectable
|
1565
1582
|
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
|
1566
1583
|
|
@@ -1630,17 +1647,33 @@ class ScriptsApiService {
|
|
1630
1647
|
};
|
1631
1648
|
}
|
1632
1649
|
}
|
1633
|
-
ScriptsApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
1634
|
-
ScriptsApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.
|
1635
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
1650
|
+
ScriptsApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ScriptsApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
1651
|
+
ScriptsApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ScriptsApiService });
|
1652
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ScriptsApiService, decorators: [{
|
1653
|
+
type: Injectable
|
1654
|
+
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
|
1655
|
+
|
1656
|
+
class RulesApiService {
|
1657
|
+
constructor(baseHttpService) {
|
1658
|
+
this.baseHttpService = baseHttpService;
|
1659
|
+
this.serviceUrl = '/admin/rules';
|
1660
|
+
this.fetchRules$ = () => {
|
1661
|
+
return of([]).pipe(delay(1000));
|
1662
|
+
return this.baseHttpService.api({ url: `${this.serviceUrl}` });
|
1663
|
+
};
|
1664
|
+
}
|
1665
|
+
}
|
1666
|
+
RulesApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: RulesApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
1667
|
+
RulesApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: RulesApiService });
|
1668
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: RulesApiService, decorators: [{
|
1636
1669
|
type: Injectable
|
1637
1670
|
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
|
1638
1671
|
|
1639
1672
|
class ApiModule {
|
1640
1673
|
}
|
1641
|
-
ApiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.
|
1642
|
-
ApiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.
|
1643
|
-
ApiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.
|
1674
|
+
ApiModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ApiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
1675
|
+
ApiModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ApiModule, imports: [HttpClientModule] });
|
1676
|
+
ApiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ApiModule, providers: [
|
1644
1677
|
BaseHttpService,
|
1645
1678
|
XrayService,
|
1646
1679
|
ConfigurationApiService,
|
@@ -1655,8 +1688,9 @@ ApiModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.
|
|
1655
1688
|
SalesforceApiService,
|
1656
1689
|
UITemplatesApiService,
|
1657
1690
|
ScriptsApiService,
|
1691
|
+
RulesApiService,
|
1658
1692
|
], imports: [[HttpClientModule]] });
|
1659
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.
|
1693
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: ApiModule, decorators: [{
|
1660
1694
|
type: NgModule,
|
1661
1695
|
args: [{
|
1662
1696
|
imports: [HttpClientModule],
|
@@ -1675,6 +1709,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
1675
1709
|
SalesforceApiService,
|
1676
1710
|
UITemplatesApiService,
|
1677
1711
|
ScriptsApiService,
|
1712
|
+
RulesApiService,
|
1678
1713
|
],
|
1679
1714
|
}]
|
1680
1715
|
}] });
|