@veloceapps/api 1.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/README.md +7 -0
- package/bundles/veloce-api.umd.js +2117 -0
- package/bundles/veloce-api.umd.js.map +1 -0
- package/esm2015/index.js +14 -0
- package/esm2015/lib/api.module.js +59 -0
- package/esm2015/lib/services/configuration-api.service.js +90 -0
- package/esm2015/lib/services/configuration-settings-api.service.js +69 -0
- package/esm2015/lib/services/context-api.service.js +26 -0
- package/esm2015/lib/services/document-attachment-api.service.js +65 -0
- package/esm2015/lib/services/document-templates-api.service.js +278 -0
- package/esm2015/lib/services/price-api.service.js +86 -0
- package/esm2015/lib/services/product-model-api.service.js +232 -0
- package/esm2015/lib/services/quote-api.service.js +36 -0
- package/esm2015/lib/services/ramp-api.service.js +42 -0
- package/esm2015/lib/services/salesforce-api.service.js +51 -0
- package/esm2015/lib/services/scripts-api.service.js +75 -0
- package/esm2015/lib/services/ui-templates-api.service.js +262 -0
- package/esm2015/lib/types/attribute-dto.types.js +21 -0
- package/esm2015/lib/types/charge-group-item-dto.types.js +45 -0
- package/esm2015/lib/types/charge-item-dto.types.js +74 -0
- package/esm2015/lib/types/clone-request.types.js +2 -0
- package/esm2015/lib/types/configuration-settings-dto.types.js +22 -0
- package/esm2015/lib/types/domain-type-dto.types.js +27 -0
- package/esm2015/lib/types/line-item-dto.types.js +93 -0
- package/esm2015/lib/types/port-domain-dto.types.js +22 -0
- package/esm2015/lib/types/price-adjustment-dto.types.js +15 -0
- package/esm2015/lib/types/price-dto.types.js +25 -0
- package/esm2015/lib/types/recommended-price-dto.types.js +23 -0
- package/esm2015/lib/types/ui-template-dto.types.js +2 -0
- package/esm2015/lib/utils/ui-template.utils.js +17 -0
- package/esm2015/veloce-api.js +5 -0
- package/fesm2015/veloce-api.js +1686 -0
- package/fesm2015/veloce-api.js.map +1 -0
- package/index.d.ts +14 -0
- package/lib/api.module.d.ts +7 -0
- package/lib/services/configuration-api.service.d.ts +18 -0
- package/lib/services/configuration-settings-api.service.d.ts +17 -0
- package/lib/services/context-api.service.d.ts +11 -0
- package/lib/services/document-attachment-api.service.d.ts +15 -0
- package/lib/services/document-templates-api.service.d.ts +39 -0
- package/lib/services/price-api.service.d.ts +16 -0
- package/lib/services/product-model-api.service.d.ts +30 -0
- package/lib/services/quote-api.service.d.ts +14 -0
- package/lib/services/ramp-api.service.d.ts +12 -0
- package/lib/services/salesforce-api.service.d.ts +17 -0
- package/lib/services/scripts-api.service.d.ts +21 -0
- package/lib/services/ui-templates-api.service.d.ts +47 -0
- package/lib/types/attribute-dto.types.d.ts +11 -0
- package/lib/types/charge-group-item-dto.types.d.ts +24 -0
- package/lib/types/charge-item-dto.types.d.ts +39 -0
- package/lib/types/clone-request.types.d.ts +6 -0
- package/lib/types/configuration-settings-dto.types.d.ts +9 -0
- package/lib/types/domain-type-dto.types.d.ts +15 -0
- package/lib/types/line-item-dto.types.d.ts +50 -0
- package/lib/types/port-domain-dto.types.d.ts +13 -0
- package/lib/types/price-adjustment-dto.types.d.ts +8 -0
- package/lib/types/price-dto.types.d.ts +13 -0
- package/lib/types/recommended-price-dto.types.d.ts +12 -0
- package/lib/types/ui-template-dto.types.d.ts +10 -0
- package/lib/utils/ui-template.utils.d.ts +3 -0
- package/package.json +33 -0
- package/veloce-api.d.ts +5 -0
@@ -0,0 +1,69 @@
|
|
1
|
+
import { Injectable } from '@angular/core';
|
2
|
+
import { map } from 'rxjs/operators';
|
3
|
+
import { ConfigurationSettingsDTO } from '../types/configuration-settings-dto.types';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
import * as i1 from "@veloce/core";
|
6
|
+
export class ConfigurationSettingsApiService {
|
7
|
+
constructor(httpService) {
|
8
|
+
this.httpService = httpService;
|
9
|
+
this.SERVICE_URL = '/configuration-settings';
|
10
|
+
}
|
11
|
+
fetchSettings() {
|
12
|
+
return this.httpService
|
13
|
+
.api({
|
14
|
+
url: `${this.SERVICE_URL}`,
|
15
|
+
method: 'get',
|
16
|
+
})
|
17
|
+
.pipe(map((settings) => settings.map(setting => ConfigurationSettingsDTO.fromDTO(setting))));
|
18
|
+
}
|
19
|
+
fetchSetting(settingsKey) {
|
20
|
+
return this.httpService
|
21
|
+
.api({
|
22
|
+
url: `${this.SERVICE_URL}/byKey/${settingsKey}`,
|
23
|
+
method: 'get',
|
24
|
+
})
|
25
|
+
.pipe(map((setting) => ConfigurationSettingsDTO.fromDTO(setting, settingsKey)));
|
26
|
+
}
|
27
|
+
createSetting(setting) {
|
28
|
+
const request = ConfigurationSettingsDTO.toDTO(setting);
|
29
|
+
return this.httpService.api({
|
30
|
+
url: `${this.SERVICE_URL}`,
|
31
|
+
method: 'post',
|
32
|
+
body: Object.assign({}, request),
|
33
|
+
});
|
34
|
+
}
|
35
|
+
updateSetting(setting) {
|
36
|
+
const request = ConfigurationSettingsDTO.toDTO(setting);
|
37
|
+
return this.httpService.api({
|
38
|
+
url: `${this.SERVICE_URL}/${request.id}`,
|
39
|
+
method: 'put',
|
40
|
+
body: Object.assign({}, request),
|
41
|
+
});
|
42
|
+
}
|
43
|
+
removeSetting(setting) {
|
44
|
+
const request = ConfigurationSettingsDTO.toDTO(setting);
|
45
|
+
return this.httpService.api({
|
46
|
+
url: `${this.SERVICE_URL}/${request.id}`,
|
47
|
+
method: 'delete',
|
48
|
+
});
|
49
|
+
}
|
50
|
+
restoreSetting(settingId) {
|
51
|
+
return this.httpService.api({
|
52
|
+
url: `${this.SERVICE_URL}/${settingId}/restore`,
|
53
|
+
method: 'patch',
|
54
|
+
});
|
55
|
+
}
|
56
|
+
clear(name) {
|
57
|
+
return this.httpService
|
58
|
+
.api({
|
59
|
+
method: 'get',
|
60
|
+
url: '/cache/evict/' + name
|
61
|
+
});
|
62
|
+
}
|
63
|
+
}
|
64
|
+
ConfigurationSettingsApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ConfigurationSettingsApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
65
|
+
ConfigurationSettingsApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ConfigurationSettingsApiService });
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ConfigurationSettingsApiService, decorators: [{
|
67
|
+
type: Injectable
|
68
|
+
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbi1zZXR0aW5ncy1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL3NyYy9saWIvc2VydmljZXMvY29uZmlndXJhdGlvbi1zZXR0aW5ncy1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7O0FBR3JGLE1BQU0sT0FBTywrQkFBK0I7SUFHMUMsWUFBb0IsV0FBNEI7UUFBNUIsZ0JBQVcsR0FBWCxXQUFXLENBQWlCO1FBRi9CLGdCQUFXLEdBQUcseUJBQXlCLENBQUM7SUFFTixDQUFDO0lBRXBELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxXQUFXO2FBQ3BCLEdBQUcsQ0FBNkI7WUFDL0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUMxQixNQUFNLEVBQUUsS0FBSztTQUNkLENBQUM7YUFDRCxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsUUFBb0MsRUFBRSxFQUFFLENBQzNDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDbkUsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVksQ0FBQyxXQUFtQjtRQUM5QixPQUFPLElBQUksQ0FBQyxXQUFXO2FBQ3BCLEdBQUcsQ0FBMkI7WUFDN0IsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsVUFBVSxXQUFXLEVBQUU7WUFDL0MsTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUFDO2FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQWlDLEVBQUUsRUFBRSxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlHLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBOEI7UUFDMUMsTUFBTSxPQUFPLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDMUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUMxQixNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksb0JBQ0MsT0FBTyxDQUNYO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUE4QjtRQUMxQyxNQUFNLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFeEQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUMxQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUU7WUFDeEMsTUFBTSxFQUFFLEtBQUs7WUFDYixJQUFJLG9CQUNDLE9BQU8sQ0FDWDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBOEI7UUFDMUMsTUFBTSxPQUFPLEdBQUcsd0JBQXdCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXhELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDMUIsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ3hDLE1BQU0sRUFBRSxRQUFRO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxjQUFjLENBQUMsU0FBaUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUMxQixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxJQUFJLFNBQVMsVUFBVTtZQUMvQyxNQUFNLEVBQUUsT0FBTztTQUNoQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQTZCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFdBQVc7YUFDcEIsR0FBRyxDQUFDO1lBQ0gsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUsZUFBZSxHQUFHLElBQUk7U0FDNUIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7NkhBekVVLCtCQUErQjtpSUFBL0IsK0JBQStCOzRGQUEvQiwrQkFBK0I7a0JBRDNDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlSHR0cFNlcnZpY2UsIENvbmZpZ3VyYXRpb25TZXR0aW5ncywgRGF0YUFkbWluaXN0cmF0aW9uRmllbGQgfSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNldHRpbmdzRFRPIH0gZnJvbSAnLi4vdHlwZXMvY29uZmlndXJhdGlvbi1zZXR0aW5ncy1kdG8udHlwZXMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29uZmlndXJhdGlvblNldHRpbmdzQXBpU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgU0VSVklDRV9VUkwgPSAnL2NvbmZpZ3VyYXRpb24tc2V0dGluZ3MnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cFNlcnZpY2U6IEJhc2VIdHRwU2VydmljZSkge31cblxuICBmZXRjaFNldHRpbmdzKCk6IE9ic2VydmFibGU8Q29uZmlndXJhdGlvblNldHRpbmdzW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxuICAgICAgLmFwaTxDb25maWd1cmF0aW9uU2V0dGluZ3NEVE9bXT4oe1xuICAgICAgICB1cmw6IGAke3RoaXMuU0VSVklDRV9VUkx9YCxcbiAgICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChzZXR0aW5nczogQ29uZmlndXJhdGlvblNldHRpbmdzRFRPW10pID0+XG4gICAgICAgICAgc2V0dGluZ3MubWFwKHNldHRpbmcgPT4gQ29uZmlndXJhdGlvblNldHRpbmdzRFRPLmZyb21EVE8oc2V0dGluZykpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgfVxuXG4gIGZldGNoU2V0dGluZyhzZXR0aW5nc0tleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxDb25maWd1cmF0aW9uU2V0dGluZ3M+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxuICAgICAgLmFwaTxDb25maWd1cmF0aW9uU2V0dGluZ3NEVE8+KHtcbiAgICAgICAgdXJsOiBgJHt0aGlzLlNFUlZJQ0VfVVJMfS9ieUtleS8ke3NldHRpbmdzS2V5fWAsXG4gICAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICB9KVxuICAgICAgLnBpcGUobWFwKChzZXR0aW5nOiBDb25maWd1cmF0aW9uU2V0dGluZ3NEVE8pID0+IENvbmZpZ3VyYXRpb25TZXR0aW5nc0RUTy5mcm9tRFRPKHNldHRpbmcsIHNldHRpbmdzS2V5KSkpO1xuICB9XG5cbiAgY3JlYXRlU2V0dGluZyhzZXR0aW5nOiBDb25maWd1cmF0aW9uU2V0dGluZ3MpOiBPYnNlcnZhYmxlPENvbmZpZ3VyYXRpb25TZXR0aW5ncz4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBDb25maWd1cmF0aW9uU2V0dGluZ3NEVE8udG9EVE8oc2V0dGluZyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5hcGkoe1xuICAgICAgdXJsOiBgJHt0aGlzLlNFUlZJQ0VfVVJMfWAsXG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgLi4ucmVxdWVzdCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVTZXR0aW5nKHNldHRpbmc6IENvbmZpZ3VyYXRpb25TZXR0aW5ncyk6IE9ic2VydmFibGU8Q29uZmlndXJhdGlvblNldHRpbmdzPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IENvbmZpZ3VyYXRpb25TZXR0aW5nc0RUTy50b0RUTyhzZXR0aW5nKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICB1cmw6IGAke3RoaXMuU0VSVklDRV9VUkx9LyR7cmVxdWVzdC5pZH1gLFxuICAgICAgbWV0aG9kOiAncHV0JyxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgLi4ucmVxdWVzdCxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByZW1vdmVTZXR0aW5nKHNldHRpbmc6IENvbmZpZ3VyYXRpb25TZXR0aW5ncyk6IE9ic2VydmFibGU8Q29uZmlndXJhdGlvblNldHRpbmdzPiB7XG4gICAgY29uc3QgcmVxdWVzdCA9IENvbmZpZ3VyYXRpb25TZXR0aW5nc0RUTy50b0RUTyhzZXR0aW5nKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICB1cmw6IGAke3RoaXMuU0VSVklDRV9VUkx9LyR7cmVxdWVzdC5pZH1gLFxuICAgICAgbWV0aG9kOiAnZGVsZXRlJyxcbiAgICB9KTtcbiAgfVxuXG4gIHJlc3RvcmVTZXR0aW5nKHNldHRpbmdJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIHVybDogYCR7dGhpcy5TRVJWSUNFX1VSTH0vJHtzZXR0aW5nSWR9L3Jlc3RvcmVgLFxuICAgICAgbWV0aG9kOiAncGF0Y2gnLFxuICAgIH0pO1xuICB9XG5cbiAgY2xlYXIobmFtZTogRGF0YUFkbWluaXN0cmF0aW9uRmllbGQpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxuICAgICAgLmFwaSh7XG4gICAgICAgIG1ldGhvZDogJ2dldCcsXG4gICAgICAgIHVybDogJy9jYWNoZS9ldmljdC8nICsgbmFtZVxuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { Injectable } from '@angular/core';
|
2
|
+
import { ConfigurationContextMode } from '@veloce/core';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
import * as i1 from "@veloce/core";
|
5
|
+
export class ContextApiService {
|
6
|
+
constructor(httpService) {
|
7
|
+
this.httpService = httpService;
|
8
|
+
this.SERVICE_URL = '/context';
|
9
|
+
}
|
10
|
+
getContext(headerId, mode) {
|
11
|
+
return this.httpService.api({
|
12
|
+
method: 'post',
|
13
|
+
body: {
|
14
|
+
headerId: headerId,
|
15
|
+
contextMode: ConfigurationContextMode[mode],
|
16
|
+
},
|
17
|
+
url: `${this.SERVICE_URL}`,
|
18
|
+
});
|
19
|
+
}
|
20
|
+
}
|
21
|
+
ContextApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ContextApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
22
|
+
ContextApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ContextApiService });
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ContextApiService, decorators: [{
|
24
|
+
type: Injectable
|
25
|
+
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL3NyYy9saWIvc2VydmljZXMvY29udGV4dC1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBeUMsd0JBQXdCLEVBQUUsTUFBTSxjQUFjLENBQUM7OztBQUkvRixNQUFNLE9BQU8saUJBQWlCO0lBRzVCLFlBQW9CLFdBQTRCO1FBQTVCLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUYvQixnQkFBVyxHQUFHLFVBQVUsQ0FBQztJQUVTLENBQUM7SUFFcEQsVUFBVSxDQUFDLFFBQWdCLEVBQUUsSUFBOEI7UUFDekQsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUMxQixNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRTtnQkFDSixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsV0FBVyxFQUFFLHdCQUF3QixDQUFDLElBQUksQ0FBQzthQUM1QztZQUNELEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUU7U0FDM0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7K0dBZFUsaUJBQWlCO21IQUFqQixpQkFBaUI7NEZBQWpCLGlCQUFpQjtrQkFEN0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VIdHRwU2VydmljZSwgQ29uZmlndXJhdGlvbkNvbnRleHQsIENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZSB9IGZyb20gJ0B2ZWxvY2UvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb250ZXh0QXBpU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgU0VSVklDRV9VUkwgPSAnL2NvbnRleHQnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cFNlcnZpY2U6IEJhc2VIdHRwU2VydmljZSkge31cblxuICBnZXRDb250ZXh0KGhlYWRlcklkOiBzdHJpbmcsIG1vZGU6IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZSk6IE9ic2VydmFibGU8Q29uZmlndXJhdGlvbkNvbnRleHQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5hcGkoe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICBib2R5OiB7XG4gICAgICAgIGhlYWRlcklkOiBoZWFkZXJJZCxcbiAgICAgICAgY29udGV4dE1vZGU6IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZVttb2RlXSxcbiAgICAgIH0sXG4gICAgICB1cmw6IGAke3RoaXMuU0VSVklDRV9VUkx9YCxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
@@ -0,0 +1,65 @@
|
|
1
|
+
import { Injectable } from '@angular/core';
|
2
|
+
import { map, tap } from 'rxjs/operators';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
import * as i1 from "@veloce/core";
|
5
|
+
export class DocumentAttachmentApiService {
|
6
|
+
constructor(httpService, fileDownloadService) {
|
7
|
+
this.httpService = httpService;
|
8
|
+
this.fileDownloadService = fileDownloadService;
|
9
|
+
}
|
10
|
+
getAttachments(searchRequest) {
|
11
|
+
return this.httpService.api({
|
12
|
+
url: '/attachments/search',
|
13
|
+
method: 'post',
|
14
|
+
body: searchRequest,
|
15
|
+
});
|
16
|
+
}
|
17
|
+
createAttachment(attachment, file, reportProgress) {
|
18
|
+
const formData = new FormData();
|
19
|
+
if (file) {
|
20
|
+
formData.append('file', file, file.name);
|
21
|
+
}
|
22
|
+
formData.append('attachment', new Blob([JSON.stringify(attachment)], {
|
23
|
+
type: 'application/json',
|
24
|
+
}));
|
25
|
+
return this.httpService.upload({
|
26
|
+
url: `/attachments`,
|
27
|
+
body: formData,
|
28
|
+
method: 'post',
|
29
|
+
observe: reportProgress ? 'events' : undefined,
|
30
|
+
reportProgress,
|
31
|
+
});
|
32
|
+
}
|
33
|
+
updateAttachment(id, attachment) {
|
34
|
+
return this.httpService.api({
|
35
|
+
url: `/attachments/${id}`,
|
36
|
+
body: attachment,
|
37
|
+
method: 'put',
|
38
|
+
});
|
39
|
+
}
|
40
|
+
getAttachmentFile(id, isPreventDownload) {
|
41
|
+
return this.httpService
|
42
|
+
.api({
|
43
|
+
url: `/attachments/${id}/file`,
|
44
|
+
responseType: isPreventDownload ? 'arraybuffer' : 'blob',
|
45
|
+
observe: isPreventDownload ? 'body' : 'response',
|
46
|
+
})
|
47
|
+
.pipe(tap(response => {
|
48
|
+
if (!isPreventDownload) {
|
49
|
+
this.fileDownloadService.processDownload(response);
|
50
|
+
}
|
51
|
+
}), map(response => (isPreventDownload ? new Blob([response.body || response]) : response.body || response)));
|
52
|
+
}
|
53
|
+
removeAttachment(id) {
|
54
|
+
return this.httpService.api({
|
55
|
+
url: `/attachments/${id}`,
|
56
|
+
method: 'delete',
|
57
|
+
});
|
58
|
+
}
|
59
|
+
}
|
60
|
+
DocumentAttachmentApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DocumentAttachmentApiService, deps: [{ token: i1.BaseHttpService }, { token: i1.FileDownloadService }], target: i0.ɵɵFactoryTarget.Injectable });
|
61
|
+
DocumentAttachmentApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DocumentAttachmentApiService });
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DocumentAttachmentApiService, decorators: [{
|
63
|
+
type: Injectable
|
64
|
+
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }, { type: i1.FileDownloadService }]; } });
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtYXR0YWNobWVudC1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL3NyYy9saWIvc2VydmljZXMvZG9jdW1lbnQtYXR0YWNobWVudC1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUTNDLE9BQU8sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUcxQyxNQUFNLE9BQU8sNEJBQTRCO0lBQ3ZDLFlBQW9CLFdBQTRCLEVBQVUsbUJBQXdDO1FBQTlFLGdCQUFXLEdBQVgsV0FBVyxDQUFpQjtRQUFVLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7SUFBRyxDQUFDO0lBRXRHLGNBQWMsQ0FBQyxhQUE4QztRQUMzRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1lBQzFCLEdBQUcsRUFBRSxxQkFBcUI7WUFDMUIsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsYUFBYTtTQUNwQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQ2QsVUFBOEIsRUFDOUIsSUFBVyxFQUNYLGNBQXdCO1FBRXhCLE1BQU0sUUFBUSxHQUFhLElBQUksUUFBUSxFQUFFLENBQUM7UUFFMUMsSUFBSSxJQUFJLEVBQUU7WUFDUixRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzFDO1FBRUQsUUFBUSxDQUFDLE1BQU0sQ0FDYixZQUFZLEVBQ1osSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUU7WUFDckMsSUFBSSxFQUFFLGtCQUFrQjtTQUN6QixDQUFDLENBQ0gsQ0FBQztRQUVGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDN0IsR0FBRyxFQUFFLGNBQWM7WUFDbkIsSUFBSSxFQUFFLFFBQVE7WUFDZCxNQUFNLEVBQUUsTUFBTTtZQUNkLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUM5QyxjQUFjO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQVUsRUFBRSxVQUE4QjtRQUN6RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1lBQzFCLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFO1lBQ3pCLElBQUksRUFBRSxVQUFVO1lBQ2hCLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQVUsRUFBRSxpQkFBMkI7UUFDdkQsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixHQUFHLENBQUM7WUFDSCxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTztZQUM5QixZQUFZLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTTtZQUN4RCxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsVUFBVTtTQUNqRCxDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNiLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNwRDtRQUNILENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQ3pHLENBQUM7SUFDTixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsRUFBVTtRQUN6QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1lBQzFCLEdBQUcsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFO1lBQ3pCLE1BQU0sRUFBRSxRQUFRO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7OzBIQXBFVSw0QkFBNEI7OEhBQTVCLDRCQUE0Qjs0RkFBNUIsNEJBQTRCO2tCQUR4QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmFzZUh0dHBTZXJ2aWNlLFxuICBGaWxlRG93bmxvYWRTZXJ2aWNlLFxuICBUZW1wbGF0ZUF0dGFjaG1lbnQsXG4gIFRlbXBsYXRlQXR0YWNobWVudFNlYXJjaFJlcXVlc3QsXG59IGZyb20gJ0B2ZWxvY2UvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERvY3VtZW50QXR0YWNobWVudEFwaVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHBTZXJ2aWNlOiBCYXNlSHR0cFNlcnZpY2UsIHByaXZhdGUgZmlsZURvd25sb2FkU2VydmljZTogRmlsZURvd25sb2FkU2VydmljZSkge31cblxuICBnZXRBdHRhY2htZW50cyhzZWFyY2hSZXF1ZXN0OiBUZW1wbGF0ZUF0dGFjaG1lbnRTZWFyY2hSZXF1ZXN0KTogT2JzZXJ2YWJsZTxUZW1wbGF0ZUF0dGFjaG1lbnRbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICB1cmw6ICcvYXR0YWNobWVudHMvc2VhcmNoJyxcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgYm9keTogc2VhcmNoUmVxdWVzdCxcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZUF0dGFjaG1lbnQoXG4gICAgYXR0YWNobWVudDogVGVtcGxhdGVBdHRhY2htZW50LFxuICAgIGZpbGU/OiBGaWxlLFxuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbixcbiAgKTogT2JzZXJ2YWJsZTxUZW1wbGF0ZUF0dGFjaG1lbnQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgIGlmIChmaWxlKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlLCBmaWxlLm5hbWUpO1xuICAgIH1cblxuICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICdhdHRhY2htZW50JyxcbiAgICAgIG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShhdHRhY2htZW50KV0sIHtcbiAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnVwbG9hZCh7XG4gICAgICB1cmw6IGAvYXR0YWNobWVudHNgLFxuICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgIG9ic2VydmU6IHJlcG9ydFByb2dyZXNzID8gJ2V2ZW50cycgOiB1bmRlZmluZWQsXG4gICAgICByZXBvcnRQcm9ncmVzcyxcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZUF0dGFjaG1lbnQoaWQ6IHN0cmluZywgYXR0YWNobWVudDogVGVtcGxhdGVBdHRhY2htZW50KTogT2JzZXJ2YWJsZTxUZW1wbGF0ZUF0dGFjaG1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5hcGkoe1xuICAgICAgdXJsOiBgL2F0dGFjaG1lbnRzLyR7aWR9YCxcbiAgICAgIGJvZHk6IGF0dGFjaG1lbnQsXG4gICAgICBtZXRob2Q6ICdwdXQnLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0QXR0YWNobWVudEZpbGUoaWQ6IHN0cmluZywgaXNQcmV2ZW50RG93bmxvYWQ/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZVxuICAgICAgLmFwaSh7XG4gICAgICAgIHVybDogYC9hdHRhY2htZW50cy8ke2lkfS9maWxlYCxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiBpc1ByZXZlbnREb3dubG9hZCA/ICdhcnJheWJ1ZmZlcicgOiAnYmxvYicsXG4gICAgICAgIG9ic2VydmU6IGlzUHJldmVudERvd25sb2FkID8gJ2JvZHknIDogJ3Jlc3BvbnNlJyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICBpZiAoIWlzUHJldmVudERvd25sb2FkKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVEb3dubG9hZFNlcnZpY2UucHJvY2Vzc0Rvd25sb2FkKHJlc3BvbnNlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBtYXAocmVzcG9uc2UgPT4gKGlzUHJldmVudERvd25sb2FkID8gbmV3IEJsb2IoW3Jlc3BvbnNlLmJvZHkgfHwgcmVzcG9uc2VdKSA6IHJlc3BvbnNlLmJvZHkgfHwgcmVzcG9uc2UpKSxcbiAgICAgICk7XG4gIH1cblxuICByZW1vdmVBdHRhY2htZW50KGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5hcGkoe1xuICAgICAgdXJsOiBgL2F0dGFjaG1lbnRzLyR7aWR9YCxcbiAgICAgIG1ldGhvZDogJ2RlbGV0ZScsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,278 @@
|
|
1
|
+
import { CurrencyPipe } from '@angular/common';
|
2
|
+
import { Injectable } from '@angular/core';
|
3
|
+
import { DocxTemplater, QuoteDraft, StringUtils, } from '@veloce/core';
|
4
|
+
import * as _ from 'lodash';
|
5
|
+
import * as moment_ from 'moment';
|
6
|
+
import { forkJoin, of, zip } from 'rxjs';
|
7
|
+
import { defaultIfEmpty, map, switchMap, tap } from 'rxjs/operators';
|
8
|
+
import * as i0 from "@angular/core";
|
9
|
+
import * as i1 from "@veloce/core";
|
10
|
+
import * as i2 from "./salesforce-api.service";
|
11
|
+
import * as i3 from "./document-attachment-api.service";
|
12
|
+
import * as i4 from "@angular/common/http";
|
13
|
+
const moment = moment_;
|
14
|
+
const mapSfQueryResult = (limit) => map((records) => {
|
15
|
+
if (!records.length) {
|
16
|
+
return { _result: 'No Records Found' };
|
17
|
+
}
|
18
|
+
if (limit === 1) {
|
19
|
+
return records[0];
|
20
|
+
}
|
21
|
+
return records;
|
22
|
+
});
|
23
|
+
const mapBooleanIfAplicable = (value) => {
|
24
|
+
if (value === 'true') {
|
25
|
+
return true;
|
26
|
+
}
|
27
|
+
if (value === 'false') {
|
28
|
+
return false;
|
29
|
+
}
|
30
|
+
return value;
|
31
|
+
};
|
32
|
+
export class DocumentTemplatesApiService {
|
33
|
+
constructor(service, sfRepo, fileDownloadService, documentAttachmentService, http) {
|
34
|
+
this.service = service;
|
35
|
+
this.sfRepo = sfRepo;
|
36
|
+
this.fileDownloadService = fileDownloadService;
|
37
|
+
this.documentAttachmentService = documentAttachmentService;
|
38
|
+
this.http = http;
|
39
|
+
this.fallbackDocGenHost = 'https://dev-dp1.velocpq.com/docgen';
|
40
|
+
if (window.VELO_DOCGEN_API) {
|
41
|
+
this.docGenHost = window.VELO_DOCGEN_API;
|
42
|
+
}
|
43
|
+
else {
|
44
|
+
console.log(`window.VELO_DOCGEN_API not set, will use fallback "${this.fallbackDocGenHost}"`);
|
45
|
+
this.docGenHost = this.fallbackDocGenHost;
|
46
|
+
}
|
47
|
+
}
|
48
|
+
getTemplates(tag) {
|
49
|
+
return this.service.api({
|
50
|
+
url: '/templates',
|
51
|
+
method: 'get',
|
52
|
+
params: Object.assign({}, (tag && { tag })),
|
53
|
+
});
|
54
|
+
}
|
55
|
+
upsertTemplate(template, file, reportProgress) {
|
56
|
+
const formData = new FormData();
|
57
|
+
if (file) {
|
58
|
+
formData.append('file', file, file.name);
|
59
|
+
}
|
60
|
+
formData.append('template', new Blob([JSON.stringify(template)], {
|
61
|
+
type: 'application/json',
|
62
|
+
}));
|
63
|
+
return this.service.upload({
|
64
|
+
url: `/templates` + ((template.id && `/${template.id}`) || ''),
|
65
|
+
body: formData,
|
66
|
+
method: template.id ? 'put' : 'post',
|
67
|
+
reportProgress,
|
68
|
+
});
|
69
|
+
}
|
70
|
+
removeTemplate(id) {
|
71
|
+
return this.service.api({
|
72
|
+
url: '/templates' + id,
|
73
|
+
method: 'delete',
|
74
|
+
});
|
75
|
+
}
|
76
|
+
cloneTemplate(id) {
|
77
|
+
return this.service.api({
|
78
|
+
url: '/templates/clone/' + id,
|
79
|
+
method: 'post',
|
80
|
+
});
|
81
|
+
}
|
82
|
+
generateDocumentData(template, object, params) {
|
83
|
+
var _a, _b, _c, _d;
|
84
|
+
const shouldPreventDownload = params === null || params === void 0 ? void 0 : params.shouldPreventDownload;
|
85
|
+
const useLocalDataGeneration = (_b = (_a = template.properties) === null || _a === void 0 ? void 0 : _a.find(({ name }) => name === 'useLocalDataGeneration')) === null || _b === void 0 ? void 0 : _b.value;
|
86
|
+
if (!useLocalDataGeneration && object instanceof QuoteDraft) {
|
87
|
+
return this.generate('/templates/generate-data', { template, quote: object }, shouldPreventDownload, shouldPreventDownload ? 'json' : 'blob');
|
88
|
+
}
|
89
|
+
const allQueries = [...((_c = template === null || template === void 0 ? void 0 : template.queries) !== null && _c !== void 0 ? _c : [])];
|
90
|
+
const properties = ((_d = object === null || object === void 0 ? void 0 : object.context) === null || _d === void 0 ? void 0 : _d.properties) || (object === null || object === void 0 ? void 0 : object.properties) || {};
|
91
|
+
const accountId = properties === null || properties === void 0 ? void 0 : properties.AccountId;
|
92
|
+
const userId = properties === null || properties === void 0 ? void 0 : properties.UserId;
|
93
|
+
if (accountId) {
|
94
|
+
allQueries.push({
|
95
|
+
queryName: 'QuoteAccountQuery',
|
96
|
+
objectName: 'Account',
|
97
|
+
resultObjectName: 'account',
|
98
|
+
statement: `Id ='${accountId}'`,
|
99
|
+
fields: [],
|
100
|
+
});
|
101
|
+
}
|
102
|
+
if (userId) {
|
103
|
+
allQueries.push({
|
104
|
+
queryName: 'QuoteUserQuery',
|
105
|
+
objectName: 'User',
|
106
|
+
resultObjectName: 'agent',
|
107
|
+
statement: `Id ='${userId}'`,
|
108
|
+
fields: [],
|
109
|
+
});
|
110
|
+
}
|
111
|
+
const queries = allQueries.map(query => this.queryObject(query, { properties })) || [];
|
112
|
+
return forkJoin([...queries])
|
113
|
+
.pipe(defaultIfEmpty([]))
|
114
|
+
.pipe(map(results => {
|
115
|
+
var _a, _b, _c, _d;
|
116
|
+
const queriesResult = _.chain(results)
|
117
|
+
.reduce((acc, r) => {
|
118
|
+
if (r) {
|
119
|
+
return Object.assign(Object.assign({}, acc), r);
|
120
|
+
}
|
121
|
+
return acc;
|
122
|
+
}, {})
|
123
|
+
.value();
|
124
|
+
const templateProperties = ((template === null || template === void 0 ? void 0 : template.properties) || []).reduce((trunk, { name, value }) => {
|
125
|
+
return Object.assign(Object.assign({}, trunk), { [name]: mapBooleanIfAplicable(value) });
|
126
|
+
}, {});
|
127
|
+
const data = Object.assign(Object.assign(Object.assign({}, (typeof object === 'object' ? object : { object })), queriesResult), templateProperties);
|
128
|
+
if (template.script && template.script.trim().length) {
|
129
|
+
const currencyFormat = ((_b = (_a = template.properties) === null || _a === void 0 ? void 0 : _a.find(({ name }) => name === 'currencyFormat')) === null || _b === void 0 ? void 0 : _b.value) || '1.2-2';
|
130
|
+
const dateFormat = ((_d = (_c = template.properties) === null || _c === void 0 ? void 0 : _c.find(({ name }) => name === 'dateFormat')) === null || _d === void 0 ? void 0 : _d.value) || 'D/MMM/YYYY';
|
131
|
+
const formatDate = (value) => {
|
132
|
+
return value ? moment(value).format(dateFormat) : value;
|
133
|
+
};
|
134
|
+
const transform = new Function(`return ${template.script}`)();
|
135
|
+
const transformedData = transform(Object.assign(Object.assign({}, data), { utils: {
|
136
|
+
lodash: _,
|
137
|
+
currency: (value) => new CurrencyPipe('en-US').transform(value, 'USD', 'symbol', currencyFormat),
|
138
|
+
date: formatDate,
|
139
|
+
}, ToDay: formatDate(Date.now()) }));
|
140
|
+
if (!shouldPreventDownload) {
|
141
|
+
const blob = new Blob([JSON.stringify(transformedData)]);
|
142
|
+
this.fileDownloadService.processDownload(blob, 'data.json');
|
143
|
+
}
|
144
|
+
return transformedData;
|
145
|
+
}
|
146
|
+
return data;
|
147
|
+
}));
|
148
|
+
}
|
149
|
+
generateDocument(template, object, params = {}) {
|
150
|
+
const attachmentIds = (template.attachments || []).map(({ id }) => id).filter(Boolean);
|
151
|
+
const { shouldUseLocalDocxTemplater } = params;
|
152
|
+
return shouldUseLocalDocxTemplater && !(object instanceof QuoteDraft)
|
153
|
+
? this.generateDocumentNew(template, object, params)
|
154
|
+
: this.generateWithBackendDocxTemplater({ template, quote: object, attachmentIds, params });
|
155
|
+
}
|
156
|
+
generateDocumentNew(template, object, params = {}) {
|
157
|
+
const { attachToQuote, documentFormat, shouldPreventDownload } = params;
|
158
|
+
const file$ = this.service.api({
|
159
|
+
method: 'get',
|
160
|
+
url: `/templates/${template.id}/file`,
|
161
|
+
responseType: 'arraybuffer',
|
162
|
+
});
|
163
|
+
const attachmentIds = (template.attachments || []).map(({ id }) => id);
|
164
|
+
const attachments$ = attachmentIds.length
|
165
|
+
? attachmentIds.map(attachmentId => {
|
166
|
+
return this.documentAttachmentService.getAttachmentFile(attachmentId, true);
|
167
|
+
})
|
168
|
+
: [];
|
169
|
+
const data$ = this.generateDocumentData(template, object, Object.assign(Object.assign({}, params), { shouldPreventDownload: true }));
|
170
|
+
return zip(file$, data$, ...attachments$).pipe(switchMap(([file, data, ...attachments]) => {
|
171
|
+
var _a;
|
172
|
+
const d = DocxTemplater.generate(file, data);
|
173
|
+
const body = new FormData();
|
174
|
+
const properties = ((_a = object === null || object === void 0 ? void 0 : object.context) === null || _a === void 0 ? void 0 : _a.properties) || (object === null || object === void 0 ? void 0 : object.properties) || {};
|
175
|
+
const documentName = (properties === null || properties === void 0 ? void 0 : properties.Name) || template.name;
|
176
|
+
// TODO: special CATO case. Refactor for a more generic approach
|
177
|
+
if (documentFormat === 'DOCX') {
|
178
|
+
this.fileDownloadService.processDownload(d, documentName);
|
179
|
+
return of(d);
|
180
|
+
}
|
181
|
+
attachments.forEach((attachment) => {
|
182
|
+
body.append('attachments', new Blob([attachment]));
|
183
|
+
});
|
184
|
+
body.append('orderform', d);
|
185
|
+
return this.http
|
186
|
+
.post(`${this.docGenHost}/documents/merge`, body, {
|
187
|
+
responseType: 'arraybuffer',
|
188
|
+
})
|
189
|
+
.pipe(switchMap((pdf) => {
|
190
|
+
const blob = new Blob([pdf]);
|
191
|
+
if (!shouldPreventDownload) {
|
192
|
+
this.fileDownloadService.processDownload(blob, `${documentName}.pdf`);
|
193
|
+
}
|
194
|
+
if (attachToQuote && object instanceof QuoteDraft) {
|
195
|
+
const formData = new FormData();
|
196
|
+
formData.append('file', blob, `${documentName}.pdf`);
|
197
|
+
return this.http.post(`${window['VELO_API']}/services/quotes/${object.quoteId}/attach-document`, formData, {
|
198
|
+
responseType: 'arraybuffer',
|
199
|
+
headers: {
|
200
|
+
Authorization: window['VELO_KEY'],
|
201
|
+
},
|
202
|
+
});
|
203
|
+
}
|
204
|
+
return of(blob);
|
205
|
+
}));
|
206
|
+
}));
|
207
|
+
}
|
208
|
+
getAttachments(searchRequest) {
|
209
|
+
return this.documentAttachmentService.getAttachments(searchRequest);
|
210
|
+
}
|
211
|
+
getAttachmentFile(id) {
|
212
|
+
return this.documentAttachmentService.getAttachmentFile(id);
|
213
|
+
}
|
214
|
+
createAttachment(attachment, file, reportProgress) {
|
215
|
+
return this.documentAttachmentService.createAttachment(attachment, file, reportProgress);
|
216
|
+
}
|
217
|
+
removeAttachment(id) {
|
218
|
+
return this.documentAttachmentService.removeAttachment(id);
|
219
|
+
}
|
220
|
+
downloadTemplateFile(id) {
|
221
|
+
return this.service
|
222
|
+
.api({
|
223
|
+
url: `/templates/${id}/file`,
|
224
|
+
responseType: 'blob',
|
225
|
+
observe: 'response',
|
226
|
+
})
|
227
|
+
.pipe(tap(response => {
|
228
|
+
this.fileDownloadService.processDownload(response);
|
229
|
+
}), map(response => response.body || response));
|
230
|
+
}
|
231
|
+
generateWithBackendDocxTemplater({ template, quote, attachmentIds, params, }) {
|
232
|
+
const { shouldPreventDownload } = params;
|
233
|
+
const nonEmptyParams = Object.keys(params || {})
|
234
|
+
.filter(k => params[k] !== undefined)
|
235
|
+
.reduce((obj, key) => {
|
236
|
+
obj[key] = params[key];
|
237
|
+
return obj;
|
238
|
+
}, {});
|
239
|
+
return this.generate(`/templates/${template.id}/generate`, { quote, attachments: attachmentIds }, Boolean(shouldPreventDownload), 'blob', nonEmptyParams, false);
|
240
|
+
}
|
241
|
+
generate(url, body, shouldPreventDownload, responseType, params, isUpload, reportProgress) {
|
242
|
+
const requestOptions = {
|
243
|
+
method: 'post',
|
244
|
+
url,
|
245
|
+
body,
|
246
|
+
reportProgress,
|
247
|
+
responseType,
|
248
|
+
observe: shouldPreventDownload ? 'body' : 'response',
|
249
|
+
params,
|
250
|
+
};
|
251
|
+
return (isUpload ? this.service.upload(requestOptions) : this.service.api(requestOptions)).pipe(tap(response => {
|
252
|
+
if (!shouldPreventDownload) {
|
253
|
+
this.fileDownloadService.processDownload(response);
|
254
|
+
}
|
255
|
+
}));
|
256
|
+
}
|
257
|
+
queryObject({ objectName, resultObjectName, fields, statement }, { properties }) {
|
258
|
+
var _a;
|
259
|
+
const patternLimit = /(\s*limit\s\d*)/i;
|
260
|
+
let limit = 1;
|
261
|
+
if (patternLimit.test(statement)) {
|
262
|
+
const limitStr = (_a = statement === null || statement === void 0 ? void 0 : statement.match(patternLimit)) === null || _a === void 0 ? void 0 : _a[1].trim().substring(5).trim();
|
263
|
+
if (limitStr) {
|
264
|
+
limit = Number.parseInt(limitStr, 10);
|
265
|
+
}
|
266
|
+
statement = statement.replace(patternLimit, '');
|
267
|
+
}
|
268
|
+
const resolvedStatement = StringUtils.fillPlaceholders(statement, properties, /:\s*(\w[\w\d_.]+)/i);
|
269
|
+
const searchRequest = Object.assign({ skip: 0, count: limit, rawCondition: resolvedStatement }, ((fields === null || fields === void 0 ? void 0 : fields.length) && !!fields[0] && { fields }));
|
270
|
+
return this.sfRepo.query(searchRequest, objectName).pipe(mapSfQueryResult(limit), map(value => ({ [resultObjectName]: value })));
|
271
|
+
}
|
272
|
+
}
|
273
|
+
DocumentTemplatesApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DocumentTemplatesApiService, deps: [{ token: i1.BaseHttpService }, { token: i2.SalesforceApiService }, { token: i1.FileDownloadService }, { token: i3.DocumentAttachmentApiService }, { token: i4.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
274
|
+
DocumentTemplatesApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DocumentTemplatesApiService });
|
275
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: DocumentTemplatesApiService, decorators: [{
|
276
|
+
type: Injectable
|
277
|
+
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }, { type: i2.SalesforceApiService }, { type: i1.FileDownloadService }, { type: i3.DocumentAttachmentApiService }, { type: i4.HttpClient }]; } });
|
278
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnQtdGVtcGxhdGVzLWFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hcGkvc3JjL2xpYi9zZXJ2aWNlcy9kb2N1bWVudC10ZW1wbGF0ZXMtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUlMLGFBQWEsRUFHYixVQUFVLEVBRVYsV0FBVyxHQUtaLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sS0FBSyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQUlyRSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFHdkIsTUFBTSxnQkFBZ0IsR0FBRyxDQUFJLEtBQWEsRUFBRSxFQUFFLENBQzVDLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO0lBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ25CLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztLQUN4QztJQUVELElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtRQUNmLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ25CO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDLENBQUM7QUFFTCxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBYSxFQUFFLEVBQUU7SUFDOUMsSUFB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RixJQUFJLFFBQVEsRUFBRTtnQkFDWixLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7YUFDdkM7WUFDRCxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDakQ7UUFFRCxNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFFcEcsTUFBTSxhQUFhLEdBQUcsZ0JBQ3BCLElBQUksRUFBRSxDQUFDLEVBQ1AsS0FBSyxFQUFFLEtBQUssRUFDWixZQUFZLEVBQUUsaUJBQWlCLElBQzVCLENBQUMsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSxLQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUNoQyxDQUFDO1FBRW5CLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDdEQsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEVBQ3ZCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQzs7eUhBL1dVLDJCQUEyQjs2SEFBM0IsMkJBQTJCOzRGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFueVdpdGhQcm9wZXJ0aWVzLFxuICBCYXNlSHR0cFNlcnZpY2UsXG4gIERvY3VtZW50VGVtcGxhdGUsXG4gIERvY3hUZW1wbGF0ZXIsXG4gIEZpbGVEb3dubG9hZFNlcnZpY2UsXG4gIEh0dHBSZXF1ZXN0T3B0aW9ucyxcbiAgUXVvdGVEcmFmdCxcbiAgU2VhcmNoUmVxdWVzdCxcbiAgU3RyaW5nVXRpbHMsXG4gIFRlbXBsYXRlQXR0YWNobWVudCxcbiAgVGVtcGxhdGVBdHRhY2htZW50U2VhcmNoUmVxdWVzdCxcbiAgVGVtcGxhdGVRdWVyeSxcbiAgVmxXaW5kb3csXG59IGZyb20gJ0B2ZWxvY2UvY29yZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVmYXVsdElmRW1wdHksIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBEb2N1bWVudEF0dGFjaG1lbnRBcGlTZXJ2aWNlIH0gZnJvbSAnLi9kb2N1bWVudC1hdHRhY2htZW50LWFwaS5zZXJ2aWNlJztcbmltcG9ydCB7IFNhbGVzZm9yY2VBcGlTZXJ2aWNlIH0gZnJvbSAnLi9zYWxlc2ZvcmNlLWFwaS5zZXJ2aWNlJztcblxuY29uc3QgbW9tZW50ID0gbW9tZW50XztcbmRlY2xhcmUgY29uc3Qgd2luZG93OiBWbFdpbmRvdztcblxuY29uc3QgbWFwU2ZRdWVyeVJlc3VsdCA9IDxUPihsaW1pdDogbnVtYmVyKSA9PlxuICBtYXAoKHJlY29yZHM6IFRbXSkgPT4ge1xuICAgIGlmICghcmVjb3Jkcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB7IF9yZXN1bHQ6ICdObyBSZWNvcmRzIEZvdW5kJyB9O1xuICAgIH1cblxuICAgIGlmIChsaW1pdCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHJlY29yZHNbMF07XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlY29yZHM7XG4gIH0pO1xuXG5jb25zdCBtYXBCb29sZWFuSWZBcGxpY2FibGUgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAodmFsdWUgPT09ICd0cnVlJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSAnZmFsc2UnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERvY3VtZW50VGVtcGxhdGVzQXBpU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmFsbGJhY2tEb2NHZW5Ib3N0ID0gJ2h0dHBzOi8vZGV2LWRwMS52ZWxvY3BxLmNvbS9kb2NnZW4nO1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY0dlbkhvc3Q7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgc2VydmljZTogQmFzZUh0dHBTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2ZSZXBvOiBTYWxlc2ZvcmNlQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGZpbGVEb3dubG9hZFNlcnZpY2U6IEZpbGVEb3dubG9hZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkb2N1bWVudEF0dGFjaG1lbnRTZXJ2aWNlOiBEb2N1bWVudEF0dGFjaG1lbnRBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgKSB7XG4gICAgaWYgKHdpbmRvdy5WRUxPX0RPQ0dFTl9BUEkpIHtcbiAgICAgIHRoaXMuZG9jR2VuSG9zdCA9IHdpbmRvdy5WRUxPX0RPQ0dFTl9BUEk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKGB3aW5kb3cuVkVMT19ET0NHRU5fQVBJIG5vdCBzZXQsIHdpbGwgdXNlIGZhbGxiYWNrIFwiJHt0aGlzLmZhbGxiYWNrRG9jR2VuSG9zdH1cImApO1xuICAgICAgdGhpcy5kb2NHZW5Ib3N0ID0gdGhpcy5mYWxsYmFja0RvY0dlbkhvc3Q7XG4gICAgfVxuICB9XG5cbiAgZ2V0VGVtcGxhdGVzKHRhZz86IHN0cmluZyk6IE9ic2VydmFibGU8RG9jdW1lbnRUZW1wbGF0ZVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VydmljZS5hcGkoe1xuICAgICAgdXJsOiAnL3RlbXBsYXRlcycsXG4gICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIC4uLih0YWcgJiYgeyB0YWcgfSksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgdXBzZXJ0VGVtcGxhdGUodGVtcGxhdGU6IERvY3VtZW50VGVtcGxhdGUsIGZpbGU/OiBGaWxlLCByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPERvY3VtZW50VGVtcGxhdGU+IHtcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgIGlmIChmaWxlKSB7XG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlLCBmaWxlLm5hbWUpO1xuICAgIH1cbiAgICBmb3JtRGF0YS5hcHBlbmQoXG4gICAgICAndGVtcGxhdGUnLFxuICAgICAgbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHRlbXBsYXRlKV0sIHtcbiAgICAgICAgdHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLnNlcnZpY2UudXBsb2FkKHtcbiAgICAgIHVybDogYC90ZW1wbGF0ZXNgICsgKCh0ZW1wbGF0ZS5pZCAmJiBgLyR7dGVtcGxhdGUuaWR9YCkgfHwgJycpLFxuICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICBtZXRob2Q6IHRlbXBsYXRlLmlkID8gJ3B1dCcgOiAncG9zdCcsXG4gICAgICByZXBvcnRQcm9ncmVzcyxcbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZVRlbXBsYXRlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPERvY3VtZW50VGVtcGxhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlLmFwaSh7XG4gICAgICB1cmw6ICcvdGVtcGxhdGVzJyArIGlkLFxuICAgICAgbWV0aG9kOiAnZGVsZXRlJyxcbiAgICB9KTtcbiAgfVxuXG4gIGNsb25lVGVtcGxhdGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8RG9jdW1lbnRUZW1wbGF0ZT4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZpY2UuYXBpKHtcbiAgICAgIHVybDogJy90ZW1wbGF0ZXMvY2xvbmUvJyArIGlkLFxuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgfSk7XG4gIH1cblxuICBnZW5lcmF0ZURvY3VtZW50RGF0YShcbiAgICB0ZW1wbGF0ZTogRG9jdW1lbnRUZW1wbGF0ZSxcbiAgICBvYmplY3Q6IGFueSxcbiAgICBwYXJhbXM/OiB7IFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgYm9vbGVhbiB9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHNob3VsZFByZXZlbnREb3dubG9hZCA9IHBhcmFtcz8uc2hvdWxkUHJldmVudERvd25sb2FkO1xuICAgIGNvbnN0IHVzZUxvY2FsRGF0YUdlbmVyYXRpb24gPSB0ZW1wbGF0ZS5wcm9wZXJ0aWVzPy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gJ3VzZUxvY2FsRGF0YUdlbmVyYXRpb24nKT8udmFsdWU7XG5cbiAgICBpZiAoIXVzZUxvY2FsRGF0YUdlbmVyYXRpb24gJiYgb2JqZWN0IGluc3RhbmNlb2YgUXVvdGVEcmFmdCkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGUoXG4gICAgICAgICcvdGVtcGxhdGVzL2dlbmVyYXRlLWRhdGEnLFxuICAgICAgICB7IHRlbXBsYXRlLCBxdW90ZTogb2JqZWN0IH0sXG4gICAgICAgIHNob3VsZFByZXZlbnREb3dubG9hZCBhcyBib29sZWFuLFxuICAgICAgICBzaG91bGRQcmV2ZW50RG93bmxvYWQgPyAnanNvbicgOiAnYmxvYicsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbFF1ZXJpZXMgPSBbLi4uKHRlbXBsYXRlPy5xdWVyaWVzID8/IFtdKV07XG4gICAgY29uc3QgcHJvcGVydGllcyA9IG9iamVjdD8uY29udGV4dD8ucHJvcGVydGllcyB8fCBvYmplY3Q/LnByb3BlcnRpZXMgfHwge307XG5cbiAgICBjb25zdCBhY2NvdW50SWQgPSBwcm9wZXJ0aWVzPy5BY2NvdW50SWQ7XG4gICAgY29uc3QgdXNlcklkID0gcHJvcGVydGllcz8uVXNlcklkO1xuXG4gICAgaWYgKGFjY291bnRJZCkge1xuICAgICAgYWxsUXVlcmllcy5wdXNoKHtcbiAgICAgICAgcXVlcnlOYW1lOiAnUXVvdGVBY2NvdW50UXVlcnknLFxuICAgICAgICBvYmplY3ROYW1lOiAnQWNjb3VudCcsXG4gICAgICAgIHJlc3VsdE9iamVjdE5hbWU6ICdhY2NvdW50JyxcbiAgICAgICAgc3RhdGVtZW50OiBgSWQgPScke2FjY291bnRJZH0nYCxcbiAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAodXNlcklkKSB7XG4gICAgICBhbGxRdWVyaWVzLnB1c2goe1xuICAgICAgICBxdWVyeU5hbWU6ICdRdW90ZVVzZXJRdWVyeScsXG4gICAgICAgIG9iamVjdE5hbWU6ICdVc2VyJyxcbiAgICAgICAgcmVzdWx0T2JqZWN0TmFtZTogJ2FnZW50JyxcbiAgICAgICAgc3RhdGVtZW50OiBgSWQgPScke3VzZXJJZH0nYCxcbiAgICAgICAgZmllbGRzOiBbXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHF1ZXJpZXMgPSBhbGxRdWVyaWVzLm1hcChxdWVyeSA9PiB0aGlzLnF1ZXJ5T2JqZWN0KHF1ZXJ5IGFzIFRlbXBsYXRlUXVlcnksIHsgcHJvcGVydGllcyB9KSkgfHwgW107XG5cbiAgICByZXR1cm4gZm9ya0pvaW4oWy4uLnF1ZXJpZXNdKVxuICAgICAgLnBpcGUoZGVmYXVsdElmRW1wdHkoW10gYXMgYW55W10pKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXN1bHRzID0+IHtcbiAgICAgICAgICBjb25zdCBxdWVyaWVzUmVzdWx0ID0gXy5jaGFpbihyZXN1bHRzKVxuICAgICAgICAgICAgLnJlZHVjZSgoYWNjLCByKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCAuLi5yIH07XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgfSwge30pXG4gICAgICAgICAgICAudmFsdWUoKTtcblxuICAgICAgICAgIGNvbnN0IHRlbXBsYXRlUHJvcGVydGllcyA9ICh0ZW1wbGF0ZT8ucHJvcGVydGllcyB8fCBbXSkucmVkdWNlKCh0cnVuaywgeyBuYW1lLCB2YWx1ZSB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi50cnVuayxcbiAgICAgICAgICAgICAgW25hbWUgYXMgc3RyaW5nXTogbWFwQm9vbGVhbklmQXBsaWNhYmxlKHZhbHVlIGFzIGFueSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0sIHt9KTtcblxuICAgICAgICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICAgICAgICAuLi4odHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgPyBvYmplY3QgOiB7IG9iamVjdCB9KSxcbiAgICAgICAgICAgIC4uLnF1ZXJpZXNSZXN1bHQsXG4gICAgICAgICAgICAuLi50ZW1wbGF0ZVByb3BlcnRpZXMsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmICh0ZW1wbGF0ZS5zY3JpcHQgJiYgdGVtcGxhdGUuc2NyaXB0LnRyaW0oKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbmN5Rm9ybWF0ID0gdGVtcGxhdGUucHJvcGVydGllcz8uZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09ICdjdXJyZW5jeUZvcm1hdCcpPy52YWx1ZSB8fCAnMS4yLTInO1xuICAgICAgICAgICAgY29uc3QgZGF0ZUZvcm1hdCA9IHRlbXBsYXRlLnByb3BlcnRpZXM/LmZpbmQoKHsgbmFtZSB9KSA9PiBuYW1lID09PSAnZGF0ZUZvcm1hdCcpPy52YWx1ZSB8fCAnRC9NTU0vWVlZWSc7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXREYXRlID0gKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID8gbW9tZW50KHZhbHVlKS5mb3JtYXQoZGF0ZUZvcm1hdCkgOiB2YWx1ZTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCB0cmFuc2Zvcm0gPSBuZXcgRnVuY3Rpb24oYHJldHVybiAke3RlbXBsYXRlLnNjcmlwdH1gKSgpO1xuICAgICAgICAgICAgY29uc3QgdHJhbnNmb3JtZWREYXRhID0gdHJhbnNmb3JtKHtcbiAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgdXRpbHM6IHtcbiAgICAgICAgICAgICAgICBsb2Rhc2g6IF8sXG4gICAgICAgICAgICAgICAgY3VycmVuY3k6ICh2YWx1ZTogYW55KSA9PiBuZXcgQ3VycmVuY3lQaXBlKCdlbi1VUycpLnRyYW5zZm9ybSh2YWx1ZSwgJ1VTRCcsICdzeW1ib2wnLCBjdXJyZW5jeUZvcm1hdCksXG4gICAgICAgICAgICAgICAgZGF0ZTogZm9ybWF0RGF0ZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgVG9EYXk6IGZvcm1hdERhdGUoRGF0ZS5ub3coKSBhcyBhbnkpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoIXNob3VsZFByZXZlbnREb3dubG9hZCkge1xuICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHRyYW5zZm9ybWVkRGF0YSldKTtcbiAgICAgICAgICAgICAgdGhpcy5maWxlRG93bmxvYWRTZXJ2aWNlLnByb2Nlc3NEb3dubG9hZChibG9iLCAnZGF0YS5qc29uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtZWREYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG5cbiAgZ2VuZXJhdGVEb2N1bWVudChcbiAgICB0ZW1wbGF0ZTogRG9jdW1lbnRUZW1wbGF0ZSxcbiAgICBvYmplY3Q6IGFueSxcbiAgICBwYXJhbXM6IHsgW3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBib29sZWFuIH0gPSB7fSxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBhdHRhY2htZW50SWRzID0gKHRlbXBsYXRlLmF0dGFjaG1lbnRzIHx8IFtdKS5tYXAoKHsgaWQgfSkgPT4gaWQpLmZpbHRlcihCb29sZWFuKSBhcyBzdHJpbmdbXTtcbiAgICBjb25zdCB7IHNob3VsZFVzZUxvY2FsRG9jeFRlbXBsYXRlciB9ID0gcGFyYW1zO1xuXG4gICAgcmV0dXJuIHNob3VsZFVzZUxvY2FsRG9jeFRlbXBsYXRlciAmJiAhKG9iamVjdCBpbnN0YW5jZW9mIFF1b3RlRHJhZnQpXG4gICAgICA/IHRoaXMuZ2VuZXJhdGVEb2N1bWVudE5ldyh0ZW1wbGF0ZSwgb2JqZWN0LCBwYXJhbXMpXG4gICAgICA6IHRoaXMuZ2VuZXJhdGVXaXRoQmFja2VuZERvY3hUZW1wbGF0ZXIoeyB0ZW1wbGF0ZSwgcXVvdGU6IG9iamVjdCBhcyBRdW90ZURyYWZ0LCBhdHRhY2htZW50SWRzLCBwYXJhbXMgfSk7XG4gIH1cblxuICBnZW5lcmF0ZURvY3VtZW50TmV3KFxuICAgIHRlbXBsYXRlOiBEb2N1bWVudFRlbXBsYXRlLFxuICAgIG9iamVjdDogYW55LFxuICAgIHBhcmFtczogeyBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfSA9IHt9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHsgYXR0YWNoVG9RdW90ZSwgZG9jdW1lbnRGb3JtYXQsIHNob3VsZFByZXZlbnREb3dubG9hZCB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IGZpbGUkID0gdGhpcy5zZXJ2aWNlLmFwaSh7XG4gICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgdXJsOiBgL3RlbXBsYXRlcy8ke3RlbXBsYXRlLmlkfS9maWxlYCxcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICB9KTtcbiAgICBjb25zdCBhdHRhY2htZW50SWRzID0gKHRlbXBsYXRlLmF0dGFjaG1lbnRzIHx8IFtdKS5tYXAoKHsgaWQgfSkgPT4gaWQpO1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzJCA9IGF0dGFjaG1lbnRJZHMubGVuZ3RoXG4gICAgICA/IGF0dGFjaG1lbnRJZHMubWFwKGF0dGFjaG1lbnRJZCA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRBdHRhY2htZW50U2VydmljZS5nZXRBdHRhY2htZW50RmlsZShhdHRhY2htZW50SWQgYXMgc3RyaW5nLCB0cnVlKTtcbiAgICAgICAgfSlcbiAgICAgIDogW107XG5cbiAgICBjb25zdCBkYXRhJCA9IHRoaXMuZ2VuZXJhdGVEb2N1bWVudERhdGEodGVtcGxhdGUsIG9iamVjdCwgeyAuLi5wYXJhbXMsIHNob3VsZFByZXZlbnREb3dubG9hZDogdHJ1ZSB9KTtcblxuICAgIHJldHVybiB6aXAoZmlsZSQsIGRhdGEkLCAuLi5hdHRhY2htZW50cyQpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKFtmaWxlLCBkYXRhLCAuLi5hdHRhY2htZW50c10pID0+IHtcbiAgICAgICAgY29uc3QgZCA9IERvY3hUZW1wbGF0ZXIuZ2VuZXJhdGUoZmlsZSwgZGF0YSk7XG4gICAgICAgIGNvbnN0IGJvZHkgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IG9iamVjdD8uY29udGV4dD8ucHJvcGVydGllcyB8fCBvYmplY3Q/LnByb3BlcnRpZXMgfHwge307XG4gICAgICAgIGNvbnN0IGRvY3VtZW50TmFtZSA9IHByb3BlcnRpZXM/Lk5hbWUgfHwgdGVtcGxhdGUubmFtZTtcblxuICAgICAgICAvLyBUT0RPOiBzcGVjaWFsIENBVE8gY2FzZS4gUmVmYWN0b3IgZm9yIGEgbW9yZSBnZW5lcmljIGFwcHJvYWNoXG4gICAgICAgIGlmIChkb2N1bWVudEZvcm1hdCA9PT0gJ0RPQ1gnKSB7XG4gICAgICAgICAgdGhpcy5maWxlRG93bmxvYWRTZXJ2aWNlLnByb2Nlc3NEb3dubG9hZChkLCBkb2N1bWVudE5hbWUpO1xuXG4gICAgICAgICAgcmV0dXJuIG9mKGQpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXR0YWNobWVudHMuZm9yRWFjaCgoYXR0YWNobWVudDogQXJyYXlCdWZmZXIpID0+IHtcbiAgICAgICAgICBib2R5LmFwcGVuZCgnYXR0YWNobWVudHMnLCBuZXcgQmxvYihbYXR0YWNobWVudF0pKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYm9keS5hcHBlbmQoJ29yZGVyZm9ybScsIGQpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgICAucG9zdChgJHt0aGlzLmRvY0dlbkhvc3R9L2RvY3VtZW50cy9tZXJnZWAsIGJvZHksIHtcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyxcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgc3dpdGNoTWFwKChwZGY6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW3BkZl0pO1xuXG4gICAgICAgICAgICAgIGlmICghc2hvdWxkUHJldmVudERvd25sb2FkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWxlRG93bmxvYWRTZXJ2aWNlLnByb2Nlc3NEb3dubG9hZChibG9iLCBgJHtkb2N1bWVudE5hbWV9LnBkZmApO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGF0dGFjaFRvUXVvdGUgJiYgb2JqZWN0IGluc3RhbmNlb2YgUXVvdGVEcmFmdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvcm1EYXRhOiBGb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgYmxvYiwgYCR7ZG9jdW1lbnROYW1lfS5wZGZgKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgICAgICAgICAgICAgIGAke3dpbmRvd1snVkVMT19BUEknXX0vc2VydmljZXMvcXVvdGVzLyR7b2JqZWN0LnF1b3RlSWR9L2F0dGFjaC1kb2N1bWVudGAsXG4gICAgICAgICAgICAgICAgICBmb3JtRGF0YSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInIGFzIGFueSxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICAgIEF1dGhvcml6YXRpb246IHdpbmRvd1snVkVMT19LRVknXSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gb2YoYmxvYik7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICApO1xuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIGdldEF0dGFjaG1lbnRzKHNlYXJjaFJlcXVlc3Q6IFRlbXBsYXRlQXR0YWNobWVudFNlYXJjaFJlcXVlc3QpOiBPYnNlcnZhYmxlPFRlbXBsYXRlQXR0YWNobWVudFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRBdHRhY2htZW50U2VydmljZS5nZXRBdHRhY2htZW50cyhzZWFyY2hSZXF1ZXN0KTtcbiAgfVxuXG4gIGdldEF0dGFjaG1lbnRGaWxlKGlkOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50QXR0YWNobWVudFNlcnZpY2UuZ2V0QXR0YWNobWVudEZpbGUoaWQpO1xuICB9XG5cbiAgY3JlYXRlQXR0YWNobWVudChcbiAgICBhdHRhY2htZW50OiBUZW1wbGF0ZUF0dGFjaG1lbnQsXG4gICAgZmlsZT86IEZpbGUsXG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLFxuICApOiBPYnNlcnZhYmxlPFRlbXBsYXRlQXR0YWNobWVudD4ge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50QXR0YWNobWVudFNlcnZpY2UuY3JlYXRlQXR0YWNobWVudChhdHRhY2htZW50LCBmaWxlLCByZXBvcnRQcm9ncmVzcyk7XG4gIH1cblxuICByZW1vdmVBdHRhY2htZW50KGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudEF0dGFjaG1lbnRTZXJ2aWNlLnJlbW92ZUF0dGFjaG1lbnQoaWQpO1xuICB9XG5cbiAgZG93bmxvYWRUZW1wbGF0ZUZpbGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8QmxvYj4ge1xuICAgIHJldHVybiB0aGlzLnNlcnZpY2VcbiAgICAgIC5hcGkoe1xuICAgICAgICB1cmw6IGAvdGVtcGxhdGVzLyR7aWR9L2ZpbGVgLFxuICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICB0aGlzLmZpbGVEb3dubG9hZFNlcnZpY2UucHJvY2Vzc0Rvd25sb2FkKHJlc3BvbnNlKTtcbiAgICAgICAgfSksXG4gICAgICAgIG1hcChyZXNwb25zZSA9PiByZXNwb25zZS5ib2R5IHx8IHJlc3BvbnNlKSxcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlV2l0aEJhY2tlbmREb2N4VGVtcGxhdGVyKHtcbiAgICB0ZW1wbGF0ZSxcbiAgICBxdW90ZSxcbiAgICBhdHRhY2htZW50SWRzLFxuICAgIHBhcmFtcyxcbiAgfToge1xuICAgIHRlbXBsYXRlOiBEb2N1bWVudFRlbXBsYXRlO1xuICAgIHF1b3RlOiBRdW90ZURyYWZ0O1xuICAgIGF0dGFjaG1lbnRJZHM6IHN0cmluZ1tdO1xuICAgIHBhcmFtczogeyBbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IGJvb2xlYW4gfTtcbiAgfSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgeyBzaG91bGRQcmV2ZW50RG93bmxvYWQgfSA9IHBhcmFtcztcbiAgICBjb25zdCBub25FbXB0eVBhcmFtcyA9IE9iamVjdC5rZXlzKHBhcmFtcyB8fCB7fSlcbiAgICAgIC5maWx0ZXIoayA9PiBwYXJhbXNba10gIT09IHVuZGVmaW5lZClcbiAgICAgIC5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICAgIChvYmogYXMgYW55KVtrZXldID0gcGFyYW1zW2tleV07XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgICB9LCB7fSk7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGUoXG4gICAgICBgL3RlbXBsYXRlcy8ke3RlbXBsYXRlLmlkfS9nZW5lcmF0ZWAsXG4gICAgICB7IHF1b3RlLCBhdHRhY2htZW50czogYXR0YWNobWVudElkcyB9LFxuICAgICAgQm9vbGVhbihzaG91bGRQcmV2ZW50RG93bmxvYWQpLFxuICAgICAgJ2Jsb2InLFxuICAgICAgbm9uRW1wdHlQYXJhbXMsXG4gICAgICBmYWxzZSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZShcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBhbnksXG4gICAgc2hvdWxkUHJldmVudERvd25sb2FkOiBib29sZWFuLFxuICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JyxcbiAgICBwYXJhbXM/OiB7IFtwYXJhbTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgaXNVcGxvYWQ/OiBib29sZWFuLFxuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbixcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCByZXF1ZXN0T3B0aW9uczogSHR0cFJlcXVlc3RPcHRpb25zID0ge1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmwsXG4gICAgICBib2R5LFxuICAgICAgcmVwb3J0UHJvZ3Jlc3MsXG4gICAgICByZXNwb25zZVR5cGUsXG4gICAgICBvYnNlcnZlOiBzaG91bGRQcmV2ZW50RG93bmxvYWQgPyAoJ2JvZHknIGFzIGNvbnN0KSA6ICgncmVzcG9uc2UnIGFzIGNvbnN0KSxcbiAgICAgIHBhcmFtcyxcbiAgICB9O1xuICAgIHJldHVybiAoaXNVcGxvYWQgPyB0aGlzLnNlcnZpY2UudXBsb2FkKHJlcXVlc3RPcHRpb25zKSA6IHRoaXMuc2VydmljZS5hcGkocmVxdWVzdE9wdGlvbnMpKS5waXBlKFxuICAgICAgdGFwKHJlc3BvbnNlID0+IHtcbiAgICAgICAgaWYgKCFzaG91bGRQcmV2ZW50RG93bmxvYWQpIHtcbiAgICAgICAgICB0aGlzLmZpbGVEb3dubG9hZFNlcnZpY2UucHJvY2Vzc0Rvd25sb2FkKHJlc3BvbnNlKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcXVlcnlPYmplY3QoXG4gICAgeyBvYmplY3ROYW1lLCByZXN1bHRPYmplY3ROYW1lLCBmaWVsZHMsIHN0YXRlbWVudCB9OiBUZW1wbGF0ZVF1ZXJ5LFxuICAgIHsgcHJvcGVydGllcyB9OiBBbnlXaXRoUHJvcGVydGllcyxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBwYXR0ZXJuTGltaXQgPSAvKFxccypsaW1pdFxcc1xcZCopL2k7XG4gICAgbGV0IGxpbWl0ID0gMTtcbiAgICBpZiAocGF0dGVybkxpbWl0LnRlc3Qoc3RhdGVtZW50KSkge1xuICAgICAgY29uc3QgbGltaXRTdHIgPSBzdGF0ZW1lbnQ/Lm1hdGNoKHBhdHRlcm5MaW1pdCk/LlsxXS50cmltKCkuc3Vic3RyaW5nKDUpLnRyaW0oKTtcbiAgICAgIGlmIChsaW1pdFN0cikge1xuICAgICAgICBsaW1pdCA9IE51bWJlci5wYXJzZUludChsaW1pdFN0ciwgMTApO1xuICAgICAgfVxuICAgICAgc3RhdGVtZW50ID0gc3RhdGVtZW50LnJlcGxhY2UocGF0dGVybkxpbWl0LCAnJyk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb2x2ZWRTdGF0ZW1lbnQgPSBTdHJpbmdVdGlscy5maWxsUGxhY2Vob2xkZXJzKHN0YXRlbWVudCwgcHJvcGVydGllcywgLzpcXHMqKFxcd1tcXHdcXGRfLl0rKS9pKTtcblxuICAgIGNvbnN0IHNlYXJjaFJlcXVlc3QgPSB7XG4gICAgICBza2lwOiAwLFxuICAgICAgY291bnQ6IGxpbWl0LFxuICAgICAgcmF3Q29uZGl0aW9uOiByZXNvbHZlZFN0YXRlbWVudCxcbiAgICAgIC4uLihmaWVsZHM/Lmxlbmd0aCAmJiAhIWZpZWxkc1swXSAmJiB7IGZpZWxkcyB9KSxcbiAgICB9IGFzIFNlYXJjaFJlcXVlc3Q7XG5cbiAgICByZXR1cm4gdGhpcy5zZlJlcG8ucXVlcnkoc2VhcmNoUmVxdWVzdCwgb2JqZWN0TmFtZSkucGlwZShcbiAgICAgIG1hcFNmUXVlcnlSZXN1bHQobGltaXQpLFxuICAgICAgbWFwKHZhbHVlID0+ICh7IFtyZXN1bHRPYmplY3ROYW1lXTogdmFsdWUgfSkpLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
@@ -0,0 +1,86 @@
|
|
1
|
+
import { Injectable } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
import * as i1 from "@veloce/core";
|
4
|
+
export class PriceApiService {
|
5
|
+
constructor(httpService) {
|
6
|
+
this.httpService = httpService;
|
7
|
+
this.SERVICE_URL = '/price';
|
8
|
+
}
|
9
|
+
calculateRuntime(request) {
|
10
|
+
return this.httpService.api({
|
11
|
+
method: 'post',
|
12
|
+
url: `${this.SERVICE_URL}/calculate-runtime`,
|
13
|
+
body: request,
|
14
|
+
});
|
15
|
+
}
|
16
|
+
calculate(request) {
|
17
|
+
return this.httpService.api({
|
18
|
+
method: 'post',
|
19
|
+
url: `${this.SERVICE_URL}/calculate`,
|
20
|
+
body: request,
|
21
|
+
});
|
22
|
+
// TODO: move outside API service
|
23
|
+
// .pipe(
|
24
|
+
// map(data => {
|
25
|
+
// if (data.context) {
|
26
|
+
// const context = this.contextService.resolveOrCreate();
|
27
|
+
// const patchedContext = {
|
28
|
+
// ...context,
|
29
|
+
// properties: {
|
30
|
+
// ...context.properties,
|
31
|
+
// ...data.context.properties,
|
32
|
+
// },
|
33
|
+
// };
|
34
|
+
// this.contextService.update(patchedContext);
|
35
|
+
// }
|
36
|
+
// return data;
|
37
|
+
// }),
|
38
|
+
// );
|
39
|
+
}
|
40
|
+
getPriceLists() {
|
41
|
+
return this.httpService.api({
|
42
|
+
method: 'get',
|
43
|
+
url: '/price-lists',
|
44
|
+
});
|
45
|
+
}
|
46
|
+
getPriceList(id) {
|
47
|
+
return this.httpService.api({
|
48
|
+
method: 'get',
|
49
|
+
url: `/price-lists/${id}`,
|
50
|
+
});
|
51
|
+
}
|
52
|
+
getSellingTermByEndDate(planId, offeringId, startDate, endDate, frequencyUnit, frequencyDuration) {
|
53
|
+
return this.httpService.api({
|
54
|
+
method: 'post',
|
55
|
+
url: `${this.SERVICE_URL}/selling-term-by-end-date`,
|
56
|
+
body: {
|
57
|
+
planId: planId,
|
58
|
+
offeringId: offeringId,
|
59
|
+
startDate: startDate,
|
60
|
+
endDate: endDate,
|
61
|
+
frequencyUnit: frequencyUnit,
|
62
|
+
frequencyDuration: frequencyDuration,
|
63
|
+
},
|
64
|
+
});
|
65
|
+
}
|
66
|
+
getSellingTermByTerm(planId, offeringId, startDate, term, frequencyUnit, frequencyDuration) {
|
67
|
+
return this.httpService.api({
|
68
|
+
method: 'post',
|
69
|
+
url: `${this.SERVICE_URL}/selling-term-by-term`,
|
70
|
+
body: {
|
71
|
+
planId: planId,
|
72
|
+
offeringId: offeringId,
|
73
|
+
startDate: startDate,
|
74
|
+
term: term,
|
75
|
+
frequencyUnit: frequencyUnit,
|
76
|
+
frequencyDuration: frequencyDuration,
|
77
|
+
},
|
78
|
+
});
|
79
|
+
}
|
80
|
+
}
|
81
|
+
PriceApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PriceApiService, deps: [{ token: i1.BaseHttpService }], target: i0.ɵɵFactoryTarget.Injectable });
|
82
|
+
PriceApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PriceApiService });
|
83
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PriceApiService, decorators: [{
|
84
|
+
type: Injectable
|
85
|
+
}], ctorParameters: function () { return [{ type: i1.BaseHttpService }]; } });
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2UtYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9zcmMvbGliL3NlcnZpY2VzL3ByaWNlLWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUszQyxNQUFNLE9BQU8sZUFBZTtJQUcxQixZQUFvQixXQUE0QjtRQUE1QixnQkFBVyxHQUFYLFdBQVcsQ0FBaUI7UUFGL0IsZ0JBQVcsR0FBRyxRQUFRLENBQUM7SUFFVyxDQUFDO0lBRXBELGdCQUFnQixDQUFDLE9BQVk7UUFDM0IsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUMxQixNQUFNLEVBQUUsTUFBTTtZQUNkLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLG9CQUFvQjtZQUM1QyxJQUFJLEVBQUUsT0FBTztTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1lBQzFCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsWUFBWTtZQUNwQyxJQUFJLEVBQUUsT0FBTztTQUNkLENBQUMsQ0FBQztRQUNILGlDQUFpQztRQUNqQyxTQUFTO1FBQ1Qsa0JBQWtCO1FBQ2xCLDBCQUEwQjtRQUMxQiwrREFBK0Q7UUFDL0QsaUNBQWlDO1FBQ2pDLHNCQUFzQjtRQUN0Qix3QkFBd0I7UUFDeEIsbUNBQW1DO1FBQ25DLHdDQUF3QztRQUN4QyxhQUFhO1FBQ2IsV0FBVztRQUVYLG9EQUFvRDtRQUNwRCxRQUFRO1FBRVIsbUJBQW1CO1FBQ25CLFFBQVE7UUFDUixLQUFLO0lBQ1AsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1lBQzFCLE1BQU0sRUFBRSxLQUFLO1lBQ2IsR0FBRyxFQUFFLGNBQWM7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxFQUFVO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDMUIsTUFBTSxFQUFFLEtBQUs7WUFDYixHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsdUJBQXVCLENBQ3JCLE1BQWUsRUFDZixVQUFtQixFQUNuQixTQUFnQixFQUNoQixPQUFjLEVBQ2QsYUFBc0IsRUFDdEIsaUJBQTBCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDMUIsTUFBTSxFQUFFLE1BQU07WUFDZCxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVywyQkFBMkI7WUFDbkQsSUFBSSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixTQUFTLEVBQUUsU0FBUztnQkFDcEIsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLGFBQWEsRUFBRSxhQUFhO2dCQUM1QixpQkFBaUIsRUFBRSxpQkFBaUI7YUFDckM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsb0JBQW9CLENBQ2xCLE1BQWUsRUFDZixVQUFtQixFQUNuQixTQUFnQixFQUNoQixJQUFhLEVBQ2IsYUFBc0IsRUFDdEIsaUJBQTBCO1FBRTFCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDMUIsTUFBTSxFQUFFLE1BQU07WUFDZCxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyx1QkFBdUI7WUFDL0MsSUFBSSxFQUFFO2dCQUNKLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixTQUFTLEVBQUUsU0FBUztnQkFDcEIsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsYUFBYSxFQUFFLGFBQWE7Z0JBQzVCLGlCQUFpQixFQUFFLGlCQUFpQjthQUNyQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7OzZHQWhHVSxlQUFlO2lIQUFmLGVBQWU7NEZBQWYsZUFBZTtrQkFEM0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VIdHRwU2VydmljZSwgUHJpY2VMaXN0LCBQcmljZVN1bW1hcnkgfSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUHJpY2VBcGlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBTRVJWSUNFX1VSTCA9ICcvcHJpY2UnO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cFNlcnZpY2U6IEJhc2VIdHRwU2VydmljZSkge31cblxuICBjYWxjdWxhdGVSdW50aW1lKHJlcXVlc3Q6IGFueSk6IE9ic2VydmFibGU8UHJpY2VTdW1tYXJ5PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiBgJHt0aGlzLlNFUlZJQ0VfVVJMfS9jYWxjdWxhdGUtcnVudGltZWAsXG4gICAgICBib2R5OiByZXF1ZXN0LFxuICAgIH0pO1xuICB9XG5cbiAgY2FsY3VsYXRlKHJlcXVlc3Q6IGFueSk6IE9ic2VydmFibGU8UHJpY2VTdW1tYXJ5PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiBgJHt0aGlzLlNFUlZJQ0VfVVJMfS9jYWxjdWxhdGVgLFxuICAgICAgYm9keTogcmVxdWVzdCxcbiAgICB9KTtcbiAgICAvLyBUT0RPOiBtb3ZlIG91dHNpZGUgQVBJIHNlcnZpY2VcbiAgICAvLyAucGlwZShcbiAgICAvLyAgIG1hcChkYXRhID0+IHtcbiAgICAvLyAgICAgaWYgKGRhdGEuY29udGV4dCkge1xuICAgIC8vICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmVPckNyZWF0ZSgpO1xuICAgIC8vICAgICAgIGNvbnN0IHBhdGNoZWRDb250ZXh0ID0ge1xuICAgIC8vICAgICAgICAgLi4uY29udGV4dCxcbiAgICAvLyAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAvLyAgICAgICAgICAgLi4uY29udGV4dC5wcm9wZXJ0aWVzLFxuICAgIC8vICAgICAgICAgICAuLi5kYXRhLmNvbnRleHQucHJvcGVydGllcyxcbiAgICAvLyAgICAgICAgIH0sXG4gICAgLy8gICAgICAgfTtcblxuICAgIC8vICAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UudXBkYXRlKHBhdGNoZWRDb250ZXh0KTtcbiAgICAvLyAgICAgfVxuXG4gICAgLy8gICAgIHJldHVybiBkYXRhO1xuICAgIC8vICAgfSksXG4gICAgLy8gKTtcbiAgfVxuXG4gIGdldFByaWNlTGlzdHMoKTogT2JzZXJ2YWJsZTxQcmljZUxpc3RbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLmFwaSh7XG4gICAgICBtZXRob2Q6ICdnZXQnLFxuICAgICAgdXJsOiAnL3ByaWNlLWxpc3RzJyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFByaWNlTGlzdChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcmljZUxpc3Q+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5hcGkoe1xuICAgICAgbWV0aG9kOiAnZ2V0JyxcbiAgICAgIHVybDogYC9wcmljZS1saXN0cy8ke2lkfWAsXG4gICAgfSk7XG4gIH1cblxuICBnZXRTZWxsaW5nVGVybUJ5RW5kRGF0ZShcbiAgICBwbGFuSWQ/OiBzdHJpbmcsXG4gICAgb2ZmZXJpbmdJZD86IHN0cmluZyxcbiAgICBzdGFydERhdGU/OiBEYXRlLFxuICAgIGVuZERhdGU/OiBEYXRlLFxuICAgIGZyZXF1ZW5jeVVuaXQ/OiBzdHJpbmcsXG4gICAgZnJlcXVlbmN5RHVyYXRpb24/OiBzdHJpbmcsXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UuYXBpKHtcbiAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgdXJsOiBgJHt0aGlzLlNFUlZJQ0VfVVJMfS9zZWxsaW5nLXRlcm0tYnktZW5kLWRhdGVgLFxuICAgICAgYm9keToge1xuICAgICAgICBwbGFuSWQ6IHBsYW5JZCxcbiAgICAgICAgb2ZmZXJpbmdJZDogb2ZmZXJpbmdJZCxcbiAgICAgICAgc3RhcnREYXRlOiBzdGFydERhdGUsXG4gICAgICAgIGVuZERhdGU6IGVuZERhdGUsXG4gICAgICAgIGZyZXF1ZW5jeVVuaXQ6IGZyZXF1ZW5jeVVuaXQsXG4gICAgICAgIGZyZXF1ZW5jeUR1cmF0aW9uOiBmcmVxdWVuY3lEdXJhdGlvbixcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRTZWxsaW5nVGVybUJ5VGVybShcbiAgICBwbGFuSWQ/OiBzdHJpbmcsXG4gICAgb2ZmZXJpbmdJZD86IHN0cmluZyxcbiAgICBzdGFydERhdGU/OiBEYXRlLFxuICAgIHRlcm0/OiBudW1iZXIsXG4gICAgZnJlcXVlbmN5VW5pdD86IHN0cmluZyxcbiAgICBmcmVxdWVuY3lEdXJhdGlvbj86IHN0cmluZyxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5hcGkoe1xuICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICB1cmw6IGAke3RoaXMuU0VSVklDRV9VUkx9L3NlbGxpbmctdGVybS1ieS10ZXJtYCxcbiAgICAgIGJvZHk6IHtcbiAgICAgICAgcGxhbklkOiBwbGFuSWQsXG4gICAgICAgIG9mZmVyaW5nSWQ6IG9mZmVyaW5nSWQsXG4gICAgICAgIHN0YXJ0RGF0ZTogc3RhcnREYXRlLFxuICAgICAgICB0ZXJtOiB0ZXJtLFxuICAgICAgICBmcmVxdWVuY3lVbml0OiBmcmVxdWVuY3lVbml0LFxuICAgICAgICBmcmVxdWVuY3lEdXJhdGlvbjogZnJlcXVlbmN5RHVyYXRpb24sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|