@valtimo/logging 12.8.0 → 12.9.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.
@@ -17,26 +17,47 @@ import { CommonModule } from '@angular/common';
17
17
  import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
18
18
  import { TranslateModule } from '@ngx-translate/core';
19
19
  import { ModalModule } from 'carbon-components-angular';
20
- import { NgxJsonViewerModule } from 'ngx-json-viewer';
21
20
  import * as i0 from "@angular/core";
22
- import * as i1 from "@angular/common";
23
- import * as i2 from "@ngx-translate/core";
24
- import * as i3 from "carbon-components-angular";
25
- import * as i4 from "ngx-json-viewer";
21
+ import * as i1 from "@ngx-translate/core";
22
+ import * as i2 from "carbon-components-angular";
26
23
  export class LogDetailsComponent {
27
24
  constructor() {
28
25
  this.open = false;
29
26
  this.closeModalEvent = new EventEmitter();
27
+ this.classesToIgnore = [
28
+ 'LoggingContextKt',
29
+ 'LoggableResourceAspect',
30
+ 'RunWithoutAuthorizationAspect',
31
+ 'UserLoggingFilter',
32
+ ];
33
+ }
34
+ set logEvent(logEvent) {
35
+ this.logEventFormatted = {
36
+ ...logEvent,
37
+ stacktrace: this.formatStacktrace(logEvent?.stacktrace),
38
+ };
30
39
  }
31
40
  onCloseSelect() {
32
41
  this.closeModalEvent.emit();
33
42
  }
43
+ formatStacktrace(s) {
44
+ if (!s) {
45
+ return s;
46
+ }
47
+ s = s.replace(/^[^\t].+(Exception|Error): .+/gm, '<span class="highlight1">$&</span>');
48
+ s = s.replace(/^Caused by: .+/gm, '<span class="highlight1">$&</span>');
49
+ this.classesToIgnore.forEach(c => (s = s.replace(new RegExp(`^\tat .+\.${c}\..+`, 'gm'), '<span class="highlight3">$&</span>')));
50
+ s = s.replace(/^\tat com.(ritense|valtimo).+/gm, '<span class="highlight2">$&</span>');
51
+ s = s.replace(/^\t.+common frames omitted$/gm, '<span class="highlight3">$&</span>');
52
+ s = s.replace(/^\tat .+/gm, '<span class="highlight3">$&</span>');
53
+ return s;
54
+ }
34
55
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LogDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LogDetailsComponent, isStandalone: true, selector: "valtimo-log-details", inputs: { open: "open", logEvent: "logEvent" }, outputs: { closeModalEvent: "closeModalEvent" }, 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\n<cds-modal [open]=\"open\" size=\"lg\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\">\n {{ 'logging.detailsTitle' | translate }}\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-log-details__content\">\n <ngx-json-viewer *ngIf=\"logEvent\" [json]=\"logEvent\"></ngx-json-viewer>\n </section>\n</cds-modal>\n", styles: [".valtimo-log-details__content{padding:32px}.valtimo-log-details__content ::ng-deep .ngx-json-viewer{overflow:auto!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i3.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i3.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "directive", type: i3.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "ngmodule", type: NgxJsonViewerModule }, { kind: "component", type: i4.NgxJsonViewerComponent, selector: "ngx-json-viewer", inputs: ["json", "expanded", "depth", "_currentDepth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LogDetailsComponent, isStandalone: true, selector: "valtimo-log-details", inputs: { open: "open", logEvent: "logEvent" }, outputs: { closeModalEvent: "closeModalEvent" }, 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\n<cds-modal [open]=\"open\" size=\"lg\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\">\n {{ 'logging.detailsTitle' | translate }}\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-log-details__content\">\n <h4 class=\"log-header\">\n {{ 'logging.formattedMessage' | translate }}\n </h4>\n\n <div>{{ logEventFormatted?.formattedMessage || '-' }}</div>\n\n <h4 class=\"log-header\">\n {{ 'logging.timestamp' | translate }}\n </h4>\n\n <div>\n {{ logEventFormatted?.timestamp || '-' }}\n </div>\n\n @if (logEventFormatted?.properties?.length > 0) {\n <h4 class=\"log-header\">\n {{ 'logging.properties' | translate }}\n </h4>\n <div>\n @for (property of logEventFormatted.properties; track property.key) {\n <div>\n <span class=\"property-key\">{{ property.key }}: </span>\n <span class=\"property-value\">{{ property.value }}</span>\n </div>\n }\n </div>\n }\n\n @if (logEventFormatted?.stacktrace) {\n <h4 class=\"log-header\">\n {{ 'logging.stacktrace' | translate }}\n </h4>\n <div>\n <pre class=\"valtimo-log-stacktrace\" [innerHtml]=\"logEventFormatted.stacktrace\"></pre>\n </div>\n }\n </section>\n</cds-modal>\n", styles: [".log-header{padding-top:24px;padding-bottom:12px;color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}.property-key{color:var(--cds-text-primary)}.property-value{color:var(--cds-text-secondary)}.valtimo-log-details__content{padding:32px}.valtimo-log-details__content ::ng-deep .highlight1{color:var(--cds-text-primary);font-weight:600}.valtimo-log-details__content ::ng-deep .valtimo-log-stacktrace{color:var(--cds-text-primary);font-weight:400;background-color:var(--cds-layer-01)}.valtimo-log-details__content ::ng-deep .highlight3{color:var(--cds-text-on-color-disabled);font-weight:300}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i2.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i2.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "directive", type: i2.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36
57
  }
37
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LogDetailsComponent, decorators: [{
38
59
  type: Component,
39
- args: [{ selector: 'valtimo-log-details', standalone: true, imports: [CommonModule, TranslateModule, ModalModule, NgxJsonViewerModule], changeDetection: ChangeDetectionStrategy.OnPush, 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\n<cds-modal [open]=\"open\" size=\"lg\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\">\n {{ 'logging.detailsTitle' | translate }}\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-log-details__content\">\n <ngx-json-viewer *ngIf=\"logEvent\" [json]=\"logEvent\"></ngx-json-viewer>\n </section>\n</cds-modal>\n", styles: [".valtimo-log-details__content{padding:32px}.valtimo-log-details__content ::ng-deep .ngx-json-viewer{overflow:auto!important}\n"] }]
60
+ args: [{ selector: 'valtimo-log-details', standalone: true, imports: [CommonModule, TranslateModule, ModalModule], changeDetection: ChangeDetectionStrategy.OnPush, 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\n<cds-modal [open]=\"open\" size=\"lg\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\">\n {{ 'logging.detailsTitle' | translate }}\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-log-details__content\">\n <h4 class=\"log-header\">\n {{ 'logging.formattedMessage' | translate }}\n </h4>\n\n <div>{{ logEventFormatted?.formattedMessage || '-' }}</div>\n\n <h4 class=\"log-header\">\n {{ 'logging.timestamp' | translate }}\n </h4>\n\n <div>\n {{ logEventFormatted?.timestamp || '-' }}\n </div>\n\n @if (logEventFormatted?.properties?.length > 0) {\n <h4 class=\"log-header\">\n {{ 'logging.properties' | translate }}\n </h4>\n <div>\n @for (property of logEventFormatted.properties; track property.key) {\n <div>\n <span class=\"property-key\">{{ property.key }}: </span>\n <span class=\"property-value\">{{ property.value }}</span>\n </div>\n }\n </div>\n }\n\n @if (logEventFormatted?.stacktrace) {\n <h4 class=\"log-header\">\n {{ 'logging.stacktrace' | translate }}\n </h4>\n <div>\n <pre class=\"valtimo-log-stacktrace\" [innerHtml]=\"logEventFormatted.stacktrace\"></pre>\n </div>\n }\n </section>\n</cds-modal>\n", styles: [".log-header{padding-top:24px;padding-bottom:12px;color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}.property-key{color:var(--cds-text-primary)}.property-value{color:var(--cds-text-secondary)}.valtimo-log-details__content{padding:32px}.valtimo-log-details__content ::ng-deep .highlight1{color:var(--cds-text-primary);font-weight:600}.valtimo-log-details__content ::ng-deep .valtimo-log-stacktrace{color:var(--cds-text-primary);font-weight:400;background-color:var(--cds-layer-01)}.valtimo-log-details__content ::ng-deep .highlight3{color:var(--cds-text-on-color-disabled);font-weight:300}\n"] }]
40
61
  }], propDecorators: { open: [{
41
62
  type: Input
42
63
  }], logEvent: [{
@@ -44,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
44
65
  }], closeModalEvent: [{
45
66
  type: Output
46
67
  }] } });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9sb2dnaW5nL3NyYy9saWIvY29tcG9uZW50cy9sb2ctZGV0YWlscy9sb2ctZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2xvZ2dpbmcvc3JjL2xpYi9jb21wb25lbnRzL2xvZy1kZXRhaWxzL2xvZy1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7O0FBV3BELE1BQU0sT0FBTyxtQkFBbUI7SUFSaEM7UUFTa0IsU0FBSSxHQUFHLEtBQUssQ0FBQztRQUdILG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztLQUtoRTtJQUhRLGFBQWE7UUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDOytHQVJVLG1CQUFtQjttR0FBbkIsbUJBQW1CLGdMQzlCaEMscWdDQXlCQSx1TERFWSxZQUFZLGtJQUFFLGVBQWUsMkZBQUUsV0FBVyxnZ0JBQUUsbUJBQW1COzs0RkFHOUQsbUJBQW1CO2tCQVIvQixTQUFTOytCQUNFLHFCQUFxQixjQUduQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxtQkFDekQsdUJBQXVCLENBQUMsTUFBTTs4QkFHL0IsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVvQixlQUFlO3NCQUF4QyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNb2RhbE1vZHVsZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge05neEpzb25WaWV3ZXJNb2R1bGV9IGZyb20gJ25neC1qc29uLXZpZXdlcic7XG5pbXBvcnQge0xvZ2dpbmdFdmVudH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1sb2ctZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb2ctZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9sb2ctZGV0YWlscy5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgTW9kYWxNb2R1bGUsIE5neEpzb25WaWV3ZXJNb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTG9nRGV0YWlsc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBvcGVuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBsb2dFdmVudDogTG9nZ2luZ0V2ZW50IHwgbnVsbDtcblxuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNsb3NlTW9kYWxFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgb25DbG9zZVNlbGVjdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlTW9kYWxFdmVudC5lbWl0KCk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGNkcy1tb2RhbCBbb3Blbl09XCJvcGVuXCIgc2l6ZT1cImxnXCI+XG4gIDxjZHMtbW9kYWwtaGVhZGVyIFtzaG93Q2xvc2VCdXR0b25dPVwidHJ1ZVwiIChjbG9zZVNlbGVjdCk9XCJvbkNsb3NlU2VsZWN0KClcIj5cbiAgICB7eyAnbG9nZ2luZy5kZXRhaWxzVGl0bGUnIHwgdHJhbnNsYXRlIH19XG4gIDwvY2RzLW1vZGFsLWhlYWRlcj5cblxuICA8c2VjdGlvbiBjZHNNb2RhbENvbnRlbnQgY2xhc3M9XCJ2YWx0aW1vLWxvZy1kZXRhaWxzX19jb250ZW50XCI+XG4gICAgPG5neC1qc29uLXZpZXdlciAqbmdJZj1cImxvZ0V2ZW50XCIgW2pzb25dPVwibG9nRXZlbnRcIj48L25neC1qc29uLXZpZXdlcj5cbiAgPC9zZWN0aW9uPlxuPC9jZHMtbW9kYWw+XG4iXX0=
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9sb2dnaW5nL3NyYy9saWIvY29tcG9uZW50cy9sb2ctZGV0YWlscy9sb2ctZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2xvZ2dpbmcvc3JjL2xpYi9jb21wb25lbnRzL2xvZy1kZXRhaWxzL2xvZy1kZXRhaWxzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7OztBQVd0RCxNQUFNLE9BQU8sbUJBQW1CO0lBUmhDO1FBU2tCLFNBQUksR0FBRyxLQUFLLENBQUM7UUFTSCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJL0Msb0JBQWUsR0FBYTtZQUMxQyxrQkFBa0I7WUFDbEIsd0JBQXdCO1lBQ3hCLCtCQUErQjtZQUMvQixtQkFBbUI7U0FDcEIsQ0FBQztLQXlCSDtJQXpDQyxJQUFvQixRQUFRLENBQUMsUUFBc0I7UUFDakQsSUFBSSxDQUFDLGlCQUFpQixHQUFHO1lBQ3ZCLEdBQUcsUUFBUTtZQUNYLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQztTQUN4RCxDQUFDO0lBQ0osQ0FBQztJQWFNLGFBQWE7UUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsQ0FBVTtRQUNqQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7UUFFRCxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsRUFBRSxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3ZGLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLG9DQUFvQyxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQzFCLENBQUMsQ0FBQyxFQUFFLENBQ0YsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FDWixJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUN0QyxvQ0FBb0MsQ0FDckMsQ0FBQyxDQUNMLENBQUM7UUFDRixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsRUFBRSxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3ZGLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLCtCQUErQixFQUFFLG9DQUFvQyxDQUFDLENBQUM7UUFDckYsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLG9DQUFvQyxDQUFDLENBQUM7UUFDbEUsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDOytHQTNDVSxtQkFBbUI7bUdBQW5CLG1CQUFtQixnTEM3QmhDLDY4REE0REEsa3FCRGxDWSxZQUFZLDhCQUFFLGVBQWUsMkZBQUUsV0FBVzs7NEZBR3pDLG1CQUFtQjtrQkFSL0IsU0FBUzsrQkFDRSxxQkFBcUIsY0FHbkIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxXQUFXLENBQUMsbUJBQ3BDLHVCQUF1QixDQUFDLE1BQU07OEJBRy9CLElBQUk7c0JBQW5CLEtBQUs7Z0JBRWMsUUFBUTtzQkFBM0IsS0FBSztnQkFPb0IsZUFBZTtzQkFBeEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7TW9kYWxNb2R1bGV9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtMb2dnaW5nRXZlbnR9IGZyb20gJy4uLy4uL21vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tbG9nLWRldGFpbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9nLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbG9nLWRldGFpbHMuY29tcG9uZW50LnNjc3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1vZGFsTW9kdWxlXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIExvZ0RldGFpbHNDb21wb25lbnQge1xuICBASW5wdXQoKSBwdWJsaWMgb3BlbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgbG9nRXZlbnQobG9nRXZlbnQ6IExvZ2dpbmdFdmVudCkge1xuICAgIHRoaXMubG9nRXZlbnRGb3JtYXR0ZWQgPSB7XG4gICAgICAuLi5sb2dFdmVudCxcbiAgICAgIHN0YWNrdHJhY2U6IHRoaXMuZm9ybWF0U3RhY2t0cmFjZShsb2dFdmVudD8uc3RhY2t0cmFjZSksXG4gICAgfTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgY2xvc2VNb2RhbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBsb2dFdmVudEZvcm1hdHRlZDogTG9nZ2luZ0V2ZW50O1xuXG4gIHB1YmxpYyByZWFkb25seSBjbGFzc2VzVG9JZ25vcmU6IHN0cmluZ1tdID0gW1xuICAgICdMb2dnaW5nQ29udGV4dEt0JyxcbiAgICAnTG9nZ2FibGVSZXNvdXJjZUFzcGVjdCcsXG4gICAgJ1J1bldpdGhvdXRBdXRob3JpemF0aW9uQXNwZWN0JyxcbiAgICAnVXNlckxvZ2dpbmdGaWx0ZXInLFxuICBdO1xuXG4gIHB1YmxpYyBvbkNsb3NlU2VsZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VNb2RhbEV2ZW50LmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0U3RhY2t0cmFjZShzPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXMpIHtcbiAgICAgIHJldHVybiBzO1xuICAgIH1cblxuICAgIHMgPSBzLnJlcGxhY2UoL15bXlxcdF0uKyhFeGNlcHRpb258RXJyb3IpOiAuKy9nbSwgJzxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0MVwiPiQmPC9zcGFuPicpO1xuICAgIHMgPSBzLnJlcGxhY2UoL15DYXVzZWQgYnk6IC4rL2dtLCAnPHNwYW4gY2xhc3M9XCJoaWdobGlnaHQxXCI+JCY8L3NwYW4+Jyk7XG4gICAgdGhpcy5jbGFzc2VzVG9JZ25vcmUuZm9yRWFjaChcbiAgICAgIGMgPT5cbiAgICAgICAgKHMgPSBzLnJlcGxhY2UoXG4gICAgICAgICAgbmV3IFJlZ0V4cChgXlxcdGF0IC4rXFwuJHtjfVxcLi4rYCwgJ2dtJyksXG4gICAgICAgICAgJzxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0M1wiPiQmPC9zcGFuPidcbiAgICAgICAgKSlcbiAgICApO1xuICAgIHMgPSBzLnJlcGxhY2UoL15cXHRhdCBjb20uKHJpdGVuc2V8dmFsdGltbykuKy9nbSwgJzxzcGFuIGNsYXNzPVwiaGlnaGxpZ2h0MlwiPiQmPC9zcGFuPicpO1xuICAgIHMgPSBzLnJlcGxhY2UoL15cXHQuK2NvbW1vbiBmcmFtZXMgb21pdHRlZCQvZ20sICc8c3BhbiBjbGFzcz1cImhpZ2hsaWdodDNcIj4kJjwvc3Bhbj4nKTtcbiAgICBzID0gcy5yZXBsYWNlKC9eXFx0YXQgLisvZ20sICc8c3BhbiBjbGFzcz1cImhpZ2hsaWdodDNcIj4kJjwvc3Bhbj4nKTtcbiAgICByZXR1cm4gcztcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48Y2RzLW1vZGFsIFtvcGVuXT1cIm9wZW5cIiBzaXplPVwibGdcIj5cbiAgPGNkcy1tb2RhbC1oZWFkZXIgW3Nob3dDbG9zZUJ1dHRvbl09XCJ0cnVlXCIgKGNsb3NlU2VsZWN0KT1cIm9uQ2xvc2VTZWxlY3QoKVwiPlxuICAgIHt7ICdsb2dnaW5nLmRldGFpbHNUaXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9jZHMtbW9kYWwtaGVhZGVyPlxuXG4gIDxzZWN0aW9uIGNkc01vZGFsQ29udGVudCBjbGFzcz1cInZhbHRpbW8tbG9nLWRldGFpbHNfX2NvbnRlbnRcIj5cbiAgICA8aDQgY2xhc3M9XCJsb2ctaGVhZGVyXCI+XG4gICAgICB7eyAnbG9nZ2luZy5mb3JtYXR0ZWRNZXNzYWdlJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvaDQ+XG5cbiAgICA8ZGl2Pnt7IGxvZ0V2ZW50Rm9ybWF0dGVkPy5mb3JtYXR0ZWRNZXNzYWdlIHx8ICctJyB9fTwvZGl2PlxuXG4gICAgPGg0IGNsYXNzPVwibG9nLWhlYWRlclwiPlxuICAgICAge3sgJ2xvZ2dpbmcudGltZXN0YW1wJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvaDQ+XG5cbiAgICA8ZGl2PlxuICAgICAge3sgbG9nRXZlbnRGb3JtYXR0ZWQ/LnRpbWVzdGFtcCB8fCAnLScgfX1cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAobG9nRXZlbnRGb3JtYXR0ZWQ/LnByb3BlcnRpZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIDxoNCBjbGFzcz1cImxvZy1oZWFkZXJcIj5cbiAgICAgICAge3sgJ2xvZ2dpbmcucHJvcGVydGllcycgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvaDQ+XG4gICAgICA8ZGl2PlxuICAgICAgICBAZm9yIChwcm9wZXJ0eSBvZiBsb2dFdmVudEZvcm1hdHRlZC5wcm9wZXJ0aWVzOyB0cmFjayBwcm9wZXJ0eS5rZXkpIHtcbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcm9wZXJ0eS1rZXlcIj57eyBwcm9wZXJ0eS5rZXkgfX06IDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvcGVydHktdmFsdWVcIj57eyBwcm9wZXJ0eS52YWx1ZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmIChsb2dFdmVudEZvcm1hdHRlZD8uc3RhY2t0cmFjZSkge1xuICAgICAgPGg0IGNsYXNzPVwibG9nLWhlYWRlclwiPlxuICAgICAgICB7eyAnbG9nZ2luZy5zdGFja3RyYWNlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9oND5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxwcmUgY2xhc3M9XCJ2YWx0aW1vLWxvZy1zdGFja3RyYWNlXCIgW2lubmVySHRtbF09XCJsb2dFdmVudEZvcm1hdHRlZC5zdGFja3RyYWNlXCI+PC9wcmU+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvc2VjdGlvbj5cbjwvY2RzLW1vZGFsPlxuIl19
@@ -50,7 +50,7 @@ export class LoggingListComponent {
50
50
  });
