@senior-agronegocio/angular-components 0.0.9871 → 0.0.9873
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/senior-agronegocio-angular-components.umd.js +702 -893
- package/bundles/senior-agronegocio-angular-components.umd.js.map +1 -1
- package/bundles/senior-agronegocio-angular-components.umd.min.js +2 -2
- package/bundles/senior-agronegocio-angular-components.umd.min.js.map +1 -1
- package/components/event-control-board/service/e001pes/e001pes.service.d.ts +2 -2
- package/components/event-control-board/service/e001tns/e001tns.service.d.ts +2 -2
- package/components/event-control-board/service/e012fam/e012fam.service.d.ts +2 -2
- package/components/event-control-board/service/e070emp/e070emp.service.d.ts +2 -2
- package/components/event-control-board/service/e070fil/e070fil.service.d.ts +2 -2
- package/components/event-control-board/service/e075der/e075der.service.d.ts +2 -2
- package/components/event-control-board/service/e205dep/e205dep.service.d.ts +2 -2
- package/components/event-control-board/service/event-control/event-control.service.d.ts +2 -2
- package/components/event-control-board/service/event-control-item/event-control-item.service.d.ts +2 -2
- package/components/event-control-board/service/external-invoice/external-invoice.service.d.ts +2 -2
- package/components/event-control-board/service/fixation-entity/fixation.service.d.ts +2 -2
- package/components/event-control-board/service/invoice/invoice.service.d.ts +2 -2
- package/components/event-control-board/service/origination/origination.service.d.ts +2 -2
- package/components/event-control-board/service/rural-estate/rural-estate.service.d.ts +2 -2
- package/components/event-control-board/service/ticket/ticket.service.d.ts +2 -2
- package/components/event-control-board/service/transfer/transfer.service.d.ts +2 -2
- package/components/financial-title-table/services/financial/agro-financial.service.d.ts +1 -1
- package/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.d.ts +8 -7
- package/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.d.ts +8 -6
- package/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.d.ts +8 -17
- package/components/modal-invoice-pj/modal-invoice-pj-base.class.d.ts +9 -7
- package/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.d.ts +1 -1
- package/esm2015/common/agro-logics.class.js +6 -5
- package/esm2015/common/agro-unit-converter.class.js +1 -2
- package/esm2015/components/event-control-board/common/event-control-constants.js +2 -2
- package/esm2015/components/event-control-board/event-control-board.component.js +2 -2
- package/esm2015/components/event-control-board/service/e001pes/e001pes.service.js +3 -3
- package/esm2015/components/event-control-board/service/e001tns/e001tns.service.js +3 -3
- package/esm2015/components/event-control-board/service/e012fam/e012fam.service.js +3 -3
- package/esm2015/components/event-control-board/service/e070emp/e070emp.service.js +3 -3
- package/esm2015/components/event-control-board/service/e070fil/e070fil.service.js +3 -3
- package/esm2015/components/event-control-board/service/e075der/e075der.service.js +3 -3
- package/esm2015/components/event-control-board/service/e205dep/e205dep.service.js +3 -3
- package/esm2015/components/event-control-board/service/event-control/event-control.service.js +3 -3
- package/esm2015/components/event-control-board/service/event-control-item/event-control-item.service.js +3 -3
- package/esm2015/components/event-control-board/service/external-invoice/external-invoice.service.js +3 -3
- package/esm2015/components/event-control-board/service/fixation-entity/fixation.service.js +3 -3
- package/esm2015/components/event-control-board/service/invoice/invoice.service.js +3 -3
- package/esm2015/components/event-control-board/service/origination/origination.service.js +3 -3
- package/esm2015/components/event-control-board/service/rural-estate/rural-estate.service.js +3 -3
- package/esm2015/components/event-control-board/service/ticket/ticket.service.js +3 -3
- package/esm2015/components/event-control-board/service/transfer/transfer.service.js +3 -3
- package/esm2015/components/financial-title-table/services/financial/agro-financial.service.js +2 -2
- package/esm2015/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.js +15 -13
- package/esm2015/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.js +13 -10
- package/esm2015/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.js +13 -36
- package/esm2015/components/modal-invoice-pj/modal-invoice-pj-base.class.js +13 -10
- package/esm2015/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.js +2 -2
- package/esm2015/services/agro-entity-service.js +132 -0
- package/esm2015/services/i18n/en-US.js +276 -294
- package/esm2015/services/i18n/es-CO.js +283 -294
- package/esm2015/services/i18n/pt-BR.js +70 -81
- package/esm2015/services/producer-invoice/producer-invoice.service.js +2 -2
- package/esm5/common/agro-logics.class.js +6 -5
- package/esm5/common/agro-unit-converter.class.js +1 -2
- package/esm5/components/event-control-board/common/event-control-constants.js +2 -2
- package/esm5/components/event-control-board/event-control-board.component.js +2 -2
- package/esm5/components/event-control-board/service/e001pes/e001pes.service.js +3 -3
- package/esm5/components/event-control-board/service/e001tns/e001tns.service.js +3 -3
- package/esm5/components/event-control-board/service/e012fam/e012fam.service.js +3 -3
- package/esm5/components/event-control-board/service/e070emp/e070emp.service.js +3 -3
- package/esm5/components/event-control-board/service/e070fil/e070fil.service.js +3 -3
- package/esm5/components/event-control-board/service/e075der/e075der.service.js +3 -3
- package/esm5/components/event-control-board/service/e205dep/e205dep.service.js +3 -3
- package/esm5/components/event-control-board/service/event-control/event-control.service.js +3 -3
- package/esm5/components/event-control-board/service/event-control-item/event-control-item.service.js +3 -3
- package/esm5/components/event-control-board/service/external-invoice/external-invoice.service.js +3 -3
- package/esm5/components/event-control-board/service/fixation-entity/fixation.service.js +3 -3
- package/esm5/components/event-control-board/service/invoice/invoice.service.js +3 -3
- package/esm5/components/event-control-board/service/origination/origination.service.js +3 -3
- package/esm5/components/event-control-board/service/rural-estate/rural-estate.service.js +3 -3
- package/esm5/components/event-control-board/service/ticket/ticket.service.js +3 -3
- package/esm5/components/event-control-board/service/transfer/transfer.service.js +3 -3
- package/esm5/components/financial-title-table/services/financial/agro-financial.service.js +2 -2
- package/esm5/components/modal-invoice-pj/for-fixation/modal-invoice-pj-for-fixation.component.js +15 -13
- package/esm5/components/modal-invoice-pj/for-origination/modal-invoice-pj-for-origination.component.js +13 -10
- package/esm5/components/modal-invoice-pj/for-transfer/modal-invoice-pj-for-transfer.component.js +13 -36
- package/esm5/components/modal-invoice-pj/modal-invoice-pj-base.class.js +13 -10
- package/esm5/components/modal-invoice-pj/services/agro-invoice/agro-invoice.service.js +2 -2
- package/esm5/services/agro-entity-service.js +143 -0
- package/esm5/services/i18n/en-US.js +276 -294
- package/esm5/services/i18n/es-CO.js +283 -294
- package/esm5/services/i18n/pt-BR.js +70 -81
- package/esm5/services/producer-invoice/producer-invoice.service.js +2 -2
- package/fesm2015/senior-agronegocio-angular-components.js +690 -872
- package/fesm2015/senior-agronegocio-angular-components.js.map +1 -1
- package/fesm5/senior-agronegocio-angular-components.js +703 -894
- package/fesm5/senior-agronegocio-angular-components.js.map +1 -1
- package/package.json +3 -3
- package/{components/event-control-board/service/entity-service.d.ts → services/agro-entity-service.d.ts} +3 -13
- package/services/i18n/en-US.d.ts +275 -293
- package/services/i18n/es-CO.d.ts +282 -293
- package/services/i18n/pt-BR.d.ts +69 -80
- package/services/producer-invoice/producer-invoice.service.d.ts +1 -1
- package/esm2015/components/event-control-board/service/entity-service.js +0 -127
- package/esm2015/services/entity-service.js +0 -132
- package/esm5/components/event-control-board/service/entity-service.js +0 -138
- package/esm5/services/entity-service.js +0 -143
- package/services/entity-service.d.ts +0 -73
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { __read, __spread } from "tslib";
|
|
2
|
+
import { HttpParams } from '@angular/common/http';
|
|
3
|
+
import { throwError } from 'rxjs';
|
|
4
|
+
import { catchError } from 'rxjs/operators';
|
|
5
|
+
var AgroEntityService = /** @class */ (function () {
|
|
6
|
+
function AgroEntityService(http, messageService, entityUrl, actionsUrl, queriesUrl, translate) {
|
|
7
|
+
this.http = http;
|
|
8
|
+
this.messageService = messageService;
|
|
9
|
+
this.entityUrl = entityUrl;
|
|
10
|
+
this.actionsUrl = actionsUrl;
|
|
11
|
+
this.queriesUrl = queriesUrl;
|
|
12
|
+
this.translate = translate;
|
|
13
|
+
this.http = http;
|
|
14
|
+
this.messageService = messageService;
|
|
15
|
+
this.entityUrl = entityUrl;
|
|
16
|
+
this.actionsUrl = actionsUrl;
|
|
17
|
+
this.queriesUrl = queriesUrl;
|
|
18
|
+
this.translate = translate;
|
|
19
|
+
this.defaultCatch = this.defaultCatch.bind(this);
|
|
20
|
+
}
|
|
21
|
+
AgroEntityService.prototype.getListQueryParams = function (listParams) {
|
|
22
|
+
var ten = 10;
|
|
23
|
+
var _a = listParams.page, page = _a === void 0 ? 0 : _a, _b = listParams.size, size = _b === void 0 ? ten : _b, _c = listParams.sort, sort = _c === void 0 ? [] : _c, _d = listParams.filterQuery, filterQuery = _d === void 0 ? '' : _d, _e = listParams.displayFields, displayFields = _e === void 0 ? [] : _e;
|
|
24
|
+
var params = new HttpParams();
|
|
25
|
+
params = params.append('size', String(size));
|
|
26
|
+
params = params.append('offset', String(page));
|
|
27
|
+
if (sort === null || sort === void 0 ? void 0 : sort.length) {
|
|
28
|
+
params = params.append('orderby', sort.map(this.getBodyFilters()).join(', '));
|
|
29
|
+
}
|
|
30
|
+
if (filterQuery) {
|
|
31
|
+
params = params.append('filter', filterQuery);
|
|
32
|
+
}
|
|
33
|
+
if (displayFields === null || displayFields === void 0 ? void 0 : displayFields.length) {
|
|
34
|
+
params = params.append('displayfields', displayFields.join());
|
|
35
|
+
}
|
|
36
|
+
return params;
|
|
37
|
+
};
|
|
38
|
+
AgroEntityService.prototype.getBodyParams = function (listParams) {
|
|
39
|
+
var ten = 10;
|
|
40
|
+
var _a = listParams.page, page = _a === void 0 ? 0 : _a, _b = listParams.size, size = _b === void 0 ? ten : _b, _c = listParams.sort, sort = _c === void 0 ? [] : _c, _d = listParams.filterQuery, filterQuery = _d === void 0 ? '' : _d, _e = listParams.displayFields, displayFields = _e === void 0 ? [] : _e;
|
|
41
|
+
var bodyParams = {};
|
|
42
|
+
bodyParams.size = size;
|
|
43
|
+
bodyParams.offset = page;
|
|
44
|
+
if (sort === null || sort === void 0 ? void 0 : sort.length) {
|
|
45
|
+
bodyParams.orderBy = sort.map(this.getBodyFilters()).join(', ');
|
|
46
|
+
}
|
|
47
|
+
if (filterQuery) {
|
|
48
|
+
bodyParams.filter = filterQuery;
|
|
49
|
+
}
|
|
50
|
+
if (displayFields === null || displayFields === void 0 ? void 0 : displayFields.length) {
|
|
51
|
+
bodyParams.displayfields = displayFields.join();
|
|
52
|
+
}
|
|
53
|
+
return bodyParams;
|
|
54
|
+
};
|
|
55
|
+
AgroEntityService.prototype.getBodyFilters = function () {
|
|
56
|
+
return function (s) {
|
|
57
|
+
var order = '';
|
|
58
|
+
if (s.order === 1) {
|
|
59
|
+
order = ' asc';
|
|
60
|
+
}
|
|
61
|
+
if (s.order === -1) {
|
|
62
|
+
order = ' desc';
|
|
63
|
+
}
|
|
64
|
+
return "" + s.field + order;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
AgroEntityService.prototype.defaultCatch = function (errorMsgs) {
|
|
68
|
+
var _this = this;
|
|
69
|
+
if (errorMsgs === void 0) { errorMsgs = []; }
|
|
70
|
+
var unauthorized401 = 401;
|
|
71
|
+
errorMsgs = __spread(errorMsgs);
|
|
72
|
+
var zero = 0;
|
|
73
|
+
return catchError(function (err) {
|
|
74
|
+
if (err) {
|
|
75
|
+
var errorMessage = errorMsgs.find(function (eMsg) { return eMsg.status === (err === null || err === void 0 ? void 0 : err.status) || zero; });
|
|
76
|
+
var summary = err.status ? String(err.status) : 'Error';
|
|
77
|
+
var detail = _this.getErrorMessage(err);
|
|
78
|
+
if (err.status === unauthorized401) {
|
|
79
|
+
summary = _this.translate.instant('agro.angular_components.error_unauthorized_title');
|
|
80
|
+
detail = _this.translate.instant('agro.angular_components.error_unauthorized_description');
|
|
81
|
+
}
|
|
82
|
+
if (errorMessage) {
|
|
83
|
+
summary = errorMessage.summary ? _this.translate.instant(errorMessage.summary) : summary;
|
|
84
|
+
detail = errorMessage.detail ? _this.translate.instant(errorMessage.detail) : detail;
|
|
85
|
+
}
|
|
86
|
+
_this.messageService.add({
|
|
87
|
+
severity: 'error',
|
|
88
|
+
summary: summary,
|
|
89
|
+
detail: detail,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return throwError(err);
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
AgroEntityService.prototype.getErrorMessage = function (err) {
|
|
96
|
+
var _a;
|
|
97
|
+
if ((_a = err === null || err === void 0 ? void 0 : err.error) === null || _a === void 0 ? void 0 : _a.message) {
|
|
98
|
+
return err.error.message;
|
|
99
|
+
}
|
|
100
|
+
if (err.statusText) {
|
|
101
|
+
return err.statusText;
|
|
102
|
+
}
|
|
103
|
+
if (err.message) {
|
|
104
|
+
return err.message;
|
|
105
|
+
}
|
|
106
|
+
return 'Error';
|
|
107
|
+
};
|
|
108
|
+
AgroEntityService.prototype.list = function (listParams, errorMessage) {
|
|
109
|
+
if (errorMessage === void 0) { errorMessage = []; }
|
|
110
|
+
return this.http
|
|
111
|
+
.get(this.entityUrl, { params: this.getListQueryParams(listParams) })
|
|
112
|
+
.pipe(this.defaultCatch(errorMessage));
|
|
113
|
+
};
|
|
114
|
+
AgroEntityService.prototype.get = function (id, errorMessage) {
|
|
115
|
+
if (errorMessage === void 0) { errorMessage = []; }
|
|
116
|
+
return this.http.get(this.entityUrl + "/" + id).pipe(this.defaultCatch(errorMessage));
|
|
117
|
+
};
|
|
118
|
+
AgroEntityService.prototype.insert = function (entity, errorMessage) {
|
|
119
|
+
if (errorMessage === void 0) { errorMessage = []; }
|
|
120
|
+
return this.http.post("" + this.entityUrl, entity).pipe(this.defaultCatch(errorMessage));
|
|
121
|
+
};
|
|
122
|
+
AgroEntityService.prototype.update = function (id, entity, errorMessage) {
|
|
123
|
+
if (errorMessage === void 0) { errorMessage = []; }
|
|
124
|
+
return this.http.put(this.entityUrl + "/" + id, entity).pipe(this.defaultCatch(errorMessage));
|
|
125
|
+
};
|
|
126
|
+
AgroEntityService.prototype.delete = function (id, errorMessage) {
|
|
127
|
+
if (errorMessage === void 0) { errorMessage = []; }
|
|
128
|
+
return this.http.delete(this.entityUrl + "/" + id).pipe(this.defaultCatch(errorMessage));
|
|
129
|
+
};
|
|
130
|
+
AgroEntityService.prototype.listCustomFilter = function (listParams, action, errorMessage) {
|
|
131
|
+
if (errorMessage === void 0) { errorMessage = []; }
|
|
132
|
+
return this.http
|
|
133
|
+
.post(this.actionsUrl + "/" + action, this.getBodyParams(listParams))
|
|
134
|
+
.pipe(this.defaultCatch(errorMessage));
|
|
135
|
+
};
|
|
136
|
+
AgroEntityService.prototype.insertBulk = function (entities) {
|
|
137
|
+
var body = entities ? { entities: entities } : {};
|
|
138
|
+
return this.http.post(this.entityUrl + "/bulk", body).pipe(this.defaultCatch());
|
|
139
|
+
};
|
|
140
|
+
return AgroEntityService;
|
|
141
|
+
}());
|
|
142
|
+
export { AgroEntityService };
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdyby1lbnRpdHktc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItYWdyb25lZ29jaW8vYW5ndWxhci1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsic2VydmljZXMvYWdyby1lbnRpdHktc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBRzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVDO0lBQ0ksMkJBQ2MsSUFBZ0IsRUFDaEIsY0FBOEIsRUFDOUIsU0FBaUIsRUFDakIsVUFBa0IsRUFDbEIsVUFBa0IsRUFDbEIsU0FBZ0M7UUFMaEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFFMUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFFM0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sOENBQWtCLEdBQXpCLFVBQTBCLFVBQXNCO1FBQzVDLElBQU0sR0FBRyxHQUFHLEVBQUUsQ0FB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QUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsVUFBQSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMxQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFTLElBQUksQ0FBQyxTQUFTLFVBQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUNMLHdCQUFDO0FBQUQsQ0FBQyxBQTFKRCxJQTBKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBQYXJhbXMsIEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlLCBTb3J0TWV0YSB9IGZyb20gJ3ByaW1lbmcnO1xyXG5pbXBvcnQgeyBMaWJUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuL2xpYi10cmFuc2xhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFncm9FbnRpdHlTZXJ2aWNlPFQ+IHtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByb3RlY3RlZCBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICAgICAgcHJvdGVjdGVkIGVudGl0eVVybDogc3RyaW5nLFxyXG4gICAgICAgIHByb3RlY3RlZCBhY3Rpb25zVXJsOiBzdHJpbmcsXHJcbiAgICAgICAgcHJvdGVjdGVkIHF1ZXJpZXNVcmw6IHN0cmluZyxcclxuICAgICAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBMaWJUcmFuc2xhdGlvblNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuaHR0cCA9IGh0dHA7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZSA9IG1lc3NhZ2VTZXJ2aWNlO1xyXG4gICAgICAgIHRoaXMuZW50aXR5VXJsID0gZW50aXR5VXJsO1xyXG4gICAgICAgIHRoaXMuYWN0aW9uc1VybCA9IGFjdGlvbnNVcmw7XHJcbiAgICAgICAgdGhpcy5xdWVyaWVzVXJsID0gcXVlcmllc1VybDtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0ZSA9IHRyYW5zbGF0ZTtcclxuXHJcbiAgICAgICAgdGhpcy5kZWZhdWx0Q2F0Y2ggPSB0aGlzLmRlZmF1bHRDYXRjaC5iaW5kKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRMaXN0UXVlcnlQYXJhbXMobGlzdFBhcmFtczogTGlzdFBhcmFtcykge1xyXG4gICAgICAgIGNvbnN0IHRlbiA9IDEwO1xyXG4gICAgICAgIGNvbnN0IHsgcGFnZSA9IDAsIHNpemUgPSB0ZW4sIHNvcnQgPSBbXSwgZmlsdGVyUXVlcnkgPSAnJywgZGlzcGxheUZpZWxkcyA9IFtdIH0gPSBsaXN0UGFyYW1zO1xyXG5cclxuICAgICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdzaXplJywgU3RyaW5nKHNpemUpKTtcclxuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKCdvZmZzZXQnLCBTdHJpbmcocGFnZSkpO1xyXG5cclxuICAgICAgICBpZiAoc29ydD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ29yZGVyYnknLCBzb3J0Lm1hcCh0aGlzLmdldEJvZHlGaWx0ZXJzKCkpLmpvaW4oJywgJykpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGZpbHRlclF1ZXJ5KSB7XHJcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5hcHBlbmQoJ2ZpbHRlcicsIGZpbHRlclF1ZXJ5KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChkaXNwbGF5RmllbGRzPy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLmFwcGVuZCgnZGlzcGxheWZpZWxkcycsIGRpc3BsYXlGaWVsZHMuam9pbigpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBwYXJhbXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRCb2R5UGFyYW1zKGxpc3RQYXJhbXM6IExpc3RQYXJhbXMpOiBCb2R5UGFyYW1zIHtcclxuICAgICAgICBjb25zdCB0ZW4gPSAxMDtcclxuICAgICAgICBjb25zdCB7IHBhZ2UgPSAwLCBzaXplID0gdGVuLCBzb3J0ID0gW10sIGZpbHRlclF1ZXJ5ID0gJycsIGRpc3BsYXlGaWVsZHMgPSBbXSB9ID0gbGlzdFBhcmFtcztcclxuICAgICAgICBjb25zdCBib2R5UGFyYW1zOiBCb2R5UGFyYW1zID0ge307XHJcblxyXG4gICAgICAgIGJvZHlQYXJhbXMuc2l6ZSA9IHNpemU7XHJcbiAgICAgICAgYm9keVBhcmFtcy5vZmZzZXQgPSBwYWdlO1xyXG5cclxuICAgICAgICBpZiAoc29ydD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGJvZHlQYXJhbXMub3JkZXJCeSA9IHNvcnQubWFwKHRoaXMuZ2V0Qm9keUZpbHRlcnMoKSkuam9pbignLCAnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChmaWx0ZXJRdWVyeSkge1xyXG4gICAgICAgICAgICBib2R5UGFyYW1zLmZpbHRlciA9IGZpbHRlclF1ZXJ5O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRpc3BsYXlGaWVsZHM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICBib2R5UGFyYW1zLmRpc3BsYXlmaWVsZHMgPSBkaXNwbGF5RmllbGRzLmpvaW4oKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBib2R5UGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0Qm9keUZpbHRlcnMoKTogKHZhbHVlOiBTb3J0TWV0YSwgaW5kZXg6IG51bWJlciwgYXJyYXk6IFNvcnRNZXRhW10pID0+IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIChzKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBvcmRlciA9ICcnO1xyXG4gICAgICAgICAgICBpZiAocy5vcmRlciA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgb3JkZXIgPSAnIGFzYyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHMub3JkZXIgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBvcmRlciA9ICcgZGVzYyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGAke3MuZmllbGR9JHtvcmRlcn1gO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlZmF1bHRDYXRjaChlcnJvck1zZ3M6IEVycm9yTWVzc2FnZVtdID0gW10pIHtcclxuICAgICAgICBjb25zdCB1bmF1dGhvcml6ZWQ0MDEgPSA0MDE7XHJcbiAgICAgICAgZXJyb3JNc2dzID0gWy4uLmVycm9yTXNnc107XHJcbiAgICAgICAgY29uc3QgemVybyA9IDA7XHJcbiAgICAgICAgcmV0dXJuIGNhdGNoRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yTXNncy5maW5kKChlTXNnKSA9PiBlTXNnLnN0YXR1cyA9PT0gZXJyPy5zdGF0dXMgfHwgemVybyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3VtbWFyeSA9IGVyci5zdGF0dXMgPyBTdHJpbmcoZXJyLnN0YXR1cykgOiAnRXJyb3InO1xyXG4gICAgICAgICAgICAgICAgbGV0IGRldGFpbCA9IHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycik7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGVyci5zdGF0dXMgPT09IHVuYXV0aG9yaXplZDQwMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHN1bW1hcnkgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl91bmF1dGhvcml6ZWRfdGl0bGUnKTtcclxuICAgICAgICAgICAgICAgICAgICBkZXRhaWwgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhZ3JvLmFuZ3VsYXJfY29tcG9uZW50cy5lcnJvcl91bmF1dGhvcml6ZWRfZGVzY3JpcHRpb24nKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JNZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VtbWFyeSA9IGVycm9yTWVzc2FnZS5zdW1tYXJ5ID8gdGhpcy50cmFuc2xhdGUuaW5zdGFudChlcnJvck1lc3NhZ2Uuc3VtbWFyeSkgOiBzdW1tYXJ5O1xyXG4gICAgICAgICAgICAgICAgICAgIGRldGFpbCA9IGVycm9yTWVzc2FnZS5kZXRhaWwgPyB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KGVycm9yTWVzc2FnZS5kZXRhaWwpIDogZGV0YWlsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtcclxuICAgICAgICAgICAgICAgICAgICBzZXZlcml0eTogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgICAgICBzdW1tYXJ5LFxyXG4gICAgICAgICAgICAgICAgICAgIGRldGFpbCxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRFcnJvck1lc3NhZ2UoZXJyOiBhbnkpIHtcclxuICAgICAgICBpZiAoZXJyPy5lcnJvcj8ubWVzc2FnZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZXJyLmVycm9yLm1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlcnIuc3RhdHVzVGV4dCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZXJyLnN0YXR1c1RleHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlcnIubWVzc2FnZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZXJyLm1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAnRXJyb3InO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBsaXN0KGxpc3RQYXJhbXM6IExpc3RQYXJhbXMsIGVycm9yTWVzc2FnZTogRXJyb3JNZXNzYWdlW10gPSBbXSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgICAgICAgLmdldDxUW10+KHRoaXMuZW50aXR5VXJsLCB7IHBhcmFtczogdGhpcy5nZXRMaXN0UXVlcnlQYXJhbXMobGlzdFBhcmFtcykgfSlcclxuICAgICAgICAgICAgLnBpcGUodGhpcy5kZWZhdWx0Q2F0Y2goZXJyb3JNZXNzYWdlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldChpZDogYW55LCBlcnJvck1lc3NhZ2U6IEVycm9yTWVzc2FnZVtdID0gW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPihgJHt0aGlzLmVudGl0eVVybH0vJHtpZH1gKS5waXBlKHRoaXMuZGVmYXVsdENhdGNoKGVycm9yTWVzc2FnZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbnNlcnQoZW50aXR5OiBULCBlcnJvck1lc3NhZ2U6IEVycm9yTWVzc2FnZVtdID0gW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VD4oYCR7dGhpcy5lbnRpdHlVcmx9YCwgZW50aXR5KS5waXBlKHRoaXMuZGVmYXVsdENhdGNoKGVycm9yTWVzc2FnZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGUoaWQ6IGFueSwgZW50aXR5OiBULCBlcnJvck1lc3NhZ2U6IEVycm9yTWVzc2FnZVtdID0gW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnB1dDxUPihgJHt0aGlzLmVudGl0eVVybH0vJHtpZH1gLCBlbnRpdHkpLnBpcGUodGhpcy5kZWZhdWx0Q2F0Y2goZXJyb3JNZXNzYWdlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRlbGV0ZShpZDogYW55LCBlcnJvck1lc3NhZ2U6IEVycm9yTWVzc2FnZVtdID0gW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZTxUPihgJHt0aGlzLmVudGl0eVVybH0vJHtpZH1gKS5waXBlKHRoaXMuZGVmYXVsdENhdGNoKGVycm9yTWVzc2FnZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBsaXN0Q3VzdG9tRmlsdGVyKGxpc3RQYXJhbXM6IExpc3RQYXJhbXMsIGFjdGlvbjogc3RyaW5nLCBlcnJvck1lc3NhZ2U6IEVycm9yTWVzc2FnZVtdID0gW10pIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwXHJcbiAgICAgICAgICAgIC5wb3N0PFRbXT4oYCR7dGhpcy5hY3Rpb25zVXJsfS8ke2FjdGlvbn1gLCB0aGlzLmdldEJvZHlQYXJhbXMobGlzdFBhcmFtcykpXHJcbiAgICAgICAgICAgIC5waXBlKHRoaXMuZGVmYXVsdENhdGNoKGVycm9yTWVzc2FnZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbnNlcnRCdWxrKGVudGl0aWVzOiBUW10pIHtcclxuICAgICAgICBjb25zdCBib2R5ID0gZW50aXRpZXMgPyB7IGVudGl0aWVzIH0gOiB7fTtcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8VFtdPihgJHt0aGlzLmVudGl0eVVybH0vYnVsa2AsIGJvZHkpLnBpcGUodGhpcy5kZWZhdWx0Q2F0Y2goKSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGF5bG9hZFJlcXVlc3Qge1xyXG4gICAgc2VhcmNoOiBSZWNGaWx0cm9zTWVuc2FnZW1JbmZvO1xyXG4gICAgcGFnZVJlcXVlc3Q6IFJlY1BhZ2VSZXF1ZXN0O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlY0ZpbHRyb3NNZW5zYWdlbUluZm8ge1xyXG4gICAgdGl0dWxvOiBzdHJpbmc7XHJcbiAgICBjb250ZXVkbzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFBheWxvYWRSZXF1ZXN0R3J1cG8ge1xyXG4gICAgc2VhcmNoOiBSZWNGaWx0cm9zR3J1cG9Qcm9kdXRvcjtcclxuICAgIHBhZ2VSZXF1ZXN0OiBSZWNQYWdlUmVxdWVzdDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZWNGaWx0cm9zR3J1cG9Qcm9kdXRvciB7XHJcbiAgICBub21lOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVjUGFnZVJlcXVlc3Qge1xyXG4gICAgb2Zmc2V0OiBudW1iZXI7XHJcbiAgICBzaXplOiBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFBhcmFtcyB7XHJcbiAgICBwYWdlPzogbnVtYmVyO1xyXG4gICAgc2l6ZT86IG51bWJlcjtcclxuICAgIHNvcnQ/OiBTb3J0TWV0YVtdO1xyXG4gICAgZmlsdGVyUXVlcnk/OiBzdHJpbmc7XHJcbiAgICBkaXNwbGF5RmllbGRzPzogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQm9keVBhcmFtcyB7XHJcbiAgICBvZmZzZXQ/OiBudW1iZXI7XHJcbiAgICBzaXplPzogbnVtYmVyO1xyXG4gICAgb3JkZXJCeT86IHN0cmluZztcclxuICAgIGZpbHRlcj86IHN0cmluZztcclxuICAgIGRpc3BsYXlmaWVsZHM/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JNZXNzYWdlIHtcclxuICAgIHN0YXR1czogbnVtYmVyO1xyXG4gICAgc3VtbWFyeTogc3RyaW5nO1xyXG4gICAgZGV0YWlsPzogc3RyaW5nO1xyXG59XHJcbiJdfQ==
|