@valtimo/process 12.47.0 → 12.49.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/esm2022/lib/process-diagram/process-diagram.component.mjs +15 -4
- package/esm2022/lib/process.service.mjs +21 -2
- package/fesm2022/valtimo-process.mjs +34 -4
- package/fesm2022/valtimo-process.mjs.map +1 -1
- package/lib/process-diagram/process-diagram.component.d.ts +3 -1
- package/lib/process-diagram/process-diagram.component.d.ts.map +1 -1
- package/lib/process.service.d.ts +17 -0
- package/lib/process.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright 2015-
|
|
2
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
3
3
|
*
|
|
4
4
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
@@ -80,6 +80,9 @@ export class ProcessDiagramComponent {
|
|
|
80
80
|
else if (changes['processInstanceId'] && this.processInstanceId) {
|
|
81
81
|
this.loadProcessInstanceXml(this.processInstanceId);
|
|
82
82
|
}
|
|
83
|
+
else if (changes['caseId'] && !changes['caseId'].firstChange && this.processInstanceId) {
|
|
84
|
+
this.loadProcessInstanceXml(this.processInstanceId);
|
|
85
|
+
}
|
|
83
86
|
else if (changes['reloadToken'] &&
|
|
84
87
|
!changes['reloadToken'].firstChange &&
|
|
85
88
|
this.processInstanceId) {
|
|
@@ -119,12 +122,18 @@ export class ProcessDiagramComponent {
|
|
|
119
122
|
}
|
|
120
123
|
loadProcessInstanceXml(processInstanceId) {
|
|
121
124
|
this._imported = false;
|
|
122
|
-
this.
|
|
125
|
+
this.getProcessInstanceXml$(processInstanceId).subscribe(response => {
|
|
123
126
|
this.processDiagram = response;
|
|
124
127
|
this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);
|
|
125
128
|
this.bpmnJS.attachTo(this.el.nativeElement);
|
|
126
129
|
});
|
|
127
130
|
}
|
|
131
|
+
getProcessInstanceXml$(processInstanceId) {
|
|
132
|
+
if (this.caseId) {
|
|
133
|
+
return this.processService.getCaseProcessInstanceXml(this.caseId, processInstanceId);
|
|
134
|
+
}
|
|
135
|
+
return this.processService.getProcessXml(processInstanceId);
|
|
136
|
+
}
|
|
128
137
|
renderSkipTimerOverlays() {
|
|
129
138
|
if (!this.bpmnJS || !this._imported) {
|
|
130
139
|
return;
|
|
@@ -304,7 +313,7 @@ export class ProcessDiagramComponent {
|
|
|
304
313
|
});
|
|
305
314
|
}
|
|
306
315
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProcessDiagramComponent, deps: [{ token: i1.ProcessService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
307
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ProcessDiagramComponent, selector: "valtimo-process-diagram", inputs: { processDefinitionKey: "processDefinitionKey", processInstanceId: "processInstanceId", skippableTimers: "skippableTimers", canSkipTimer: "canSkipTimer", skipTimerLabel: "skipTimerLabel", reloadToken: "reloadToken" }, outputs: { importDone: "importDone", skipTimerEvent: "skipTimerEvent" }, viewQueries: [{ propertyName: "el", first: true, predicate: ["ref"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span> Amount of currently active\n instances of this task.</span\n >\n <span\n > | Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n", styles: [".process-diagram-container .diagram-container{height:50vh;width:100%}.process-diagram-container .diagram-container-switch-holder{position:absolute;width:100%;z-index:1000}.process-diagram-container .highlight-overlay-past:not(.djs-connection) .djs-visual>:nth-child(1){fill:#d8d8d8!important}.process-diagram-container .highlight-overlay-current:not(.djs-connection) .djs-visual>:nth-child(1){fill:#b2e0ff!important}.process-diagram-container .legenda-holder{font-size:1em}.process-diagram-container .legenda{border:2px solid black;border-radius:3px;padding:7px;display:inline-block;margin-bottom:-4px;margin-right:5px}.process-diagram-container .legenda.highlight-overlay-past{background-color:#d8d8d8}.process-diagram-container .legenda.highlight-overlay-current{background-color:#b2e0ff}.valtimo-skip-timer-overlay{align-items:center;background-color:var(--cds-button-primary);border:none;border-radius:50%;box-shadow:0 1px 3px var(--cds-shadow, rgba(0, 0, 0, .3));color:var(--cds-text-on-color);cursor:pointer;display:inline-flex;height:24px;justify-content:center;padding:0;width:24px}.valtimo-skip-timer-overlay:hover{background-color:var(--cds-button-primary-hover)}.valtimo-skip-timer-overlay:focus{outline:2px solid var(--cds-focus);outline-offset:1px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
316
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ProcessDiagramComponent, selector: "valtimo-process-diagram", inputs: { processDefinitionKey: "processDefinitionKey", processInstanceId: "processInstanceId", caseId: "caseId", skippableTimers: "skippableTimers", canSkipTimer: "canSkipTimer", skipTimerLabel: "skipTimerLabel", reloadToken: "reloadToken" }, outputs: { importDone: "importDone", skipTimerEvent: "skipTimerEvent" }, viewQueries: [{ propertyName: "el", first: true, predicate: ["ref"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span> Amount of currently active\n instances of this task.</span\n >\n <span\n > | Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n", styles: [".process-diagram-container .diagram-container{height:50vh;width:100%}.process-diagram-container .diagram-container-switch-holder{position:absolute;width:100%;z-index:1000}.process-diagram-container .highlight-overlay-past:not(.djs-connection) .djs-visual>:nth-child(1){fill:#d8d8d8!important}.process-diagram-container .highlight-overlay-current:not(.djs-connection) .djs-visual>:nth-child(1){fill:#b2e0ff!important}.process-diagram-container .legenda-holder{font-size:1em}.process-diagram-container .legenda{border:2px solid black;border-radius:3px;padding:7px;display:inline-block;margin-bottom:-4px;margin-right:5px}.process-diagram-container .legenda.highlight-overlay-past{background-color:#d8d8d8}.process-diagram-container .legenda.highlight-overlay-current{background-color:#b2e0ff}.valtimo-skip-timer-overlay{align-items:center;background-color:var(--cds-button-primary);border:none;border-radius:50%;box-shadow:0 1px 3px var(--cds-shadow, rgba(0, 0, 0, .3));color:var(--cds-text-on-color);cursor:pointer;display:inline-flex;height:24px;justify-content:center;padding:0;width:24px}.valtimo-skip-timer-overlay:hover{background-color:var(--cds-button-primary-hover)}.valtimo-skip-timer-overlay:focus{outline:2px solid var(--cds-focus);outline-offset:1px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
308
317
|
}
|
|
309
318
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProcessDiagramComponent, decorators: [{
|
|
310
319
|
type: Component,
|
|
@@ -320,6 +329,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
320
329
|
type: Input
|
|
321
330
|
}], processInstanceId: [{
|
|
322
331
|
type: Input
|
|
332
|
+
}], caseId: [{
|
|
333
|
+
type: Input
|
|
323
334
|
}], skippableTimers: [{
|
|
324
335
|
type: Input
|
|
325
336
|
}], canSkipTimer: [{
|
|
@@ -329,4 +340,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
329
340
|
}], reloadToken: [{
|
|
330
341
|
type: Input
|
|
331
342
|
}] } });
|
|
332
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1kaWFncmFtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy9zcmMvbGliL3Byb2Nlc3MtZGlhZ3JhbS9wcm9jZXNzLWRpYWdyYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9wcm9jZXNzL3NyYy9saWIvcHJvY2Vzcy1kaWFncmFtL3Byb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLE1BQU0sTUFBTSxzREFBc0QsQ0FBQztBQUMxRSxPQUFPLE9BQU8sTUFBTSxtQ0FBbUMsQ0FBQzs7OztBQVF4RCxNQUFNLE9BQU8sdUJBQXVCO0lBZ0NsQyxZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUE3QjFDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFHdEIsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELG1CQUFjLEdBQWlDLElBQUksWUFBWSxFQUFFLENBQUM7UUFHbkUsb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLG1CQUFjLEdBQUcsWUFBWSxDQUFDO1FBVXZDLHVCQUFrQixHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBU0csQ0FBQztJQUV0RCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsNEJBQTRCLENBQUMs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QUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Byb2Nlc3NTZXJ2aWNlfSBmcm9tICcuLi9wcm9jZXNzLnNlcnZpY2UnO1xuaW1wb3J0IHtTa2lwcGFibGVUaW1lcn0gZnJvbSAnLi4vbW9kZWxzJztcblxuaW1wb3J0IEJwbW5KUyBmcm9tICdicG1uLWpzL2Rpc3QvYnBtbi1uYXZpZ2F0ZWQtdmlld2VyLnByb2R1Y3Rpb24ubWluLmpzJztcbmltcG9ydCBoZWF0bWFwIGZyb20gJ2hlYXRtYXAuanMtZml4ZWQvYnVpbGQvaGVhdG1hcC5qcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tcHJvY2Vzcy1kaWFncmFtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBQcm9jZXNzRGlhZ3JhbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIGJwbW5KUzogQnBtbkpTO1xuICBwcml2YXRlIGhlYXRNYXBJbnN0YW5jZTogYW55O1xuICBwcml2YXRlIF9pbXBvcnRlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9za2lwT3ZlcmxheUlkczogc3RyaW5nW10gPSBbXTtcblxuICBAVmlld0NoaWxkKCdyZWYnLCB7c3RhdGljOiB0cnVlfSkgcHVibGljIGVsOiBFbGVtZW50UmVmO1xuICBAT3V0cHV0KCkgcHVibGljIGltcG9ydERvbmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIHNraXBUaW1lckV2ZW50OiBFdmVudEVtaXR0ZXI8U2tpcHBhYmxlVGltZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBwdWJsaWMgcHJvY2Vzc0RlZmluaXRpb25LZXk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwcm9jZXNzSW5zdGFuY2VJZD86IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHNraXBwYWJsZVRpbWVyczogU2tpcHBhYmxlVGltZXJbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgY2FuU2tpcFRpbWVyID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBza2lwVGltZXJMYWJlbCA9ICdTa2lwIHRpbWVyJztcbiAgQElucHV0KCkgcHVibGljIHJlbG9hZFRva2VuPzogbnVtYmVyO1xuXG4gIHB1YmxpYyBwcm9jZXNzRGlhZ3JhbTogYW55O1xuICBwdWJsaWMgcHJvY2Vzc0RlZmluaXRpb246IGFueTtcbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnM6IGFueTtcbiAgcHVibGljIGhlYXRtYXBDb3VudDogYW55O1xuICBwdWJsaWMgaGVhdG1hcER1cmF0aW9uOiBhbnk7XG4gIHB1YmxpYyB0YXNrc0NvdW50OiBhbnk7XG4gIHB1YmxpYyBzaG93SGVhdG1hcDogYm9vbGVhbjtcbiAgcHVibGljIGVudW1IZWF0bWFwT3B0aW9ucyA9IFsnY291bnQnLCAnZHVyYXRpb24nXTtcbiAgcHVibGljIGhlYXRtYXBPcHRpb246IHN0cmluZztcbiAgcHVibGljIHZlcnNpb246IGFueTtcbiAgcHVibGljIGhlYXRQb2ludHM6IGFueTtcbiAgcHVibGljIG1pbjogbnVtYmVyO1xuICBwdWJsaWMgbWF4OiBudW1iZXI7XG4gIHB1YmxpYyBpbnB1dERhdGE6IGFueTtcbiAgcHVibGljIHZhbHVlS2V5OiBhbnk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkpIHtcbiAgICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uRnJvbUtleSh0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5KTtcbiAgICB9XG4gICAgaWYgKHRoaXMucHJvY2Vzc0luc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMubG9hZFByb2Nlc3NJbnN0YW5jZVhtbCh0aGlzLnByb2Nlc3NJbnN0YW5jZUlkKTtcbiAgICB9XG4gICAgdGhpcy5icG1uSlMgPSBuZXcgQnBtbkpTKCk7XG4gICAgdGhpcy5icG1uSlMub24oJ2ltcG9ydC5kb25lJywgKHtlcnJvcn0pID0+IHtcbiAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgY29uc3QgY2FudmFzID0gdGhpcy5icG1uSlMuZ2V0KCdjYW52YXMnKTtcbiAgICAgICAgY29uc3QgZXZlbnRCdXMgPSB0aGlzLmJwbW5KUy5nZXQoJ2V2ZW50QnVzJyk7XG4gICAgICAgIGlmICh0aGlzLnByb2Nlc3NEaWFncmFtLmhpc3RvcmljQWN0aXZpdHlJbnN0YW5jZXMpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NEaWFncmFtLmhpc3RvcmljQWN0aXZpdHlJbnN0YW5jZXMuZm9yRWFjaChpbnN0YW5jZSA9PiB7XG4gICAgICAgICAgICAvLyBleGNsdWRlIG11bHRpSW5zdGFuY2VCb2R5XG4gICAgICAgICAgICBpZiAoaW5zdGFuY2UuYWN0aXZpdHlUeXBlICE9PSAnbXVsdGlJbnN0YW5jZUJvZHknKSB7XG4gICAgICAgICAgICAgIGNhbnZhcy5hZGRNYXJrZXIoXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuYWN0aXZpdHlJZCxcbiAgICAgICAgICAgICAgICBpbnN0YW5jZS5lbmRUaW1lID8gJ2hpZ2hsaWdodC1vdmVybGF5LXBhc3QnIDogJ2hpZ2hsaWdodC1vdmVybGF5LWN1cnJlbnQnXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pbXBvcnRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMucmVuZGVyU2tpcFRpbWVyT3ZlcmxheXMoKTtcblxuICAgICAgICBjYW52YXMuem9vbSgnZml0LXZpZXdwb3J0JywgJ2F1dG8nKTtcbiAgICAgICAgaWYgKHRoaXMucHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucykge1xuICAgICAgICAgIGV2ZW50QnVzLm9uKCdjYW52YXMuaW5pdCcsICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNob3dIZWF0bWFwKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xlYXJIZWF0bWFwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxvYWRIZWF0bWFwRGF0YSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV2ZW50QnVzLm9uKCdjYW52YXMudmlld2JveC5jaGFuZ2luZycsICgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNob3dIZWF0bWFwKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2xlYXJIZWF0bWFwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZXZlbnRCdXMub24oJ2NhbnZhcy52aWV3Ym94LmNoYW5nZWQnLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRIZWF0bWFwRGF0YSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydwcm9jZXNzRGVmaW5pdGlvbktleSddICYmIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkpIHtcbiAgICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uRnJvbUtleSh0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5KTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZXNbJ3Byb2Nlc3NJbnN0YW5jZUlkJ10gJiYgdGhpcy5wcm9jZXNzSW5zdGFuY2VJZCkge1xuICAgICAgdGhpcy5sb2FkUHJvY2Vzc0luc3RhbmNlWG1sKHRoaXMucHJvY2Vzc0luc3RhbmNlSWQpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBjaGFuZ2VzWydyZWxvYWRUb2tlbiddICYmXG4gICAgICAhY2hhbmdlc1sncmVsb2FkVG9rZW4nXS5maXJzdENoYW5nZSAmJlxuICAgICAgdGhpcy5wcm9jZXNzSW5zdGFuY2VJZFxuICAgICkge1xuICAgICAgdGhpcy5sb2FkUHJvY2Vzc0luc3RhbmNlWG1sKHRoaXMucHJvY2Vzc0luc3RhbmNlSWQpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzWydza2lwcGFibGVUaW1lcnMnXSB8fCBjaGFuZ2VzWydjYW5Ta2lwVGltZXInXSkge1xuICAgICAgdGhpcy5yZW5kZXJTa2lwVGltZXJPdmVybGF5cygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5icG1uSlMpIHtcbiAgICAgIHRoaXMuYnBtbkpTLmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbG9hZFByb2Nlc3NEZWZpbml0aW9uKHByb2Nlc3NEZWZpbml0aW9uS2V5KSB7XG4gICAgdGhpcy5wcm9jZXNzU2VydmljZS5nZXRQcm9jZXNzRGVmaW5pdGlvbihwcm9jZXNzRGVmaW5pdGlvbktleSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMuaGVhdG1hcE9wdGlvbiA9IHRoaXMuZW51bUhlYXRtYXBPcHRpb25zWzBdO1xuICAgICAgdGhpcy52ZXJzaW9uID0gcmVzcG9uc2UudmVyc2lvbjtcbiAgICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uWG1sKHJlc3BvbnNlLmlkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucyhwcm9jZXNzRGVmaW5pdGlvbktleSkge1xuICAgIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucyhwcm9jZXNzRGVmaW5pdGlvbktleSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucyA9IHJlc3BvbnNlO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkocHJvY2Vzc0RlZmluaXRpb25LZXkpIHtcbiAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zKHByb2Nlc3NEZWZpbml0aW9uS2V5KTtcbiAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbihwcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gIH1cblxuICBwdWJsaWMgbG9hZFByb2Nlc3NEZWZpbml0aW9uWG1sKHByb2Nlc3NEZWZpbml0aW9uSWQpIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NEZWZpbml0aW9uWG1sKHByb2Nlc3NEZWZpbml0aW9uSWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3NEaWFncmFtID0gcmVzcG9uc2U7XG4gICAgICB0aGlzLmJwbW5KUy5pbXBvcnRYTUwodGhpcy5wcm9jZXNzRGlhZ3JhbS5icG1uMjBYbWwpO1xuICAgICAgdGhpcy5icG1uSlMuYXR0YWNoVG8odGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFByb2Nlc3NJbnN0YW5jZVhtbChwcm9jZXNzSW5zdGFuY2VJZCkge1xuICAgIHRoaXMuX2ltcG9ydGVkID0gZmFsc2U7XG4gICAgdGhpcy5wcm9jZXNzU2VydmljZS5nZXRQcm9jZXNzWG1sKHByb2Nlc3NJbnN0YW5jZUlkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzRGlhZ3JhbSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy5icG1uSlMuaW1wb3J0WE1MKHRoaXMucHJvY2Vzc0RpYWdyYW0uYnBtbjIwWG1sKTtcbiAgICAgIHRoaXMuYnBtbkpTLmF0dGFjaFRvKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclNraXBUaW1lck92ZXJsYXlzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5icG1uSlMgfHwgIXRoaXMuX2ltcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3ZlcmxheXMgPSB0aGlzLmJwbW5KUy5nZXQoJ292ZXJsYXlzJykgYXMgYW55O1xuICAgIHRoaXMuX3NraXBPdmVybGF5SWRzLmZvckVhY2gob3ZlcmxheUlkID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG92ZXJsYXlzLnJlbW92ZShvdmVybGF5SWQpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIG92ZXJsYXkgYWxyZWFkeSBnb25lIChlLmcuIGFmdGVyIGEgZGlhZ3JhbSByZS1pbXBvcnQpOyBpZ25vcmVcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLl9za2lwT3ZlcmxheUlkcyA9IFtdO1xuXG4gICAgaWYgKCF0aGlzLmNhblNraXBUaW1lciB8fCAhdGhpcy5za2lwcGFibGVUaW1lcnM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2tpcHBhYmxlVGltZXJzLmZvckVhY2godGltZXIgPT4ge1xuICAgICAgaWYgKCF0aW1lci5hY3Rpdml0eUlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG4gICAgICBidXR0b24udHlwZSA9ICdidXR0b24nO1xuICAgICAgYnV0dG9uLmNsYXNzTmFtZSA9ICd2YWx0aW1vLXNraXAtdGltZXItb3ZlcmxheSc7XG4gICAgICBidXR0b24udGl0bGUgPSB0aGlzLnNraXBUaW1lckxhYmVsO1xuICAgICAgYnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuc2tpcFRpbWVyTGFiZWwpO1xuICAgICAgYnV0dG9uLmlubmVySFRNTCA9XG4gICAgICAgICc8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBmb2N1c2FibGU9XCJmYWxzZVwiPicgK1xuICAgICAgICAnPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNOCAyNlY2bDE0IDEwTDggMjZ6IE0yNCA2aDJ2MjBoLTJ6XCIvPjwvc3ZnPic7XG4gICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2tpcFRpbWVyRXZlbnQuZW1pdCh0aW1lcik7XG4gICAgICB9KTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgb3ZlcmxheUlkID0gb3ZlcmxheXMuYWRkKHRpbWVyLmFjdGl2aXR5SWQsIHtcbiAgICAgICAgICBwb3NpdGlvbjoge3RvcDogLTE0LCByaWdodDogMTR9LFxuICAgICAgICAgIHNob3c6IHttaW5ab29tOiAwLCBtYXhab29tOiA1LjB9LFxuICAgICAgICAgIGh0bWw6IGJ1dHRvbixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3NraXBPdmVybGF5SWRzLnB1c2gob3ZlcmxheUlkKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBhY3Rpdml0eSBub3QgcHJlc2VudCBpbiB0aGUgcmVuZGVyZWQgZGlhZ3JhbTsgbm90aGluZyB0byBhdHRhY2ggdG9cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25IZWF0bWFwQ291bnQocHJvY2Vzc0RlZmluaXRpb24pIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NIZWF0bWFwQ291bnQocHJvY2Vzc0RlZmluaXRpb24pLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLmlucHV0RGF0YSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy52YWx1ZUtleSA9ICd0b3RhbENvdW50JztcbiAgICAgIHRoaXMuaGVhdFBvaW50cyA9IHtkYXRhOiBbXX07XG4gICAgICB0aGlzLm1pbiA9IDA7XG4gICAgICB0aGlzLm1heCA9IDA7XG5cbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuaW5wdXREYXRhKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGRpYWdyYW1Db250YWluZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcignc3ZnJykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGRpYWdyYW1FbG0gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcihgZ1tkYXRhLWVsZW1lbnQtaWQ9JHtrZXl9XWApXG4gICAgICAgICAgLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLnNldE1heChrZXkpO1xuICAgICAgICB0aGlzLmhlYXRQb2ludHMuZGF0YS5wdXNoKHtcbiAgICAgICAgICB4OiBNYXRoLnJvdW5kKGRpYWdyYW1FbG0ueCAtIGRpYWdyYW1Db250YWluZXIueCArIGRpYWdyYW1FbG0ud2lkdGggLyAyKSxcbiAgICAgICAgICB5OiBNYXRoLnJvdW5kKGRpYWdyYW1FbG0ueSAtIGRpYWdyYW1Db250YWluZXIueSArIGRpYWdyYW1FbG0uaGVpZ2h0IC8gMiksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuaW5wdXREYXRhW2tleV1bdGhpcy52YWx1ZUtleV0sXG4gICAgICAgICAgcmFkaXVzOiBkaWFncmFtRWxtLndpZHRoIC8gMixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWRkQ291bnRlckFjdGl2ZU92ZXJsYXlzKGtleSwgdGhpcy5pbnB1dERhdGEpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNsZWFySGVhdG1hcCgpO1xuICAgICAgaWYgKHRoaXMuc2hvd0hlYXRtYXApIHtcbiAgICAgICAgdGhpcy5sb2FkSGVhdG1hcCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uV2luZG93UmVzaXplKCkge1xuICAgIGNvbnN0IG9sZENhbnZhcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdjYW52YXNbY2xhc3M9aGVhdG1hcC1jYW52YXNdJyk7XG4gICAgaWYgKG9sZENhbnZhcykge1xuICAgICAgb2xkQ2FudmFzLnJlbW92ZSgpO1xuICAgICAgdGhpcy5oZWF0TWFwSW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaG93SGVhdG1hcCkge1xuICAgICAgdGhpcy5sb2FkSGVhdG1hcCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25IZWF0bWFwRHVyYXRpb24ocHJvY2Vzc0RlZmluaXRpb24pIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NIZWF0bWFwRHVyYXRpb24ocHJvY2Vzc0RlZmluaXRpb24pLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLmlucHV0RGF0YSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy52YWx1ZUtleSA9ICdhdmVyYWdlRHVyYXRpb25Jbk1pbGxpc2Vjb25kcyc7XG4gICAgICB0aGlzLmhlYXRQb2ludHMgPSB7ZGF0YTogW119O1xuICAgICAgdGhpcy5taW4gPSAwO1xuICAgICAgdGhpcy5tYXggPSAwO1xuXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmlucHV0RGF0YSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCBkaWFncmFtQ29udGFpbmVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBkaWFncmFtRWxtID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoYGdbZGF0YS1lbGVtZW50LWlkPSR7a2V5fV1gKVxuICAgICAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdGhpcy5zZXRNYXgoa2V5KTtcbiAgICAgICAgdGhpcy5oZWF0UG9pbnRzLmRhdGEucHVzaCh7XG4gICAgICAgICAgeDogTWF0aC5yb3VuZChkaWFncmFtRWxtLnggLSBkaWFncmFtQ29udGFpbmVyLnggKyBkaWFncmFtRWxtLndpZHRoIC8gMiksXG4gICAgICAgICAgeTogTWF0aC5yb3VuZChkaWFncmFtRWxtLnkgLSBkaWFncmFtQ29udGFpbmVyLnkgKyBkaWFncmFtRWxtLmhlaWdodCAvIDIpLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLmlucHV0RGF0YVtrZXldW3RoaXMudmFsdWVLZXldLFxuICAgICAgICAgIHJhZGl1czogZGlhZ3JhbUVsbS53aWR0aCAvIDIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkZENvdW50ZXJBY3RpdmVPdmVybGF5cyhrZXksIHRoaXMuaW5wdXREYXRhKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jbGVhckhlYXRtYXAoKTtcbiAgICAgIGlmICh0aGlzLnNob3dIZWF0bWFwKSB7XG4gICAgICAgIHRoaXMubG9hZEhlYXRtYXAoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRQcm9jZXNzRGVmaW5pdGlvbktleShwcm9jZXNzRGVmaW5pdGlvbktleSkge1xuICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkgPSBwcm9jZXNzRGVmaW5pdGlvbktleTtcbiAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkodGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gIH1cblxuICBwdWJsaWMgc2V0UHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uKHZlcnNpb24pIHtcbiAgICB0aGlzLnZlcnNpb24gPSArdmVyc2lvbjtcbiAgICB0aGlzLmxvYWRIZWF0bWFwRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIHNldEhlYXRtYXBPcHRpb24oaGVhdG1hcE9wdGlvbikge1xuICAgIHRoaXMuaGVhdG1hcE9wdGlvbiA9IGhlYXRtYXBPcHRpb247XG4gICAgdGhpcy5sb2FkSGVhdG1hcERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVTaG93SGVhdG1hcCgpIHtcbiAgICB0aGlzLnNob3dIZWF0bWFwID0gIXRoaXMuc2hvd0hlYXRtYXA7XG4gICAgdGhpcy5sb2FkSGVhdG1hcERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkSGVhdG1hcCgpIHtcbiAgICBpZiAoIXRoaXMuaGVhdE1hcEluc3RhbmNlKSB7XG4gICAgICB0aGlzLmhlYXRNYXBJbnN0YW5jZSA9IGhlYXRtYXAuY3JlYXRlKHtcbiAgICAgICAgcmFkaXVzOiA1NCxcbiAgICAgICAgYmx1cjogMC43LFxuICAgICAgICBtYXhPcGFjaXR5OiAwLjQsXG4gICAgICAgIG1pbk9wYWNpdHk6IDAsXG4gICAgICAgIGNvbnRhaW5lcjogdGhpcy5lbC5uYXRpdmVFbGVtZW50LFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuaGVhdE1hcEluc3RhbmNlLnNldERhdGEoe1xuICAgICAgbWluOiB0aGlzLm1pbixcbiAgICAgIG1heDogdGhpcy5tYXgsXG4gICAgICBkYXRhOiB0aGlzLmhlYXRQb2ludHMuZGF0YSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckhlYXRtYXAoKSB7XG4gICAgaWYgKHRoaXMuaGVhdE1hcEluc3RhbmNlKSB7XG4gICAgICB0aGlzLmhlYXRNYXBJbnN0YW5jZS5zZXREYXRhKHtkYXRhOiBbXX0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkSGVhdG1hcERhdGEoKSB7XG4gICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbiA9IHRoaXMucHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucy5maW5kKFxuICAgICAgZGVmaW5pdGlvbiA9PiBkZWZpbml0aW9uLnZlcnNpb24gPT09IHRoaXMudmVyc2lvblxuICAgICk7XG5cbiAgICBpZiAodGhpcy5oZWF0bWFwT3B0aW9uID09PSAnY291bnQnKSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkhlYXRtYXBDb3VudCh0aGlzLnByb2Nlc3NEZWZpbml0aW9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGVhdG1hcE9wdGlvbiA9PT0gJ2R1cmF0aW9uJykge1xuICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RlZmluaXRpb25IZWF0bWFwRHVyYXRpb24odGhpcy5wcm9jZXNzRGVmaW5pdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldE1heChrZXk6IGFueSkge1xuICAgIGlmICh0aGlzLmhlYXRtYXBEdXJhdGlvbikge1xuICAgICAgdGhpcy5tYXggPSBNYXRoLm1heCh0aGlzLmhlYXRtYXBEdXJhdGlvbltrZXldLmF2ZXJhZ2VEdXJhdGlvbkluTWlsbGlzZWNvbmRzLCB0aGlzLm1heCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhlYXRtYXBDb3VudCkge1xuICAgICAgdGhpcy5tYXggPSBNYXRoLm1heChcbiAgICAgICAgdGhpcy5oZWF0bWFwQ291bnRba2V5XS50b3RhbENvdW50ICsgdGhpcy5oZWF0bWFwQ291bnRba2V5XS5jb3VudCxcbiAgICAgICAgdGhpcy5tYXhcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZENvdW50ZXJBY3RpdmVPdmVybGF5cyhrZXk6IGFueSwgaW5wdXREYXRhOiBhbnkpIHtcbiAgICBjb25zdCBvdmVybGF5cyA9IHRoaXMuYnBtbkpTLmdldCgnb3ZlcmxheXMnKTtcbiAgICBvdmVybGF5cy5hZGQoa2V5LCB7XG4gICAgICBwb3NpdGlvbjoge1xuICAgICAgICBib3R0b206IDEzLFxuICAgICAgICBsZWZ0OiAtMTIsXG4gICAgICB9LFxuICAgICAgc2hvdzoge1xuICAgICAgICBtaW5ab29tOiAwLFxuICAgICAgICBtYXhab29tOiA1LjAsXG4gICAgICB9LFxuICAgICAgaHRtbDogYDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1wcmltYXJ5XCI+JHtpbnB1dERhdGFba2V5XS5jb3VudH08L3NwYW4+YCxcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuPGRpdiBjbGFzcz1cInByb2Nlc3MtZGlhZ3JhbS1jb250YWluZXJcIj5cbiAgPGRpdiAqbmdJZj1cInByb2Nlc3NEZWZpbml0aW9uS2V5XCIgY2xhc3M9XCJkaWFncmFtLWNvbnRhaW5lci1zd2l0Y2gtaG9sZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBwLTQgYmctbGlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgICAgPGxhYmVsPjxzdHJvbmc+VmVyc2lvbjwvc3Ryb25nPjwvbGFiZWxcbiAgICAgICAgICA+PGJyIC8+XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwic2V0UHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uKCRldmVudC50YXJnZXQudmFsdWUpXCI+XG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9jZXNzRGVmaW5pdGlvblZlcnNpb24gb2YgcHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uc1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJwcm9jZXNzRGVmaW5pdGlvblZlcnNpb24udmVyc2lvblwiXG4gICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJwcm9jZXNzRGVmaW5pdGlvblZlcnNpb24udmVyc2lvbiA9PT0gdmVyc2lvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbi52ZXJzaW9uIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxuICAgICAgICAgIDxsYWJlbD48c3Ryb25nPkhlYXRtYXAgdHlwZTwvc3Ryb25nPjwvbGFiZWxcbiAgICAgICAgICA+PGJyIC8+XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwic2V0SGVhdG1hcE9wdGlvbigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGVudW1IZWF0bWFwT3B0aW9uc1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxuICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwib3B0aW9uID09PSBoZWF0bWFwT3B0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgb3B0aW9uIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCB0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgPGxhYmVsPjxzdHJvbmc+U2hvdyBoZWF0bWFwPC9zdHJvbmc+PC9sYWJlbFxuICAgICAgICAgID48YnIgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZWZ0IHN3aXRjaC1idXR0b24gc3dpdGNoLWJ1dHRvbi1zbSBzd2l0Y2gtYnV0dG9uLXN1Y2Nlc3NcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBpZD1cInRvZ2dsZUhlYXRtYXBcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzaG93SGVhdG1hcFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93SGVhdG1hcCgpXCJcbiAgICAgICAgICAgIC8+PHNwYW4+IDxsYWJlbCBmb3I9XCJ0b2dnbGVIZWF0bWFwXCI+PC9sYWJlbD48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgI3JlZiAod2luZG93OnJlc2l6ZSk9XCJvbldpbmRvd1Jlc2l6ZSgpXCIgY2xhc3M9XCJkaWFncmFtLWNvbnRhaW5lclwiPjwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJwcm9jZXNzSW5zdGFuY2VJZFwiIGNsYXNzPVwicC00IHRleHQtY2VudGVyIGxlZ2VuZGEtaG9sZGVyXCI+XG4gICAgPHNwYW5cbiAgICAgID48ZGl2IGNsYXNzPVwibGVnZW5kYSBoaWdobGlnaHQtb3ZlcmxheS1wYXN0XCI+PC9kaXY+XG4gICAgICBFeGVjdXRlZCB0YXNrczwvc3BhblxuICAgID5cbiAgICA8c3BhbiBjbGFzcz1cIm1sLTNcIlxuICAgICAgPjxkaXYgY2xhc3M9XCJsZWdlbmRhIGhpZ2hsaWdodC1vdmVybGF5LWN1cnJlbnRcIj48L2Rpdj5cbiAgICAgIEN1cnJlbnQgdGFza3M8L3NwYW5cbiAgICA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJwcm9jZXNzRGVmaW5pdGlvbktleVwiIGNsYXNzPVwicC00IHRleHQtY2VudGVyIGxlZ2VuZGEtaG9sZGVyXCI+XG4gICAgPHNwYW5cbiAgICAgID48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLXBpbGwgYmFkZ2UtcHJpbWFyeVwiPk48L3NwYW4+Jm5ic3A7Jm5ic3A7QW1vdW50IG9mIGN1cnJlbnRseSBhY3RpdmVcbiAgICAgIGluc3RhbmNlcyBvZiB0aGlzIHRhc2suPC9zcGFuXG4gICAgPlxuICAgIDxzcGFuXG4gICAgICA+Jm5ic3A7Jm5ic3A7fCZuYnNwOyZuYnNwO1JlZC95ZWxsb3cvZ3JlZW4gb3JiczogVGhlIGFtb3VudCBvZiB0aW1lcyB0aGUgdGFzayBpcyBleGVjdXRlZCBpblxuICAgICAgY29tcGFyaXNvbiB0byB0aGUgb3RoZXIgdGFza3MuPC9zcGFuXG4gICAgPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
343
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1kaWFncmFtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy9zcmMvbGliL3Byb2Nlc3MtZGlhZ3JhbS9wcm9jZXNzLWRpYWdyYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9wcm9jZXNzL3NyYy9saWIvcHJvY2Vzcy1kaWFncmFtL3Byb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUt2QixPQUFPLE1BQU0sTUFBTSxzREFBc0QsQ0FBQztBQUMxRSxPQUFPLE9BQU8sTUFBTSxtQ0FBbUMsQ0FBQzs7OztBQVF4RCxNQUFNLE9BQU8sdUJBQXVCO0lBaUNsQyxZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUE5QjFDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFHdEIsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELG1CQUFjLEdBQWlDLElBQUksWUFBWSxFQUFFLENBQUM7UUFJbkUsb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBQ3ZDLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLG1CQUFjLEdBQUcsWUFBWSxDQUFDO1FBVXZDLHVCQUFrQixHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBU0csQ0FBQztJQUV0RCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsNEJBQTRCLENBQUMs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LENBQUM7Z0JBQ1YsT0FBTyxFQUFFLEdBQUc7YUFDYjtZQUNELElBQUksRUFBRSxnREFBZ0QsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssU0FBUztTQUNwRixDQUFDLENBQUM7SUFDTCxDQUFDOytHQS9WVSx1QkFBdUI7bUdBQXZCLHVCQUF1QiwwZkMxQ3BDLG1yR0FxRkE7OzRGRDNDYSx1QkFBdUI7a0JBTm5DLFNBQVM7K0JBQ0UseUJBQXlCLGlCQUdwQixpQkFBaUIsQ0FBQyxJQUFJO21GQVFJLEVBQUU7c0JBQTFDLFNBQVM7dUJBQUMsS0FBSyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDZixVQUFVO3NCQUExQixNQUFNO2dCQUNVLGNBQWM7c0JBQTlCLE1BQU07Z0JBQ1Msb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUNVLGlCQUFpQjtzQkFBaEMsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNiBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQcm9jZXNzU2VydmljZX0gZnJvbSAnLi4vcHJvY2Vzcy5zZXJ2aWNlJztcbmltcG9ydCB7U2tpcHBhYmxlVGltZXJ9IGZyb20gJy4uL21vZGVscyc7XG5cbmltcG9ydCBCcG1uSlMgZnJvbSAnYnBtbi1qcy9kaXN0L2JwbW4tbmF2aWdhdGVkLXZpZXdlci5wcm9kdWN0aW9uLm1pbi5qcyc7XG5pbXBvcnQgaGVhdG1hcCBmcm9tICdoZWF0bWFwLmpzLWZpeGVkL2J1aWxkL2hlYXRtYXAuanMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXByb2Nlc3MtZGlhZ3JhbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzLWRpYWdyYW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wcm9jZXNzLWRpYWdyYW0uY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0RpYWdyYW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBicG1uSlM6IEJwbW5KUztcbiAgcHJpdmF0ZSBoZWF0TWFwSW5zdGFuY2U6IGFueTtcbiAgcHJpdmF0ZSBfaW1wb3J0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2tpcE92ZXJsYXlJZHM6IHN0cmluZ1tdID0gW107XG5cbiAgQFZpZXdDaGlsZCgncmVmJywge3N0YXRpYzogdHJ1ZX0pIHB1YmxpYyBlbDogRWxlbWVudFJlZjtcbiAgQE91dHB1dCgpIHB1YmxpYyBpbXBvcnREb25lOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBza2lwVGltZXJFdmVudDogRXZlbnRFbWl0dGVyPFNraXBwYWJsZVRpbWVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uS2V5Pzogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgcHJvY2Vzc0luc3RhbmNlSWQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBjYXNlSWQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBza2lwcGFibGVUaW1lcnM6IFNraXBwYWJsZVRpbWVyW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGNhblNraXBUaW1lciA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgc2tpcFRpbWVyTGFiZWwgPSAnU2tpcCB0aW1lcic7XG4gIEBJbnB1dCgpIHB1YmxpYyByZWxvYWRUb2tlbj86IG51bWJlcjtcblxuICBwdWJsaWMgcHJvY2Vzc0RpYWdyYW06IGFueTtcbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uOiBhbnk7XG4gIHB1YmxpYyBwcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zOiBhbnk7XG4gIHB1YmxpYyBoZWF0bWFwQ291bnQ6IGFueTtcbiAgcHVibGljIGhlYXRtYXBEdXJhdGlvbjogYW55O1xuICBwdWJsaWMgdGFza3NDb3VudDogYW55O1xuICBwdWJsaWMgc2hvd0hlYXRtYXA6IGJvb2xlYW47XG4gIHB1YmxpYyBlbnVtSGVhdG1hcE9wdGlvbnMgPSBbJ2NvdW50JywgJ2R1cmF0aW9uJ107XG4gIHB1YmxpYyBoZWF0bWFwT3B0aW9uOiBzdHJpbmc7XG4gIHB1YmxpYyB2ZXJzaW9uOiBhbnk7XG4gIHB1YmxpYyBoZWF0UG9pbnRzOiBhbnk7XG4gIHB1YmxpYyBtaW46IG51bWJlcjtcbiAgcHVibGljIG1heDogbnVtYmVyO1xuICBwdWJsaWMgaW5wdXREYXRhOiBhbnk7XG4gIHB1YmxpYyB2YWx1ZUtleTogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcHJvY2Vzc1NlcnZpY2U6IFByb2Nlc3NTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5KSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkodGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb2Nlc3NJbnN0YW5jZUlkKSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzSW5zdGFuY2VYbWwodGhpcy5wcm9jZXNzSW5zdGFuY2VJZCk7XG4gICAgfVxuICAgIHRoaXMuYnBtbkpTID0gbmV3IEJwbW5KUygpO1xuICAgIHRoaXMuYnBtbkpTLm9uKCdpbXBvcnQuZG9uZScsICh7ZXJyb3J9KSA9PiB7XG4gICAgICBpZiAoIWVycm9yKSB7XG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IHRoaXMuYnBtbkpTLmdldCgnY2FudmFzJyk7XG4gICAgICAgIGNvbnN0IGV2ZW50QnVzID0gdGhpcy5icG1uSlMuZ2V0KCdldmVudEJ1cycpO1xuICAgICAgICBpZiAodGhpcy5wcm9jZXNzRGlhZ3JhbS5oaXN0b3JpY0FjdGl2aXR5SW5zdGFuY2VzKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzRGlhZ3JhbS5oaXN0b3JpY0FjdGl2aXR5SW5zdGFuY2VzLmZvckVhY2goaW5zdGFuY2UgPT4ge1xuICAgICAgICAgICAgLy8gZXhjbHVkZSBtdWx0aUluc3RhbmNlQm9keVxuICAgICAgICAgICAgaWYgKGluc3RhbmNlLmFjdGl2aXR5VHlwZSAhPT0gJ211bHRpSW5zdGFuY2VCb2R5Jykge1xuICAgICAgICAgICAgICBjYW52YXMuYWRkTWFya2VyKFxuICAgICAgICAgICAgICAgIGluc3RhbmNlLmFjdGl2aXR5SWQsXG4gICAgICAgICAgICAgICAgaW5zdGFuY2UuZW5kVGltZSA/ICdoaWdobGlnaHQtb3ZlcmxheS1wYXN0JyA6ICdoaWdobGlnaHQtb3ZlcmxheS1jdXJyZW50J1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW1wb3J0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnJlbmRlclNraXBUaW1lck92ZXJsYXlzKCk7XG5cbiAgICAgICAgY2FudmFzLnpvb20oJ2ZpdC12aWV3cG9ydCcsICdhdXRvJyk7XG4gICAgICAgIGlmICh0aGlzLnByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMpIHtcbiAgICAgICAgICBldmVudEJ1cy5vbignY2FudmFzLmluaXQnLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5zaG93SGVhdG1hcCkge1xuICAgICAgICAgICAgICB0aGlzLmNsZWFySGVhdG1hcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5sb2FkSGVhdG1hcERhdGEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBldmVudEJ1cy5vbignY2FudmFzLnZpZXdib3guY2hhbmdpbmcnLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5zaG93SGVhdG1hcCkge1xuICAgICAgICAgICAgICB0aGlzLmNsZWFySGVhdG1hcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV2ZW50QnVzLm9uKCdjYW52YXMudmlld2JveC5jaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkSGVhdG1hcERhdGEoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sncHJvY2Vzc0RlZmluaXRpb25LZXknXSAmJiB0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5KSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkodGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2VzWydwcm9jZXNzSW5zdGFuY2VJZCddICYmIHRoaXMucHJvY2Vzc0luc3RhbmNlSWQpIHtcbiAgICAgIHRoaXMubG9hZFByb2Nlc3NJbnN0YW5jZVhtbCh0aGlzLnByb2Nlc3NJbnN0YW5jZUlkKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZXNbJ2Nhc2VJZCddICYmICFjaGFuZ2VzWydjYXNlSWQnXS5maXJzdENoYW5nZSAmJiB0aGlzLnByb2Nlc3NJbnN0YW5jZUlkKSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzSW5zdGFuY2VYbWwodGhpcy5wcm9jZXNzSW5zdGFuY2VJZCk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGNoYW5nZXNbJ3JlbG9hZFRva2VuJ10gJiZcbiAgICAgICFjaGFuZ2VzWydyZWxvYWRUb2tlbiddLmZpcnN0Q2hhbmdlICYmXG4gICAgICB0aGlzLnByb2Nlc3NJbnN0YW5jZUlkXG4gICAgKSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzSW5zdGFuY2VYbWwodGhpcy5wcm9jZXNzSW5zdGFuY2VJZCk7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXNbJ3NraXBwYWJsZVRpbWVycyddIHx8IGNoYW5nZXNbJ2NhblNraXBUaW1lciddKSB7XG4gICAgICB0aGlzLnJlbmRlclNraXBUaW1lck92ZXJsYXlzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmJwbW5KUykge1xuICAgICAgdGhpcy5icG1uSlMuZGVzdHJveSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb24ocHJvY2Vzc0RlZmluaXRpb25LZXkpIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NEZWZpbml0aW9uKHByb2Nlc3NEZWZpbml0aW9uS2V5KS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5oZWF0bWFwT3B0aW9uID0gdGhpcy5lbnVtSGVhdG1hcE9wdGlvbnNbMF07XG4gICAgICB0aGlzLnZlcnNpb24gPSByZXNwb25zZS52ZXJzaW9uO1xuICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RlZmluaXRpb25YbWwocmVzcG9uc2UuaWQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGxvYWRQcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zKHByb2Nlc3NEZWZpbml0aW9uS2V5KSB7XG4gICAgdGhpcy5wcm9jZXNzU2VydmljZS5nZXRQcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zKHByb2Nlc3NEZWZpbml0aW9uS2V5KS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zID0gcmVzcG9uc2U7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbG9hZFByb2Nlc3NEZWZpbml0aW9uRnJvbUtleShwcm9jZXNzRGVmaW5pdGlvbktleSkge1xuICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMocHJvY2Vzc0RlZmluaXRpb25LZXkpO1xuICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uKHByb2Nlc3NEZWZpbml0aW9uS2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25YbWwocHJvY2Vzc0RlZmluaXRpb25JZCkge1xuICAgIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzc0RlZmluaXRpb25YbWwocHJvY2Vzc0RlZmluaXRpb25JZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgIHRoaXMucHJvY2Vzc0RpYWdyYW0gPSByZXNwb25zZTtcbiAgICAgIHRoaXMuYnBtbkpTLmltcG9ydFhNTCh0aGlzLnByb2Nlc3NEaWFncmFtLmJwbW4yMFhtbCk7XG4gICAgICB0aGlzLmJwbW5KUy5hdHRhY2hUbyh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUHJvY2Vzc0luc3RhbmNlWG1sKHByb2Nlc3NJbnN0YW5jZUlkKSB7XG4gICAgdGhpcy5faW1wb3J0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmdldFByb2Nlc3NJbnN0YW5jZVhtbCQocHJvY2Vzc0luc3RhbmNlSWQpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLnByb2Nlc3NEaWFncmFtID0gcmVzcG9uc2U7XG4gICAgICB0aGlzLmJwbW5KUy5pbXBvcnRYTUwodGhpcy5wcm9jZXNzRGlhZ3JhbS5icG1uMjBYbWwpO1xuICAgICAgdGhpcy5icG1uSlMuYXR0YWNoVG8odGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJvY2Vzc0luc3RhbmNlWG1sJChwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAodGhpcy5jYXNlSWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldENhc2VQcm9jZXNzSW5zdGFuY2VYbWwodGhpcy5jYXNlSWQsIHByb2Nlc3NJbnN0YW5jZUlkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzc1htbChwcm9jZXNzSW5zdGFuY2VJZCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclNraXBUaW1lck92ZXJsYXlzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5icG1uSlMgfHwgIXRoaXMuX2ltcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3ZlcmxheXMgPSB0aGlzLmJwbW5KUy5nZXQoJ292ZXJsYXlzJykgYXMgYW55O1xuICAgIHRoaXMuX3NraXBPdmVybGF5SWRzLmZvckVhY2gob3ZlcmxheUlkID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG92ZXJsYXlzLnJlbW92ZShvdmVybGF5SWQpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIG92ZXJsYXkgYWxyZWFkeSBnb25lIChlLmcuIGFmdGVyIGEgZGlhZ3JhbSByZS1pbXBvcnQpOyBpZ25vcmVcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLl9za2lwT3ZlcmxheUlkcyA9IFtdO1xuXG4gICAgaWYgKCF0aGlzLmNhblNraXBUaW1lciB8fCAhdGhpcy5za2lwcGFibGVUaW1lcnM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2tpcHBhYmxlVGltZXJzLmZvckVhY2godGltZXIgPT4ge1xuICAgICAgaWYgKCF0aW1lci5hY3Rpdml0eUlkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7XG4gICAgICBidXR0b24udHlwZSA9ICdidXR0b24nO1xuICAgICAgYnV0dG9uLmNsYXNzTmFtZSA9ICd2YWx0aW1vLXNraXAtdGltZXItb3ZlcmxheSc7XG4gICAgICBidXR0b24udGl0bGUgPSB0aGlzLnNraXBUaW1lckxhYmVsO1xuICAgICAgYnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuc2tpcFRpbWVyTGFiZWwpO1xuICAgICAgYnV0dG9uLmlubmVySFRNTCA9XG4gICAgICAgICc8c3ZnIHdpZHRoPVwiMTZcIiBoZWlnaHQ9XCIxNlwiIHZpZXdCb3g9XCIwIDAgMzIgMzJcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBmb2N1c2FibGU9XCJmYWxzZVwiPicgK1xuICAgICAgICAnPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNOCAyNlY2bDE0IDEwTDggMjZ6IE0yNCA2aDJ2MjBoLTJ6XCIvPjwvc3ZnPic7XG4gICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuc2tpcFRpbWVyRXZlbnQuZW1pdCh0aW1lcik7XG4gICAgICB9KTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgb3ZlcmxheUlkID0gb3ZlcmxheXMuYWRkKHRpbWVyLmFjdGl2aXR5SWQsIHtcbiAgICAgICAgICBwb3NpdGlvbjoge3RvcDogLTE0LCByaWdodDogMTR9LFxuICAgICAgICAgIHNob3c6IHttaW5ab29tOiAwLCBtYXhab29tOiA1LjB9LFxuICAgICAgICAgIGh0bWw6IGJ1dHRvbixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3NraXBPdmVybGF5SWRzLnB1c2gob3ZlcmxheUlkKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICAvLyBhY3Rpdml0eSBub3QgcHJlc2VudCBpbiB0aGUgcmVuZGVyZWQgZGlhZ3JhbTsgbm90aGluZyB0byBhdHRhY2ggdG9cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25IZWF0bWFwQ291bnQocHJvY2Vzc0RlZmluaXRpb24pIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NIZWF0bWFwQ291bnQocHJvY2Vzc0RlZmluaXRpb24pLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLmlucHV0RGF0YSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy52YWx1ZUtleSA9ICd0b3RhbENvdW50JztcbiAgICAgIHRoaXMuaGVhdFBvaW50cyA9IHtkYXRhOiBbXX07XG4gICAgICB0aGlzLm1pbiA9IDA7XG4gICAgICB0aGlzLm1heCA9IDA7XG5cbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuaW5wdXREYXRhKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IGRpYWdyYW1Db250YWluZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3Rvcignc3ZnJykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGRpYWdyYW1FbG0gPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAucXVlcnlTZWxlY3RvcihgZ1tkYXRhLWVsZW1lbnQtaWQ9JHtrZXl9XWApXG4gICAgICAgICAgLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICB0aGlzLnNldE1heChrZXkpO1xuICAgICAgICB0aGlzLmhlYXRQb2ludHMuZGF0YS5wdXNoKHtcbiAgICAgICAgICB4OiBNYXRoLnJvdW5kKGRpYWdyYW1FbG0ueCAtIGRpYWdyYW1Db250YWluZXIueCArIGRpYWdyYW1FbG0ud2lkdGggLyAyKSxcbiAgICAgICAgICB5OiBNYXRoLnJvdW5kKGRpYWdyYW1FbG0ueSAtIGRpYWdyYW1Db250YWluZXIueSArIGRpYWdyYW1FbG0uaGVpZ2h0IC8gMiksXG4gICAgICAgICAgdmFsdWU6IHRoaXMuaW5wdXREYXRhW2tleV1bdGhpcy52YWx1ZUtleV0sXG4gICAgICAgICAgcmFkaXVzOiBkaWFncmFtRWxtLndpZHRoIC8gMixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWRkQ291bnRlckFjdGl2ZU92ZXJsYXlzKGtleSwgdGhpcy5pbnB1dERhdGEpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmNsZWFySGVhdG1hcCgpO1xuICAgICAgaWYgKHRoaXMuc2hvd0hlYXRtYXApIHtcbiAgICAgICAgdGhpcy5sb2FkSGVhdG1hcCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uV2luZG93UmVzaXplKCkge1xuICAgIGNvbnN0IG9sZENhbnZhcyA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdjYW52YXNbY2xhc3M9aGVhdG1hcC1jYW52YXNdJyk7XG4gICAgaWYgKG9sZENhbnZhcykge1xuICAgICAgb2xkQ2FudmFzLnJlbW92ZSgpO1xuICAgICAgdGhpcy5oZWF0TWFwSW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgICBpZiAodGhpcy5zaG93SGVhdG1hcCkge1xuICAgICAgdGhpcy5sb2FkSGVhdG1hcCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25IZWF0bWFwRHVyYXRpb24ocHJvY2Vzc0RlZmluaXRpb24pIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlLmdldFByb2Nlc3NIZWF0bWFwRHVyYXRpb24ocHJvY2Vzc0RlZmluaXRpb24pLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLmlucHV0RGF0YSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy52YWx1ZUtleSA9ICdhdmVyYWdlRHVyYXRpb25Jbk1pbGxpc2Vjb25kcyc7XG4gICAgICB0aGlzLmhlYXRQb2ludHMgPSB7ZGF0YTogW119O1xuICAgICAgdGhpcy5taW4gPSAwO1xuICAgICAgdGhpcy5tYXggPSAwO1xuXG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmlucHV0RGF0YSkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICBjb25zdCBkaWFncmFtQ29udGFpbmVyID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N2ZycpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBkaWFncmFtRWxtID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgLnF1ZXJ5U2VsZWN0b3IoYGdbZGF0YS1lbGVtZW50LWlkPSR7a2V5fV1gKVxuICAgICAgICAgIC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgdGhpcy5zZXRNYXgoa2V5KTtcbiAgICAgICAgdGhpcy5oZWF0UG9pbnRzLmRhdGEucHVzaCh7XG4gICAgICAgICAgeDogTWF0aC5yb3VuZChkaWFncmFtRWxtLnggLSBkaWFncmFtQ29udGFpbmVyLnggKyBkaWFncmFtRWxtLndpZHRoIC8gMiksXG4gICAgICAgICAgeTogTWF0aC5yb3VuZChkaWFncmFtRWxtLnkgLSBkaWFncmFtQ29udGFpbmVyLnkgKyBkaWFncmFtRWxtLmhlaWdodCAvIDIpLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLmlucHV0RGF0YVtrZXldW3RoaXMudmFsdWVLZXldLFxuICAgICAgICAgIHJhZGl1czogZGlhZ3JhbUVsbS53aWR0aCAvIDIsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkZENvdW50ZXJBY3RpdmVPdmVybGF5cyhrZXksIHRoaXMuaW5wdXREYXRhKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jbGVhckhlYXRtYXAoKTtcbiAgICAgIGlmICh0aGlzLnNob3dIZWF0bWFwKSB7XG4gICAgICAgIHRoaXMubG9hZEhlYXRtYXAoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRQcm9jZXNzRGVmaW5pdGlvbktleShwcm9jZXNzRGVmaW5pdGlvbktleSkge1xuICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkgPSBwcm9jZXNzRGVmaW5pdGlvbktleTtcbiAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkodGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gIH1cblxuICBwdWJsaWMgc2V0UHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uKHZlcnNpb24pIHtcbiAgICB0aGlzLnZlcnNpb24gPSArdmVyc2lvbjtcbiAgICB0aGlzLmxvYWRIZWF0bWFwRGF0YSgpO1xuICB9XG5cbiAgcHVibGljIHNldEhlYXRtYXBPcHRpb24oaGVhdG1hcE9wdGlvbikge1xuICAgIHRoaXMuaGVhdG1hcE9wdGlvbiA9IGhlYXRtYXBPcHRpb247XG4gICAgdGhpcy5sb2FkSGVhdG1hcERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVTaG93SGVhdG1hcCgpIHtcbiAgICB0aGlzLnNob3dIZWF0bWFwID0gIXRoaXMuc2hvd0hlYXRtYXA7XG4gICAgdGhpcy5sb2FkSGVhdG1hcERhdGEoKTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkSGVhdG1hcCgpIHtcbiAgICBpZiAoIXRoaXMuaGVhdE1hcEluc3RhbmNlKSB7XG4gICAgICB0aGlzLmhlYXRNYXBJbnN0YW5jZSA9IGhlYXRtYXAuY3JlYXRlKHtcbiAgICAgICAgcmFkaXVzOiA1NCxcbiAgICAgICAgYmx1cjogMC43LFxuICAgICAgICBtYXhPcGFjaXR5OiAwLjQsXG4gICAgICAgIG1pbk9wYWNpdHk6IDAsXG4gICAgICAgIGNvbnRhaW5lcjogdGhpcy5lbC5uYXRpdmVFbGVtZW50LFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuaGVhdE1hcEluc3RhbmNlLnNldERhdGEoe1xuICAgICAgbWluOiB0aGlzLm1pbixcbiAgICAgIG1heDogdGhpcy5tYXgsXG4gICAgICBkYXRhOiB0aGlzLmhlYXRQb2ludHMuZGF0YSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckhlYXRtYXAoKSB7XG4gICAgaWYgKHRoaXMuaGVhdE1hcEluc3RhbmNlKSB7XG4gICAgICB0aGlzLmhlYXRNYXBJbnN0YW5jZS5zZXREYXRhKHtkYXRhOiBbXX0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkSGVhdG1hcERhdGEoKSB7XG4gICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbiA9IHRoaXMucHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucy5maW5kKFxuICAgICAgZGVmaW5pdGlvbiA9PiBkZWZpbml0aW9uLnZlcnNpb24gPT09IHRoaXMudmVyc2lvblxuICAgICk7XG5cbiAgICBpZiAodGhpcy5oZWF0bWFwT3B0aW9uID09PSAnY291bnQnKSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkhlYXRtYXBDb3VudCh0aGlzLnByb2Nlc3NEZWZpbml0aW9uKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGVhdG1hcE9wdGlvbiA9PT0gJ2R1cmF0aW9uJykge1xuICAgICAgdGhpcy5sb2FkUHJvY2Vzc0RlZmluaXRpb25IZWF0bWFwRHVyYXRpb24odGhpcy5wcm9jZXNzRGVmaW5pdGlvbik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldE1heChrZXk6IGFueSkge1xuICAgIGlmICh0aGlzLmhlYXRtYXBEdXJhdGlvbikge1xuICAgICAgdGhpcy5tYXggPSBNYXRoLm1heCh0aGlzLmhlYXRtYXBEdXJhdGlvbltrZXldLmF2ZXJhZ2VEdXJhdGlvbkluTWlsbGlzZWNvbmRzLCB0aGlzLm1heCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmhlYXRtYXBDb3VudCkge1xuICAgICAgdGhpcy5tYXggPSBNYXRoLm1heChcbiAgICAgICAgdGhpcy5oZWF0bWFwQ291bnRba2V5XS50b3RhbENvdW50ICsgdGhpcy5oZWF0bWFwQ291bnRba2V5XS5jb3VudCxcbiAgICAgICAgdGhpcy5tYXhcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZENvdW50ZXJBY3RpdmVPdmVybGF5cyhrZXk6IGFueSwgaW5wdXREYXRhOiBhbnkpIHtcbiAgICBjb25zdCBvdmVybGF5cyA9IHRoaXMuYnBtbkpTLmdldCgnb3ZlcmxheXMnKTtcbiAgICBvdmVybGF5cy5hZGQoa2V5LCB7XG4gICAgICBwb3NpdGlvbjoge1xuICAgICAgICBib3R0b206IDEzLFxuICAgICAgICBsZWZ0OiAtMTIsXG4gICAgICB9LFxuICAgICAgc2hvdzoge1xuICAgICAgICBtaW5ab29tOiAwLFxuICAgICAgICBtYXhab29tOiA1LjAsXG4gICAgICB9LFxuICAgICAgaHRtbDogYDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1wcmltYXJ5XCI+JHtpbnB1dERhdGFba2V5XS5jb3VudH08L3NwYW4+YCxcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuPGRpdiBjbGFzcz1cInByb2Nlc3MtZGlhZ3JhbS1jb250YWluZXJcIj5cbiAgPGRpdiAqbmdJZj1cInByb2Nlc3NEZWZpbml0aW9uS2V5XCIgY2xhc3M9XCJkaWFncmFtLWNvbnRhaW5lci1zd2l0Y2gtaG9sZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBwLTQgYmctbGlnaHRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgICAgPGxhYmVsPjxzdHJvbmc+VmVyc2lvbjwvc3Ryb25nPjwvbGFiZWxcbiAgICAgICAgICA+PGJyIC8+XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwic2V0UHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uKCRldmVudC50YXJnZXQudmFsdWUpXCI+XG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9jZXNzRGVmaW5pdGlvblZlcnNpb24gb2YgcHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uc1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJwcm9jZXNzRGVmaW5pdGlvblZlcnNpb24udmVyc2lvblwiXG4gICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJwcm9jZXNzRGVmaW5pdGlvblZlcnNpb24udmVyc2lvbiA9PT0gdmVyc2lvblwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbi52ZXJzaW9uIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxuICAgICAgICAgIDxsYWJlbD48c3Ryb25nPkhlYXRtYXAgdHlwZTwvc3Ryb25nPjwvbGFiZWxcbiAgICAgICAgICA+PGJyIC8+XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIChjaGFuZ2UpPVwic2V0SGVhdG1hcE9wdGlvbigkZXZlbnQudGFyZ2V0LnZhbHVlKVwiPlxuICAgICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGVudW1IZWF0bWFwT3B0aW9uc1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxuICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwib3B0aW9uID09PSBoZWF0bWFwT3B0aW9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgb3B0aW9uIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCB0ZXh0LXJpZ2h0XCI+XG4gICAgICAgICAgPGxhYmVsPjxzdHJvbmc+U2hvdyBoZWF0bWFwPC9zdHJvbmc+PC9sYWJlbFxuICAgICAgICAgID48YnIgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZWZ0IHN3aXRjaC1idXR0b24gc3dpdGNoLWJ1dHRvbi1zbSBzd2l0Y2gtYnV0dG9uLXN1Y2Nlc3NcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBpZD1cInRvZ2dsZUhlYXRtYXBcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzaG93SGVhdG1hcFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93SGVhdG1hcCgpXCJcbiAgICAgICAgICAgIC8+PHNwYW4+IDxsYWJlbCBmb3I9XCJ0b2dnbGVIZWF0bWFwXCI+PC9sYWJlbD48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgI3JlZiAod2luZG93OnJlc2l6ZSk9XCJvbldpbmRvd1Jlc2l6ZSgpXCIgY2xhc3M9XCJkaWFncmFtLWNvbnRhaW5lclwiPjwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJwcm9jZXNzSW5zdGFuY2VJZFwiIGNsYXNzPVwicC00IHRleHQtY2VudGVyIGxlZ2VuZGEtaG9sZGVyXCI+XG4gICAgPHNwYW5cbiAgICAgID48ZGl2IGNsYXNzPVwibGVnZW5kYSBoaWdobGlnaHQtb3ZlcmxheS1wYXN0XCI+PC9kaXY+XG4gICAgICBFeGVjdXRlZCB0YXNrczwvc3BhblxuICAgID5cbiAgICA8c3BhbiBjbGFzcz1cIm1sLTNcIlxuICAgICAgPjxkaXYgY2xhc3M9XCJsZWdlbmRhIGhpZ2hsaWdodC1vdmVybGF5LWN1cnJlbnRcIj48L2Rpdj5cbiAgICAgIEN1cnJlbnQgdGFza3M8L3NwYW5cbiAgICA+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJwcm9jZXNzRGVmaW5pdGlvbktleVwiIGNsYXNzPVwicC00IHRleHQtY2VudGVyIGxlZ2VuZGEtaG9sZGVyXCI+XG4gICAgPHNwYW5cbiAgICAgID48c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLXBpbGwgYmFkZ2UtcHJpbWFyeVwiPk48L3NwYW4+Jm5ic3A7Jm5ic3A7QW1vdW50IG9mIGN1cnJlbnRseSBhY3RpdmVcbiAgICAgIGluc3RhbmNlcyBvZiB0aGlzIHRhc2suPC9zcGFuXG4gICAgPlxuICAgIDxzcGFuXG4gICAgICA+Jm5ic3A7Jm5ic3A7fCZuYnNwOyZuYnNwO1JlZC95ZWxsb3cvZ3JlZW4gb3JiczogVGhlIGFtb3VudCBvZiB0aW1lcyB0aGUgdGFzayBpcyBleGVjdXRlZCBpblxuICAgICAgY29tcGFyaXNvbiB0byB0aGUgb3RoZXIgdGFza3MuPC9zcGFuXG4gICAgPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Copyright 2015-
|
|
2
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
3
3
|
*
|
|
4
4
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
5
|
* you may not use this file except in compliance with the License.
|
|
@@ -54,9 +54,16 @@ export class ProcessService {
|
|
|
54
54
|
getProcessDefinitionXml(processDefinitionId) {
|
|
55
55
|
return this.http.get(`${this.valtimoEndpointUri}v1/process/definition/${processDefinitionId}/xml`);
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* @deprecated The generic endpoint is restricted to administrators. Use
|
|
59
|
+
* {@link getCaseProcessInstanceXml} (document VIEW) for case-related process diagrams.
|
|
60
|
+
*/
|
|
57
61
|
getProcessXml(id) {
|
|
58
62
|
return this.http.get(`${this.valtimoEndpointUri}v1/process/${id}/xml`);
|
|
59
63
|
}
|
|
64
|
+
getCaseProcessInstanceXml(caseId, processInstanceId) {
|
|
65
|
+
return this.http.get(`${this.valtimoEndpointUri}v1/process-document/case/${caseId}/process-instance/${processInstanceId}/xml`);
|
|
66
|
+
}
|
|
60
67
|
getProcessCount(id) {
|
|
61
68
|
return this.http.post(`${this.valtimoEndpointUri}v1/process/definition/${id}/count`, {
|
|
62
69
|
key: id,
|
|
@@ -69,6 +76,9 @@ export class ProcessService {
|
|
|
69
76
|
getProcessHeatmapDuration(processDefinition) {
|
|
70
77
|
return this.http.get(`${this.valtimoEndpointUri}v1/process/definition/${processDefinition.key}/heatmap/duration?version=${processDefinition.version}`);
|
|
71
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* @deprecated This endpoint is restricted to administrators and will be removed.
|
|
81
|
+
*/
|
|
72
82
|
getProcessInstances(key, page, size, sort) {
|
|
73
83
|
const params = new HttpParams()
|
|
74
84
|
.set('page', page.toString())
|
|
@@ -76,14 +86,23 @@ export class ProcessService {
|
|
|
76
86
|
.set('sort', sort);
|
|
77
87
|
return this.http.post(`${this.valtimoEndpointUri}v2/process/${key}/search`, {}, { params });
|
|
78
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* @deprecated This endpoint is restricted to administrators and will be removed.
|
|
91
|
+
*/
|
|
79
92
|
getProcessInstance(processInstanceId) {
|
|
80
93
|
return this.http.get(`${this.valtimoEndpointUri}v1/process/${processInstanceId}`, {});
|
|
81
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* @deprecated This endpoint will be removed. Use the authorized task endpoints instead.
|
|
97
|
+
*/
|
|
82
98
|
getProcessInstanceTasks(id) {
|
|
83
99
|
return this.http
|
|
84
100
|
.get(`${this.valtimoEndpointUri}v1/process/${id}/tasks`, {})
|
|
85
101
|
.pipe(map(res => res || []));
|
|
86
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* @deprecated This endpoint is restricted to administrators and will be removed.
|
|
105
|
+
*/
|
|
87
106
|
getProcessInstanceVariables(id, variableNames) {
|
|
88
107
|
return this.http.post(`${this.valtimoEndpointUri}v1/process-instance/${id}/variables`, variableNames);
|
|
89
108
|
}
|
|
@@ -134,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
134
153
|
providedIn: 'root',
|
|
135
154
|
}]
|
|
136
155
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ConfigService }] });
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9wcm9jZXNzL3NyYy9saWIvcHJvY2Vzcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQWEsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFDLEdBQUcsRUFBYSxNQUFNLE1BQU0sQ0FBQzs7OztBQWNyQyxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUNVLElBQWdCLEVBQ3hCLGFBQTRCO1FBRHBCLFNBQUksR0FBSixJQUFJLENBQVk7UUFHeEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztJQUN4RSxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXNCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQix1QkFBdUIsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxHQUFXO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQix5QkFBeUIsR0FBRyxXQUFXLENBQ2xFLENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CLENBQUMsR0FBVztRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixHQUFHLElBQUksQ0FBQyxrQkFBa0IseUJBQXlCLEdBQUcsRUFBRSxDQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVELGlDQUFpQyxDQUMvQixvQkFBNEI7UUFFNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsR0FBRyxJQUFJLENBQUMs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LGNBQWMsQ0FDWixvQkFBNEIsRUFDNUIsb0JBQTRCLEVBQzVCLE1BQVc7UUFFWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNuQixHQUFHLElBQUksQ0FBQyxrQkFBa0IseUJBQXlCLG9CQUFvQixJQUFJLG9CQUFvQixVQUFVLEVBQ3pHLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQzsrR0FoTFUsY0FBYzttSEFBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwQ2xpZW50LCBIdHRwUGFyYW1zfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge21hcCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBQcm9jZXNzRGVmaW5pdGlvbixcbiAgUHJvY2Vzc0RlZmluaXRpb25TdGFydEZvcm0sXG4gIFByb2Nlc3NEZWZpbml0aW9uU3RhcnRQcm9jZXNzTGluayxcbiAgUHJvY2Vzc0luc3RhbmNlLFxuICBQcm9jZXNzSW5zdGFuY2VUYXNrLFxuICBQcm9jZXNzU3RhcnQsXG59IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7Q29uZmlnU2VydmljZSwgUGFnZX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFByb2Nlc3NTZXJ2aWNlIHtcbiAgcHJpdmF0ZSB2YWx0aW1vRW5kcG9pbnRVcmk6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZVxuICApIHtcbiAgICB0aGlzLnZhbHRpbW9FbmRwb2ludFVyaSA9IGNvbmZpZ1NlcnZpY2UuY29uZmlnLnZhbHRpbW9BcGkuZW5kcG9pbnRVcmk7XG4gIH1cblxuICBnZXRQcm9jZXNzRGVmaW5pdGlvbnMoKTogT2JzZXJ2YWJsZTxQcm9jZXNzRGVmaW5pdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UHJvY2Vzc0RlZmluaXRpb25bXT4oYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djEvcHJvY2Vzcy9kZWZpbml0aW9uYCk7XG4gIH1cblxuICBnZXRQcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcm9jZXNzRGVmaW5pdGlvbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UHJvY2Vzc0RlZmluaXRpb25bXT4oXG4gICAgICBgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12MS9wcm9jZXNzL2RlZmluaXRpb24vJHtrZXl9L3ZlcnNpb25zYFxuICAgICk7XG4gIH1cblxuICBnZXRQcm9jZXNzRGVmaW5pdGlvbihrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8UHJvY2Vzc0RlZmluaXRpb24+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxQcm9jZXNzRGVmaW5pdGlvbj4oXG4gICAgICBgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12MS9wcm9jZXNzL2RlZmluaXRpb24vJHtrZXl9YFxuICAgICk7XG4gIH1cblxuICBnZXRQcm9jZXNzRGVmaW5pdGlvblN0YXJ0Rm9ybURhdGEoXG4gICAgcHJvY2Vzc0RlZmluaXRpb25LZXk6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFByb2Nlc3NEZWZpbml0aW9uU3RhcnRGb3JtPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UHJvY2Vzc0RlZmluaXRpb25TdGFydEZvcm0+KFxuICAgICAgYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djEvcHJvY2Vzcy9kZWZpbml0aW9uLyR7cHJvY2Vzc0RlZmluaXRpb25LZXl9L3N0YXJ0LWZvcm1gXG4gICAgKTtcbiAgfVxuXG4gIGdldFByb2Nlc3NEZWZpbml0aW9uU3RhcnRQcm9jZXNzTGluayhcbiAgICBwcm9jZXNzRGVmaW5pdGlvbklkOiBzdHJpbmcsXG4gICAgZG9jdW1lbnRJZDogc3RyaW5nLFxuICAgIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFByb2Nlc3NEZWZpbml0aW9uU3RhcnRQcm9jZXNzTGluaz4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuICAgIGlmIChkb2N1bWVudElkICE9IG51bGwpIHtcbiAgICAgIHBhcmFtc1snZG9jdW1lbnRJZCddID0gZG9jdW1lbnRJZDtcbiAgICB9XG4gICAgaWYgKGRvY3VtZW50RGVmaW5pdGlvbk5hbWUgIT0gbnVsbCkge1xuICAgICAgcGFyYW1zWydkb2N1bWVudERlZmluaXRpb25OYW1lJ10gPSBkb2N1bWVudERlZmluaXRpb25OYW1lO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFByb2Nlc3NEZWZpbml0aW9uU3RhcnRQcm9jZXNzTGluaz4oXG4gICAgICBgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12MS9wcm9jZXNzLWRlZmluaXRpb24vJHtwcm9jZXNzRGVmaW5pdGlvbklkfS9zdGFydC1mb3JtYCxcbiAgICAgIHtcbiAgICAgICAgcGFyYW1zLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBzdGFydFByb2Nlc0luc3RhbmNlKFxuICAgIGtleTogc3RyaW5nLFxuICAgIGJ1c2luZXNzS2V5OiBzdHJpbmcsXG4gICAgdmFyaWFibGVzOiBNYXA8c3RyaW5nLCBhbnk+XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFByb2Nlc3NTdGFydD4oXG4gICAgICBgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12MS9wcm9jZXNzL2RlZmluaXRpb24vJHtrZXl9LyR7YnVzaW5lc3NLZXl9L3N0YXJ0YCxcbiAgICAgIHZhcmlhYmxlc1xuICAgICk7XG4gIH1cblxuICBnZXRQcm9jZXNzRGVmaW5pdGlvblhtbChwcm9jZXNzRGVmaW5pdGlvbklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djEvcHJvY2Vzcy9kZWZpbml0aW9uLyR7cHJvY2Vzc0RlZmluaXRpb25JZH0veG1sYFxuICAgICk7XG4gIH1cblxuICBnZXRQcm9jZXNzWG1sKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3Byb2Nlc3MvJHtpZH0veG1sYCk7XG4gIH1cblxuICBnZXRQcm9jZXNzQ291bnQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3Byb2Nlc3MvZGVmaW5pdGlvbi8ke2lkfS9jb3VudGAsIHtcbiAgICAgIGtleTogaWQsXG4gICAgICBwcm9jZXNzVmFyaWFibGVzOiBbeydAdHlwZSc6ICdib29sZWFuJywgbmFtZTogJ2FjdGl2ZScsIHZhbHVlOiB0cnVlfV0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRQcm9jZXNzSGVhdG1hcENvdW50KHByb2Nlc3NEZWZpbml0aW9uOiBQcm9jZXNzRGVmaW5pdGlvbik6IE9ic2VydmFibGU8YW55W10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4oXG4gICAgICBgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12MS9wcm9jZXNzL2RlZmluaXRpb24vJHtwcm9jZXNzRGVmaW5pdGlvbi5rZXl9L2hlYXRtYXAvY291bnQ/dmVyc2lvbj0ke3Byb2Nlc3NEZWZpbml0aW9uLnZlcnNpb259YFxuICAgICk7XG4gIH1cblxuICBnZXRQcm9jZXNzSGVhdG1hcER1cmF0aW9uKHByb2Nlc3NEZWZpbml0aW9uOiBQcm9jZXNzRGVmaW5pdGlvbik6IE9ic2VydmFibGU8YW55W10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4oXG4gICAgICBgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12MS9wcm9jZXNzL2RlZmluaXRpb24vJHtwcm9jZXNzRGVmaW5pdGlvbi5rZXl9L2hlYXRtYXAvZHVyYXRpb24/dmVyc2lvbj0ke3Byb2Nlc3NEZWZpbml0aW9uLnZlcnNpb259YFxuICAgICk7XG4gIH1cblxuICBnZXRQcm9jZXNzSW5zdGFuY2VzKGtleTogc3RyaW5nLCBwYWdlOiBudW1iZXIsIHNpemU6IG51bWJlciwgc29ydDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpXG4gICAgICAuc2V0KCdwYWdlJywgcGFnZS50b1N0cmluZygpKVxuICAgICAgLnNldCgnc2l6ZScsIHNpemUudG9TdHJpbmcoKSlcbiAgICAgIC5zZXQoJ3NvcnQnLCBzb3J0KTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxQYWdlPFByb2Nlc3NJbnN0YW5jZT4+KFxuICAgICAgYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djIvcHJvY2Vzcy8ke2tleX0vc2VhcmNoYCxcbiAgICAgIHt9LFxuICAgICAge3BhcmFtc31cbiAgICApO1xuICB9XG5cbiAgZ2V0UHJvY2Vzc0luc3RhbmNlKHByb2Nlc3NJbnN0YW5jZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFByb2Nlc3NJbnN0YW5jZT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFByb2Nlc3NJbnN0YW5jZT4oXG4gICAgICBgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12MS9wcm9jZXNzLyR7cHJvY2Vzc0luc3RhbmNlSWR9YCxcbiAgICAgIHt9XG4gICAgKTtcbiAgfVxuXG4gIGdldFByb2Nlc3NJbnN0YW5jZVRhc2tzKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFByb2Nlc3NJbnN0YW5jZVRhc2tbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8UHJvY2Vzc0luc3RhbmNlVGFza1tdPihgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12MS9wcm9jZXNzLyR7aWR9L3Rhc2tzYCwge30pXG4gICAgICAucGlwZShtYXAocmVzID0+IHJlcyB8fCBbXSkpO1xuICB9XG5cbiAgZ2V0UHJvY2Vzc0luc3RhbmNlVmFyaWFibGVzKGlkOiBzdHJpbmcsIHZhcmlhYmxlTmFtZXM6IEFycmF5PGFueT4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgIGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3Byb2Nlc3MtaW5zdGFuY2UvJHtpZH0vdmFyaWFibGVzYCxcbiAgICAgIHZhcmlhYmxlTmFtZXNcbiAgICApO1xuICB9XG5cbiAgYWRkUHJvY2Vzc0luc3RhbmNlc0RlZmF1bHRWYXJpYWJsZXNWYWx1ZXMocHJvY2Vzc0luc3RhbmNlczogQXJyYXk8YW55Pikge1xuICAgIHByb2Nlc3NJbnN0YW5jZXMuZm9yRWFjaChwcm9jZXNzSW5zdGFuY2UgPT4gdGhpcy5hZGREZWZhdWx0VmFyaWFibGVzVmFsdWVzKHByb2Nlc3NJbnN0YW5jZSkpO1xuICAgIHJldHVybiBwcm9jZXNzSW5zdGFuY2VzO1xuICB9XG5cbiAgYWRkRGVmYXVsdFZhcmlhYmxlc1ZhbHVlcyhwcm9jZXNzSW5zdGFuY2U6IGFueSkge1xuICAgIGlmICghcHJvY2Vzc0luc3RhbmNlWydzdGFydFVzZXInXSkge1xuICAgICAgcHJvY2Vzc0luc3RhbmNlLnN0YXJ0VXNlciA9IHByb2Nlc3NJbnN0YW5jZS5zdGFydFVzZXJJZDtcbiAgICB9XG4gICAgaWYgKCFwcm9jZXNzSW5zdGFuY2VbJ3Byb2Nlc3NTdGFydGVkJ10pIHtcbiAgICAgIHByb2Nlc3NJbnN0YW5jZS5wcm9jZXNzU3RhcnRlZCA9IHByb2Nlc3NJbnN0YW5jZS5zdGFydFRpbWU7XG4gICAgfVxuICAgIGlmICghcHJvY2Vzc0luc3RhbmNlWydwcm9jZXNzRW5kZWQnXSkge1xuICAgICAgcHJvY2Vzc0luc3RhbmNlLnByb2Nlc3NFbmRlZCA9IHByb2Nlc3NJbnN0YW5jZS5lbmRUaW1lO1xuICAgIH1cbiAgICBpZiAoIXByb2Nlc3NJbnN0YW5jZVsnYWN0aXZlJ10pIHtcbiAgICAgIHByb2Nlc3NJbnN0YW5jZS5hY3RpdmUgPSBwcm9jZXNzSW5zdGFuY2UuZW5kVGltZSA9PSBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gcHJvY2Vzc0luc3RhbmNlO1xuICB9XG5cbiAgZ2V0SW5zdGFuY2VzU3RhdGlzdGljcyhmcm9tRGF0ZT86IHN0cmluZywgdG9EYXRlPzogc3RyaW5nLCBwcm9jZXNzRmlsdGVyPzogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMuc2V0KCdmcm9tRGF0ZScsIGZyb21EYXRlKTtcbiAgICBwYXJhbXMuc2V0KCd0b0RhdGUnLCB0b0RhdGUpO1xuICAgIHBhcmFtcy5zZXQoJ3Byb2Nlc3NGaWx0ZXInLCBwcm9jZXNzRmlsdGVyKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4oYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djEvcmVwb3J0aW5nL2luc3RhbmNlc3N0YXRpc3RpY3NgLCB7XG4gICAgICBwYXJhbXMsXG4gICAgfSk7XG4gIH1cblxuICBkZXBsb3lQcm9jZXNzKHByb2Nlc3NYbWw6IHN0cmluZykge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgbmV3IEZpbGUoW3Byb2Nlc3NYbWxdLCAncHJvY2Vzcy5icG1uJykpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZGVwbG95bWVudC1uYW1lJywgJ3ZhbHRpbW9Db25zb2xlQXBwJyk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdkZXBsb3ltZW50LXNvdXJjZScsICdwcm9jZXNzIGFwcGxpY2F0aW9uJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3Byb2Nlc3MvZGVmaW5pdGlvbi9kZXBsb3ltZW50YCwgZm9ybURhdGEpO1xuICB9XG5cbiAgbWlncmF0ZVByb2Nlc3MoXG4gICAgcHJvY2Vzc0RlZmluaXRpb24xSWQ6IHN0cmluZyxcbiAgICBwcm9jZXNzRGVmaW5pdGlvbjJJZDogc3RyaW5nLFxuICAgIHBhcmFtczogYW55XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djEvcHJvY2Vzcy9kZWZpbml0aW9uLyR7cHJvY2Vzc0RlZmluaXRpb24xSWR9LyR7cHJvY2Vzc0RlZmluaXRpb24ySWR9L21pZ3JhdGVgLFxuICAgICAgcGFyYW1zXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9wcm9jZXNzL3NyYy9saWIvcHJvY2Vzcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQWEsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDNUQsT0FBTyxFQUFDLEdBQUcsRUFBYSxNQUFNLE1BQU0sQ0FBQzs7OztBQWNyQyxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUNVLElBQWdCLEVBQ3hCLGFBQTRCO1FBRHBCLFNBQUksR0FBSixJQUFJLENBQVk7UUFHeEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztJQUN4RSxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXNCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQix1QkFBdUIsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxHQUFXO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQix5QkFBeUIsR0FBRyxXQUFXLENBQ2xFLENBQUM7SUFDSixDQUFDO0lBRUQsb0JBQW9CLENBQUMsR0FBVztRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixHQUFHLElBQUksQ0FBQyxrQkFBa0IseUJBQXlCLEdBQUcsRUFBRSxDQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVELGlDQUFpQyxDQUMvQixvQkFBNEI7UUFFNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsR0FBRyxJQUFJLENBQUMs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USxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3hELFFBQVEsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUM1RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixrQ0FBa0MsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQsY0FBYyxDQUNaLG9CQUE0QixFQUM1QixvQkFBNEIsRUFDNUIsTUFBVztRQUVYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLEdBQUcsSUFBSSxDQUFDLGtCQUFrQix5QkFBeUIsb0JBQW9CLElBQUksb0JBQW9CLFVBQVUsRUFDekcsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDOytHQXRNVSxjQUFjO21IQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI2IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBQYXJhbXN9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7bWFwLCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIFByb2Nlc3NEZWZpbml0aW9uLFxuICBQcm9jZXNzRGVmaW5pdGlvblN0YXJ0Rm9ybSxcbiAgUHJvY2Vzc0RlZmluaXRpb25TdGFydFByb2Nlc3NMaW5rLFxuICBQcm9jZXNzSW5zdGFuY2UsXG4gIFByb2Nlc3NJbnN0YW5jZVRhc2ssXG4gIFByb2Nlc3NTdGFydCxcbn0gZnJvbSAnLi9tb2RlbHMnO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlLCBQYWdlfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc1NlcnZpY2Uge1xuICBwcml2YXRlIHZhbHRpbW9FbmRwb2ludFVyaTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMudmFsdGltb0VuZHBvaW50VXJpID0gY29uZmlnU2VydmljZS5jb25maWcudmFsdGltb0FwaS5lbmRwb2ludFVyaTtcbiAgfVxuXG4gIGdldFByb2Nlc3NEZWZpbml0aW9ucygpOiBPYnNlcnZhYmxlPFByb2Nlc3NEZWZpbml0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxQcm9jZXNzRGVmaW5pdGlvbltdPihgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12MS9wcm9jZXNzL2RlZmluaXRpb25gKTtcbiAgfVxuXG4gIGdldFByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFByb2Nlc3NEZWZpbml0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxQcm9jZXNzRGVmaW5pdGlvbltdPihcbiAgICAgIGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3Byb2Nlc3MvZGVmaW5pdGlvbi8ke2tleX0vdmVyc2lvbnNgXG4gICAgKTtcbiAgfVxuXG4gIGdldFByb2Nlc3NEZWZpbml0aW9uKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxQcm9jZXNzRGVmaW5pdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFByb2Nlc3NEZWZpbml0aW9uPihcbiAgICAgIGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3Byb2Nlc3MvZGVmaW5pdGlvbi8ke2tleX1gXG4gICAgKTtcbiAgfVxuXG4gIGdldFByb2Nlc3NEZWZpbml0aW9uU3RhcnRGb3JtRGF0YShcbiAgICBwcm9jZXNzRGVmaW5pdGlvbktleTogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8UHJvY2Vzc0RlZmluaXRpb25TdGFydEZvcm0+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxQcm9jZXNzRGVmaW5pdGlvblN0YXJ0Rm9ybT4oXG4gICAgICBgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12MS9wcm9jZXNzL2RlZmluaXRpb24vJHtwcm9jZXNzRGVmaW5pdGlvbktleX0vc3RhcnQtZm9ybWBcbiAgICApO1xuICB9XG5cbiAgZ2V0UHJvY2Vzc0RlZmluaXRpb25TdGFydFByb2Nlc3NMaW5rKFxuICAgIHByb2Nlc3NEZWZpbml0aW9uSWQ6IHN0cmluZyxcbiAgICBkb2N1bWVudElkOiBzdHJpbmcsXG4gICAgZG9jdW1lbnREZWZpbml0aW9uTmFtZTogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8UHJvY2Vzc0RlZmluaXRpb25TdGFydFByb2Nlc3NMaW5rPiB7XG4gICAgY29uc3QgcGFyYW1zID0ge307XG4gICAgaWYgKGRvY3VtZW50SWQgIT0gbnVsbCkge1xuICAgICAgcGFyYW1zWydkb2N1bWVudElkJ10gPSBkb2N1bWVudElkO1xuICAgIH1cbiAgICBpZiAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSAhPSBudWxsKSB7XG4gICAgICBwYXJhbXNbJ2RvY3VtZW50RGVmaW5pdGlvbk5hbWUnXSA9IGRvY3VtZW50RGVmaW5pdGlvbk5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UHJvY2Vzc0RlZmluaXRpb25TdGFydFByb2Nlc3NMaW5rPihcbiAgICAgIGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3Byb2Nlc3MtZGVmaW5pdGlvbi8ke3Byb2Nlc3NEZWZpbml0aW9uSWR9L3N0YXJ0LWZvcm1gLFxuICAgICAge1xuICAgICAgICBwYXJhbXMsXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHN0YXJ0UHJvY2VzSW5zdGFuY2UoXG4gICAga2V5OiBzdHJpbmcsXG4gICAgYnVzaW5lc3NLZXk6IHN0cmluZyxcbiAgICB2YXJpYWJsZXM6IE1hcDxzdHJpbmcsIGFueT5cbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8UHJvY2Vzc1N0YXJ0PihcbiAgICAgIGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3Byb2Nlc3MvZGVmaW5pdGlvbi8ke2tleX0vJHtidXNpbmVzc0tleX0vc3RhcnRgLFxuICAgICAgdmFyaWFibGVzXG4gICAgKTtcbiAgfVxuXG4gIGdldFByb2Nlc3NEZWZpbml0aW9uWG1sKHByb2Nlc3NEZWZpbml0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICBgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12MS9wcm9jZXNzL2RlZmluaXRpb24vJHtwcm9jZXNzRGVmaW5pdGlvbklkfS94bWxgXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGUgZ2VuZXJpYyBlbmRwb2ludCBpcyByZXN0cmljdGVkIHRvIGFkbWluaXN0cmF0b3JzLiBVc2VcbiAgICoge0BsaW5rIGdldENhc2VQcm9jZXNzSW5zdGFuY2VYbWx9IChkb2N1bWVudCBWSUVXKSBmb3IgY2FzZS1yZWxhdGVkIHByb2Nlc3MgZGlhZ3JhbXMuXG4gICAqL1xuICBnZXRQcm9jZXNzWG1sKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3Byb2Nlc3MvJHtpZH0veG1sYCk7XG4gIH1cblxuICBnZXRDYXNlUHJvY2Vzc0luc3RhbmNlWG1sKGNhc2VJZDogc3RyaW5nLCBwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3Byb2Nlc3MtZG9jdW1lbnQvY2FzZS8ke2Nhc2VJZH0vcHJvY2Vzcy1pbnN0YW5jZS8ke3Byb2Nlc3NJbnN0YW5jZUlkfS94bWxgXG4gICAgKTtcbiAgfVxuXG4gIGdldFByb2Nlc3NDb3VudChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djEvcHJvY2Vzcy9kZWZpbml0aW9uLyR7aWR9L2NvdW50YCwge1xuICAgICAga2V5OiBpZCxcbiAgICAgIHByb2Nlc3NWYXJpYWJsZXM6IFt7J0B0eXBlJzogJ2Jvb2xlYW4nLCBuYW1lOiAnYWN0aXZlJywgdmFsdWU6IHRydWV9XSxcbiAgICB9KTtcbiAgfVxuXG4gIGdldFByb2Nlc3NIZWF0bWFwQ291bnQocHJvY2Vzc0RlZmluaXRpb246IFByb2Nlc3NEZWZpbml0aW9uKTogT2JzZXJ2YWJsZTxhbnlbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihcbiAgICAgIGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3Byb2Nlc3MvZGVmaW5pdGlvbi8ke3Byb2Nlc3NEZWZpbml0aW9uLmtleX0vaGVhdG1hcC9jb3VudD92ZXJzaW9uPSR7cHJvY2Vzc0RlZmluaXRpb24udmVyc2lvbn1gXG4gICAgKTtcbiAgfVxuXG4gIGdldFByb2Nlc3NIZWF0bWFwRHVyYXRpb24ocHJvY2Vzc0RlZmluaXRpb246IFByb2Nlc3NEZWZpbml0aW9uKTogT2JzZXJ2YWJsZTxhbnlbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueVtdPihcbiAgICAgIGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3Byb2Nlc3MvZGVmaW5pdGlvbi8ke3Byb2Nlc3NEZWZpbml0aW9uLmtleX0vaGVhdG1hcC9kdXJhdGlvbj92ZXJzaW9uPSR7cHJvY2Vzc0RlZmluaXRpb24udmVyc2lvbn1gXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIGVuZHBvaW50IGlzIHJlc3RyaWN0ZWQgdG8gYWRtaW5pc3RyYXRvcnMgYW5kIHdpbGwgYmUgcmVtb3ZlZC5cbiAgICovXG4gIGdldFByb2Nlc3NJbnN0YW5jZXMoa2V5OiBzdHJpbmcsIHBhZ2U6IG51bWJlciwgc2l6ZTogbnVtYmVyLCBzb3J0OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKClcbiAgICAgIC5zZXQoJ3BhZ2UnLCBwYWdlLnRvU3RyaW5nKCkpXG4gICAgICAuc2V0KCdzaXplJywgc2l6ZS50b1N0cmluZygpKVxuICAgICAgLnNldCgnc29ydCcsIHNvcnQpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFBhZ2U8UHJvY2Vzc0luc3RhbmNlPj4oXG4gICAgICBgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12Mi9wcm9jZXNzLyR7a2V5fS9zZWFyY2hgLFxuICAgICAge30sXG4gICAgICB7cGFyYW1zfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBlbmRwb2ludCBpcyByZXN0cmljdGVkIHRvIGFkbWluaXN0cmF0b3JzIGFuZCB3aWxsIGJlIHJlbW92ZWQuXG4gICAqL1xuICBnZXRQcm9jZXNzSW5zdGFuY2UocHJvY2Vzc0luc3RhbmNlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8UHJvY2Vzc0luc3RhbmNlPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8UHJvY2Vzc0luc3RhbmNlPihcbiAgICAgIGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3Byb2Nlc3MvJHtwcm9jZXNzSW5zdGFuY2VJZH1gLFxuICAgICAge31cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgZW5kcG9pbnQgd2lsbCBiZSByZW1vdmVkLiBVc2UgdGhlIGF1dGhvcml6ZWQgdGFzayBlbmRwb2ludHMgaW5zdGVhZC5cbiAgICovXG4gIGdldFByb2Nlc3NJbnN0YW5jZVRhc2tzKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFByb2Nlc3NJbnN0YW5jZVRhc2tbXT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5nZXQ8UHJvY2Vzc0luc3RhbmNlVGFza1tdPihgJHt0aGlzLnZhbHRpbW9FbmRwb2ludFVyaX12MS9wcm9jZXNzLyR7aWR9L3Rhc2tzYCwge30pXG4gICAgICAucGlwZShtYXAocmVzID0+IHJlcyB8fCBbXSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgZW5kcG9pbnQgaXMgcmVzdHJpY3RlZCB0byBhZG1pbmlzdHJhdG9ycyBhbmQgd2lsbCBiZSByZW1vdmVkLlxuICAgKi9cbiAgZ2V0UHJvY2Vzc0luc3RhbmNlVmFyaWFibGVzKGlkOiBzdHJpbmcsIHZhcmlhYmxlTmFtZXM6IEFycmF5PGFueT4pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgIGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3Byb2Nlc3MtaW5zdGFuY2UvJHtpZH0vdmFyaWFibGVzYCxcbiAgICAgIHZhcmlhYmxlTmFtZXNcbiAgICApO1xuICB9XG5cbiAgYWRkUHJvY2Vzc0luc3RhbmNlc0RlZmF1bHRWYXJpYWJsZXNWYWx1ZXMocHJvY2Vzc0luc3RhbmNlczogQXJyYXk8YW55Pikge1xuICAgIHByb2Nlc3NJbnN0YW5jZXMuZm9yRWFjaChwcm9jZXNzSW5zdGFuY2UgPT4gdGhpcy5hZGREZWZhdWx0VmFyaWFibGVzVmFsdWVzKHByb2Nlc3NJbnN0YW5jZSkpO1xuICAgIHJldHVybiBwcm9jZXNzSW5zdGFuY2VzO1xuICB9XG5cbiAgYWRkRGVmYXVsdFZhcmlhYmxlc1ZhbHVlcyhwcm9jZXNzSW5zdGFuY2U6IGFueSkge1xuICAgIGlmICghcHJvY2Vzc0luc3RhbmNlWydzdGFydFVzZXInXSkge1xuICAgICAgcHJvY2Vzc0luc3RhbmNlLnN0YXJ0VXNlciA9IHByb2Nlc3NJbnN0YW5jZS5zdGFydFVzZXJJZDtcbiAgICB9XG4gICAgaWYgKCFwcm9jZXNzSW5zdGFuY2VbJ3Byb2Nlc3NTdGFydGVkJ10pIHtcbiAgICAgIHByb2Nlc3NJbnN0YW5jZS5wcm9jZXNzU3RhcnRlZCA9IHByb2Nlc3NJbnN0YW5jZS5zdGFydFRpbWU7XG4gICAgfVxuICAgIGlmICghcHJvY2Vzc0luc3RhbmNlWydwcm9jZXNzRW5kZWQnXSkge1xuICAgICAgcHJvY2Vzc0luc3RhbmNlLnByb2Nlc3NFbmRlZCA9IHByb2Nlc3NJbnN0YW5jZS5lbmRUaW1lO1xuICAgIH1cbiAgICBpZiAoIXByb2Nlc3NJbnN0YW5jZVsnYWN0aXZlJ10pIHtcbiAgICAgIHByb2Nlc3NJbnN0YW5jZS5hY3RpdmUgPSBwcm9jZXNzSW5zdGFuY2UuZW5kVGltZSA9PSBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gcHJvY2Vzc0luc3RhbmNlO1xuICB9XG5cbiAgZ2V0SW5zdGFuY2VzU3RhdGlzdGljcyhmcm9tRGF0ZT86IHN0cmluZywgdG9EYXRlPzogc3RyaW5nLCBwcm9jZXNzRmlsdGVyPzogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcbiAgICBwYXJhbXMuc2V0KCdmcm9tRGF0ZScsIGZyb21EYXRlKTtcbiAgICBwYXJhbXMuc2V0KCd0b0RhdGUnLCB0b0RhdGUpO1xuICAgIHBhcmFtcy5zZXQoJ3Byb2Nlc3NGaWx0ZXInLCBwcm9jZXNzRmlsdGVyKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnlbXT4oYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djEvcmVwb3J0aW5nL2luc3RhbmNlc3N0YXRpc3RpY3NgLCB7XG4gICAgICBwYXJhbXMsXG4gICAgfSk7XG4gIH1cblxuICBkZXBsb3lQcm9jZXNzKHByb2Nlc3NYbWw6IHN0cmluZykge1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgbmV3IEZpbGUoW3Byb2Nlc3NYbWxdLCAncHJvY2Vzcy5icG1uJykpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZGVwbG95bWVudC1uYW1lJywgJ3ZhbHRpbW9Db25zb2xlQXBwJyk7XG4gICAgZm9ybURhdGEuYXBwZW5kKCdkZXBsb3ltZW50LXNvdXJjZScsICdwcm9jZXNzIGFwcGxpY2F0aW9uJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMudmFsdGltb0VuZHBvaW50VXJpfXYxL3Byb2Nlc3MvZGVmaW5pdGlvbi9kZXBsb3ltZW50YCwgZm9ybURhdGEpO1xuICB9XG5cbiAgbWlncmF0ZVByb2Nlc3MoXG4gICAgcHJvY2Vzc0RlZmluaXRpb24xSWQ6IHN0cmluZyxcbiAgICBwcm9jZXNzRGVmaW5pdGlvbjJJZDogc3RyaW5nLFxuICAgIHBhcmFtczogYW55XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgYCR7dGhpcy52YWx0aW1vRW5kcG9pbnRVcml9djEvcHJvY2Vzcy9kZWZpbml0aW9uLyR7cHJvY2Vzc0RlZmluaXRpb24xSWR9LyR7cHJvY2Vzc0RlZmluaXRpb24ySWR9L21pZ3JhdGVgLFxuICAgICAgcGFyYW1zXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -46,7 +46,7 @@ import heatmap from 'heatmap.js-fixed/build/heatmap.js';
|
|
|
46
46
|
*/
|
|
47
47
|
|
|
48
48
|
/*
|
|
49
|
-
* Copyright 2015-
|
|
49
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
50
50
|
*
|
|
51
51
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
52
52
|
* you may not use this file except in compliance with the License.
|
|
@@ -95,9 +95,16 @@ class ProcessService {
|
|
|
95
95
|
getProcessDefinitionXml(processDefinitionId) {
|
|
96
96
|
return this.http.get(`${this.valtimoEndpointUri}v1/process/definition/${processDefinitionId}/xml`);
|
|
97
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* @deprecated The generic endpoint is restricted to administrators. Use
|
|
100
|
+
* {@link getCaseProcessInstanceXml} (document VIEW) for case-related process diagrams.
|
|
101
|
+
*/
|
|
98
102
|
getProcessXml(id) {
|
|
99
103
|
return this.http.get(`${this.valtimoEndpointUri}v1/process/${id}/xml`);
|
|
100
104
|
}
|
|
105
|
+
getCaseProcessInstanceXml(caseId, processInstanceId) {
|
|
106
|
+
return this.http.get(`${this.valtimoEndpointUri}v1/process-document/case/${caseId}/process-instance/${processInstanceId}/xml`);
|
|
107
|
+
}
|
|
101
108
|
getProcessCount(id) {
|
|
102
109
|
return this.http.post(`${this.valtimoEndpointUri}v1/process/definition/${id}/count`, {
|
|
103
110
|
key: id,
|
|
@@ -110,6 +117,9 @@ class ProcessService {
|
|
|
110
117
|
getProcessHeatmapDuration(processDefinition) {
|
|
111
118
|
return this.http.get(`${this.valtimoEndpointUri}v1/process/definition/${processDefinition.key}/heatmap/duration?version=${processDefinition.version}`);
|
|
112
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* @deprecated This endpoint is restricted to administrators and will be removed.
|
|
122
|
+
*/
|
|
113
123
|
getProcessInstances(key, page, size, sort) {
|
|
114
124
|
const params = new HttpParams()
|
|
115
125
|
.set('page', page.toString())
|
|
@@ -117,14 +127,23 @@ class ProcessService {
|
|
|
117
127
|
.set('sort', sort);
|
|
118
128
|
return this.http.post(`${this.valtimoEndpointUri}v2/process/${key}/search`, {}, { params });
|
|
119
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* @deprecated This endpoint is restricted to administrators and will be removed.
|
|
132
|
+
*/
|
|
120
133
|
getProcessInstance(processInstanceId) {
|
|
121
134
|
return this.http.get(`${this.valtimoEndpointUri}v1/process/${processInstanceId}`, {});
|
|
122
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* @deprecated This endpoint will be removed. Use the authorized task endpoints instead.
|
|
138
|
+
*/
|
|
123
139
|
getProcessInstanceTasks(id) {
|
|
124
140
|
return this.http
|
|
125
141
|
.get(`${this.valtimoEndpointUri}v1/process/${id}/tasks`, {})
|
|
126
142
|
.pipe(map(res => res || []));
|
|
127
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* @deprecated This endpoint is restricted to administrators and will be removed.
|
|
146
|
+
*/
|
|
128
147
|
getProcessInstanceVariables(id, variableNames) {
|
|
129
148
|
return this.http.post(`${this.valtimoEndpointUri}v1/process-instance/${id}/variables`, variableNames);
|
|
130
149
|
}
|
|
@@ -177,7 +196,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
177
196
|
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.ConfigService }] });
|
|
178
197
|
|
|
179
198
|
/*
|
|
180
|
-
* Copyright 2015-
|
|
199
|
+
* Copyright 2015-2026 Ritense BV, the Netherlands.
|
|
181
200
|
*
|
|
182
201
|
* Licensed under EUPL, Version 1.2 (the "License");
|
|
183
202
|
* you may not use this file except in compliance with the License.
|
|
@@ -252,6 +271,9 @@ class ProcessDiagramComponent {
|
|
|
252
271
|
else if (changes['processInstanceId'] && this.processInstanceId) {
|
|
253
272
|
this.loadProcessInstanceXml(this.processInstanceId);
|
|
254
273
|
}
|
|
274
|
+
else if (changes['caseId'] && !changes['caseId'].firstChange && this.processInstanceId) {
|
|
275
|
+
this.loadProcessInstanceXml(this.processInstanceId);
|
|
276
|
+
}
|
|
255
277
|
else if (changes['reloadToken'] &&
|
|
256
278
|
!changes['reloadToken'].firstChange &&
|
|
257
279
|
this.processInstanceId) {
|
|
@@ -291,12 +313,18 @@ class ProcessDiagramComponent {
|
|
|
291
313
|
}
|
|
292
314
|
loadProcessInstanceXml(processInstanceId) {
|
|
293
315
|
this._imported = false;
|
|
294
|
-
this.
|
|
316
|
+
this.getProcessInstanceXml$(processInstanceId).subscribe(response => {
|
|
295
317
|
this.processDiagram = response;
|
|
296
318
|
this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);
|
|
297
319
|
this.bpmnJS.attachTo(this.el.nativeElement);
|
|
298
320
|
});
|
|
299
321
|
}
|
|
322
|
+
getProcessInstanceXml$(processInstanceId) {
|
|
323
|
+
if (this.caseId) {
|
|
324
|
+
return this.processService.getCaseProcessInstanceXml(this.caseId, processInstanceId);
|
|
325
|
+
}
|
|
326
|
+
return this.processService.getProcessXml(processInstanceId);
|
|
327
|
+
}
|
|
300
328
|
renderSkipTimerOverlays() {
|
|
301
329
|
if (!this.bpmnJS || !this._imported) {
|
|
302
330
|
return;
|
|
@@ -476,7 +504,7 @@ class ProcessDiagramComponent {
|
|
|
476
504
|
});
|
|
477
505
|
}
|
|
478
506
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProcessDiagramComponent, deps: [{ token: ProcessService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
479
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ProcessDiagramComponent, selector: "valtimo-process-diagram", inputs: { processDefinitionKey: "processDefinitionKey", processInstanceId: "processInstanceId", skippableTimers: "skippableTimers", canSkipTimer: "canSkipTimer", skipTimerLabel: "skipTimerLabel", reloadToken: "reloadToken" }, outputs: { importDone: "importDone", skipTimerEvent: "skipTimerEvent" }, viewQueries: [{ propertyName: "el", first: true, predicate: ["ref"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span> Amount of currently active\n instances of this task.</span\n >\n <span\n > | Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n", styles: [".process-diagram-container .diagram-container{height:50vh;width:100%}.process-diagram-container .diagram-container-switch-holder{position:absolute;width:100%;z-index:1000}.process-diagram-container .highlight-overlay-past:not(.djs-connection) .djs-visual>:nth-child(1){fill:#d8d8d8!important}.process-diagram-container .highlight-overlay-current:not(.djs-connection) .djs-visual>:nth-child(1){fill:#b2e0ff!important}.process-diagram-container .legenda-holder{font-size:1em}.process-diagram-container .legenda{border:2px solid black;border-radius:3px;padding:7px;display:inline-block;margin-bottom:-4px;margin-right:5px}.process-diagram-container .legenda.highlight-overlay-past{background-color:#d8d8d8}.process-diagram-container .legenda.highlight-overlay-current{background-color:#b2e0ff}.valtimo-skip-timer-overlay{align-items:center;background-color:var(--cds-button-primary);border:none;border-radius:50%;box-shadow:0 1px 3px var(--cds-shadow, rgba(0, 0, 0, .3));color:var(--cds-text-on-color);cursor:pointer;display:inline-flex;height:24px;justify-content:center;padding:0;width:24px}.valtimo-skip-timer-overlay:hover{background-color:var(--cds-button-primary-hover)}.valtimo-skip-timer-overlay:focus{outline:2px solid var(--cds-focus);outline-offset:1px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
507
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ProcessDiagramComponent, selector: "valtimo-process-diagram", inputs: { processDefinitionKey: "processDefinitionKey", processInstanceId: "processInstanceId", caseId: "caseId", skippableTimers: "skippableTimers", canSkipTimer: "canSkipTimer", skipTimerLabel: "skipTimerLabel", reloadToken: "reloadToken" }, outputs: { importDone: "importDone", skipTimerEvent: "skipTimerEvent" }, viewQueries: [{ propertyName: "el", first: true, predicate: ["ref"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span> Amount of currently active\n instances of this task.</span\n >\n <span\n > | Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n", styles: [".process-diagram-container .diagram-container{height:50vh;width:100%}.process-diagram-container .diagram-container-switch-holder{position:absolute;width:100%;z-index:1000}.process-diagram-container .highlight-overlay-past:not(.djs-connection) .djs-visual>:nth-child(1){fill:#d8d8d8!important}.process-diagram-container .highlight-overlay-current:not(.djs-connection) .djs-visual>:nth-child(1){fill:#b2e0ff!important}.process-diagram-container .legenda-holder{font-size:1em}.process-diagram-container .legenda{border:2px solid black;border-radius:3px;padding:7px;display:inline-block;margin-bottom:-4px;margin-right:5px}.process-diagram-container .legenda.highlight-overlay-past{background-color:#d8d8d8}.process-diagram-container .legenda.highlight-overlay-current{background-color:#b2e0ff}.valtimo-skip-timer-overlay{align-items:center;background-color:var(--cds-button-primary);border:none;border-radius:50%;box-shadow:0 1px 3px var(--cds-shadow, rgba(0, 0, 0, .3));color:var(--cds-text-on-color);cursor:pointer;display:inline-flex;height:24px;justify-content:center;padding:0;width:24px}.valtimo-skip-timer-overlay:hover{background-color:var(--cds-button-primary-hover)}.valtimo-skip-timer-overlay:focus{outline:2px solid var(--cds-focus);outline-offset:1px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
480
508
|
}
|
|
481
509
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProcessDiagramComponent, decorators: [{
|
|
482
510
|
type: Component,
|
|
@@ -492,6 +520,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
492
520
|
type: Input
|
|
493
521
|
}], processInstanceId: [{
|
|
494
522
|
type: Input
|
|
523
|
+
}], caseId: [{
|
|
524
|
+
type: Input
|
|
495
525
|
}], skippableTimers: [{
|
|
496
526
|
type: Input
|
|
497
527
|
}], canSkipTimer: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valtimo-process.mjs","sources":["../../../../projects/valtimo/process/src/lib/models/process.model.ts","../../../../projects/valtimo/process/src/lib/models/index.ts","../../../../projects/valtimo/process/src/lib/process.service.ts","../../../../projects/valtimo/process/src/lib/process-diagram/process-diagram.component.ts","../../../../projects/valtimo/process/src/lib/process-diagram/process-diagram.component.html","../../../../projects/valtimo/process/src/lib/process.module.ts","../../../../projects/valtimo/process/src/public_api.ts","../../../../projects/valtimo/process/src/valtimo-process.ts"],"sourcesContent":["/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface ProcessStart {\n key: string;\n businessKey: string;\n variables: Array<any>;\n}\n\nexport interface Process {\n id: string;\n businessKey: string;\n startTime: string;\n endTime: string;\n processDefinitionKey: string;\n processDefinitionName: string;\n startUserId: string;\n deleteReason: string;\n startUser: string;\n processStarted: string;\n processEnded: string;\n active: boolean;\n variables: ProcessInstanceVariable[];\n}\n\nexport interface ProcessDefinition {\n visibleInMenu: any;\n category: string;\n deploymentId: string;\n description: string;\n diagram: string;\n historyTimeToLive: string;\n id: string;\n key: string;\n name: string;\n resource: string;\n startableInTasklist: boolean;\n suspended: false;\n tenantId: string;\n version: number;\n versionTag: string;\n}\n\nexport interface ProcessDefinitionStartForm {\n formFields: Array<any>;\n formLocation: string;\n genericForm: boolean;\n}\n\nexport type StartProcessLinkType =\n | 'form'\n | 'form-flow'\n | 'form-view-model'\n | 'url'\n | 'ui-component';\n\nexport interface ProcessDefinitionStartProcessLink {\n processLinkId: string;\n type: StartProcessLinkType;\n properties: {\n formFlowInstanceId?: string;\n formDefinitionId?: string;\n prefilledForm?: any;\n formName?: string;\n formDefinition?: object;\n url?: string;\n componentKey?: string;\n };\n}\n\nexport interface ProcessInstance {\n id: string;\n businessKey: string;\n startTime: string;\n endTime: string;\n processDefinitionKey: string;\n processDefinitionName: string;\n startUserId: string;\n deleteReason: string;\n variables: ProcessInstanceVariable[];\n}\n\nexport interface ProcessInstanceVariable {\n id: string;\n type: string;\n name: string;\n textValue?: string;\n longValue?: number;\n local: boolean;\n}\n\nexport interface ProcessInstanceTask {\n id: string;\n name: string;\n assignee: string;\n created: string;\n createdUnix: number;\n due?: string;\n dueUnix?: number;\n followUp: string;\n delegationState: string;\n description: string;\n executionId: string;\n owner: string;\n parentTaskId: string;\n priority: number;\n processDefinitionId: string;\n processInstanceId: string;\n taskDefinitionKey: string;\n caseExecutionId: string;\n caseInstanceId: string;\n caseDefinitionId: string;\n suspended: boolean;\n formKey: string;\n tenantId: string;\n identityLinks: IdentityLink[];\n isLocked: boolean;\n}\n\nexport interface IdentityLink {\n userId: string;\n groupId: string;\n type: string;\n}\n\nexport interface SkippableTimer {\n jobId: string;\n activityId: string | null;\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './process.model';\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpParams} from '@angular/common/http';\nimport {map, Observable} from 'rxjs';\nimport {\n ProcessDefinition,\n ProcessDefinitionStartForm,\n ProcessDefinitionStartProcessLink,\n ProcessInstance,\n ProcessInstanceTask,\n ProcessStart,\n} from './models';\nimport {ConfigService, Page} from '@valtimo/config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessService {\n private valtimoEndpointUri: string;\n\n constructor(\n private http: HttpClient,\n configService: ConfigService\n ) {\n this.valtimoEndpointUri = configService.config.valtimoApi.endpointUri;\n }\n\n getProcessDefinitions(): Observable<ProcessDefinition[]> {\n return this.http.get<ProcessDefinition[]>(`${this.valtimoEndpointUri}v1/process/definition`);\n }\n\n getProcessDefinitionVersions(key: string): Observable<ProcessDefinition[]> {\n return this.http.get<ProcessDefinition[]>(\n `${this.valtimoEndpointUri}v1/process/definition/${key}/versions`\n );\n }\n\n getProcessDefinition(key: string): Observable<ProcessDefinition> {\n return this.http.get<ProcessDefinition>(\n `${this.valtimoEndpointUri}v1/process/definition/${key}`\n );\n }\n\n getProcessDefinitionStartFormData(\n processDefinitionKey: string\n ): Observable<ProcessDefinitionStartForm> {\n return this.http.get<ProcessDefinitionStartForm>(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinitionKey}/start-form`\n );\n }\n\n getProcessDefinitionStartProcessLink(\n processDefinitionId: string,\n documentId: string,\n documentDefinitionName: string\n ): Observable<ProcessDefinitionStartProcessLink> {\n const params = {};\n if (documentId != null) {\n params['documentId'] = documentId;\n }\n if (documentDefinitionName != null) {\n params['documentDefinitionName'] = documentDefinitionName;\n }\n\n return this.http.get<ProcessDefinitionStartProcessLink>(\n `${this.valtimoEndpointUri}v1/process-definition/${processDefinitionId}/start-form`,\n {\n params,\n }\n );\n }\n\n startProcesInstance(\n key: string,\n businessKey: string,\n variables: Map<string, any>\n ): Observable<any> {\n return this.http.post<ProcessStart>(\n `${this.valtimoEndpointUri}v1/process/definition/${key}/${businessKey}/start`,\n variables\n );\n }\n\n getProcessDefinitionXml(processDefinitionId: string): Observable<any> {\n return this.http.get(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinitionId}/xml`\n );\n }\n\n getProcessXml(id: string): Observable<any> {\n return this.http.get(`${this.valtimoEndpointUri}v1/process/${id}/xml`);\n }\n\n getProcessCount(id: string): Observable<any> {\n return this.http.post(`${this.valtimoEndpointUri}v1/process/definition/${id}/count`, {\n key: id,\n processVariables: [{'@type': 'boolean', name: 'active', value: true}],\n });\n }\n\n getProcessHeatmapCount(processDefinition: ProcessDefinition): Observable<any[]> {\n return this.http.get<any[]>(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinition.key}/heatmap/count?version=${processDefinition.version}`\n );\n }\n\n getProcessHeatmapDuration(processDefinition: ProcessDefinition): Observable<any[]> {\n return this.http.get<any[]>(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinition.key}/heatmap/duration?version=${processDefinition.version}`\n );\n }\n\n getProcessInstances(key: string, page: number, size: number, sort: string): Observable<any> {\n const params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString())\n .set('sort', sort);\n\n return this.http.post<Page<ProcessInstance>>(\n `${this.valtimoEndpointUri}v2/process/${key}/search`,\n {},\n {params}\n );\n }\n\n getProcessInstance(processInstanceId: string): Observable<ProcessInstance> {\n return this.http.get<ProcessInstance>(\n `${this.valtimoEndpointUri}v1/process/${processInstanceId}`,\n {}\n );\n }\n\n getProcessInstanceTasks(id: string): Observable<ProcessInstanceTask[]> {\n return this.http\n .get<ProcessInstanceTask[]>(`${this.valtimoEndpointUri}v1/process/${id}/tasks`, {})\n .pipe(map(res => res || []));\n }\n\n getProcessInstanceVariables(id: string, variableNames: Array<any>): Observable<any> {\n return this.http.post(\n `${this.valtimoEndpointUri}v1/process-instance/${id}/variables`,\n variableNames\n );\n }\n\n addProcessInstancesDefaultVariablesValues(processInstances: Array<any>) {\n processInstances.forEach(processInstance => this.addDefaultVariablesValues(processInstance));\n return processInstances;\n }\n\n addDefaultVariablesValues(processInstance: any) {\n if (!processInstance['startUser']) {\n processInstance.startUser = processInstance.startUserId;\n }\n if (!processInstance['processStarted']) {\n processInstance.processStarted = processInstance.startTime;\n }\n if (!processInstance['processEnded']) {\n processInstance.processEnded = processInstance.endTime;\n }\n if (!processInstance['active']) {\n processInstance.active = processInstance.endTime == null;\n }\n return processInstance;\n }\n\n getInstancesStatistics(fromDate?: string, toDate?: string, processFilter?: string) {\n const params = new HttpParams();\n params.set('fromDate', fromDate);\n params.set('toDate', toDate);\n params.set('processFilter', processFilter);\n return this.http.get<any[]>(`${this.valtimoEndpointUri}v1/reporting/instancesstatistics`, {\n params,\n });\n }\n\n deployProcess(processXml: string) {\n const formData = new FormData();\n formData.append('file', new File([processXml], 'process.bpmn'));\n formData.append('deployment-name', 'valtimoConsoleApp');\n formData.append('deployment-source', 'process application');\n return this.http.post(`${this.valtimoEndpointUri}v1/process/definition/deployment`, formData);\n }\n\n migrateProcess(\n processDefinition1Id: string,\n processDefinition2Id: string,\n params: any\n ): Observable<any> {\n return this.http.post(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinition1Id}/${processDefinition2Id}/migrate`,\n params\n );\n }\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {ProcessService} from '../process.service';\nimport {SkippableTimer} from '../models';\n\nimport BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';\nimport heatmap from 'heatmap.js-fixed/build/heatmap.js';\n\n@Component({\n selector: 'valtimo-process-diagram',\n templateUrl: './process-diagram.component.html',\n styleUrls: ['./process-diagram.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProcessDiagramComponent implements OnInit, OnDestroy, OnChanges {\n private bpmnJS: BpmnJS;\n private heatMapInstance: any;\n private _imported = false;\n private _skipOverlayIds: string[] = [];\n\n @ViewChild('ref', {static: true}) public el: ElementRef;\n @Output() public importDone: EventEmitter<any> = new EventEmitter();\n @Output() public skipTimerEvent: EventEmitter<SkippableTimer> = new EventEmitter();\n @Input() public processDefinitionKey?: string;\n @Input() public processInstanceId?: string;\n @Input() public skippableTimers: SkippableTimer[] = [];\n @Input() public canSkipTimer = false;\n @Input() public skipTimerLabel = 'Skip timer';\n @Input() public reloadToken?: number;\n\n public processDiagram: any;\n public processDefinition: any;\n public processDefinitionVersions: any;\n public heatmapCount: any;\n public heatmapDuration: any;\n public tasksCount: any;\n public showHeatmap: boolean;\n public enumHeatmapOptions = ['count', 'duration'];\n public heatmapOption: string;\n public version: any;\n public heatPoints: any;\n public min: number;\n public max: number;\n public inputData: any;\n public valueKey: any;\n\n constructor(private processService: ProcessService) {}\n\n ngOnInit() {\n if (this.processDefinitionKey) {\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n }\n if (this.processInstanceId) {\n this.loadProcessInstanceXml(this.processInstanceId);\n }\n this.bpmnJS = new BpmnJS();\n this.bpmnJS.on('import.done', ({error}) => {\n if (!error) {\n const canvas = this.bpmnJS.get('canvas');\n const eventBus = this.bpmnJS.get('eventBus');\n if (this.processDiagram.historicActivityInstances) {\n this.processDiagram.historicActivityInstances.forEach(instance => {\n // exclude multiInstanceBody\n if (instance.activityType !== 'multiInstanceBody') {\n canvas.addMarker(\n instance.activityId,\n instance.endTime ? 'highlight-overlay-past' : 'highlight-overlay-current'\n );\n }\n });\n }\n\n this._imported = true;\n this.renderSkipTimerOverlays();\n\n canvas.zoom('fit-viewport', 'auto');\n if (this.processDefinitionVersions) {\n eventBus.on('canvas.init', () => {\n if (this.showHeatmap) {\n this.clearHeatmap();\n }\n this.loadHeatmapData();\n });\n eventBus.on('canvas.viewbox.changing', () => {\n if (this.showHeatmap) {\n this.clearHeatmap();\n }\n });\n eventBus.on('canvas.viewbox.changed', () => {\n this.loadHeatmapData();\n });\n }\n }\n });\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['processDefinitionKey'] && this.processDefinitionKey) {\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n } else if (changes['processInstanceId'] && this.processInstanceId) {\n this.loadProcessInstanceXml(this.processInstanceId);\n } else if (\n changes['reloadToken'] &&\n !changes['reloadToken'].firstChange &&\n this.processInstanceId\n ) {\n this.loadProcessInstanceXml(this.processInstanceId);\n }\n\n if (changes['skippableTimers'] || changes['canSkipTimer']) {\n this.renderSkipTimerOverlays();\n }\n }\n\n public ngOnDestroy() {\n if (this.bpmnJS) {\n this.bpmnJS.destroy();\n }\n }\n\n public loadProcessDefinition(processDefinitionKey) {\n this.processService.getProcessDefinition(processDefinitionKey).subscribe(response => {\n this.heatmapOption = this.enumHeatmapOptions[0];\n this.version = response.version;\n this.loadProcessDefinitionXml(response.id);\n });\n }\n\n public loadProcessDefinitionVersions(processDefinitionKey) {\n this.processService.getProcessDefinitionVersions(processDefinitionKey).subscribe(response => {\n this.processDefinitionVersions = response;\n });\n }\n\n public loadProcessDefinitionFromKey(processDefinitionKey) {\n this.loadProcessDefinitionVersions(processDefinitionKey);\n this.loadProcessDefinition(processDefinitionKey);\n }\n\n public loadProcessDefinitionXml(processDefinitionId) {\n this.processService.getProcessDefinitionXml(processDefinitionId).subscribe(response => {\n this.processDiagram = response;\n this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);\n this.bpmnJS.attachTo(this.el.nativeElement);\n });\n }\n\n private loadProcessInstanceXml(processInstanceId) {\n this._imported = false;\n this.processService.getProcessXml(processInstanceId).subscribe(response => {\n this.processDiagram = response;\n this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);\n this.bpmnJS.attachTo(this.el.nativeElement);\n });\n }\n\n private renderSkipTimerOverlays(): void {\n if (!this.bpmnJS || !this._imported) {\n return;\n }\n\n const overlays = this.bpmnJS.get('overlays') as any;\n this._skipOverlayIds.forEach(overlayId => {\n try {\n overlays.remove(overlayId);\n } catch {\n // overlay already gone (e.g. after a diagram re-import); ignore\n }\n });\n this._skipOverlayIds = [];\n\n if (!this.canSkipTimer || !this.skippableTimers?.length) {\n return;\n }\n\n this.skippableTimers.forEach(timer => {\n if (!timer.activityId) {\n return;\n }\n\n const button = document.createElement('button');\n button.type = 'button';\n button.className = 'valtimo-skip-timer-overlay';\n button.title = this.skipTimerLabel;\n button.setAttribute('aria-label', this.skipTimerLabel);\n button.innerHTML =\n '<svg width=\"16\" height=\"16\" viewBox=\"0 0 32 32\" aria-hidden=\"true\" focusable=\"false\">' +\n '<path fill=\"currentColor\" d=\"M8 26V6l14 10L8 26z M24 6h2v20h-2z\"/></svg>';\n button.addEventListener('click', (event: MouseEvent) => {\n event.stopPropagation();\n this.skipTimerEvent.emit(timer);\n });\n\n try {\n const overlayId = overlays.add(timer.activityId, {\n position: {top: -14, right: 14},\n show: {minZoom: 0, maxZoom: 5.0},\n html: button,\n });\n this._skipOverlayIds.push(overlayId);\n } catch {\n // activity not present in the rendered diagram; nothing to attach to\n }\n });\n }\n\n public loadProcessDefinitionHeatmapCount(processDefinition) {\n this.processService.getProcessHeatmapCount(processDefinition).subscribe(response => {\n this.inputData = response;\n this.valueKey = 'totalCount';\n this.heatPoints = {data: []};\n this.min = 0;\n this.max = 0;\n\n Object.keys(this.inputData).forEach(key => {\n const diagramContainer = this.el.nativeElement.querySelector('svg').getBoundingClientRect();\n const diagramElm = this.el.nativeElement\n .querySelector(`g[data-element-id=${key}]`)\n .getBoundingClientRect();\n this.setMax(key);\n this.heatPoints.data.push({\n x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),\n y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),\n value: this.inputData[key][this.valueKey],\n radius: diagramElm.width / 2,\n });\n this.addCounterActiveOverlays(key, this.inputData);\n });\n this.clearHeatmap();\n if (this.showHeatmap) {\n this.loadHeatmap();\n }\n });\n }\n\n public onWindowResize() {\n const oldCanvas = this.el.nativeElement.querySelector('canvas[class=heatmap-canvas]');\n if (oldCanvas) {\n oldCanvas.remove();\n this.heatMapInstance = null;\n }\n if (this.showHeatmap) {\n this.loadHeatmap();\n }\n }\n\n public loadProcessDefinitionHeatmapDuration(processDefinition) {\n this.processService.getProcessHeatmapDuration(processDefinition).subscribe(response => {\n this.inputData = response;\n this.valueKey = 'averageDurationInMilliseconds';\n this.heatPoints = {data: []};\n this.min = 0;\n this.max = 0;\n\n Object.keys(this.inputData).forEach(key => {\n const diagramContainer = this.el.nativeElement.querySelector('svg').getBoundingClientRect();\n const diagramElm = this.el.nativeElement\n .querySelector(`g[data-element-id=${key}]`)\n .getBoundingClientRect();\n this.setMax(key);\n this.heatPoints.data.push({\n x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),\n y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),\n value: this.inputData[key][this.valueKey],\n radius: diagramElm.width / 2,\n });\n this.addCounterActiveOverlays(key, this.inputData);\n });\n this.clearHeatmap();\n if (this.showHeatmap) {\n this.loadHeatmap();\n }\n });\n }\n\n public setProcessDefinitionKey(processDefinitionKey) {\n this.processDefinitionKey = processDefinitionKey;\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n }\n\n public setProcessDefinitionVersion(version) {\n this.version = +version;\n this.loadHeatmapData();\n }\n\n public setHeatmapOption(heatmapOption) {\n this.heatmapOption = heatmapOption;\n this.loadHeatmapData();\n }\n\n public toggleShowHeatmap() {\n this.showHeatmap = !this.showHeatmap;\n this.loadHeatmapData();\n }\n\n public loadHeatmap() {\n if (!this.heatMapInstance) {\n this.heatMapInstance = heatmap.create({\n radius: 54,\n blur: 0.7,\n maxOpacity: 0.4,\n minOpacity: 0,\n container: this.el.nativeElement,\n });\n }\n this.heatMapInstance.setData({\n min: this.min,\n max: this.max,\n data: this.heatPoints.data,\n });\n }\n\n public clearHeatmap() {\n if (this.heatMapInstance) {\n this.heatMapInstance.setData({data: []});\n }\n }\n\n public loadHeatmapData() {\n this.processDefinition = this.processDefinitionVersions.find(\n definition => definition.version === this.version\n );\n\n if (this.heatmapOption === 'count') {\n this.loadProcessDefinitionHeatmapCount(this.processDefinition);\n }\n if (this.heatmapOption === 'duration') {\n this.loadProcessDefinitionHeatmapDuration(this.processDefinition);\n }\n }\n\n public setMax(key: any) {\n if (this.heatmapDuration) {\n this.max = Math.max(this.heatmapDuration[key].averageDurationInMilliseconds, this.max);\n } else if (this.heatmapCount) {\n this.max = Math.max(\n this.heatmapCount[key].totalCount + this.heatmapCount[key].count,\n this.max\n );\n }\n }\n\n public addCounterActiveOverlays(key: any, inputData: any) {\n const overlays = this.bpmnJS.get('overlays');\n overlays.add(key, {\n position: {\n bottom: 13,\n left: -12,\n },\n show: {\n minZoom: 0,\n maxZoom: 5.0,\n },\n html: `<span class=\"badge badge-pill badge-primary\">${inputData[key].count}</span>`,\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span> Amount of currently active\n instances of this task.</span\n >\n <span\n > | Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n BpmnJsDiagramModule,\n CamundaFormModule,\n ListModule,\n TimelineModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ToastrModule} from 'ngx-toastr';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {ProcessDiagramComponent} from './process-diagram/process-diagram.component';\n\n@NgModule({\n declarations: [ProcessDiagramComponent],\n imports: [\n CommonModule,\n ListModule,\n WidgetModule,\n TimelineModule,\n BpmnJsDiagramModule,\n CamundaFormModule,\n BrowserAnimationsModule,\n ToastrModule.forRoot({\n positionClass: 'toast-bottom-full-width',\n preventDuplicates: true,\n }),\n ],\n exports: [ProcessDiagramComponent],\n})\nexport class ProcessModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of process\n */\n\nexport * from './lib/models';\nexport * from './lib/process.service';\nexport * from './lib/process.module';\nexport * from './lib/process-diagram/process-diagram.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ProcessService","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"valtimo-process.mjs","sources":["../../../../projects/valtimo/process/src/lib/models/process.model.ts","../../../../projects/valtimo/process/src/lib/models/index.ts","../../../../projects/valtimo/process/src/lib/process.service.ts","../../../../projects/valtimo/process/src/lib/process-diagram/process-diagram.component.ts","../../../../projects/valtimo/process/src/lib/process-diagram/process-diagram.component.html","../../../../projects/valtimo/process/src/lib/process.module.ts","../../../../projects/valtimo/process/src/public_api.ts","../../../../projects/valtimo/process/src/valtimo-process.ts"],"sourcesContent":["/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface ProcessStart {\n key: string;\n businessKey: string;\n variables: Array<any>;\n}\n\nexport interface Process {\n id: string;\n businessKey: string;\n startTime: string;\n endTime: string;\n processDefinitionKey: string;\n processDefinitionName: string;\n startUserId: string;\n deleteReason: string;\n startUser: string;\n processStarted: string;\n processEnded: string;\n active: boolean;\n variables: ProcessInstanceVariable[];\n}\n\nexport interface ProcessDefinition {\n visibleInMenu: any;\n category: string;\n deploymentId: string;\n description: string;\n diagram: string;\n historyTimeToLive: string;\n id: string;\n key: string;\n name: string;\n resource: string;\n startableInTasklist: boolean;\n suspended: false;\n tenantId: string;\n version: number;\n versionTag: string;\n}\n\nexport interface ProcessDefinitionStartForm {\n formFields: Array<any>;\n formLocation: string;\n genericForm: boolean;\n}\n\nexport type StartProcessLinkType =\n | 'form'\n | 'form-flow'\n | 'form-view-model'\n | 'url'\n | 'ui-component';\n\nexport interface ProcessDefinitionStartProcessLink {\n processLinkId: string;\n type: StartProcessLinkType;\n properties: {\n formFlowInstanceId?: string;\n formDefinitionId?: string;\n prefilledForm?: any;\n formName?: string;\n formDefinition?: object;\n url?: string;\n componentKey?: string;\n };\n}\n\nexport interface ProcessInstance {\n id: string;\n businessKey: string;\n startTime: string;\n endTime: string;\n processDefinitionKey: string;\n processDefinitionName: string;\n startUserId: string;\n deleteReason: string;\n variables: ProcessInstanceVariable[];\n}\n\nexport interface ProcessInstanceVariable {\n id: string;\n type: string;\n name: string;\n textValue?: string;\n longValue?: number;\n local: boolean;\n}\n\nexport interface ProcessInstanceTask {\n id: string;\n name: string;\n assignee: string;\n created: string;\n createdUnix: number;\n due?: string;\n dueUnix?: number;\n followUp: string;\n delegationState: string;\n description: string;\n executionId: string;\n owner: string;\n parentTaskId: string;\n priority: number;\n processDefinitionId: string;\n processInstanceId: string;\n taskDefinitionKey: string;\n caseExecutionId: string;\n caseInstanceId: string;\n caseDefinitionId: string;\n suspended: boolean;\n formKey: string;\n tenantId: string;\n identityLinks: IdentityLink[];\n isLocked: boolean;\n}\n\nexport interface IdentityLink {\n userId: string;\n groupId: string;\n type: string;\n}\n\nexport interface SkippableTimer {\n jobId: string;\n activityId: string | null;\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './process.model';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\nimport {HttpClient, HttpParams} from '@angular/common/http';\nimport {map, Observable} from 'rxjs';\nimport {\n ProcessDefinition,\n ProcessDefinitionStartForm,\n ProcessDefinitionStartProcessLink,\n ProcessInstance,\n ProcessInstanceTask,\n ProcessStart,\n} from './models';\nimport {ConfigService, Page} from '@valtimo/config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProcessService {\n private valtimoEndpointUri: string;\n\n constructor(\n private http: HttpClient,\n configService: ConfigService\n ) {\n this.valtimoEndpointUri = configService.config.valtimoApi.endpointUri;\n }\n\n getProcessDefinitions(): Observable<ProcessDefinition[]> {\n return this.http.get<ProcessDefinition[]>(`${this.valtimoEndpointUri}v1/process/definition`);\n }\n\n getProcessDefinitionVersions(key: string): Observable<ProcessDefinition[]> {\n return this.http.get<ProcessDefinition[]>(\n `${this.valtimoEndpointUri}v1/process/definition/${key}/versions`\n );\n }\n\n getProcessDefinition(key: string): Observable<ProcessDefinition> {\n return this.http.get<ProcessDefinition>(\n `${this.valtimoEndpointUri}v1/process/definition/${key}`\n );\n }\n\n getProcessDefinitionStartFormData(\n processDefinitionKey: string\n ): Observable<ProcessDefinitionStartForm> {\n return this.http.get<ProcessDefinitionStartForm>(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinitionKey}/start-form`\n );\n }\n\n getProcessDefinitionStartProcessLink(\n processDefinitionId: string,\n documentId: string,\n documentDefinitionName: string\n ): Observable<ProcessDefinitionStartProcessLink> {\n const params = {};\n if (documentId != null) {\n params['documentId'] = documentId;\n }\n if (documentDefinitionName != null) {\n params['documentDefinitionName'] = documentDefinitionName;\n }\n\n return this.http.get<ProcessDefinitionStartProcessLink>(\n `${this.valtimoEndpointUri}v1/process-definition/${processDefinitionId}/start-form`,\n {\n params,\n }\n );\n }\n\n startProcesInstance(\n key: string,\n businessKey: string,\n variables: Map<string, any>\n ): Observable<any> {\n return this.http.post<ProcessStart>(\n `${this.valtimoEndpointUri}v1/process/definition/${key}/${businessKey}/start`,\n variables\n );\n }\n\n getProcessDefinitionXml(processDefinitionId: string): Observable<any> {\n return this.http.get(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinitionId}/xml`\n );\n }\n\n /**\n * @deprecated The generic endpoint is restricted to administrators. Use\n * {@link getCaseProcessInstanceXml} (document VIEW) for case-related process diagrams.\n */\n getProcessXml(id: string): Observable<any> {\n return this.http.get(`${this.valtimoEndpointUri}v1/process/${id}/xml`);\n }\n\n getCaseProcessInstanceXml(caseId: string, processInstanceId: string): Observable<any> {\n return this.http.get(\n `${this.valtimoEndpointUri}v1/process-document/case/${caseId}/process-instance/${processInstanceId}/xml`\n );\n }\n\n getProcessCount(id: string): Observable<any> {\n return this.http.post(`${this.valtimoEndpointUri}v1/process/definition/${id}/count`, {\n key: id,\n processVariables: [{'@type': 'boolean', name: 'active', value: true}],\n });\n }\n\n getProcessHeatmapCount(processDefinition: ProcessDefinition): Observable<any[]> {\n return this.http.get<any[]>(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinition.key}/heatmap/count?version=${processDefinition.version}`\n );\n }\n\n getProcessHeatmapDuration(processDefinition: ProcessDefinition): Observable<any[]> {\n return this.http.get<any[]>(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinition.key}/heatmap/duration?version=${processDefinition.version}`\n );\n }\n\n /**\n * @deprecated This endpoint is restricted to administrators and will be removed.\n */\n getProcessInstances(key: string, page: number, size: number, sort: string): Observable<any> {\n const params = new HttpParams()\n .set('page', page.toString())\n .set('size', size.toString())\n .set('sort', sort);\n\n return this.http.post<Page<ProcessInstance>>(\n `${this.valtimoEndpointUri}v2/process/${key}/search`,\n {},\n {params}\n );\n }\n\n /**\n * @deprecated This endpoint is restricted to administrators and will be removed.\n */\n getProcessInstance(processInstanceId: string): Observable<ProcessInstance> {\n return this.http.get<ProcessInstance>(\n `${this.valtimoEndpointUri}v1/process/${processInstanceId}`,\n {}\n );\n }\n\n /**\n * @deprecated This endpoint will be removed. Use the authorized task endpoints instead.\n */\n getProcessInstanceTasks(id: string): Observable<ProcessInstanceTask[]> {\n return this.http\n .get<ProcessInstanceTask[]>(`${this.valtimoEndpointUri}v1/process/${id}/tasks`, {})\n .pipe(map(res => res || []));\n }\n\n /**\n * @deprecated This endpoint is restricted to administrators and will be removed.\n */\n getProcessInstanceVariables(id: string, variableNames: Array<any>): Observable<any> {\n return this.http.post(\n `${this.valtimoEndpointUri}v1/process-instance/${id}/variables`,\n variableNames\n );\n }\n\n addProcessInstancesDefaultVariablesValues(processInstances: Array<any>) {\n processInstances.forEach(processInstance => this.addDefaultVariablesValues(processInstance));\n return processInstances;\n }\n\n addDefaultVariablesValues(processInstance: any) {\n if (!processInstance['startUser']) {\n processInstance.startUser = processInstance.startUserId;\n }\n if (!processInstance['processStarted']) {\n processInstance.processStarted = processInstance.startTime;\n }\n if (!processInstance['processEnded']) {\n processInstance.processEnded = processInstance.endTime;\n }\n if (!processInstance['active']) {\n processInstance.active = processInstance.endTime == null;\n }\n return processInstance;\n }\n\n getInstancesStatistics(fromDate?: string, toDate?: string, processFilter?: string) {\n const params = new HttpParams();\n params.set('fromDate', fromDate);\n params.set('toDate', toDate);\n params.set('processFilter', processFilter);\n return this.http.get<any[]>(`${this.valtimoEndpointUri}v1/reporting/instancesstatistics`, {\n params,\n });\n }\n\n deployProcess(processXml: string) {\n const formData = new FormData();\n formData.append('file', new File([processXml], 'process.bpmn'));\n formData.append('deployment-name', 'valtimoConsoleApp');\n formData.append('deployment-source', 'process application');\n return this.http.post(`${this.valtimoEndpointUri}v1/process/definition/deployment`, formData);\n }\n\n migrateProcess(\n processDefinition1Id: string,\n processDefinition2Id: string,\n params: any\n ): Observable<any> {\n return this.http.post(\n `${this.valtimoEndpointUri}v1/process/definition/${processDefinition1Id}/${processDefinition2Id}/migrate`,\n params\n );\n }\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {ProcessService} from '../process.service';\nimport {SkippableTimer} from '../models';\n\nimport BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';\nimport heatmap from 'heatmap.js-fixed/build/heatmap.js';\n\n@Component({\n selector: 'valtimo-process-diagram',\n templateUrl: './process-diagram.component.html',\n styleUrls: ['./process-diagram.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class ProcessDiagramComponent implements OnInit, OnDestroy, OnChanges {\n private bpmnJS: BpmnJS;\n private heatMapInstance: any;\n private _imported = false;\n private _skipOverlayIds: string[] = [];\n\n @ViewChild('ref', {static: true}) public el: ElementRef;\n @Output() public importDone: EventEmitter<any> = new EventEmitter();\n @Output() public skipTimerEvent: EventEmitter<SkippableTimer> = new EventEmitter();\n @Input() public processDefinitionKey?: string;\n @Input() public processInstanceId?: string;\n @Input() public caseId?: string;\n @Input() public skippableTimers: SkippableTimer[] = [];\n @Input() public canSkipTimer = false;\n @Input() public skipTimerLabel = 'Skip timer';\n @Input() public reloadToken?: number;\n\n public processDiagram: any;\n public processDefinition: any;\n public processDefinitionVersions: any;\n public heatmapCount: any;\n public heatmapDuration: any;\n public tasksCount: any;\n public showHeatmap: boolean;\n public enumHeatmapOptions = ['count', 'duration'];\n public heatmapOption: string;\n public version: any;\n public heatPoints: any;\n public min: number;\n public max: number;\n public inputData: any;\n public valueKey: any;\n\n constructor(private processService: ProcessService) {}\n\n ngOnInit() {\n if (this.processDefinitionKey) {\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n }\n if (this.processInstanceId) {\n this.loadProcessInstanceXml(this.processInstanceId);\n }\n this.bpmnJS = new BpmnJS();\n this.bpmnJS.on('import.done', ({error}) => {\n if (!error) {\n const canvas = this.bpmnJS.get('canvas');\n const eventBus = this.bpmnJS.get('eventBus');\n if (this.processDiagram.historicActivityInstances) {\n this.processDiagram.historicActivityInstances.forEach(instance => {\n // exclude multiInstanceBody\n if (instance.activityType !== 'multiInstanceBody') {\n canvas.addMarker(\n instance.activityId,\n instance.endTime ? 'highlight-overlay-past' : 'highlight-overlay-current'\n );\n }\n });\n }\n\n this._imported = true;\n this.renderSkipTimerOverlays();\n\n canvas.zoom('fit-viewport', 'auto');\n if (this.processDefinitionVersions) {\n eventBus.on('canvas.init', () => {\n if (this.showHeatmap) {\n this.clearHeatmap();\n }\n this.loadHeatmapData();\n });\n eventBus.on('canvas.viewbox.changing', () => {\n if (this.showHeatmap) {\n this.clearHeatmap();\n }\n });\n eventBus.on('canvas.viewbox.changed', () => {\n this.loadHeatmapData();\n });\n }\n }\n });\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (changes['processDefinitionKey'] && this.processDefinitionKey) {\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n } else if (changes['processInstanceId'] && this.processInstanceId) {\n this.loadProcessInstanceXml(this.processInstanceId);\n } else if (changes['caseId'] && !changes['caseId'].firstChange && this.processInstanceId) {\n this.loadProcessInstanceXml(this.processInstanceId);\n } else if (\n changes['reloadToken'] &&\n !changes['reloadToken'].firstChange &&\n this.processInstanceId\n ) {\n this.loadProcessInstanceXml(this.processInstanceId);\n }\n\n if (changes['skippableTimers'] || changes['canSkipTimer']) {\n this.renderSkipTimerOverlays();\n }\n }\n\n public ngOnDestroy() {\n if (this.bpmnJS) {\n this.bpmnJS.destroy();\n }\n }\n\n public loadProcessDefinition(processDefinitionKey) {\n this.processService.getProcessDefinition(processDefinitionKey).subscribe(response => {\n this.heatmapOption = this.enumHeatmapOptions[0];\n this.version = response.version;\n this.loadProcessDefinitionXml(response.id);\n });\n }\n\n public loadProcessDefinitionVersions(processDefinitionKey) {\n this.processService.getProcessDefinitionVersions(processDefinitionKey).subscribe(response => {\n this.processDefinitionVersions = response;\n });\n }\n\n public loadProcessDefinitionFromKey(processDefinitionKey) {\n this.loadProcessDefinitionVersions(processDefinitionKey);\n this.loadProcessDefinition(processDefinitionKey);\n }\n\n public loadProcessDefinitionXml(processDefinitionId) {\n this.processService.getProcessDefinitionXml(processDefinitionId).subscribe(response => {\n this.processDiagram = response;\n this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);\n this.bpmnJS.attachTo(this.el.nativeElement);\n });\n }\n\n private loadProcessInstanceXml(processInstanceId) {\n this._imported = false;\n this.getProcessInstanceXml$(processInstanceId).subscribe(response => {\n this.processDiagram = response;\n this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);\n this.bpmnJS.attachTo(this.el.nativeElement);\n });\n }\n\n private getProcessInstanceXml$(processInstanceId: string): Observable<any> {\n if (this.caseId) {\n return this.processService.getCaseProcessInstanceXml(this.caseId, processInstanceId);\n }\n return this.processService.getProcessXml(processInstanceId);\n }\n\n private renderSkipTimerOverlays(): void {\n if (!this.bpmnJS || !this._imported) {\n return;\n }\n\n const overlays = this.bpmnJS.get('overlays') as any;\n this._skipOverlayIds.forEach(overlayId => {\n try {\n overlays.remove(overlayId);\n } catch {\n // overlay already gone (e.g. after a diagram re-import); ignore\n }\n });\n this._skipOverlayIds = [];\n\n if (!this.canSkipTimer || !this.skippableTimers?.length) {\n return;\n }\n\n this.skippableTimers.forEach(timer => {\n if (!timer.activityId) {\n return;\n }\n\n const button = document.createElement('button');\n button.type = 'button';\n button.className = 'valtimo-skip-timer-overlay';\n button.title = this.skipTimerLabel;\n button.setAttribute('aria-label', this.skipTimerLabel);\n button.innerHTML =\n '<svg width=\"16\" height=\"16\" viewBox=\"0 0 32 32\" aria-hidden=\"true\" focusable=\"false\">' +\n '<path fill=\"currentColor\" d=\"M8 26V6l14 10L8 26z M24 6h2v20h-2z\"/></svg>';\n button.addEventListener('click', (event: MouseEvent) => {\n event.stopPropagation();\n this.skipTimerEvent.emit(timer);\n });\n\n try {\n const overlayId = overlays.add(timer.activityId, {\n position: {top: -14, right: 14},\n show: {minZoom: 0, maxZoom: 5.0},\n html: button,\n });\n this._skipOverlayIds.push(overlayId);\n } catch {\n // activity not present in the rendered diagram; nothing to attach to\n }\n });\n }\n\n public loadProcessDefinitionHeatmapCount(processDefinition) {\n this.processService.getProcessHeatmapCount(processDefinition).subscribe(response => {\n this.inputData = response;\n this.valueKey = 'totalCount';\n this.heatPoints = {data: []};\n this.min = 0;\n this.max = 0;\n\n Object.keys(this.inputData).forEach(key => {\n const diagramContainer = this.el.nativeElement.querySelector('svg').getBoundingClientRect();\n const diagramElm = this.el.nativeElement\n .querySelector(`g[data-element-id=${key}]`)\n .getBoundingClientRect();\n this.setMax(key);\n this.heatPoints.data.push({\n x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),\n y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),\n value: this.inputData[key][this.valueKey],\n radius: diagramElm.width / 2,\n });\n this.addCounterActiveOverlays(key, this.inputData);\n });\n this.clearHeatmap();\n if (this.showHeatmap) {\n this.loadHeatmap();\n }\n });\n }\n\n public onWindowResize() {\n const oldCanvas = this.el.nativeElement.querySelector('canvas[class=heatmap-canvas]');\n if (oldCanvas) {\n oldCanvas.remove();\n this.heatMapInstance = null;\n }\n if (this.showHeatmap) {\n this.loadHeatmap();\n }\n }\n\n public loadProcessDefinitionHeatmapDuration(processDefinition) {\n this.processService.getProcessHeatmapDuration(processDefinition).subscribe(response => {\n this.inputData = response;\n this.valueKey = 'averageDurationInMilliseconds';\n this.heatPoints = {data: []};\n this.min = 0;\n this.max = 0;\n\n Object.keys(this.inputData).forEach(key => {\n const diagramContainer = this.el.nativeElement.querySelector('svg').getBoundingClientRect();\n const diagramElm = this.el.nativeElement\n .querySelector(`g[data-element-id=${key}]`)\n .getBoundingClientRect();\n this.setMax(key);\n this.heatPoints.data.push({\n x: Math.round(diagramElm.x - diagramContainer.x + diagramElm.width / 2),\n y: Math.round(diagramElm.y - diagramContainer.y + diagramElm.height / 2),\n value: this.inputData[key][this.valueKey],\n radius: diagramElm.width / 2,\n });\n this.addCounterActiveOverlays(key, this.inputData);\n });\n this.clearHeatmap();\n if (this.showHeatmap) {\n this.loadHeatmap();\n }\n });\n }\n\n public setProcessDefinitionKey(processDefinitionKey) {\n this.processDefinitionKey = processDefinitionKey;\n this.loadProcessDefinitionFromKey(this.processDefinitionKey);\n }\n\n public setProcessDefinitionVersion(version) {\n this.version = +version;\n this.loadHeatmapData();\n }\n\n public setHeatmapOption(heatmapOption) {\n this.heatmapOption = heatmapOption;\n this.loadHeatmapData();\n }\n\n public toggleShowHeatmap() {\n this.showHeatmap = !this.showHeatmap;\n this.loadHeatmapData();\n }\n\n public loadHeatmap() {\n if (!this.heatMapInstance) {\n this.heatMapInstance = heatmap.create({\n radius: 54,\n blur: 0.7,\n maxOpacity: 0.4,\n minOpacity: 0,\n container: this.el.nativeElement,\n });\n }\n this.heatMapInstance.setData({\n min: this.min,\n max: this.max,\n data: this.heatPoints.data,\n });\n }\n\n public clearHeatmap() {\n if (this.heatMapInstance) {\n this.heatMapInstance.setData({data: []});\n }\n }\n\n public loadHeatmapData() {\n this.processDefinition = this.processDefinitionVersions.find(\n definition => definition.version === this.version\n );\n\n if (this.heatmapOption === 'count') {\n this.loadProcessDefinitionHeatmapCount(this.processDefinition);\n }\n if (this.heatmapOption === 'duration') {\n this.loadProcessDefinitionHeatmapDuration(this.processDefinition);\n }\n }\n\n public setMax(key: any) {\n if (this.heatmapDuration) {\n this.max = Math.max(this.heatmapDuration[key].averageDurationInMilliseconds, this.max);\n } else if (this.heatmapCount) {\n this.max = Math.max(\n this.heatmapCount[key].totalCount + this.heatmapCount[key].count,\n this.max\n );\n }\n }\n\n public addCounterActiveOverlays(key: any, inputData: any) {\n const overlays = this.bpmnJS.get('overlays');\n overlays.add(key, {\n position: {\n bottom: 13,\n left: -12,\n },\n show: {\n minZoom: 0,\n maxZoom: 5.0,\n },\n html: `<span class=\"badge badge-pill badge-primary\">${inputData[key].count}</span>`,\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n<div class=\"process-diagram-container\">\n <div *ngIf=\"processDefinitionKey\" class=\"diagram-container-switch-holder\">\n <div class=\"container-fluid\">\n <div class=\"row p-4 bg-light\">\n <div class=\"col-4\">\n <label><strong>Version</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label><strong>Heatmap type</strong></label\n ><br />\n <select class=\"form-control\" (change)=\"setHeatmapOption($event.target.value)\">\n <option\n *ngFor=\"let option of enumHeatmapOptions\"\n [value]=\"option\"\n [selected]=\"option === heatmapOption\"\n >\n {{ option }}\n </option>\n </select>\n </div>\n <div class=\"col-4 text-right\">\n <label><strong>Show heatmap</strong></label\n ><br />\n <div class=\"text-left switch-button switch-button-sm switch-button-success\">\n <input\n type=\"checkbox\"\n id=\"toggleHeatmap\"\n [checked]=\"showHeatmap\"\n (click)=\"toggleShowHeatmap()\"\n /><span> <label for=\"toggleHeatmap\"></label></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div #ref (window:resize)=\"onWindowResize()\" class=\"diagram-container\"></div>\n\n <div *ngIf=\"processInstanceId\" class=\"p-4 text-center legenda-holder\">\n <span\n ><div class=\"legenda highlight-overlay-past\"></div>\n Executed tasks</span\n >\n <span class=\"ml-3\"\n ><div class=\"legenda highlight-overlay-current\"></div>\n Current tasks</span\n >\n </div>\n\n <div *ngIf=\"processDefinitionKey\" class=\"p-4 text-center legenda-holder\">\n <span\n ><span class=\"badge badge-pill badge-primary\">N</span> Amount of currently active\n instances of this task.</span\n >\n <span\n > | Red/yellow/green orbs: The amount of times the task is executed in\n comparison to the other tasks.</span\n >\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n BpmnJsDiagramModule,\n CamundaFormModule,\n ListModule,\n TimelineModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {ToastrModule} from 'ngx-toastr';\nimport {BrowserAnimationsModule} from '@angular/platform-browser/animations';\nimport {ProcessDiagramComponent} from './process-diagram/process-diagram.component';\n\n@NgModule({\n declarations: [ProcessDiagramComponent],\n imports: [\n CommonModule,\n ListModule,\n WidgetModule,\n TimelineModule,\n BpmnJsDiagramModule,\n CamundaFormModule,\n BrowserAnimationsModule,\n ToastrModule.forRoot({\n positionClass: 'toast-bottom-full-width',\n preventDuplicates: true,\n }),\n ],\n exports: [ProcessDiagramComponent],\n})\nexport class ProcessModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of process\n */\n\nexport * from './lib/models';\nexport * from './lib/process.service';\nexport * from './lib/process.module';\nexport * from './lib/process-diagram/process-diagram.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.ProcessService","i2"],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export declare class ProcessDiagramComponent implements OnInit, OnDestroy, OnCha
|
|
|
13
13
|
skipTimerEvent: EventEmitter<SkippableTimer>;
|
|
14
14
|
processDefinitionKey?: string;
|
|
15
15
|
processInstanceId?: string;
|
|
16
|
+
caseId?: string;
|
|
16
17
|
skippableTimers: SkippableTimer[];
|
|
17
18
|
canSkipTimer: boolean;
|
|
18
19
|
skipTimerLabel: string;
|
|
@@ -41,6 +42,7 @@ export declare class ProcessDiagramComponent implements OnInit, OnDestroy, OnCha
|
|
|
41
42
|
loadProcessDefinitionFromKey(processDefinitionKey: any): void;
|
|
42
43
|
loadProcessDefinitionXml(processDefinitionId: any): void;
|
|
43
44
|
private loadProcessInstanceXml;
|
|
45
|
+
private getProcessInstanceXml$;
|
|
44
46
|
private renderSkipTimerOverlays;
|
|
45
47
|
loadProcessDefinitionHeatmapCount(processDefinition: any): void;
|
|
46
48
|
onWindowResize(): void;
|
|
@@ -55,6 +57,6 @@ export declare class ProcessDiagramComponent implements OnInit, OnDestroy, OnCha
|
|
|
55
57
|
setMax(key: any): void;
|
|
56
58
|
addCounterActiveOverlays(key: any, inputData: any): void;
|
|
57
59
|
static ɵfac: i0.ɵɵFactoryDeclaration<ProcessDiagramComponent, never>;
|
|
58
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ProcessDiagramComponent, "valtimo-process-diagram", never, { "processDefinitionKey": { "alias": "processDefinitionKey"; "required": false; }; "processInstanceId": { "alias": "processInstanceId"; "required": false; }; "skippableTimers": { "alias": "skippableTimers"; "required": false; }; "canSkipTimer": { "alias": "canSkipTimer"; "required": false; }; "skipTimerLabel": { "alias": "skipTimerLabel"; "required": false; }; "reloadToken": { "alias": "reloadToken"; "required": false; }; }, { "importDone": "importDone"; "skipTimerEvent": "skipTimerEvent"; }, never, never, false, never>;
|
|
60
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ProcessDiagramComponent, "valtimo-process-diagram", never, { "processDefinitionKey": { "alias": "processDefinitionKey"; "required": false; }; "processInstanceId": { "alias": "processInstanceId"; "required": false; }; "caseId": { "alias": "caseId"; "required": false; }; "skippableTimers": { "alias": "skippableTimers"; "required": false; }; "canSkipTimer": { "alias": "canSkipTimer"; "required": false; }; "skipTimerLabel": { "alias": "skipTimerLabel"; "required": false; }; "reloadToken": { "alias": "reloadToken"; "required": false; }; }, { "importDone": "importDone"; "skipTimerEvent": "skipTimerEvent"; }, never, never, false, never>;
|
|
59
61
|
}
|
|
60
62
|
//# sourceMappingURL=process-diagram.component.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-diagram.component.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/process/src/lib/process-diagram/process-diagram.component.ts"],"names":[],"mappings":"AAgBA,OAAO,EAEL,UAAU,EACV,YAAY,EAEZ,SAAS,EACT,SAAS,EACT,MAAM,EAEN,aAAa,EAGd,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"process-diagram.component.d.ts","sourceRoot":"","sources":["../../../../../projects/valtimo/process/src/lib/process-diagram/process-diagram.component.ts"],"names":[],"mappings":"AAgBA,OAAO,EAEL,UAAU,EACV,YAAY,EAEZ,SAAS,EACT,SAAS,EACT,MAAM,EAEN,aAAa,EAGd,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAC,cAAc,EAAC,MAAM,WAAW,CAAC;;AAKzC,qBAMa,uBAAwB,YAAW,MAAM,EAAE,SAAS,EAAE,SAAS;IAiC9D,OAAO,CAAC,cAAc;IAhClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAgB;IAEE,EAAE,EAAE,UAAU,CAAC;IACvC,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,CAAsB;IACnD,cAAc,EAAE,YAAY,CAAC,cAAc,CAAC,CAAsB;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,cAAc,EAAE,CAAM;IACvC,YAAY,UAAS;IACrB,cAAc,SAAgB;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,cAAc,EAAE,GAAG,CAAC;IACpB,iBAAiB,EAAE,GAAG,CAAC;IACvB,yBAAyB,EAAE,GAAG,CAAC;IAC/B,YAAY,EAAE,GAAG,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,UAAU,EAAE,GAAG,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,WAAyB;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,GAAG,CAAC;IACf,QAAQ,EAAE,GAAG,CAAC;gBAED,cAAc,EAAE,cAAc;IAElD,QAAQ;IAgDD,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAoBzC,WAAW;IAMX,qBAAqB,CAAC,oBAAoB,KAAA;IAQ1C,6BAA6B,CAAC,oBAAoB,KAAA;IAMlD,4BAA4B,CAAC,oBAAoB,KAAA;IAKjD,wBAAwB,CAAC,mBAAmB,KAAA;IAQnD,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,uBAAuB;IAkDxB,iCAAiC,CAAC,iBAAiB,KAAA;IA6BnD,cAAc;IAWd,oCAAoC,CAAC,iBAAiB,KAAA;IA6BtD,uBAAuB,CAAC,oBAAoB,KAAA;IAK5C,2BAA2B,CAAC,OAAO,KAAA;IAKnC,gBAAgB,CAAC,aAAa,KAAA;IAK9B,iBAAiB;IAKjB,WAAW;IAiBX,YAAY;IAMZ,eAAe;IAaf,MAAM,CAAC,GAAG,EAAE,GAAG;IAWf,wBAAwB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG;yCAlV7C,uBAAuB;2CAAvB,uBAAuB;CAgWnC"}
|
package/lib/process.service.d.ts
CHANGED
|
@@ -14,13 +14,30 @@ export declare class ProcessService {
|
|
|
14
14
|
getProcessDefinitionStartProcessLink(processDefinitionId: string, documentId: string, documentDefinitionName: string): Observable<ProcessDefinitionStartProcessLink>;
|
|
15
15
|
startProcesInstance(key: string, businessKey: string, variables: Map<string, any>): Observable<any>;
|
|
16
16
|
getProcessDefinitionXml(processDefinitionId: string): Observable<any>;
|
|
17
|
+
/**
|
|
18
|
+
* @deprecated The generic endpoint is restricted to administrators. Use
|
|
19
|
+
* {@link getCaseProcessInstanceXml} (document VIEW) for case-related process diagrams.
|
|
20
|
+
*/
|
|
17
21
|
getProcessXml(id: string): Observable<any>;
|
|
22
|
+
getCaseProcessInstanceXml(caseId: string, processInstanceId: string): Observable<any>;
|
|
18
23
|
getProcessCount(id: string): Observable<any>;
|
|
19
24
|
getProcessHeatmapCount(processDefinition: ProcessDefinition): Observable<any[]>;
|
|
20
25
|
getProcessHeatmapDuration(processDefinition: ProcessDefinition): Observable<any[]>;
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated This endpoint is restricted to administrators and will be removed.
|
|
28
|
+
*/
|
|
21
29
|
getProcessInstances(key: string, page: number, size: number, sort: string): Observable<any>;
|
|
30
|
+
/**
|
|
31
|
+
* @deprecated This endpoint is restricted to administrators and will be removed.
|
|
32
|
+
*/
|
|
22
33
|
getProcessInstance(processInstanceId: string): Observable<ProcessInstance>;
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated This endpoint will be removed. Use the authorized task endpoints instead.
|
|
36
|
+
*/
|
|
23
37
|
getProcessInstanceTasks(id: string): Observable<ProcessInstanceTask[]>;
|
|
38
|
+
/**
|
|
39
|
+
* @deprecated This endpoint is restricted to administrators and will be removed.
|
|
40
|
+
*/
|
|
24
41
|
getProcessInstanceVariables(id: string, variableNames: Array<any>): Observable<any>;
|
|
25
42
|
addProcessInstancesDefaultVariablesValues(processInstances: Array<any>): any[];
|
|
26
43
|
addDefaultVariablesValues(processInstance: any): any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.service.d.ts","sourceRoot":"","sources":["../../../../projects/valtimo/process/src/lib/process.service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,UAAU,EAAa,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAM,UAAU,EAAC,MAAM,MAAM,CAAC;AACrC,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,iCAAiC,EACjC,eAAe,EACf,mBAAmB,EAEpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAC,aAAa,EAAO,MAAM,iBAAiB,CAAC;;AAEpD,qBAGa,cAAc;IAIvB,OAAO,CAAC,IAAI;IAHd,OAAO,CAAC,kBAAkB,CAAS;gBAGzB,IAAI,EAAE,UAAU,EACxB,aAAa,EAAE,aAAa;IAK9B,qBAAqB,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;IAIxD,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;IAM1E,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC;IAMhE,iCAAiC,CAC/B,oBAAoB,EAAE,MAAM,GAC3B,UAAU,CAAC,0BAA0B,CAAC;IAMzC,oCAAoC,CAClC,mBAAmB,EAAE,MAAM,EAC3B,UAAU,EAAE,MAAM,EAClB,sBAAsB,EAAE,MAAM,GAC7B,UAAU,CAAC,iCAAiC,CAAC;IAiBhD,mBAAmB,CACjB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,UAAU,CAAC,GAAG,CAAC;IAOlB,uBAAuB,CAAC,mBAAmB,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC;IAMrE,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC;IAI1C,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC;IAO5C,sBAAsB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;IAM/E,yBAAyB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;IAMlF,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC;IAa3F,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC;IAO1E,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,mBAAmB,EAAE,CAAC;IAMtE,2BAA2B,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;IAOnF,yCAAyC,CAAC,gBAAgB,EAAE,KAAK,CAAC,GAAG,CAAC;IAKtE,yBAAyB,CAAC,eAAe,EAAE,GAAG;IAgB9C,sBAAsB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;IAUjF,aAAa,CAAC,UAAU,EAAE,MAAM;IAQhC,cAAc,CACZ,oBAAoB,EAAE,MAAM,EAC5B,oBAAoB,EAAE,MAAM,EAC5B,MAAM,EAAE,GAAG,GACV,UAAU,CAAC,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"process.service.d.ts","sourceRoot":"","sources":["../../../../projects/valtimo/process/src/lib/process.service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,UAAU,EAAa,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAM,UAAU,EAAC,MAAM,MAAM,CAAC;AACrC,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,iCAAiC,EACjC,eAAe,EACf,mBAAmB,EAEpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAC,aAAa,EAAO,MAAM,iBAAiB,CAAC;;AAEpD,qBAGa,cAAc;IAIvB,OAAO,CAAC,IAAI;IAHd,OAAO,CAAC,kBAAkB,CAAS;gBAGzB,IAAI,EAAE,UAAU,EACxB,aAAa,EAAE,aAAa;IAK9B,qBAAqB,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;IAIxD,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,iBAAiB,EAAE,CAAC;IAM1E,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC;IAMhE,iCAAiC,CAC/B,oBAAoB,EAAE,MAAM,GAC3B,UAAU,CAAC,0BAA0B,CAAC;IAMzC,oCAAoC,CAClC,mBAAmB,EAAE,MAAM,EAC3B,UAAU,EAAE,MAAM,EAClB,sBAAsB,EAAE,MAAM,GAC7B,UAAU,CAAC,iCAAiC,CAAC;IAiBhD,mBAAmB,CACjB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,UAAU,CAAC,GAAG,CAAC;IAOlB,uBAAuB,CAAC,mBAAmB,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC;IAMrE;;;OAGG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC;IAI1C,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC;IAMrF,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC;IAO5C,sBAAsB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;IAM/E,yBAAyB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC;IAMlF;;OAEG;IACH,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC;IAa3F;;OAEG;IACH,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,GAAG,UAAU,CAAC,eAAe,CAAC;IAO1E;;OAEG;IACH,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,mBAAmB,EAAE,CAAC;IAMtE;;OAEG;IACH,2BAA2B,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;IAOnF,yCAAyC,CAAC,gBAAgB,EAAE,KAAK,CAAC,GAAG,CAAC;IAKtE,yBAAyB,CAAC,eAAe,EAAE,GAAG;IAgB9C,sBAAsB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM;IAUjF,aAAa,CAAC,UAAU,EAAE,MAAM;IAQhC,cAAc,CACZ,oBAAoB,EAAE,MAAM,EAC5B,oBAAoB,EAAE,MAAM,EAC5B,MAAM,EAAE,GAAG,GACV,UAAU,CAAC,GAAG,CAAC;yCAjMP,cAAc;6CAAd,cAAc;CAuM1B"}
|