51
51
  return loggingPage.content.map((logEvent) => ({
52
52
  ...logEvent,
53
- tags: [
53
+ levelTags: [
54
54
  {
55
55
  content: logEvent.level,
56
56
  type: LOG_LEVEL_TAG[logEvent.level],
@@ -72,7 +72,7 @@ export class LoggingListComponent {
72
72
  viewType: ViewType.DATE_TIME,
73
73
  },
74
74
  {
75
- key: 'level',
75
+ key: 'levelTags',
76
76
  label: 'logging.columns.level',
77
77
  viewType: ViewType.TAGS,
78
78
  },
@@ -190,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
190
190
  LogSearchComponent,
191
191
  ], providers: [LoggingApiService], 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\n<valtimo-carbon-list\n *ngIf=\"{logItems: logItems$ | async, isSearchActive: isSearchActive$ | async} as obs\"\n [items]=\"obs.logItems\"\n [fields]=\"FIELDS\"\n [loading]=\"loading$ | async\"\n [pagination]=\"pagination$ | async\"\n paginationIdentifier=\"logging\"\n (paginationClicked)=\"onPaginationClicked($event, obs.logItems)\"\n (paginationSet)=\"onPaginationSet($event)\"\n (rowClicked)=\"onRowClickedEvent($event)\"\n>\n <valtimo-no-results\n [action]=\"obs.isSearchActive ? clearSearchButton : null\"\n [description]=\"\n 'logging.noResults.' + (obs.isSearchActive ? 'searchDescription' : 'description') | translate\n \"\n [title]=\"'logging.noResults.title' | translate\"\n ></valtimo-no-results>\n\n <button\n carbonToolbarContent\n [cdsOverflowMenu]=\"logSearch\"\n [customPane]=\"true\"\n [iconOnly]=\"true\"\n [flip]=\"true\"\n [offset]=\"{x: 0, y: 47}\"\n cdsButton=\"ghost\"\n placement=\"bottom\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"filter\" size=\"16\"></svg>\n </button>\n</valtimo-carbon-list>\n\n<valtimo-log-details\n [open]=\"logDetailsOpen$ | async\"\n [logEvent]=\"selectedLogEvent$ | async\"\n (closeModalEvent)=\"onCloseModalEvent()\"\n></valtimo-log-details>\n\n<ng-template #logSearch>\n <valtimo-log-search\n [initSearchRequest]=\"searchRequest$ | async\"\n (searchSubmitEvent)=\"onSearchSubmitEvent($event)\"\n ></valtimo-log-search>\n</ng-template>\n\n<ng-template #clearSearchButton>\n <button cdsButton=\"primary\" (click)=\"onClearFilter()\">\n {{ 'interface.clear' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: ["::ng-deep .cds--overflow-menu-options.cds--overflow-menu-options--open{max-width:max-content!important;width:max-content!important}\n"] }]
192
192
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.IconService }, { type: i3.LoggingApiService }, { type: i1.Router }] });
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vbG9nZ2luZy9zcmMvbGliL2NvbXBvbmVudHMvbG9nZ2luZy1saXN0L2xvZ2dpbmctbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2xvZ2dpbmcvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2dpbmctbGlzdC9sb2dnaW5nLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxnQkFBZ0IsRUFFaEIsZ0JBQWdCLEVBR2hCLGtCQUFrQixFQUVsQixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQ0wsWUFBWSxFQUNaLFlBQVksRUFDWixjQUFjLEVBQ2QsVUFBVSxHQUVYLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsR0FBRyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGFBQWEsR0FLZCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFP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bUdBQXBCLG9CQUFvQiwyREFGcEIsQ0FBQyxpQkFBaUIsQ0FBQywwQkM3RWhDLCt6RUFxRUEsOExERkksWUFBWSx1TEFDWixlQUFlLDJGQUNmLFlBQVksZ01BQ1osZ0JBQWdCLHcxQkFDaEIsWUFBWSxtUUFDWixjQUFjLDhCQUNkLFVBQVUsNk5BQ1YsbUJBQW1CLDRIQUNuQixrQkFBa0I7OzRGQUlULG9CQUFvQjtrQkFsQmhDLFNBQVM7aUNBR0ksSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLFlBQVk7d0JBQ1osZUFBZTt3QkFDZixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsWUFBWTt3QkFDWixjQUFjO3dCQUNkLFVBQVU7d0JBQ1YsbUJBQW1CO3dCQUNuQixrQkFBa0I7cUJBQ25CLGFBQ1UsQ0FBQyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtGaWx0ZXIxNiwgVHJhc2hDYW4xNn0gZnJvbSAnQGNhcmJvbi9pY29ucyc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICBDQVJCT05fQ09OU1RBTlRTLFxuICBDYXJib25MaXN0SXRlbSxcbiAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgQ2FyYm9uVGFnLFxuICBDb2x1bW5Db25maWcsXG4gIERFRkFVTFRfUEFHSU5BVElPTixcbiAgUGFnaW5hdGlvbixcbiAgVmlld1R5cGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtQYWdlfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtcbiAgQnV0dG9uTW9kdWxlLFxuICBEaWFsb2dNb2R1bGUsXG4gIERyb3Bkb3duTW9kdWxlLFxuICBJY29uTW9kdWxlLFxuICBJY29uU2VydmljZSxcbn0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIG1hcCxcbiAgT2JzZXJ2YWJsZSxcbiAgc3RhcnRXaXRoLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIExPR19FTExJUFNJU19MSU1JVCxcbiAgTE9HX0xFVkVMX1RBRyxcbiAgTG9nZ2luZ0V2ZW50LFxuICBMb2dnaW5nRXZlbnRQcm9wZXJ0eSxcbiAgTG9nZ2luZ0V2ZW50UXVlcnlQYXJhbXMsXG4gIExvZ2dpbmdFdmVudFNlYXJjaFJlcXVlc3QsXG59IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0xvZ2dpbmdBcGlTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0xvZ0RldGFpbHNDb21wb25lbnR9IGZyb20gJy4uL2xvZy1kZXRhaWxzL2xvZy1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQge0xvZ1NlYXJjaENvbXBvbmVudH0gZnJvbSAnLi4vbG9nLXNlYXJjaC9sb2ctc2VhcmNoLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vbG9nZ2luZy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2xvZ2dpbmctbGlzdC5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBCdXR0b25Nb2R1bGUsXG4gICAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgICBEaWFsb2dNb2R1bGUsXG4gICAgRHJvcGRvd25Nb2R1bGUsXG4gICAgSWNvbk1vZHVsZSxcbiAgICBMb2dEZXRhaWxzQ29tcG9uZW50LFxuICAgIExvZ1NlYXJjaENvbXBvbmVudCxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbTG9nZ2luZ0FwaVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBMb2dnaW5nTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvZ0l0ZW1zJDogT2JzZXJ2YWJsZTxDYXJib25MaXN0SXRlbT4gPSB0aGlzLmFjdGl2YXRlZFJvdXRlLnF1ZXJ5UGFyYW1NYXAucGlwZShcbiAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nJC5uZXh0KHRydWUpKSxcbiAgICBzd2l0Y2hNYXAocXVlcnlQYXJhbXMgPT5cbiAgICAgIHRoaXMubG9nZ2luZ0FwaVNlcnZpY2UuZ2V0VGVjaG5pY2FsTG9ncyh7XG4gICAgICAgIC4uLnF1ZXJ5UGFyYW1zWydwYXJhbXMnXSxcbiAgICAgICAgLi4uKCEhcXVlcnlQYXJhbXNbJ3BhcmFtcyddPy5wcm9wZXJ0aWVzICYmIHtcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB0aGlzLmJhc2U2NFRvT2JqZWN0KHF1ZXJ5UGFyYW1zWydwYXJhbXMnXS5wcm9wZXJ0aWVzKSxcbiAgICAgICAgfSksXG4gICAgICB9KVxuICAgICksXG4gICAgbWFwKChsb2dnaW5nUGFnZTogUGFnZTxMb2dnaW5nRXZlbnQ+KSA9PiB7XG4gICAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoe1xuICAgICAgICAuLi50aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCksXG4gICAgICAgIGNvbGxlY3Rpb25TaXplOiBsb2dnaW5nUGFnZS50b3RhbEVsZW1lbnRzLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBsb2dnaW5nUGFnZS5jb250ZW50Lm1hcCgobG9nRXZlbnQ6IExvZ2dpbmdFdmVudCkgPT4gKHtcbiAgICAgICAgLi4ubG9nRXZlbnQsXG4gICAgICAgIHRhZ3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb250ZW50OiBsb2dFdmVudC5sZXZlbCxcbiAgICAgICAgICAgIHR5cGU6IExPR19MRVZFTF9UQUdbbG9nRXZlbnQubGV2ZWxdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG4gICAgfSksXG4gICAgc3RhcnRXaXRoKFtdKSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzZWFyY2hSZXF1ZXN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdD4oe30pO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNTZWFyY2hBY3RpdmUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5zZWFyY2hSZXF1ZXN0JC5waXBlKFxuICAgIG1hcCgoc2VhcmNoUmVxdWVzdDogTG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdCkgPT4gT2JqZWN0LmtleXMoc2VhcmNoUmVxdWVzdCkubGVuZ3RoID4gMClcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHBhZ2luYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYWdpbmF0aW9uPihERUZBVUxUX1BBR0lOQVRJT04pO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nRGV0YWlsc09wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZExvZ0V2ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TG9nZ2luZ0V2ZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IEZJRUxEUzogQ29sdW1uQ29uZmlnW10gPSBbXG4gICAge1xuICAgICAga2V5OiAndGltZXN0YW1wJyxcbiAgICAgIGxhYmVsOiAnbG9nZ2luZy5jb2x1bW5zLnRpbWVzdGFtcCcsXG4gICAgICB2aWV3VHlwZTogVmlld1R5cGUuREFURV9USU1FLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnbGV2ZWwnLFxuICAgICAgbGFiZWw6ICdsb2dnaW5nLmNvbHVtbnMubGV2ZWwnLFxuICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRBR1MsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdmb3JtYXR0ZWRNZXNzYWdlJyxcbiAgICAgIGxhYmVsOiAnbG9nZ2luZy5jb2x1bW5zLmZvcm1hdHRlZE1lc3NhZ2UnLFxuICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRFWFQsXG4gICAgICB0b29sdGlwQ2hhckxpbWl0OiBMT0dfRUxMSVBTSVNfTElNSVQsXG4gICAgfSxcbiAgXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaWNvblNlcnZpY2U6IEljb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2luZ0FwaVNlcnZpY2U6IExvZ2dpbmdBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXJcbiAgKSB7XG4gICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlckFsbChbRmlsdGVyMTYsIFRyYXNoQ2FuMTZdKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEluaXRpYWxQYXJhbXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZU1vZGFsRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2dEZXRhaWxzT3BlbiQubmV4dChmYWxzZSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRMb2dFdmVudCQubmV4dChudWxsKTtcbiAgICB9LCBDQVJCT05fQ09OU1RBTlRTLm1vZGFsQW5pbWF0aW9uTXMpO1xuICB9XG5cbiAgcHVibGljIG9uUGFnaW5hdGlvbkNsaWNrZWQocGFnZTogbnVtYmVyLCBsb2dJdGVtczogQ2FyYm9uTGlzdEl0ZW1bXSk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGl2ZVBhZ2luYXRpb246IFBhZ2luYXRpb24gPSB0aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCk7XG4gICAgY29uc3Qgc2VhcmNoUmVxdWVzdDogTG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdCA9IHRoaXMuc2VhcmNoUmVxdWVzdCQuZ2V0VmFsdWUoKTtcblxuICAgIGlmICghc2VhcmNoUmVxdWVzdC5iZWZvcmVUaW1lc3RhbXAgJiYgYWN0aXZlUGFnaW5hdGlvbi5wYWdlID09PSAxKVxuICAgICAgdGhpcy5zZWFyY2hSZXF1ZXN0JC5uZXh0KHsuLi5zZWFyY2hSZXF1ZXN0LCBiZWZvcmVUaW1lc3RhbXA6IGxvZ0l0ZW1zWzBdLnRpbWVzdGFtcH0pO1xuXG4gICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHsuLi5hY3RpdmVQYWdpbmF0aW9uLCBwYWdlfSk7XG4gIH1cblxuICBwdWJsaWMgb25QYWdpbmF0aW9uU2V0KHNpemU6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IHtjb2xsZWN0aW9uU2l6ZSwgcGFnZX0gPSB0aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCk7XG4gICAgY29uc3QgcmVzZXRQYWdlOiBib29sZWFuID0gTWF0aC5jZWlsKCtjb2xsZWN0aW9uU2l6ZSAvIHNpemUpIDw9ICtwYWdlICYmICtjb2xsZWN0aW9uU2l6ZSA+IDA7XG5cbiAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoey4uLnRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKSwgc2l6ZSwgLi4uKHJlc2V0UGFnZSAmJiB7cGFnZTogMX0pfSk7XG4gIH1cblxuICBwdWJsaWMgb25Sb3dDbGlja2VkRXZlbnQoXG4gICAgcm93Q2xpY2tFdmVudDogTG9nZ2luZ0V2ZW50ICYge2N0cmxDbGljazogYm9vbGVhbjsgdGFnczogQ2FyYm9uVGFnW119XG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHtjdHJsQ2xpY2s6IF8xLCB0YWdzOiBfMiwgLi4ubG9nRXZlbnR9ID0gcm93Q2xpY2tFdmVudDtcbiAgICB0aGlzLmxvZ0RldGFpbHNPcGVuJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuc2VsZWN0ZWRMb2dFdmVudCQubmV4dChsb2dFdmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25TZWFyY2hTdWJtaXRFdmVudChzZWFyY2hSZXF1ZXN0OiBMb2dnaW5nRXZlbnRTZWFyY2hSZXF1ZXN0KTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hSZXF1ZXN0JC5uZXh0KHNlYXJjaFJlcXVlc3QpO1xuICB9XG5cbiAgcHVibGljIG9uQ2xlYXJGaWx0ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5vblNlYXJjaFN1Ym1pdEV2ZW50KHt9KTtcbiAgfVxuXG4gIHByaXZhdGUgYmFzZTY0VG9PYmplY3QoYmFzZTY0c3RyaW5nOiBzdHJpbmcpOiBvYmplY3Qge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGF0b2IoYmFzZTY0c3RyaW5nKSk7XG4gIH1cblxuICBwcml2YXRlIG9iamVjdFRvQmFzZTY0KGpzT2JqZWN0OiBvYmplY3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBidG9hKEpTT04uc3RyaW5naWZ5KGpzT2JqZWN0KSk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5RdWVyeVBhcmFtc1N1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMucGFnaW5hdGlvbiQsIHRoaXMuc2VhcmNoUmVxdWVzdCRdKS5zdWJzY3JpYmUoXG4gICAgICAgIChbcGFnaW5hdGlvbiwgc2VhcmNoUmVxdWVzdF0pID0+IHtcbiAgICAgICAgICBjb25zdCB7c2l6ZSwgcGFnZX0gPSBwYWdpbmF0aW9uO1xuXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbG9nZ2luZyddLCB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtczoge1xuICAgICAgICAgICAgICBzaXplLFxuICAgICAgICAgICAgICBwYWdlOiBwYWdlIC0gMSxcbiAgICAgICAgICAgICAgLi4ue1xuICAgICAgICAgICAgICAgIC4uLnNlYXJjaFJlcXVlc3QsXG4gICAgICAgICAgICAgICAgLi4uKCEhc2VhcmNoUmVxdWVzdC5wcm9wZXJ0aWVzPy5sZW5ndGggJiYge1xuICAgICAgICAgICAgICAgICAgcHJvcGVydGllczogdGhpcy5vYmplY3RUb0Jhc2U2NChzZWFyY2hSZXF1ZXN0LnByb3BlcnRpZXMpLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG1hcFF1ZXJ5UGFyYW1zVG9TZWFyY2hSZXF1ZXN0KFxuICAgIHF1ZXJ5UGFyYW1zOiBMb2dnaW5nRXZlbnRRdWVyeVBhcmFtc1xuICApOiBMb2dnaW5nRXZlbnRTZWFyY2hSZXF1ZXN0IHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uKCEhcXVlcnlQYXJhbXMubGlrZUZvcm1hdHRlZE1lc3NhZ2UgJiYge1xuICAgICAgICBsaWtlRm9ybWF0dGVkTWVzc2FnZTogcXVlcnlQYXJhbXMubGlrZUZvcm1hdHRlZE1lc3NhZ2UsXG4gICAgICB9KSxcbiAgICAgIC4uLighIXF1ZXJ5UGFyYW1zLmxldmVsICYmIHtsZXZlbDogcXVlcnlQYXJhbXMubGV2ZWx9KSxcbiAgICAgIC4uLighIXF1ZXJ5UGFyYW1zLmFmdGVyVGltZXN0YW1wICYmIHthZnRlclRpbWVzdGFtcDogcXVlcnlQYXJhbXMuYWZ0ZXJUaW1lc3RhbXB9KSxcbiAgICAgIC4uLighIXF1ZXJ5UGFyYW1zLmJlZm9yZVRpbWVzdGFtcCAmJiB7YmVmb3JlVGltZXN0YW1wOiBxdWVyeVBhcmFtcy5iZWZvcmVUaW1lc3RhbXB9KSxcbiAgICAgIC4uLighIXF1ZXJ5UGFyYW1zLnByb3BlcnRpZXMgJiYge1xuICAgICAgICBwcm9wZXJ0aWVzOiB0aGlzLmJhc2U2NFRvT2JqZWN0KHF1ZXJ5UGFyYW1zLnByb3BlcnRpZXMpIGFzIEFycmF5PExvZ2dpbmdFdmVudFByb3BlcnR5PixcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNldEluaXRpYWxQYXJhbXMoKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtTWFwXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgbWFwKHF1ZXJ5UGFyYW1zID0+IHtcbiAgICAgICAgICBjb25zdCB7c2l6ZSwgcGFnZSwgLi4uc2VhcmNoUmVxdWVzdH0gPSBxdWVyeVBhcmFtc1sncGFyYW1zJ107XG4gICAgICAgICAgcmV0dXJuIHtzaXplLCBwYWdlLCBzZWFyY2hSZXF1ZXN0fTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHtzaXplLCBwYWdlLCBzZWFyY2hSZXF1ZXN0fSkgPT4ge1xuICAgICAgICB0aGlzLnNlYXJjaFJlcXVlc3QkLm5leHQodGhpcy5tYXBRdWVyeVBhcmFtc1RvU2VhcmNoUmVxdWVzdChzZWFyY2hSZXF1ZXN0KSk7XG4gICAgICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7XG4gICAgICAgICAgLi4udGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpLFxuICAgICAgICAgIHNpemU6ICtzaXplLFxuICAgICAgICAgIHBhZ2U6ICsocGFnZSA/PyAwKSArIDEsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMub3BlblF1ZXJ5UGFyYW1zU3Vic2NyaXB0aW9uKCk7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48dmFsdGltby1jYXJib24tbGlzdFxuICAqbmdJZj1cIntsb2dJdGVtczogbG9nSXRlbXMkIHwgYXN5bmMsIGlzU2VhcmNoQWN0aXZlOiBpc1NlYXJjaEFjdGl2ZSQgfCBhc3luY30gYXMgb2JzXCJcbiAgW2l0ZW1zXT1cIm9icy5sb2dJdGVtc1wiXG4gIFtmaWVsZHNdPVwiRklFTERTXCJcbiAgW2xvYWRpbmddPVwibG9hZGluZyQgfCBhc3luY1wiXG4gIFtwYWdpbmF0aW9uXT1cInBhZ2luYXRpb24kIHwgYXN5bmNcIlxuICBwYWdpbmF0aW9uSWRlbnRpZmllcj1cImxvZ2dpbmdcIlxuICAocGFnaW5hdGlvbkNsaWNrZWQpPVwib25QYWdpbmF0aW9uQ2xpY2tlZCgkZXZlbnQsIG9icy5sb2dJdGVtcylcIlxuICAocGFnaW5hdGlvblNldCk9XCJvblBhZ2luYXRpb25TZXQoJGV2ZW50KVwiXG4gIChyb3dDbGlja2VkKT1cIm9uUm93Q2xpY2tlZEV2ZW50KCRldmVudClcIlxuPlxuICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgW2FjdGlvbl09XCJvYnMuaXNTZWFyY2hBY3RpdmUgPyBjbGVhclNlYXJjaEJ1dHRvbiA6IG51bGxcIlxuICAgIFtkZXNjcmlwdGlvbl09XCJcbiAgICAgICdsb2dnaW5nLm5vUmVzdWx0cy4nICsgKG9icy5pc1NlYXJjaEFjdGl2ZSA/ICdzZWFyY2hEZXNjcmlwdGlvbicgOiAnZGVzY3JpcHRpb24nKSB8IHRyYW5zbGF0ZVxuICAgIFwiXG4gICAgW3RpdGxlXT1cIidsb2dnaW5nLm5vUmVzdWx0cy50aXRsZScgfCB0cmFuc2xhdGVcIlxuICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG5cbiAgPGJ1dHRvblxuICAgIGNhcmJvblRvb2xiYXJDb250ZW50XG4gICAgW2Nkc092ZXJmbG93TWVudV09XCJsb2dTZWFyY2hcIlxuICAgIFtjdXN0b21QYW5lXT1cInRydWVcIlxuICAgIFtpY29uT25seV09XCJ0cnVlXCJcbiAgICBbZmxpcF09XCJ0cnVlXCJcbiAgICBbb2Zmc2V0XT1cInt4OiAwLCB5OiA0N31cIlxuICAgIGNkc0J1dHRvbj1cImdob3N0XCJcbiAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICA+XG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImZpbHRlclwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvdmFsdGltby1jYXJib24tbGlzdD5cblxuPHZhbHRpbW8tbG9nLWRldGFpbHNcbiAgW29wZW5dPVwibG9nRGV0YWlsc09wZW4kIHwgYXN5bmNcIlxuICBbbG9nRXZlbnRdPVwic2VsZWN0ZWRMb2dFdmVudCQgfCBhc3luY1wiXG4gIChjbG9zZU1vZGFsRXZlbnQpPVwib25DbG9zZU1vZGFsRXZlbnQoKVwiXG4+PC92YWx0aW1vLWxvZy1kZXRhaWxzPlxuXG48bmctdGVtcGxhdGUgI2xvZ1NlYXJjaD5cbiAgPHZhbHRpbW8tbG9nLXNlYXJjaFxuICAgIFtpbml0U2VhcmNoUmVxdWVzdF09XCJzZWFyY2hSZXF1ZXN0JCB8IGFzeW5jXCJcbiAgICAoc2VhcmNoU3VibWl0RXZlbnQpPVwib25TZWFyY2hTdWJtaXRFdmVudCgkZXZlbnQpXCJcbiAgPjwvdmFsdGltby1sb2ctc2VhcmNoPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNjbGVhclNlYXJjaEJ1dHRvbj5cbiAgPGJ1dHRvbiBjZHNCdXR0b249XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9uQ2xlYXJGaWx0ZXIoKVwiPlxuICAgIHt7ICdpbnRlcmZhY2UuY2xlYXInIHwgdHJhbnNsYXRlIH19XG5cbiAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwidHJhc2gtY2FuXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vbG9nZ2luZy9zcmMvbGliL2NvbXBvbmVudHMvbG9nZ2luZy1saXN0L2xvZ2dpbmctbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2xvZ2dpbmcvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2dpbmctbGlzdC9sb2dnaW5nLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxnQkFBZ0IsRUFFaEIsZ0JBQWdCLEVBR2hCLGtCQUFrQixFQUVsQixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQ0wsWUFBWSxFQUNaLFlBQVksRUFDWixjQUFjLEVBQ2QsVUFBVSxHQUVYLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsR0FBRyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGFBQWEsR0FLZCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFP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O21HQUFwQixvQkFBb0IsMkRBRnBCLENBQUMsaUJBQWlCLENBQUMsMEJDN0VoQywrekVBcUVBLDhMREZJLFlBQVksdUxBQ1osZUFBZSwyRkFDZixZQUFZLGdNQUNaLGdCQUFnQix3MUJBQ2hCLFlBQVksbVFBQ1osY0FBYyw4QkFDZCxVQUFVLDZOQUNWLG1CQUFtQiw0SEFDbkIsa0JBQWtCOzs0RkFJVCxvQkFBb0I7a0JBbEJoQyxTQUFTO2lDQUdJLElBQUksbUJBQ0MsdUJBQXVCLENBQUMsTUFBTSxXQUN0Qzt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxVQUFVO3dCQUNWLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3FCQUNuQixhQUNVLENBQUMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGUsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7RmlsdGVyMTYsIFRyYXNoQ2FuMTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ0FSQk9OX0NPTlNUQU5UUyxcbiAgQ2FyYm9uTGlzdEl0ZW0sXG4gIENhcmJvbkxpc3RNb2R1bGUsXG4gIENhcmJvblRhZyxcbiAgQ29sdW1uQ29uZmlnLFxuICBERUZBVUxUX1BBR0lOQVRJT04sXG4gIFBhZ2luYXRpb24sXG4gIFZpZXdUeXBlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7UGFnZX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7XG4gIEJ1dHRvbk1vZHVsZSxcbiAgRGlhbG9nTW9kdWxlLFxuICBEcm9wZG93bk1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSWNvblNlcnZpY2UsXG59IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIHN0YXJ0V2l0aCxcbiAgU3Vic2NyaXB0aW9uLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBMT0dfRUxMSVBTSVNfTElNSVQsXG4gIExPR19MRVZFTF9UQUcsXG4gIExvZ2dpbmdFdmVudCxcbiAgTG9nZ2luZ0V2ZW50UHJvcGVydHksXG4gIExvZ2dpbmdFdmVudFF1ZXJ5UGFyYW1zLFxuICBMb2dnaW5nRXZlbnRTZWFyY2hSZXF1ZXN0LFxufSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtMb2dnaW5nQXBpU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtMb2dEZXRhaWxzQ29tcG9uZW50fSBmcm9tICcuLi9sb2ctZGV0YWlscy9sb2ctZGV0YWlscy5jb21wb25lbnQnO1xuaW1wb3J0IHtMb2dTZWFyY2hDb21wb25lbnR9IGZyb20gJy4uL2xvZy1zZWFyY2gvbG9nLXNlYXJjaC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL2xvZ2dpbmctbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9sb2dnaW5nLWxpc3QuY29tcG9uZW50LnNjc3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgRGlhbG9nTW9kdWxlLFxuICAgIERyb3Bkb3duTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgTG9nRGV0YWlsc0NvbXBvbmVudCxcbiAgICBMb2dTZWFyY2hDb21wb25lbnQsXG4gIF0sXG4gIHByb3ZpZGVyczogW0xvZ2dpbmdBcGlTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgTG9nZ2luZ0xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHB1YmxpYyByZWFkb25seSBsb2dJdGVtcyQ6IE9ic2VydmFibGU8Q2FyYm9uTGlzdEl0ZW0+ID0gdGhpcy5hY3RpdmF0ZWRSb3V0ZS5xdWVyeVBhcmFtTWFwLnBpcGUoXG4gICAgdGFwKCgpID0+IHRoaXMubG9hZGluZyQubmV4dCh0cnVlKSksXG4gICAgc3dpdGNoTWFwKHF1ZXJ5UGFyYW1zID0+XG4gICAgICB0aGlzLmxvZ2dpbmdBcGlTZXJ2aWNlLmdldFRlY2huaWNhbExvZ3Moe1xuICAgICAgICAuLi5xdWVyeVBhcmFtc1sncGFyYW1zJ10sXG4gICAgICAgIC4uLighIXF1ZXJ5UGFyYW1zWydwYXJhbXMnXT8ucHJvcGVydGllcyAmJiB7XG4gICAgICAgICAgcHJvcGVydGllczogdGhpcy5iYXNlNjRUb09iamVjdChxdWVyeVBhcmFtc1sncGFyYW1zJ10ucHJvcGVydGllcyksXG4gICAgICAgIH0pLFxuICAgICAgfSlcbiAgICApLFxuICAgIG1hcCgobG9nZ2luZ1BhZ2U6IFBhZ2U8TG9nZ2luZ0V2ZW50PikgPT4ge1xuICAgICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpLFxuICAgICAgICBjb2xsZWN0aW9uU2l6ZTogbG9nZ2luZ1BhZ2UudG90YWxFbGVtZW50cyxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gbG9nZ2luZ1BhZ2UuY29udGVudC5tYXAoKGxvZ0V2ZW50OiBMb2dnaW5nRXZlbnQpID0+ICh7XG4gICAgICAgIC4uLmxvZ0V2ZW50LFxuICAgICAgICBsZXZlbFRhZ3M6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb250ZW50OiBsb2dFdmVudC5sZXZlbCxcbiAgICAgICAgICAgIHR5cGU6IExPR19MRVZFTF9UQUdbbG9nRXZlbnQubGV2ZWxdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KSk7XG4gICAgfSksXG4gICAgc3RhcnRXaXRoKFtdKSxcbiAgICB0YXAoKCkgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzZWFyY2hSZXF1ZXN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdD4oe30pO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNTZWFyY2hBY3RpdmUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5zZWFyY2hSZXF1ZXN0JC5waXBlKFxuICAgIG1hcCgoc2VhcmNoUmVxdWVzdDogTG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdCkgPT4gT2JqZWN0LmtleXMoc2VhcmNoUmVxdWVzdCkubGVuZ3RoID4gMClcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHBhZ2luYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxQYWdpbmF0aW9uPihERUZBVUxUX1BBR0lOQVRJT04pO1xuICBwdWJsaWMgcmVhZG9ubHkgbG9nRGV0YWlsc09wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZExvZ0V2ZW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TG9nZ2luZ0V2ZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IEZJRUxEUzogQ29sdW1uQ29uZmlnW10gPSBbXG4gICAge1xuICAgICAga2V5OiAndGltZXN0YW1wJyxcbiAgICAgIGxhYmVsOiAnbG9nZ2luZy5jb2x1bW5zLnRpbWVzdGFtcCcsXG4gICAgICB2aWV3VHlwZTogVmlld1R5cGUuREFURV9USU1FLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnbGV2ZWxUYWdzJyxcbiAgICAgIGxhYmVsOiAnbG9nZ2luZy5jb2x1bW5zLmxldmVsJyxcbiAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5UQUdTLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZm9ybWF0dGVkTWVzc2FnZScsXG4gICAgICBsYWJlbDogJ2xvZ2dpbmcuY29sdW1ucy5mb3JtYXR0ZWRNZXNzYWdlJyxcbiAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5URVhULFxuICAgICAgdG9vbHRpcENoYXJMaW1pdDogTE9HX0VMTElQU0lTX0xJTUlULFxuICAgIH0sXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dpbmdBcGlTZXJ2aWNlOiBMb2dnaW5nQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyXG4gICkge1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJBbGwoW0ZpbHRlcjE2LCBUcmFzaENhbjE2XSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRJbml0aWFsUGFyYW1zKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2VNb2RhbEV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMubG9nRGV0YWlsc09wZW4kLm5leHQoZmFsc2UpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnNlbGVjdGVkTG9nRXZlbnQkLm5leHQobnVsbCk7XG4gICAgfSwgQ0FSQk9OX0NPTlNUQU5UUy5tb2RhbEFuaW1hdGlvbk1zKTtcbiAgfVxuXG4gIHB1YmxpYyBvblBhZ2luYXRpb25DbGlja2VkKHBhZ2U6IG51bWJlciwgbG9nSXRlbXM6IENhcmJvbkxpc3RJdGVtW10pOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVQYWdpbmF0aW9uOiBQYWdpbmF0aW9uID0gdGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHNlYXJjaFJlcXVlc3Q6IExvZ2dpbmdFdmVudFNlYXJjaFJlcXVlc3QgPSB0aGlzLnNlYXJjaFJlcXVlc3QkLmdldFZhbHVlKCk7XG5cbiAgICBpZiAoIXNlYXJjaFJlcXVlc3QuYmVmb3JlVGltZXN0YW1wICYmIGFjdGl2ZVBhZ2luYXRpb24ucGFnZSA9PT0gMSlcbiAgICAgIHRoaXMuc2VhcmNoUmVxdWVzdCQubmV4dCh7Li4uc2VhcmNoUmVxdWVzdCwgYmVmb3JlVGltZXN0YW1wOiBsb2dJdGVtc1swXS50aW1lc3RhbXB9KTtcblxuICAgIHRoaXMucGFnaW5hdGlvbiQubmV4dCh7Li4uYWN0aXZlUGFnaW5hdGlvbiwgcGFnZX0pO1xuICB9XG5cbiAgcHVibGljIG9uUGFnaW5hdGlvblNldChzaXplOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCB7Y29sbGVjdGlvblNpemUsIHBhZ2V9ID0gdGhpcy5wYWdpbmF0aW9uJC5nZXRWYWx1ZSgpO1xuICAgIGNvbnN0IHJlc2V0UGFnZTogYm9vbGVhbiA9IE1hdGguY2VpbCgrY29sbGVjdGlvblNpemUgLyBzaXplKSA8PSArcGFnZSAmJiArY29sbGVjdGlvblNpemUgPiAwO1xuXG4gICAgdGhpcy5wYWdpbmF0aW9uJC5uZXh0KHsuLi50aGlzLnBhZ2luYXRpb24kLmdldFZhbHVlKCksIHNpemUsIC4uLihyZXNldFBhZ2UgJiYge3BhZ2U6IDF9KX0pO1xuICB9XG5cbiAgcHVibGljIG9uUm93Q2xpY2tlZEV2ZW50KFxuICAgIHJvd0NsaWNrRXZlbnQ6IExvZ2dpbmdFdmVudCAmIHtjdHJsQ2xpY2s6IGJvb2xlYW47IHRhZ3M6IENhcmJvblRhZ1tdfVxuICApOiB2b2lkIHtcbiAgICBjb25zdCB7Y3RybENsaWNrOiBfMSwgdGFnczogXzIsIC4uLmxvZ0V2ZW50fSA9IHJvd0NsaWNrRXZlbnQ7XG4gICAgdGhpcy5sb2dEZXRhaWxzT3BlbiQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnNlbGVjdGVkTG9nRXZlbnQkLm5leHQobG9nRXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoU3VibWl0RXZlbnQoc2VhcmNoUmVxdWVzdDogTG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoUmVxdWVzdCQubmV4dChzZWFyY2hSZXF1ZXN0KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsZWFyRmlsdGVyKCk6IHZvaWQge1xuICAgIHRoaXMub25TZWFyY2hTdWJtaXRFdmVudCh7fSk7XG4gIH1cblxuICBwcml2YXRlIGJhc2U2NFRvT2JqZWN0KGJhc2U2NHN0cmluZzogc3RyaW5nKTogb2JqZWN0IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShhdG9iKGJhc2U2NHN0cmluZykpO1xuICB9XG5cbiAgcHJpdmF0ZSBvYmplY3RUb0Jhc2U2NChqc09iamVjdDogb2JqZWN0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gYnRvYShKU09OLnN0cmluZ2lmeShqc09iamVjdCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuUXVlcnlQYXJhbXNTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnBhZ2luYXRpb24kLCB0aGlzLnNlYXJjaFJlcXVlc3QkXSkuc3Vic2NyaWJlKFxuICAgICAgICAoW3BhZ2luYXRpb24sIHNlYXJjaFJlcXVlc3RdKSA9PiB7XG4gICAgICAgICAgY29uc3Qge3NpemUsIHBhZ2V9ID0gcGFnaW5hdGlvbjtcblxuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2xvZ2dpbmcnXSwge1xuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAgICAgc2l6ZSxcbiAgICAgICAgICAgICAgcGFnZTogcGFnZSAtIDEsXG4gICAgICAgICAgICAgIC4uLntcbiAgICAgICAgICAgICAgICAuLi5zZWFyY2hSZXF1ZXN0LFxuICAgICAgICAgICAgICAgIC4uLighIXNlYXJjaFJlcXVlc3QucHJvcGVydGllcz8ubGVuZ3RoICYmIHtcbiAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHRoaXMub2JqZWN0VG9CYXNlNjQoc2VhcmNoUmVxdWVzdC5wcm9wZXJ0aWVzKSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBRdWVyeVBhcmFtc1RvU2VhcmNoUmVxdWVzdChcbiAgICBxdWVyeVBhcmFtczogTG9nZ2luZ0V2ZW50UXVlcnlQYXJhbXNcbiAgKTogTG9nZ2luZ0V2ZW50U2VhcmNoUmVxdWVzdCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLighIXF1ZXJ5UGFyYW1zLmxpa2VGb3JtYXR0ZWRNZXNzYWdlICYmIHtcbiAgICAgICAgbGlrZUZvcm1hdHRlZE1lc3NhZ2U6IHF1ZXJ5UGFyYW1zLmxpa2VGb3JtYXR0ZWRNZXNzYWdlLFxuICAgICAgfSksXG4gICAgICAuLi4oISFxdWVyeVBhcmFtcy5sZXZlbCAmJiB7bGV2ZWw6IHF1ZXJ5UGFyYW1zLmxldmVsfSksXG4gICAgICAuLi4oISFxdWVyeVBhcmFtcy5hZnRlclRpbWVzdGFtcCAmJiB7YWZ0ZXJUaW1lc3RhbXA6IHF1ZXJ5UGFyYW1zLmFmdGVyVGltZXN0YW1wfSksXG4gICAgICAuLi4oISFxdWVyeVBhcmFtcy5iZWZvcmVUaW1lc3RhbXAgJiYge2JlZm9yZVRpbWVzdGFtcDogcXVlcnlQYXJhbXMuYmVmb3JlVGltZXN0YW1wfSksXG4gICAgICAuLi4oISFxdWVyeVBhcmFtcy5wcm9wZXJ0aWVzICYmIHtcbiAgICAgICAgcHJvcGVydGllczogdGhpcy5iYXNlNjRUb09iamVjdChxdWVyeVBhcmFtcy5wcm9wZXJ0aWVzKSBhcyBBcnJheTxMb2dnaW5nRXZlbnRQcm9wZXJ0eT4sXG4gICAgICB9KSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRJbml0aWFsUGFyYW1zKCk6IHZvaWQge1xuICAgIHRoaXMuYWN0aXZhdGVkUm91dGUucXVlcnlQYXJhbU1hcFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIG1hcChxdWVyeVBhcmFtcyA9PiB7XG4gICAgICAgICAgY29uc3Qge3NpemUsIHBhZ2UsIC4uLnNlYXJjaFJlcXVlc3R9ID0gcXVlcnlQYXJhbXNbJ3BhcmFtcyddO1xuICAgICAgICAgIHJldHVybiB7c2l6ZSwgcGFnZSwgc2VhcmNoUmVxdWVzdH07XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh7c2l6ZSwgcGFnZSwgc2VhcmNoUmVxdWVzdH0pID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hSZXF1ZXN0JC5uZXh0KHRoaXMubWFwUXVlcnlQYXJhbXNUb1NlYXJjaFJlcXVlc3Qoc2VhcmNoUmVxdWVzdCkpO1xuICAgICAgICB0aGlzLnBhZ2luYXRpb24kLm5leHQoe1xuICAgICAgICAgIC4uLnRoaXMucGFnaW5hdGlvbiQuZ2V0VmFsdWUoKSxcbiAgICAgICAgICBzaXplOiArc2l6ZSxcbiAgICAgICAgICBwYWdlOiArKHBhZ2UgPz8gMCkgKyAxLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9wZW5RdWVyeVBhcmFtc1N1YnNjcmlwdGlvbigpO1xuICAgICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPHZhbHRpbW8tY2FyYm9uLWxpc3RcbiAgKm5nSWY9XCJ7bG9nSXRlbXM6IGxvZ0l0ZW1zJCB8IGFzeW5jLCBpc1NlYXJjaEFjdGl2ZTogaXNTZWFyY2hBY3RpdmUkIHwgYXN5bmN9IGFzIG9ic1wiXG4gIFtpdGVtc109XCJvYnMubG9nSXRlbXNcIlxuICBbZmllbGRzXT1cIkZJRUxEU1wiXG4gIFtsb2FkaW5nXT1cImxvYWRpbmckIHwgYXN5bmNcIlxuICBbcGFnaW5hdGlvbl09XCJwYWdpbmF0aW9uJCB8IGFzeW5jXCJcbiAgcGFnaW5hdGlvbklkZW50aWZpZXI9XCJsb2dnaW5nXCJcbiAgKHBhZ2luYXRpb25DbGlja2VkKT1cIm9uUGFnaW5hdGlvbkNsaWNrZWQoJGV2ZW50LCBvYnMubG9nSXRlbXMpXCJcbiAgKHBhZ2luYXRpb25TZXQpPVwib25QYWdpbmF0aW9uU2V0KCRldmVudClcIlxuICAocm93Q2xpY2tlZCk9XCJvblJvd0NsaWNrZWRFdmVudCgkZXZlbnQpXCJcbj5cbiAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgIFthY3Rpb25dPVwib2JzLmlzU2VhcmNoQWN0aXZlID8gY2xlYXJTZWFyY2hCdXR0b24gOiBudWxsXCJcbiAgICBbZGVzY3JpcHRpb25dPVwiXG4gICAgICAnbG9nZ2luZy5ub1Jlc3VsdHMuJyArIChvYnMuaXNTZWFyY2hBY3RpdmUgPyAnc2VhcmNoRGVzY3JpcHRpb24nIDogJ2Rlc2NyaXB0aW9uJykgfCB0cmFuc2xhdGVcbiAgICBcIlxuICAgIFt0aXRsZV09XCInbG9nZ2luZy5ub1Jlc3VsdHMudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuXG4gIDxidXR0b25cbiAgICBjYXJib25Ub29sYmFyQ29udGVudFxuICAgIFtjZHNPdmVyZmxvd01lbnVdPVwibG9nU2VhcmNoXCJcbiAgICBbY3VzdG9tUGFuZV09XCJ0cnVlXCJcbiAgICBbaWNvbk9ubHldPVwidHJ1ZVwiXG4gICAgW2ZsaXBdPVwidHJ1ZVwiXG4gICAgW29mZnNldF09XCJ7eDogMCwgeTogNDd9XCJcbiAgICBjZHNCdXR0b249XCJnaG9zdFwiXG4gICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgPlxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJmaWx0ZXJcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgPC9idXR0b24+XG48L3ZhbHRpbW8tY2FyYm9uLWxpc3Q+XG5cbjx2YWx0aW1vLWxvZy1kZXRhaWxzXG4gIFtvcGVuXT1cImxvZ0RldGFpbHNPcGVuJCB8IGFzeW5jXCJcbiAgW2xvZ0V2ZW50XT1cInNlbGVjdGVkTG9nRXZlbnQkIHwgYXN5bmNcIlxuICAoY2xvc2VNb2RhbEV2ZW50KT1cIm9uQ2xvc2VNb2RhbEV2ZW50KClcIlxuPjwvdmFsdGltby1sb2ctZGV0YWlscz5cblxuPG5nLXRlbXBsYXRlICNsb2dTZWFyY2g+XG4gIDx2YWx0aW1vLWxvZy1zZWFyY2hcbiAgICBbaW5pdFNlYXJjaFJlcXVlc3RdPVwic2VhcmNoUmVxdWVzdCQgfCBhc3luY1wiXG4gICAgKHNlYXJjaFN1Ym1pdEV2ZW50KT1cIm9uU2VhcmNoU3VibWl0RXZlbnQoJGV2ZW50KVwiXG4gID48L3ZhbHRpbW8tbG9nLXNlYXJjaD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2xlYXJTZWFyY2hCdXR0b24+XG4gIDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIChjbGljayk9XCJvbkNsZWFyRmlsdGVyKClcIj5cbiAgICB7eyAnaW50ZXJmYWNlLmNsZWFyJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInRyYXNoLWNhblwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -14,8 +14,6 @@ import { CARBON_THEME, CurrentCarbonTheme, DEFAULT_PAGINATION, ViewType, CARBON_
14
14
  import * as i3 from 'carbon-components-angular';
15
15
  import { ModalModule, ButtonModule, DropdownModule, IconModule, InputModule, DatePickerModule, TimePickerModule, DialogModule } from 'carbon-components-angular';
16
16
  import { map, Subscription, debounceTime, BehaviorSubject, tap, switchMap, startWith, combineLatest, take } from 'rxjs';
17
- import * as i4$1 from 'ngx-json-viewer';
18
- import { NgxJsonViewerModule } from 'ngx-json-viewer';
19
17
  import * as i2$1 from '@angular/forms';
20
18
  import { ReactiveFormsModule, FormsModule } from '@angular/forms';
21
19
  import flatpickr from 'flatpickr';
@@ -146,16 +144,40 @@ class LogDetailsComponent {
146
144
  constructor() {
147
145
  this.open = false;
148
146
  this.closeModalEvent = new EventEmitter();
147
+ this.classesToIgnore = [
148
+ 'LoggingContextKt',
149
+ 'LoggableResourceAspect',
150
+ 'RunWithoutAuthorizationAspect',
151
+ 'UserLoggingFilter',
152
+ ];
153
+ }
154
+ set logEvent(logEvent) {
155
+ this.logEventFormatted = {
156
+ ...logEvent,
157
+ stacktrace: this.formatStacktrace(logEvent?.stacktrace),
158
+ };
149
159
  }
150
160
  onCloseSelect() {
151
161
  this.closeModalEvent.emit();
152
162
  }
163
+ formatStacktrace(s) {
164
+ if (!s) {
165
+ return s;
166
+ }
167
+ s = s.replace(/^[^\t].+(Exception|Error): .+/gm, '<span class="highlight1">$&</span>');
168
+ s = s.replace(/^Caused by: .+/gm, '<span class="highlight1">$&</span>');
169
+ this.classesToIgnore.forEach(c => (s = s.replace(new RegExp(`^\tat .+\.${c}\..+`, 'gm'), '<span class="highlight3">$&</span>')));
170
+ s = s.replace(/^\tat com.(ritense|valtimo).+/gm, '<span class="highlight2">$&</span>');
171
+ s = s.replace(/^\t.+common frames omitted$/gm, '<span class="highlight3">$&</span>');
172
+ s = s.replace(/^\tat .+/gm, '<span class="highlight3">$&</span>');
173
+ return s;
174
+ }
153
175
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LogDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
154
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: LogDetailsComponent, isStandalone: true, selector: "valtimo-log-details", inputs: { open: "open", logEvent: "logEvent" }, outputs: { closeModalEvent: "closeModalEvent" }, 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\n<cds-modal [open]=\"open\" size=\"lg\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\">\n {{ 'logging.detailsTitle' | translate }}\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-log-details__content\">\n <ngx-json-viewer *ngIf=\"logEvent\" [json]=\"logEvent\"></ngx-json-viewer>\n </section>\n</cds-modal>\n", styles: [".valtimo-log-details__content{padding:32px}.valtimo-log-details__content ::ng-deep .ngx-json-viewer{overflow:auto!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i3.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i3.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "directive", type: i3.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "ngmodule", type: NgxJsonViewerModule }, { kind: "component", type: i4$1.NgxJsonViewerComponent, selector: "ngx-json-viewer", inputs: ["json", "expanded", "depth", "_currentDepth"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
176
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: LogDetailsComponent, isStandalone: true, selector: "valtimo-log-details", inputs: { open: "open", logEvent: "logEvent" }, outputs: { closeModalEvent: "closeModalEvent" }, 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\n<cds-modal [open]=\"open\" size=\"lg\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\">\n {{ 'logging.detailsTitle' | translate }}\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-log-details__content\">\n <h4 class=\"log-header\">\n {{ 'logging.formattedMessage' | translate }}\n </h4>\n\n <div>{{ logEventFormatted?.formattedMessage || '-' }}</div>\n\n <h4 class=\"log-header\">\n {{ 'logging.timestamp' | translate }}\n </h4>\n\n <div>\n {{ logEventFormatted?.timestamp || '-' }}\n </div>\n\n @if (logEventFormatted?.properties?.length > 0) {\n <h4 class=\"log-header\">\n {{ 'logging.properties' | translate }}\n </h4>\n <div>\n @for (property of logEventFormatted.properties; track property.key) {\n <div>\n <span class=\"property-key\">{{ property.key }}: </span>\n <span class=\"property-value\">{{ property.value }}</span>\n </div>\n }\n </div>\n }\n\n @if (logEventFormatted?.stacktrace) {\n <h4 class=\"log-header\">\n {{ 'logging.stacktrace' | translate }}\n </h4>\n <div>\n <pre class=\"valtimo-log-stacktrace\" [innerHtml]=\"logEventFormatted.stacktrace\"></pre>\n </div>\n }\n </section>\n</cds-modal>\n", styles: [".log-header{padding-top:24px;padding-bottom:12px;color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}.property-key{color:var(--cds-text-primary)}.property-value{color:var(--cds-text-secondary)}.valtimo-log-details__content{padding:32px}.valtimo-log-details__content ::ng-deep .highlight1{color:var(--cds-text-primary);font-weight:600}.valtimo-log-details__content ::ng-deep .valtimo-log-stacktrace{color:var(--cds-text-primary);font-weight:400;background-color:var(--cds-layer-01)}.valtimo-log-details__content ::ng-deep .highlight3{color:var(--cds-text-on-color-disabled);font-weight:300}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i3.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i3.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "directive", type: i3.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
155
177
  }
156
178
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LogDetailsComponent, decorators: [{
157
179
  type: Component,
158
- args: [{ selector: 'valtimo-log-details', standalone: true, imports: [CommonModule, TranslateModule, ModalModule, NgxJsonViewerModule], changeDetection: ChangeDetectionStrategy.OnPush, 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\n<cds-modal [open]=\"open\" size=\"lg\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\">\n {{ 'logging.detailsTitle' | translate }}\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-log-details__content\">\n <ngx-json-viewer *ngIf=\"logEvent\" [json]=\"logEvent\"></ngx-json-viewer>\n </section>\n</cds-modal>\n", styles: [".valtimo-log-details__content{padding:32px}.valtimo-log-details__content ::ng-deep .ngx-json-viewer{overflow:auto!important}\n"] }]
180
+ args: [{ selector: 'valtimo-log-details', standalone: true, imports: [CommonModule, TranslateModule, ModalModule], changeDetection: ChangeDetectionStrategy.OnPush, 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\n<cds-modal [open]=\"open\" size=\"lg\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\">\n {{ 'logging.detailsTitle' | translate }}\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-log-details__content\">\n <h4 class=\"log-header\">\n {{ 'logging.formattedMessage' | translate }}\n </h4>\n\n <div>{{ logEventFormatted?.formattedMessage || '-' }}</div>\n\n <h4 class=\"log-header\">\n {{ 'logging.timestamp' | translate }}\n </h4>\n\n <div>\n {{ logEventFormatted?.timestamp || '-' }}\n </div>\n\n @if (logEventFormatted?.properties?.length > 0) {\n <h4 class=\"log-header\">\n {{ 'logging.properties' | translate }}\n </h4>\n <div>\n @for (property of logEventFormatted.properties; track property.key) {\n <div>\n <span class=\"property-key\">{{ property.key }}: </span>\n <span class=\"property-value\">{{ property.value }}</span>\n </div>\n }\n </div>\n }\n\n @if (logEventFormatted?.stacktrace) {\n <h4 class=\"log-header\">\n {{ 'logging.stacktrace' | translate }}\n </h4>\n <div>\n <pre class=\"valtimo-log-stacktrace\" [innerHtml]=\"logEventFormatted.stacktrace\"></pre>\n </div>\n }\n </section>\n</cds-modal>\n", styles: [".log-header{padding-top:24px;padding-bottom:12px;color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}.property-key{color:var(--cds-text-primary)}.property-value{color:var(--cds-text-secondary)}.valtimo-log-details__content{padding:32px}.valtimo-log-details__content ::ng-deep .highlight1{color:var(--cds-text-primary);font-weight:600}.valtimo-log-details__content ::ng-deep .valtimo-log-stacktrace{color:var(--cds-text-primary);font-weight:400;background-color:var(--cds-layer-01)}.valtimo-log-details__content ::ng-deep .highlight3{color:var(--cds-text-on-color-disabled);font-weight:300}\n"] }]
159
181
  }], propDecorators: { open: [{
160
182
  type: Input
161
183
  }], logEvent: [{
@@ -407,7 +429,7 @@ class LoggingListComponent {
407
429
  });
408
430
  return loggingPage.content.map((logEvent) => ({
409
431
  ...logEvent,
410
- tags: [
432
+ levelTags: [
411
433
  {
412
434
  content: logEvent.level,
413
435
  type: LOG_LEVEL_TAG[logEvent.level],
@@ -429,7 +451,7 @@ class LoggingListComponent {
429
451
  viewType: ViewType.DATE_TIME,
430
452
  },
431
453
  {
432
- key: 'level',
454
+ key: 'levelTags',
433
455
  label: 'logging.columns.level',
434
456
  viewType: ViewType.TAGS,
435
457
  },
@@ -1 +1 @@
1
- {"version":3,"file":"valtimo-logging.mjs","sources":["../../../../projects/valtimo/logging/src/lib/models/logging.model.ts","../../../../projects/valtimo/logging/src/lib/models/index.ts","../../../../projects/valtimo/logging/src/lib/services/logging-api.service.ts","../../../../projects/valtimo/logging/src/lib/services/index.ts","../../../../projects/valtimo/logging/src/lib/components/log-details/log-details.component.ts","../../../../projects/valtimo/logging/src/lib/components/log-details/log-details.component.html","../../../../projects/valtimo/logging/src/lib/components/log-search/log-search.component.ts","../../../../projects/valtimo/logging/src/lib/components/log-search/log-search.component.html","../../../../projects/valtimo/logging/src/lib/components/logging-list/logging-list.component.ts","../../../../projects/valtimo/logging/src/lib/components/logging-list/logging-list.component.html","../../../../projects/valtimo/logging/src/logging-routing.module.ts","../../../../projects/valtimo/logging/src/logging.module.ts","../../../../projects/valtimo/logging/src/public_api.ts","../../../../projects/valtimo/logging/src/valtimo-logging.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\ninterface LoggingEvent {\n timestamp: string;\n formattedMessage: string;\n level: string;\n properties: Array<LoggingEventProperty>;\n stacktrace: string;\n}\n\ninterface LoggingEventProperty {\n key: string;\n value: string;\n}\n\ninterface LoggingEventSearchRequest {\n afterTimestamp?: string;\n beforeTimestamp?: string;\n level?: string;\n likeFormattedMessage?: string;\n properties?: Array<LoggingEventProperty>;\n size?: number;\n page?: number;\n}\n\nenum LogLevel {\n DEBUG = 'DEBUG',\n ERROR = 'ERROR',\n INFO = 'INFO',\n TRACE = 'TRACE',\n WARN = 'WARN',\n}\n\nconst LOG_LEVEL_TAG = {\n [LogLevel.DEBUG]: 'teal',\n [LogLevel.ERROR]: 'red',\n [LogLevel.INFO]: 'blue',\n [LogLevel.TRACE]: 'grey',\n [LogLevel.WARN]: 'purple',\n};\n\nconst LOG_ELLIPSIS_LIMIT = 128;\n\nexport {\n LOG_ELLIPSIS_LIMIT,\n LOG_LEVEL_TAG,\n LoggingEvent,\n LoggingEventProperty,\n LoggingEventSearchRequest,\n LogLevel,\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 './logging.model';\nexport * from './search.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 {HttpClient, HttpParams} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService, Page, BaseApiService} from '@valtimo/config';\nimport {Observable} from 'rxjs';\nimport {LoggingEvent, LoggingEventSearchRequest} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoggingApiService extends BaseApiService {\n constructor(\n protected readonly configService: ConfigService,\n protected readonly httpClient: HttpClient\n ) {\n super(httpClient, configService);\n }\n\n public getTechnicalLogs(\n searchRequest: LoggingEventSearchRequest\n ): Observable<Page<LoggingEvent>> {\n const {size, page, ...searchBody} = searchRequest;\n const params = new HttpParams({\n fromObject: {size, page} as any,\n });\n\n return this.httpClient.post<Page<LoggingEvent>>(\n this.getApiUrl('management/v1/logging'),\n searchBody,\n {\n params,\n }\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\nexport * from './logging-api.service';\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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ModalModule} from 'carbon-components-angular';\nimport {NgxJsonViewerModule} from 'ngx-json-viewer';\nimport {LoggingEvent} from '../../models';\n\n@Component({\n selector: 'valtimo-log-details',\n templateUrl: './log-details.component.html',\n styleUrl: './log-details.component.scss',\n standalone: true,\n imports: [CommonModule, TranslateModule, ModalModule, NgxJsonViewerModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LogDetailsComponent {\n @Input() public open = false;\n @Input() public logEvent: LoggingEvent | null;\n\n @Output() public readonly closeModalEvent = new EventEmitter();\n\n public onCloseSelect(): void {\n this.closeModalEvent.emit();\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\n<cds-modal [open]=\"open\" size=\"lg\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\">\n {{ 'logging.detailsTitle' | translate }}\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-log-details__content\">\n <ngx-json-viewer *ngIf=\"logEvent\" [json]=\"logEvent\"></ngx-json-viewer>\n </section>\n</cds-modal>\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {FormArray, FormBuilder, FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {TrashCan16} from '@carbon/icons';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CARBON_THEME, CdsThemeService, CurrentCarbonTheme} from '@valtimo/components';\nimport {\n ButtonModule,\n DatePicker,\n DatePickerModule,\n DropdownModule,\n IconModule,\n IconService,\n InputModule,\n ListItem,\n TimePickerModule,\n} from 'carbon-components-angular';\nimport flatpickr from 'flatpickr';\nimport {debounceTime, map, Observable, Subscription} from 'rxjs';\nimport {\n LoggingEventProperty,\n LoggingEventSearchFormValue,\n LoggingEventSearchRequest,\n LogLevel,\n} from '../../models';\n\n@Component({\n selector: 'valtimo-log-search',\n templateUrl: './log-search.component.html',\n styleUrl: './log-search.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n DropdownModule,\n IconModule,\n InputModule,\n ReactiveFormsModule,\n FormsModule,\n DatePickerModule,\n TimePickerModule,\n ],\n})\nexport class LogSearchComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild('afterTimestamp') private readonly _afterTimestampDatePicker: DatePicker;\n @ViewChild('beforeTimestamp') private readonly _beforeTimestampDatePicker: DatePicker;\n\n @Input() public initSearchRequest: LoggingEventSearchRequest;\n @Output() public readonly searchSubmitEvent = new EventEmitter<LoggingEventSearchRequest>();\n\n public readonly theme$: Observable<CARBON_THEME> = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G100\n )\n );\n\n public readonly formGroup = this.fb.group({\n likeFormattedMessage: this.fb.control<string>(''),\n level: this.fb.control<ListItem>({content: '', selected: false}),\n beforeTimestamp: this.fb.control<string>(''),\n beforeTime: this.fb.control<string>(''),\n afterTimestamp: this.fb.control<string>(''),\n afterTime: this.fb.control<string>(''),\n properties: this.fb.array([\n this.fb.group({\n key: this.fb.control<string>(''),\n value: this.fb.control<string>(''),\n }),\n ]),\n });\n\n public logLevelItems: Partial<ListItem>[] = [\n {\n content: LogLevel.ERROR,\n },\n {\n content: LogLevel.WARN,\n },\n {\n content: LogLevel.INFO,\n },\n {\n content: LogLevel.DEBUG,\n },\n {\n content: LogLevel.TRACE,\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n\n public get propertiesArray(): FormArray {\n return this.formGroup.get('properties') as FormArray;\n }\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly iconService: IconService\n ) {\n this.iconService.register(TrashCan16);\n }\n\n public ngOnInit(): void {\n this.setInitialForm();\n\n this._subscriptions.add(\n this.formGroup.valueChanges.pipe(debounceTime(500)).subscribe(() => {\n this.searchSubmitEvent.emit(this.mapFormValueToLogSearch());\n })\n );\n }\n\n public ngAfterViewInit(): void {\n const afterTimestampControlValue = this.formGroup.get('afterTimestamp')?.value;\n const beforeTimestampControlValue = this.formGroup.get('beforeTimestamp')?.value;\n\n if (!!afterTimestampControlValue) {\n this._afterTimestampDatePicker.writeValue([\n flatpickr.formatDate(new Date(afterTimestampControlValue), 'd-m-Y'),\n ]);\n }\n\n if (!!beforeTimestampControlValue) {\n this._beforeTimestampDatePicker.writeValue([\n flatpickr.formatDate(new Date(beforeTimestampControlValue), 'd-m-Y'),\n ]);\n }\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onClearFilter(): void {\n this.formGroup.reset();\n this._afterTimestampDatePicker.writeValue([]);\n this._beforeTimestampDatePicker.writeValue([]);\n }\n\n public onDateSelected(control: 'afterTimestamp' | 'beforeTimestamp', event: Date[]): void {\n this.formGroup.get(control)?.patchValue(flatpickr.formatDate(event[0], 'Z'));\n }\n\n public addPropertySearchField(): void {\n this.propertiesArray.push(\n this.fb.group({\n key: this.fb.control<string>(''),\n value: this.fb.control<string>(''),\n })\n );\n }\n\n public removePropertySearchField(index: number): void {\n this.propertiesArray.removeAt(index);\n }\n\n private initLogItems(formValue: LoggingEventSearchFormValue): void {\n if (!formValue.level) return;\n\n this.logLevelItems = this.logLevelItems.map((levelItem: Partial<ListItem>) => ({\n ...levelItem,\n selected: formValue.level?.content === levelItem.content,\n }));\n }\n\n private initPropertiesForm(formValue: LoggingEventSearchFormValue): void {\n if (!formValue.properties) return;\n\n for (let i = 1; i < formValue.properties.length; i++) {\n this.addPropertySearchField();\n }\n }\n\n private initTimeForm(formValue: LoggingEventSearchFormValue): void {\n const {beforeTimestamp, afterTimestamp} = formValue;\n\n if (!!beforeTimestamp) {\n const {hours, minutes} = this.convertTimestampToTimeString(beforeTimestamp);\n this.formGroup.patchValue({beforeTime: `${hours}:${minutes}`}, {emitEvent: false});\n }\n\n if (!!afterTimestamp) {\n const {hours, minutes} = this.convertTimestampToTimeString(afterTimestamp);\n this.formGroup.patchValue({afterTime: `${hours}:${minutes}`}, {emitEvent: false});\n }\n }\n\n private convertTimestampToTimeString(timestamp: string): {hours: string; minutes: string} {\n const date = new Date(timestamp);\n return {\n hours: `0${date.getHours()}`.slice(-2),\n minutes: `0${date.getMinutes()}`.slice(-2),\n };\n }\n\n private mapFormValueToLogSearch(): LoggingEventSearchRequest {\n const formValue = this.formGroup.getRawValue();\n const properties = formValue.properties.filter(\n (property: {key: string | null; value: string | null}) => !!property.key && !!property.value\n ) as LoggingEventProperty[];\n\n return {\n ...(!!formValue.likeFormattedMessage && {\n likeFormattedMessage: formValue.likeFormattedMessage,\n }),\n ...(!!formValue.level?.content && {level: formValue.level.content}),\n ...(!!formValue.afterTimestamp && {\n afterTimestamp: this.mapTimeStamps(formValue.afterTimestamp, formValue.afterTime),\n }),\n ...(!!formValue.beforeTimestamp && {\n beforeTimestamp: this.mapTimeStamps(formValue.beforeTimestamp, formValue.beforeTime),\n }),\n ...(!!properties.length && {properties}),\n };\n }\n\n private mapSearchRequestToFormValue(\n searchRequest: LoggingEventSearchRequest\n ): LoggingEventSearchFormValue {\n return {\n ...(searchRequest.likeFormattedMessage && {\n likeFormattedMessage: searchRequest.likeFormattedMessage,\n }),\n ...(searchRequest.level && {\n level: {\n content: searchRequest.level,\n selected: true,\n },\n }),\n ...(searchRequest.afterTimestamp && {afterTimestamp: searchRequest.afterTimestamp}),\n ...(searchRequest.beforeTimestamp && {beforeTimestamp: searchRequest.beforeTimestamp}),\n ...(searchRequest.properties && {properties: searchRequest.properties}),\n };\n }\n\n private mapTimeStamps(date: string, time: string | null): string {\n if (!time) return date;\n\n const timeValue: string[] = time.split(':');\n const dateObject = new Date(date);\n dateObject.setHours(+timeValue[0], +timeValue[1]);\n\n return flatpickr.formatDate(dateObject, 'Z');\n }\n\n private setInitialForm(): void {\n const mappedFormValue: LoggingEventSearchFormValue = this.mapSearchRequestToFormValue(\n this.initSearchRequest\n );\n this.initLogItems(mappedFormValue);\n this.initPropertiesForm(mappedFormValue);\n this.initTimeForm(mappedFormValue);\n\n this.formGroup.patchValue(mappedFormValue, {emitEvent: false});\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<form\n *ngIf=\"theme$ | async as theme\"\n class=\"valtimo-log-search\"\n [formGroup]=\"formGroup\"\n (click)=\"$event.stopImmediatePropagation()\"\n>\n <section class=\"valtimo-log-search__fields\">\n <cds-text-label class=\"valtimo-log-search__message\">\n {{ 'logging.columns.formattedMessage' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"likeFormattedMessage\"\n [placeholder]=\"'logging.columns.formattedMessage' | translate\"\n />\n </cds-text-label>\n\n <cds-dropdown\n class=\"valtimo-log-search__level\"\n formControlName=\"level\"\n [attr.data-carbon-theme]=\"theme\"\n [appendInline]=\"true\"\n [label]=\"'logging.columns.level' | translate\"\n [placeholder]=\"'logging.columns.level' | translate\"\n >\n <cds-dropdown-list [items]=\"logLevelItems\"></cds-dropdown-list>\n </cds-dropdown>\n\n <div class=\"valtimo-log-search__timestamp\">\n <div class=\"valtimo-log-search__datetime\">\n <cds-date-picker\n #afterTimestamp\n [attr.data-carbon-theme]=\"theme\"\n [label]=\"'logging.search.afterTimestamp' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('afterTimestamp', $event)\"\n ></cds-date-picker>\n\n <cds-timepicker [attr.data-carbon-theme]=\"theme\" formControlName=\"afterTime\">\n </cds-timepicker>\n </div>\n\n <div class=\"valtimo-log-search__datetime\">\n <cds-date-picker\n #beforeTimestamp\n [attr.data-carbon-theme]=\"theme\"\n [label]=\"'logging.search.beforeTimestamp' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('beforeTimestamp', $event)\"\n ></cds-date-picker>\n\n <cds-timepicker [attr.data-carbon-theme]=\"theme\" formControlName=\"beforeTime\">\n </cds-timepicker>\n </div>\n </div>\n </section>\n\n <section formArrayName=\"properties\" class=\"valtimo-log-search__properties\">\n <span class=\"valtimo-log-search__label\"> {{ 'logging.search.properties' | translate }} </span>\n\n @for (propertyGroup of propertiesArray.controls; track $index) {\n <form [formGroup]=\"propertyGroup\" class=\"valtimo-log-search__property\">\n <cds-text-label>\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"key\"\n [placeholder]=\"'interface.key' | translate\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"value\"\n [placeholder]=\"'interface.value' | translate\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n iconOnly=\"true\"\n type=\"button\"\n (click)=\"removePropertySearchField($index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button cdsButton=\"primary\" size=\"sm\" type=\"button\" (click)=\"addPropertySearchField()\">\n {{ 'logging.search.addProperty' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </section>\n\n <button cdsButton=\"tertiary\" type=\"button\" (click)=\"onClearFilter()\">\n {{ 'interface.clear' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</form>\n","/*\n * Copyright 2015-2023 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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {Filter16, TrashCan16} from '@carbon/icons';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n CarbonListItem,\n CarbonListModule,\n CarbonTag,\n ColumnConfig,\n DEFAULT_PAGINATION,\n Pagination,\n ViewType,\n} from '@valtimo/components';\nimport {Page} from '@valtimo/config';\nimport {\n ButtonModule,\n DialogModule,\n DropdownModule,\n IconModule,\n IconService,\n} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n map,\n Observable,\n startWith,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {\n LOG_ELLIPSIS_LIMIT,\n LOG_LEVEL_TAG,\n LoggingEvent,\n LoggingEventProperty,\n LoggingEventQueryParams,\n LoggingEventSearchRequest,\n} from '../../models';\nimport {LoggingApiService} from '../../services';\nimport {LogDetailsComponent} from '../log-details/log-details.component';\nimport {LogSearchComponent} from '../log-search/log-search.component';\n\n@Component({\n templateUrl: './logging-list.component.html',\n styleUrl: './logging-list.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n CarbonListModule,\n DialogModule,\n DropdownModule,\n IconModule,\n LogDetailsComponent,\n LogSearchComponent,\n ],\n providers: [LoggingApiService],\n})\nexport class LoggingListComponent implements OnInit, OnDestroy {\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly logItems$: Observable<CarbonListItem> = this.activatedRoute.queryParamMap.pipe(\n tap(() => this.loading$.next(true)),\n switchMap(queryParams =>\n this.loggingApiService.getTechnicalLogs({\n ...queryParams['params'],\n ...(!!queryParams['params']?.properties && {\n properties: this.base64ToObject(queryParams['params'].properties),\n }),\n })\n ),\n map((loggingPage: Page<LoggingEvent>) => {\n this.pagination$.next({\n ...this.pagination$.getValue(),\n collectionSize: loggingPage.totalElements,\n });\n\n return loggingPage.content.map((logEvent: LoggingEvent) => ({\n ...logEvent,\n tags: [\n {\n content: logEvent.level,\n type: LOG_LEVEL_TAG[logEvent.level],\n },\n ],\n }));\n }),\n startWith([]),\n tap(() => {\n this.loading$.next(false);\n })\n );\n\n public readonly searchRequest$ = new BehaviorSubject<LoggingEventSearchRequest>({});\n public readonly isSearchActive$: Observable<boolean> = this.searchRequest$.pipe(\n map((searchRequest: LoggingEventSearchRequest) => Object.keys(searchRequest).length > 0)\n );\n public readonly pagination$ = new BehaviorSubject<Pagination>(DEFAULT_PAGINATION);\n public readonly logDetailsOpen$ = new BehaviorSubject<boolean>(false);\n public readonly selectedLogEvent$ = new BehaviorSubject<LoggingEvent | null>(null);\n\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'timestamp',\n label: 'logging.columns.timestamp',\n viewType: ViewType.DATE_TIME,\n },\n {\n key: 'level',\n label: 'logging.columns.level',\n viewType: ViewType.TAGS,\n },\n {\n key: 'formattedMessage',\n label: 'logging.columns.formattedMessage',\n viewType: ViewType.TEXT,\n tooltipCharLimit: LOG_ELLIPSIS_LIMIT,\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly activatedRoute: ActivatedRoute,\n private readonly iconService: IconService,\n private readonly loggingApiService: LoggingApiService,\n private readonly router: Router\n ) {\n this.iconService.registerAll([Filter16, TrashCan16]);\n }\n\n public ngOnInit(): void {\n this.setInitialParams();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onCloseModalEvent(): void {\n this.logDetailsOpen$.next(false);\n\n setTimeout(() => {\n this.selectedLogEvent$.next(null);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n public onPaginationClicked(page: number, logItems: CarbonListItem[]): void {\n const activePagination: Pagination = this.pagination$.getValue();\n const searchRequest: LoggingEventSearchRequest = this.searchRequest$.getValue();\n\n if (!searchRequest.beforeTimestamp && activePagination.page === 1)\n this.searchRequest$.next({...searchRequest, beforeTimestamp: logItems[0].timestamp});\n\n this.pagination$.next({...activePagination, page});\n }\n\n public onPaginationSet(size: number): void {\n const {collectionSize, page} = this.pagination$.getValue();\n const resetPage: boolean = Math.ceil(+collectionSize / size) <= +page && +collectionSize > 0;\n\n this.pagination$.next({...this.pagination$.getValue(), size, ...(resetPage && {page: 1})});\n }\n\n public onRowClickedEvent(\n rowClickEvent: LoggingEvent & {ctrlClick: boolean; tags: CarbonTag[]}\n ): void {\n const {ctrlClick: _1, tags: _2, ...logEvent} = rowClickEvent;\n this.logDetailsOpen$.next(true);\n this.selectedLogEvent$.next(logEvent);\n }\n\n public onSearchSubmitEvent(searchRequest: LoggingEventSearchRequest): void {\n this.searchRequest$.next(searchRequest);\n }\n\n public onClearFilter(): void {\n this.onSearchSubmitEvent({});\n }\n\n private base64ToObject(base64string: string): object {\n return JSON.parse(atob(base64string));\n }\n\n private objectToBase64(jsObject: object): string {\n return btoa(JSON.stringify(jsObject));\n }\n\n private openQueryParamsSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.pagination$, this.searchRequest$]).subscribe(\n ([pagination, searchRequest]) => {\n const {size, page} = pagination;\n\n this.router.navigate(['/logging'], {\n queryParams: {\n size,\n page: page - 1,\n ...{\n ...searchRequest,\n ...(!!searchRequest.properties?.length && {\n properties: this.objectToBase64(searchRequest.properties),\n }),\n },\n },\n });\n }\n )\n );\n }\n\n private mapQueryParamsToSearchRequest(\n queryParams: LoggingEventQueryParams\n ): LoggingEventSearchRequest {\n return {\n ...(!!queryParams.likeFormattedMessage && {\n likeFormattedMessage: queryParams.likeFormattedMessage,\n }),\n ...(!!queryParams.level && {level: queryParams.level}),\n ...(!!queryParams.afterTimestamp && {afterTimestamp: queryParams.afterTimestamp}),\n ...(!!queryParams.beforeTimestamp && {beforeTimestamp: queryParams.beforeTimestamp}),\n ...(!!queryParams.properties && {\n properties: this.base64ToObject(queryParams.properties) as Array<LoggingEventProperty>,\n }),\n };\n }\n\n private setInitialParams(): void {\n this.activatedRoute.queryParamMap\n .pipe(\n take(1),\n map(queryParams => {\n const {size, page, ...searchRequest} = queryParams['params'];\n return {size, page, searchRequest};\n })\n )\n .subscribe(({size, page, searchRequest}) => {\n this.searchRequest$.next(this.mapQueryParamsToSearchRequest(searchRequest));\n this.pagination$.next({\n ...this.pagination$.getValue(),\n size: +size,\n page: +(page ?? 0) + 1,\n });\n\n this.openQueryParamsSubscription();\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\n<valtimo-carbon-list\n *ngIf=\"{logItems: logItems$ | async, isSearchActive: isSearchActive$ | async} as obs\"\n [items]=\"obs.logItems\"\n [fields]=\"FIELDS\"\n [loading]=\"loading$ | async\"\n [pagination]=\"pagination$ | async\"\n paginationIdentifier=\"logging\"\n (paginationClicked)=\"onPaginationClicked($event, obs.logItems)\"\n (paginationSet)=\"onPaginationSet($event)\"\n (rowClicked)=\"onRowClickedEvent($event)\"\n>\n <valtimo-no-results\n [action]=\"obs.isSearchActive ? clearSearchButton : null\"\n [description]=\"\n 'logging.noResults.' + (obs.isSearchActive ? 'searchDescription' : 'description') | translate\n \"\n [title]=\"'logging.noResults.title' | translate\"\n ></valtimo-no-results>\n\n <button\n carbonToolbarContent\n [cdsOverflowMenu]=\"logSearch\"\n [customPane]=\"true\"\n [iconOnly]=\"true\"\n [flip]=\"true\"\n [offset]=\"{x: 0, y: 47}\"\n cdsButton=\"ghost\"\n placement=\"bottom\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"filter\" size=\"16\"></svg>\n </button>\n</valtimo-carbon-list>\n\n<valtimo-log-details\n [open]=\"logDetailsOpen$ | async\"\n [logEvent]=\"selectedLogEvent$ | async\"\n (closeModalEvent)=\"onCloseModalEvent()\"\n></valtimo-log-details>\n\n<ng-template #logSearch>\n <valtimo-log-search\n [initSearchRequest]=\"searchRequest$ | async\"\n (searchSubmitEvent)=\"onSearchSubmitEvent($event)\"\n ></valtimo-log-search>\n</ng-template>\n\n<ng-template #clearSearchButton>\n <button cdsButton=\"primary\" (click)=\"onClearFilter()\">\n {{ 'interface.clear' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2023 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 */\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {ROLE_ADMIN} from '@valtimo/config';\nimport {AuthGuardService} from '@valtimo/security';\nimport {LoggingListComponent} from './lib/components/logging-list/logging-list.component';\n\nconst routes: Routes = [\n {\n path: 'logging',\n component: LoggingListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Logging', roles: [ROLE_ADMIN]},\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n})\nexport class LoggingRoutingModule {}\n","/*\n * Copyright 2015-2023 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 */\nimport {CommonModule} from '@angular/common';\nimport {HttpClient} from '@angular/common/http';\nimport {NgModule} from '@angular/core';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {HttpLoaderFactory} from '@valtimo/config';\nimport {LoggingListComponent} from './lib/components/logging-list/logging-list.component';\nimport {LoggingRoutingModule} from './logging-routing.module';\n\n@NgModule({\n imports: [\n CommonModule,\n LoggingRoutingModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n LoggingListComponent,\n ],\n})\nexport class LoggingModule {}\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 documenten-api\n */\n\nexport * from './logging.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i4","i1","i3.LoggingApiService","i6"],"mappings":"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"}
1
+ {"version":3,"file":"valtimo-logging.mjs","sources":["../../../../projects/valtimo/logging/src/lib/models/logging.model.ts","../../../../projects/valtimo/logging/src/lib/models/index.ts","../../../../projects/valtimo/logging/src/lib/services/logging-api.service.ts","../../../../projects/valtimo/logging/src/lib/services/index.ts","../../../../projects/valtimo/logging/src/lib/components/log-details/log-details.component.ts","../../../../projects/valtimo/logging/src/lib/components/log-details/log-details.component.html","../../../../projects/valtimo/logging/src/lib/components/log-search/log-search.component.ts","../../../../projects/valtimo/logging/src/lib/components/log-search/log-search.component.html","../../../../projects/valtimo/logging/src/lib/components/logging-list/logging-list.component.ts","../../../../projects/valtimo/logging/src/lib/components/logging-list/logging-list.component.html","../../../../projects/valtimo/logging/src/logging-routing.module.ts","../../../../projects/valtimo/logging/src/logging.module.ts","../../../../projects/valtimo/logging/src/public_api.ts","../../../../projects/valtimo/logging/src/valtimo-logging.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\ninterface LoggingEvent {\n timestamp: string;\n formattedMessage: string;\n level: string;\n properties: Array<LoggingEventProperty>;\n stacktrace: string;\n}\n\ninterface LoggingEventProperty {\n key: string;\n value: string;\n}\n\ninterface LoggingEventSearchRequest {\n afterTimestamp?: string;\n beforeTimestamp?: string;\n level?: string;\n likeFormattedMessage?: string;\n properties?: Array<LoggingEventProperty>;\n size?: number;\n page?: number;\n}\n\nenum LogLevel {\n DEBUG = 'DEBUG',\n ERROR = 'ERROR',\n INFO = 'INFO',\n TRACE = 'TRACE',\n WARN = 'WARN',\n}\n\nconst LOG_LEVEL_TAG = {\n [LogLevel.DEBUG]: 'teal',\n [LogLevel.ERROR]: 'red',\n [LogLevel.INFO]: 'blue',\n [LogLevel.TRACE]: 'grey',\n [LogLevel.WARN]: 'purple',\n};\n\nconst LOG_ELLIPSIS_LIMIT = 128;\n\nexport {\n LOG_ELLIPSIS_LIMIT,\n LOG_LEVEL_TAG,\n LoggingEvent,\n LoggingEventProperty,\n LoggingEventSearchRequest,\n LogLevel,\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 './logging.model';\nexport * from './search.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 {HttpClient, HttpParams} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService, Page, BaseApiService} from '@valtimo/config';\nimport {Observable} from 'rxjs';\nimport {LoggingEvent, LoggingEventSearchRequest} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoggingApiService extends BaseApiService {\n constructor(\n protected readonly configService: ConfigService,\n protected readonly httpClient: HttpClient\n ) {\n super(httpClient, configService);\n }\n\n public getTechnicalLogs(\n searchRequest: LoggingEventSearchRequest\n ): Observable<Page<LoggingEvent>> {\n const {size, page, ...searchBody} = searchRequest;\n const params = new HttpParams({\n fromObject: {size, page} as any,\n });\n\n return this.httpClient.post<Page<LoggingEvent>>(\n this.getApiUrl('management/v1/logging'),\n searchBody,\n {\n params,\n }\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\nexport * from './logging-api.service';\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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ModalModule} from 'carbon-components-angular';\nimport {LoggingEvent} from '../../models';\n\n@Component({\n selector: 'valtimo-log-details',\n templateUrl: './log-details.component.html',\n styleUrl: './log-details.component.scss',\n standalone: true,\n imports: [CommonModule, TranslateModule, ModalModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LogDetailsComponent {\n @Input() public open = false;\n\n @Input() public set logEvent(logEvent: LoggingEvent) {\n this.logEventFormatted = {\n ...logEvent,\n stacktrace: this.formatStacktrace(logEvent?.stacktrace),\n };\n }\n\n @Output() public readonly closeModalEvent = new EventEmitter();\n\n public logEventFormatted: LoggingEvent;\n\n public readonly classesToIgnore: string[] = [\n 'LoggingContextKt',\n 'LoggableResourceAspect',\n 'RunWithoutAuthorizationAspect',\n 'UserLoggingFilter',\n ];\n\n public onCloseSelect(): void {\n this.closeModalEvent.emit();\n }\n\n private formatStacktrace(s?: string): string {\n if (!s) {\n return s;\n }\n\n s = s.replace(/^[^\\t].+(Exception|Error): .+/gm, '<span class=\"highlight1\">$&</span>');\n s = s.replace(/^Caused by: .+/gm, '<span class=\"highlight1\">$&</span>');\n this.classesToIgnore.forEach(\n c =>\n (s = s.replace(\n new RegExp(`^\\tat .+\\.${c}\\..+`, 'gm'),\n '<span class=\"highlight3\">$&</span>'\n ))\n );\n s = s.replace(/^\\tat com.(ritense|valtimo).+/gm, '<span class=\"highlight2\">$&</span>');\n s = s.replace(/^\\t.+common frames omitted$/gm, '<span class=\"highlight3\">$&</span>');\n s = s.replace(/^\\tat .+/gm, '<span class=\"highlight3\">$&</span>');\n return s;\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\n<cds-modal [open]=\"open\" size=\"lg\">\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"onCloseSelect()\">\n {{ 'logging.detailsTitle' | translate }}\n </cds-modal-header>\n\n <section cdsModalContent class=\"valtimo-log-details__content\">\n <h4 class=\"log-header\">\n {{ 'logging.formattedMessage' | translate }}\n </h4>\n\n <div>{{ logEventFormatted?.formattedMessage || '-' }}</div>\n\n <h4 class=\"log-header\">\n {{ 'logging.timestamp' | translate }}\n </h4>\n\n <div>\n {{ logEventFormatted?.timestamp || '-' }}\n </div>\n\n @if (logEventFormatted?.properties?.length > 0) {\n <h4 class=\"log-header\">\n {{ 'logging.properties' | translate }}\n </h4>\n <div>\n @for (property of logEventFormatted.properties; track property.key) {\n <div>\n <span class=\"property-key\">{{ property.key }}: </span>\n <span class=\"property-value\">{{ property.value }}</span>\n </div>\n }\n </div>\n }\n\n @if (logEventFormatted?.stacktrace) {\n <h4 class=\"log-header\">\n {{ 'logging.stacktrace' | translate }}\n </h4>\n <div>\n <pre class=\"valtimo-log-stacktrace\" [innerHtml]=\"logEventFormatted.stacktrace\"></pre>\n </div>\n }\n </section>\n</cds-modal>\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 */\nimport {CommonModule} from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {FormArray, FormBuilder, FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {TrashCan16} from '@carbon/icons';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {CARBON_THEME, CdsThemeService, CurrentCarbonTheme} from '@valtimo/components';\nimport {\n ButtonModule,\n DatePicker,\n DatePickerModule,\n DropdownModule,\n IconModule,\n IconService,\n InputModule,\n ListItem,\n TimePickerModule,\n} from 'carbon-components-angular';\nimport flatpickr from 'flatpickr';\nimport {debounceTime, map, Observable, Subscription} from 'rxjs';\nimport {\n LoggingEventProperty,\n LoggingEventSearchFormValue,\n LoggingEventSearchRequest,\n LogLevel,\n} from '../../models';\n\n@Component({\n selector: 'valtimo-log-search',\n templateUrl: './log-search.component.html',\n styleUrl: './log-search.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n DropdownModule,\n IconModule,\n InputModule,\n ReactiveFormsModule,\n FormsModule,\n DatePickerModule,\n TimePickerModule,\n ],\n})\nexport class LogSearchComponent implements OnInit, AfterViewInit, OnDestroy {\n @ViewChild('afterTimestamp') private readonly _afterTimestampDatePicker: DatePicker;\n @ViewChild('beforeTimestamp') private readonly _beforeTimestampDatePicker: DatePicker;\n\n @Input() public initSearchRequest: LoggingEventSearchRequest;\n @Output() public readonly searchSubmitEvent = new EventEmitter<LoggingEventSearchRequest>();\n\n public readonly theme$: Observable<CARBON_THEME> = this.cdsThemeService.currentTheme$.pipe(\n map((theme: CurrentCarbonTheme) =>\n theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G100\n )\n );\n\n public readonly formGroup = this.fb.group({\n likeFormattedMessage: this.fb.control<string>(''),\n level: this.fb.control<ListItem>({content: '', selected: false}),\n beforeTimestamp: this.fb.control<string>(''),\n beforeTime: this.fb.control<string>(''),\n afterTimestamp: this.fb.control<string>(''),\n afterTime: this.fb.control<string>(''),\n properties: this.fb.array([\n this.fb.group({\n key: this.fb.control<string>(''),\n value: this.fb.control<string>(''),\n }),\n ]),\n });\n\n public logLevelItems: Partial<ListItem>[] = [\n {\n content: LogLevel.ERROR,\n },\n {\n content: LogLevel.WARN,\n },\n {\n content: LogLevel.INFO,\n },\n {\n content: LogLevel.DEBUG,\n },\n {\n content: LogLevel.TRACE,\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n\n public get propertiesArray(): FormArray {\n return this.formGroup.get('properties') as FormArray;\n }\n\n constructor(\n private readonly cdsThemeService: CdsThemeService,\n private readonly fb: FormBuilder,\n private readonly iconService: IconService\n ) {\n this.iconService.register(TrashCan16);\n }\n\n public ngOnInit(): void {\n this.setInitialForm();\n\n this._subscriptions.add(\n this.formGroup.valueChanges.pipe(debounceTime(500)).subscribe(() => {\n this.searchSubmitEvent.emit(this.mapFormValueToLogSearch());\n })\n );\n }\n\n public ngAfterViewInit(): void {\n const afterTimestampControlValue = this.formGroup.get('afterTimestamp')?.value;\n const beforeTimestampControlValue = this.formGroup.get('beforeTimestamp')?.value;\n\n if (!!afterTimestampControlValue) {\n this._afterTimestampDatePicker.writeValue([\n flatpickr.formatDate(new Date(afterTimestampControlValue), 'd-m-Y'),\n ]);\n }\n\n if (!!beforeTimestampControlValue) {\n this._beforeTimestampDatePicker.writeValue([\n flatpickr.formatDate(new Date(beforeTimestampControlValue), 'd-m-Y'),\n ]);\n }\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onClearFilter(): void {\n this.formGroup.reset();\n this._afterTimestampDatePicker.writeValue([]);\n this._beforeTimestampDatePicker.writeValue([]);\n }\n\n public onDateSelected(control: 'afterTimestamp' | 'beforeTimestamp', event: Date[]): void {\n this.formGroup.get(control)?.patchValue(flatpickr.formatDate(event[0], 'Z'));\n }\n\n public addPropertySearchField(): void {\n this.propertiesArray.push(\n this.fb.group({\n key: this.fb.control<string>(''),\n value: this.fb.control<string>(''),\n })\n );\n }\n\n public removePropertySearchField(index: number): void {\n this.propertiesArray.removeAt(index);\n }\n\n private initLogItems(formValue: LoggingEventSearchFormValue): void {\n if (!formValue.level) return;\n\n this.logLevelItems = this.logLevelItems.map((levelItem: Partial<ListItem>) => ({\n ...levelItem,\n selected: formValue.level?.content === levelItem.content,\n }));\n }\n\n private initPropertiesForm(formValue: LoggingEventSearchFormValue): void {\n if (!formValue.properties) return;\n\n for (let i = 1; i < formValue.properties.length; i++) {\n this.addPropertySearchField();\n }\n }\n\n private initTimeForm(formValue: LoggingEventSearchFormValue): void {\n const {beforeTimestamp, afterTimestamp} = formValue;\n\n if (!!beforeTimestamp) {\n const {hours, minutes} = this.convertTimestampToTimeString(beforeTimestamp);\n this.formGroup.patchValue({beforeTime: `${hours}:${minutes}`}, {emitEvent: false});\n }\n\n if (!!afterTimestamp) {\n const {hours, minutes} = this.convertTimestampToTimeString(afterTimestamp);\n this.formGroup.patchValue({afterTime: `${hours}:${minutes}`}, {emitEvent: false});\n }\n }\n\n private convertTimestampToTimeString(timestamp: string): {hours: string; minutes: string} {\n const date = new Date(timestamp);\n return {\n hours: `0${date.getHours()}`.slice(-2),\n minutes: `0${date.getMinutes()}`.slice(-2),\n };\n }\n\n private mapFormValueToLogSearch(): LoggingEventSearchRequest {\n const formValue = this.formGroup.getRawValue();\n const properties = formValue.properties.filter(\n (property: {key: string | null; value: string | null}) => !!property.key && !!property.value\n ) as LoggingEventProperty[];\n\n return {\n ...(!!formValue.likeFormattedMessage && {\n likeFormattedMessage: formValue.likeFormattedMessage,\n }),\n ...(!!formValue.level?.content && {level: formValue.level.content}),\n ...(!!formValue.afterTimestamp && {\n afterTimestamp: this.mapTimeStamps(formValue.afterTimestamp, formValue.afterTime),\n }),\n ...(!!formValue.beforeTimestamp && {\n beforeTimestamp: this.mapTimeStamps(formValue.beforeTimestamp, formValue.beforeTime),\n }),\n ...(!!properties.length && {properties}),\n };\n }\n\n private mapSearchRequestToFormValue(\n searchRequest: LoggingEventSearchRequest\n ): LoggingEventSearchFormValue {\n return {\n ...(searchRequest.likeFormattedMessage && {\n likeFormattedMessage: searchRequest.likeFormattedMessage,\n }),\n ...(searchRequest.level && {\n level: {\n content: searchRequest.level,\n selected: true,\n },\n }),\n ...(searchRequest.afterTimestamp && {afterTimestamp: searchRequest.afterTimestamp}),\n ...(searchRequest.beforeTimestamp && {beforeTimestamp: searchRequest.beforeTimestamp}),\n ...(searchRequest.properties && {properties: searchRequest.properties}),\n };\n }\n\n private mapTimeStamps(date: string, time: string | null): string {\n if (!time) return date;\n\n const timeValue: string[] = time.split(':');\n const dateObject = new Date(date);\n dateObject.setHours(+timeValue[0], +timeValue[1]);\n\n return flatpickr.formatDate(dateObject, 'Z');\n }\n\n private setInitialForm(): void {\n const mappedFormValue: LoggingEventSearchFormValue = this.mapSearchRequestToFormValue(\n this.initSearchRequest\n );\n this.initLogItems(mappedFormValue);\n this.initPropertiesForm(mappedFormValue);\n this.initTimeForm(mappedFormValue);\n\n this.formGroup.patchValue(mappedFormValue, {emitEvent: false});\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<form\n *ngIf=\"theme$ | async as theme\"\n class=\"valtimo-log-search\"\n [formGroup]=\"formGroup\"\n (click)=\"$event.stopImmediatePropagation()\"\n>\n <section class=\"valtimo-log-search__fields\">\n <cds-text-label class=\"valtimo-log-search__message\">\n {{ 'logging.columns.formattedMessage' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"likeFormattedMessage\"\n [placeholder]=\"'logging.columns.formattedMessage' | translate\"\n />\n </cds-text-label>\n\n <cds-dropdown\n class=\"valtimo-log-search__level\"\n formControlName=\"level\"\n [attr.data-carbon-theme]=\"theme\"\n [appendInline]=\"true\"\n [label]=\"'logging.columns.level' | translate\"\n [placeholder]=\"'logging.columns.level' | translate\"\n >\n <cds-dropdown-list [items]=\"logLevelItems\"></cds-dropdown-list>\n </cds-dropdown>\n\n <div class=\"valtimo-log-search__timestamp\">\n <div class=\"valtimo-log-search__datetime\">\n <cds-date-picker\n #afterTimestamp\n [attr.data-carbon-theme]=\"theme\"\n [label]=\"'logging.search.afterTimestamp' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('afterTimestamp', $event)\"\n ></cds-date-picker>\n\n <cds-timepicker [attr.data-carbon-theme]=\"theme\" formControlName=\"afterTime\">\n </cds-timepicker>\n </div>\n\n <div class=\"valtimo-log-search__datetime\">\n <cds-date-picker\n #beforeTimestamp\n [attr.data-carbon-theme]=\"theme\"\n [label]=\"'logging.search.beforeTimestamp' | translate\"\n placeholder=\"DD-MM-YYYY\"\n [dateFormat]=\"'d-m-Y'\"\n (valueChange)=\"onDateSelected('beforeTimestamp', $event)\"\n ></cds-date-picker>\n\n <cds-timepicker [attr.data-carbon-theme]=\"theme\" formControlName=\"beforeTime\">\n </cds-timepicker>\n </div>\n </div>\n </section>\n\n <section formArrayName=\"properties\" class=\"valtimo-log-search__properties\">\n <span class=\"valtimo-log-search__label\"> {{ 'logging.search.properties' | translate }} </span>\n\n @for (propertyGroup of propertiesArray.controls; track $index) {\n <form [formGroup]=\"propertyGroup\" class=\"valtimo-log-search__property\">\n <cds-text-label>\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"key\"\n [placeholder]=\"'interface.key' | translate\"\n />\n </cds-text-label>\n\n <cds-text-label>\n <input\n cdsText\n [attr.data-carbon-theme]=\"theme\"\n formControlName=\"value\"\n [placeholder]=\"'interface.value' | translate\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n iconOnly=\"true\"\n type=\"button\"\n (click)=\"removePropertySearchField($index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button cdsButton=\"primary\" size=\"sm\" type=\"button\" (click)=\"addPropertySearchField()\">\n {{ 'logging.search.addProperty' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </section>\n\n <button cdsButton=\"tertiary\" type=\"button\" (click)=\"onClearFilter()\">\n {{ 'interface.clear' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</form>\n","/*\n * Copyright 2015-2023 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 */\nimport {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, OnDestroy, OnInit} from '@angular/core';\nimport {ActivatedRoute, Router} from '@angular/router';\nimport {Filter16, TrashCan16} from '@carbon/icons';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CARBON_CONSTANTS,\n CarbonListItem,\n CarbonListModule,\n CarbonTag,\n ColumnConfig,\n DEFAULT_PAGINATION,\n Pagination,\n ViewType,\n} from '@valtimo/components';\nimport {Page} from '@valtimo/config';\nimport {\n ButtonModule,\n DialogModule,\n DropdownModule,\n IconModule,\n IconService,\n} from 'carbon-components-angular';\nimport {\n BehaviorSubject,\n combineLatest,\n map,\n Observable,\n startWith,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {\n LOG_ELLIPSIS_LIMIT,\n LOG_LEVEL_TAG,\n LoggingEvent,\n LoggingEventProperty,\n LoggingEventQueryParams,\n LoggingEventSearchRequest,\n} from '../../models';\nimport {LoggingApiService} from '../../services';\nimport {LogDetailsComponent} from '../log-details/log-details.component';\nimport {LogSearchComponent} from '../log-search/log-search.component';\n\n@Component({\n templateUrl: './logging-list.component.html',\n styleUrl: './logging-list.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n TranslateModule,\n ButtonModule,\n CarbonListModule,\n DialogModule,\n DropdownModule,\n IconModule,\n LogDetailsComponent,\n LogSearchComponent,\n ],\n providers: [LoggingApiService],\n})\nexport class LoggingListComponent implements OnInit, OnDestroy {\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n public readonly logItems$: Observable<CarbonListItem> = this.activatedRoute.queryParamMap.pipe(\n tap(() => this.loading$.next(true)),\n switchMap(queryParams =>\n this.loggingApiService.getTechnicalLogs({\n ...queryParams['params'],\n ...(!!queryParams['params']?.properties && {\n properties: this.base64ToObject(queryParams['params'].properties),\n }),\n })\n ),\n map((loggingPage: Page<LoggingEvent>) => {\n this.pagination$.next({\n ...this.pagination$.getValue(),\n collectionSize: loggingPage.totalElements,\n });\n\n return loggingPage.content.map((logEvent: LoggingEvent) => ({\n ...logEvent,\n levelTags: [\n {\n content: logEvent.level,\n type: LOG_LEVEL_TAG[logEvent.level],\n },\n ],\n }));\n }),\n startWith([]),\n tap(() => {\n this.loading$.next(false);\n })\n );\n\n public readonly searchRequest$ = new BehaviorSubject<LoggingEventSearchRequest>({});\n public readonly isSearchActive$: Observable<boolean> = this.searchRequest$.pipe(\n map((searchRequest: LoggingEventSearchRequest) => Object.keys(searchRequest).length > 0)\n );\n public readonly pagination$ = new BehaviorSubject<Pagination>(DEFAULT_PAGINATION);\n public readonly logDetailsOpen$ = new BehaviorSubject<boolean>(false);\n public readonly selectedLogEvent$ = new BehaviorSubject<LoggingEvent | null>(null);\n\n public readonly FIELDS: ColumnConfig[] = [\n {\n key: 'timestamp',\n label: 'logging.columns.timestamp',\n viewType: ViewType.DATE_TIME,\n },\n {\n key: 'levelTags',\n label: 'logging.columns.level',\n viewType: ViewType.TAGS,\n },\n {\n key: 'formattedMessage',\n label: 'logging.columns.formattedMessage',\n viewType: ViewType.TEXT,\n tooltipCharLimit: LOG_ELLIPSIS_LIMIT,\n },\n ];\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly activatedRoute: ActivatedRoute,\n private readonly iconService: IconService,\n private readonly loggingApiService: LoggingApiService,\n private readonly router: Router\n ) {\n this.iconService.registerAll([Filter16, TrashCan16]);\n }\n\n public ngOnInit(): void {\n this.setInitialParams();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public onCloseModalEvent(): void {\n this.logDetailsOpen$.next(false);\n\n setTimeout(() => {\n this.selectedLogEvent$.next(null);\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n public onPaginationClicked(page: number, logItems: CarbonListItem[]): void {\n const activePagination: Pagination = this.pagination$.getValue();\n const searchRequest: LoggingEventSearchRequest = this.searchRequest$.getValue();\n\n if (!searchRequest.beforeTimestamp && activePagination.page === 1)\n this.searchRequest$.next({...searchRequest, beforeTimestamp: logItems[0].timestamp});\n\n this.pagination$.next({...activePagination, page});\n }\n\n public onPaginationSet(size: number): void {\n const {collectionSize, page} = this.pagination$.getValue();\n const resetPage: boolean = Math.ceil(+collectionSize / size) <= +page && +collectionSize > 0;\n\n this.pagination$.next({...this.pagination$.getValue(), size, ...(resetPage && {page: 1})});\n }\n\n public onRowClickedEvent(\n rowClickEvent: LoggingEvent & {ctrlClick: boolean; tags: CarbonTag[]}\n ): void {\n const {ctrlClick: _1, tags: _2, ...logEvent} = rowClickEvent;\n this.logDetailsOpen$.next(true);\n this.selectedLogEvent$.next(logEvent);\n }\n\n public onSearchSubmitEvent(searchRequest: LoggingEventSearchRequest): void {\n this.searchRequest$.next(searchRequest);\n }\n\n public onClearFilter(): void {\n this.onSearchSubmitEvent({});\n }\n\n private base64ToObject(base64string: string): object {\n return JSON.parse(atob(base64string));\n }\n\n private objectToBase64(jsObject: object): string {\n return btoa(JSON.stringify(jsObject));\n }\n\n private openQueryParamsSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.pagination$, this.searchRequest$]).subscribe(\n ([pagination, searchRequest]) => {\n const {size, page} = pagination;\n\n this.router.navigate(['/logging'], {\n queryParams: {\n size,\n page: page - 1,\n ...{\n ...searchRequest,\n ...(!!searchRequest.properties?.length && {\n properties: this.objectToBase64(searchRequest.properties),\n }),\n },\n },\n });\n }\n )\n );\n }\n\n private mapQueryParamsToSearchRequest(\n queryParams: LoggingEventQueryParams\n ): LoggingEventSearchRequest {\n return {\n ...(!!queryParams.likeFormattedMessage && {\n likeFormattedMessage: queryParams.likeFormattedMessage,\n }),\n ...(!!queryParams.level && {level: queryParams.level}),\n ...(!!queryParams.afterTimestamp && {afterTimestamp: queryParams.afterTimestamp}),\n ...(!!queryParams.beforeTimestamp && {beforeTimestamp: queryParams.beforeTimestamp}),\n ...(!!queryParams.properties && {\n properties: this.base64ToObject(queryParams.properties) as Array<LoggingEventProperty>,\n }),\n };\n }\n\n private setInitialParams(): void {\n this.activatedRoute.queryParamMap\n .pipe(\n take(1),\n map(queryParams => {\n const {size, page, ...searchRequest} = queryParams['params'];\n return {size, page, searchRequest};\n })\n )\n .subscribe(({size, page, searchRequest}) => {\n this.searchRequest$.next(this.mapQueryParamsToSearchRequest(searchRequest));\n this.pagination$.next({\n ...this.pagination$.getValue(),\n size: +size,\n page: +(page ?? 0) + 1,\n });\n\n this.openQueryParamsSubscription();\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\n<valtimo-carbon-list\n *ngIf=\"{logItems: logItems$ | async, isSearchActive: isSearchActive$ | async} as obs\"\n [items]=\"obs.logItems\"\n [fields]=\"FIELDS\"\n [loading]=\"loading$ | async\"\n [pagination]=\"pagination$ | async\"\n paginationIdentifier=\"logging\"\n (paginationClicked)=\"onPaginationClicked($event, obs.logItems)\"\n (paginationSet)=\"onPaginationSet($event)\"\n (rowClicked)=\"onRowClickedEvent($event)\"\n>\n <valtimo-no-results\n [action]=\"obs.isSearchActive ? clearSearchButton : null\"\n [description]=\"\n 'logging.noResults.' + (obs.isSearchActive ? 'searchDescription' : 'description') | translate\n \"\n [title]=\"'logging.noResults.title' | translate\"\n ></valtimo-no-results>\n\n <button\n carbonToolbarContent\n [cdsOverflowMenu]=\"logSearch\"\n [customPane]=\"true\"\n [iconOnly]=\"true\"\n [flip]=\"true\"\n [offset]=\"{x: 0, y: 47}\"\n cdsButton=\"ghost\"\n placement=\"bottom\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"filter\" size=\"16\"></svg>\n </button>\n</valtimo-carbon-list>\n\n<valtimo-log-details\n [open]=\"logDetailsOpen$ | async\"\n [logEvent]=\"selectedLogEvent$ | async\"\n (closeModalEvent)=\"onCloseModalEvent()\"\n></valtimo-log-details>\n\n<ng-template #logSearch>\n <valtimo-log-search\n [initSearchRequest]=\"searchRequest$ | async\"\n (searchSubmitEvent)=\"onSearchSubmitEvent($event)\"\n ></valtimo-log-search>\n</ng-template>\n\n<ng-template #clearSearchButton>\n <button cdsButton=\"primary\" (click)=\"onClearFilter()\">\n {{ 'interface.clear' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2023 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 */\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {ROLE_ADMIN} from '@valtimo/config';\nimport {AuthGuardService} from '@valtimo/security';\nimport {LoggingListComponent} from './lib/components/logging-list/logging-list.component';\n\nconst routes: Routes = [\n {\n path: 'logging',\n component: LoggingListComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Logging', roles: [ROLE_ADMIN]},\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n})\nexport class LoggingRoutingModule {}\n","/*\n * Copyright 2015-2023 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 */\nimport {CommonModule} from '@angular/common';\nimport {HttpClient} from '@angular/common/http';\nimport {NgModule} from '@angular/core';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {HttpLoaderFactory} from '@valtimo/config';\nimport {LoggingListComponent} from './lib/components/logging-list/logging-list.component';\nimport {LoggingRoutingModule} from './logging-routing.module';\n\n@NgModule({\n imports: [\n CommonModule,\n LoggingRoutingModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n LoggingListComponent,\n ],\n})\nexport class LoggingModule {}\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 documenten-api\n */\n\nexport * from './logging.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i1","i3.LoggingApiService","i6"],"mappings":"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"}
@@ -3,9 +3,12 @@ import { LoggingEvent } from '../../models';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class LogDetailsComponent {
5
5
  open: boolean;
6
- logEvent: LoggingEvent | null;
6
+ set logEvent(logEvent: LoggingEvent);
7
7
  readonly closeModalEvent: EventEmitter<any>;
8
+ logEventFormatted: LoggingEvent;
9
+ readonly classesToIgnore: string[];
8
10
  onCloseSelect(): void;
11
+ private formatStacktrace;
9
12
  static ɵfac: i0.ɵɵFactoryDeclaration<LogDetailsComponent, never>;
10
13
  static ɵcmp: i0.ɵɵComponentDeclaration<LogDetailsComponent, "valtimo-log-details", never, { "open": { "alias": "open"; "required": false; }; "logEvent": { "alias": "logEvent"; "required": false; }; }, { "closeModalEvent": "closeModalEvent"; }, never, never, true, never>;
11
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"log-details.component.d.ts","sourceRoot":"","sources":["../../../../../../projects/valtimo/logging/src/lib/components/log-details/log-details.component.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAqC,YAAY,EAAgB,MAAM,eAAe,CAAC;AAI9F,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;;AAE1C,qBAQa,mBAAmB;IACd,IAAI,UAAS;IACb,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAE9C,SAA0B,eAAe,oBAAsB;IAExD,aAAa,IAAI,IAAI;yCANjB,mBAAmB;2CAAnB,mBAAmB;CAS/B"}
1
+ {"version":3,"file":"log-details.component.d.ts","sourceRoot":"","sources":["../../../../../../projects/valtimo/logging/src/lib/components/log-details/log-details.component.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAqC,YAAY,EAAgB,MAAM,eAAe,CAAC;AAG9F,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;;AAE1C,qBAQa,mBAAmB;IACd,IAAI,UAAS;IAE7B,IAAoB,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAKlD;IAED,SAA0B,eAAe,oBAAsB;IAExD,iBAAiB,EAAE,YAAY,CAAC;IAEvC,SAAgB,eAAe,EAAE,MAAM,EAAE,CAKvC;IAEK,aAAa,IAAI,IAAI;IAI5B,OAAO,CAAC,gBAAgB;yCAzBb,mBAAmB;2CAAnB,mBAAmB;CA4C/B"}
package/package.json CHANGED
@@ -1,14 +1,13 @@
1
1
  {
2
2
  "name": "@valtimo/logging",
3
3
  "license": "EUPL-1.2",
4
- "version": "12.8.0",
4
+ "version": "12.9.0",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^17.2.2",
7
7
  "@angular/core": "^17.2.2"
8
8
  },
9
9
  "dependencies": {
10
- "tslib": "2.6.3",
11
- "ngx-json-viewer": "3.2.1"
10
+ "tslib": "2.6.3"
12
11
  },
13
12
  "module": "fesm2022/valtimo-logging.mjs",
14
13
  "typings": "index.d.ts",