From 8a72ff2d734c8922da71c17fb0f5ed9b7680666b Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 11 May 2023 13:02:07 +0200 Subject: [PATCH] wip refactoring 1 --- httpdocs/plp-angular/.gitignore | 3 + httpdocs/plp-angular/angular.json | 2 +- httpdocs/plp-angular/package-lock.json | 13084 ++++++++++++++++ httpdocs/plp-angular/package.json | 34 +- httpdocs/plp-angular/src/app/app.module.ts | 138 +- .../app/components/ag-grid-component-const.ts | 20 +- .../src/app/components/ag-grid-component.ts | 98 +- .../components/message/message.component.ts | 3 +- .../grid-checkbox-editor.component.ts | 3 +- .../grid-checkbox-renderer.component.ts | 3 +- .../grid-date-renderer.component.ts | 4 +- .../grid-input-editor.component.ts | 23 +- .../grid-input-renderer.component.ts | 11 +- .../grid-select-editor.component.ts | 22 +- .../grid-select/grid-select-factory.ts | 29 +- .../grid-select-renderer.component.ts | 15 +- .../grid-text-renderer.component.ts | 9 +- .../src/app/interceptor/route-interceptor.ts | 4 +- .../src/app/services/app.service.ts | 9 - .../src/app/services/customer.service.ts | 7 +- .../src/app/services/http.service.ts | 8 +- .../src/app/services/meeting.service.ts | 13 +- .../src/app/services/operator.service.ts | 239 - .../src/app/services/production.service.ts | 239 - .../src/app/services/service.service.ts | 239 - httpdocs/plp-angular/src/app/utils/utils.ts | 10 +- .../customer-contact-list.component.ts | 3 +- .../customer-list/customer-list.component.ts | 7 +- .../customer-management.component.ts | 3 +- ...ustomer-contact-person-detail.component.ts | 11 +- .../customer-contact-person-edit.component.ts | 7 +- .../customer-contact-person-view.component.ts | 3 +- .../customer-data-edit.component.ts | 3 +- .../customer-meeting-detail.component.ts | 4 +- .../customer-meeting-edit.component.ts | 3 +- .../customer-meeting-view.component.ts | 46 +- .../customer-note-edit.component.ts | 3 +- .../src/app/views/login/login.component.ts | 6 +- ...rator-contact-person-detail.component.html | 48 - ...rator-contact-person-detail.component.scss | 0 ...perator-contact-person-detail.component.ts | 105 - ...perator-contact-person-edit.component.html | 135 - ...perator-contact-person-edit.component.scss | 0 .../operator-contact-person-edit.component.ts | 80 - ...perator-contact-person-view.component.html | 35 - ...perator-contact-person-view.component.scss | 14 - .../operator-contact-person-view.component.ts | 176 - .../operator-data-edit.component.html | 120 - .../operator-data-edit.component.scss | 0 .../operator-data-edit.component.ts | 71 - .../operator-data-view.component.html | 38 - .../operator-data-view.component.scss | 0 .../operator-data-view.component.ts | 65 - .../operator-meeting-detail.component.html | 77 - .../operator-meeting-detail.component.scss | 0 .../operator-meeting-detail.component.ts | 203 - .../operator-meeting-edit.component.html | 200 - .../operator-meeting-edit.component.scss | 0 .../operator-meeting-edit.component.ts | 261 - .../operator-meeting-view.component.html | 33 - .../operator-meeting-view.component.scss | 14 - .../operator-meeting-view.component.ts | 199 - .../operator-note-detail.component.html | 45 - .../operator-note-detail.component.scss | 0 .../operator-note-detail.component.ts | 94 - .../operator-note-edit.component.html | 116 - .../operator-note-edit.component.scss | 0 .../operator-note-edit.component.ts | 127 - .../operator-note-view.component.html | 32 - .../operator-note-view.component.scss | 14 - .../operator-note-view.component.ts | 162 - .../operator-view.component.html | 32 - .../operator-view.component.scss | 0 .../operator-view/operator-view.component.ts | 156 - .../operators-contact-list.component.html | 30 - .../operators-contact-list.component.scss | 11 - .../operators-contact-list.component.ts | 161 - .../operators-list.component.html | 24 - .../operators-list.component.scss | 14 - .../operators-list.component.ts | 112 - .../views/operators/operators.component.html | 34 - .../views/operators/operators.component.scss | 0 .../views/operators/operators.component.ts | 279 - ...ction-contact-person-detail.component.html | 48 - ...ction-contact-person-detail.component.scss | 0 ...duction-contact-person-detail.component.ts | 108 - ...duction-contact-person-edit.component.html | 135 - ...duction-contact-person-edit.component.scss | 0 ...roduction-contact-person-edit.component.ts | 80 - ...duction-contact-person-view.component.html | 35 - ...duction-contact-person-view.component.scss | 14 - ...roduction-contact-person-view.component.ts | 181 - .../production-data-edit.component.html | 120 - .../production-data-edit.component.scss | 0 .../production-data-edit.component.ts | 71 - .../production-data-view.component.html | 38 - .../production-data-view.component.scss | 0 .../production-data-view.component.ts | 66 - .../production-meeting-detail.component.html | 77 - .../production-meeting-detail.component.scss | 0 .../production-meeting-detail.component.ts | 206 - .../production-meeting-edit.component.html | 200 - .../production-meeting-edit.component.scss | 0 .../production-meeting-edit.component.ts | 261 - .../production-meeting-view.component.html | 33 - .../production-meeting-view.component.scss | 14 - .../production-meeting-view.component.ts | 202 - .../production-note-detail.component.html | 45 - .../production-note-detail.component.scss | 0 .../production-note-detail.component.ts | 95 - .../production-note-edit.component.html | 116 - .../production-note-edit.component.scss | 0 .../production-note-edit.component.ts | 127 - .../production-note-view.component.html | 32 - .../production-note-view.component.scss | 14 - .../production-note-view.component.ts | 163 - .../production-view.component.html | 32 - .../production-view.component.scss | 0 .../production-view.component.ts | 157 - .../productions-contact-list.component.html | 30 - .../productions-contact-list.component.scss | 11 - .../productions-contact-list.component.ts | 161 - .../productions-list.component.html | 24 - .../productions-list.component.scss | 14 - .../productions-list.component.ts | 113 - .../productions/productions.component.html | 34 - .../productions/productions.component.scss | 0 .../productions/productions.component.ts | 279 - ...rvice-contact-person-detail.component.html | 48 - ...rvice-contact-person-detail.component.scss | 0 ...service-contact-person-detail.component.ts | 108 - ...service-contact-person-edit.component.html | 135 - ...service-contact-person-edit.component.scss | 0 .../service-contact-person-edit.component.ts | 80 - ...service-contact-person-view.component.html | 35 - ...service-contact-person-view.component.scss | 14 - .../service-contact-person-view.component.ts | 181 - .../service-data-edit.component.html | 120 - .../service-data-edit.component.scss | 0 .../service-data-edit.component.ts | 71 - .../service-data-view.component.html | 38 - .../service-data-view.component.scss | 0 .../service-data-view.component.ts | 66 - .../service-meeting-detail.component.html | 77 - .../service-meeting-detail.component.scss | 0 .../service-meeting-detail.component.ts | 206 - .../service-meeting-edit.component.html | 200 - .../service-meeting-edit.component.scss | 0 .../service-meeting-edit.component.ts | 259 - .../service-meeting-view.component.html | 33 - .../service-meeting-view.component.scss | 14 - .../service-meeting-view.component.ts | 202 - .../service-note-detail.component.html | 44 - .../service-note-detail.component.scss | 0 .../service-note-detail.component.ts | 95 - .../service-note-edit.component.html | 116 - .../service-note-edit.component.scss | 0 .../service-note-edit.component.ts | 127 - .../service-note-view.component.html | 32 - .../service-note-view.component.scss | 14 - .../service-note-view.component.ts | 163 - .../service-view/service-view.component.html | 32 - .../service-view/service-view.component.scss | 0 .../service-view/service-view.component.ts | 157 - .../services-contact-list.component.html | 30 - .../services-contact-list.component.scss | 11 - .../services-contact-list.component.ts | 161 - .../services-list.component.html | 24 - .../services-list.component.scss | 14 - .../services-list/services-list.component.ts | 113 - .../views/services/services.component.html | 34 - .../views/services/services.component.scss | 0 .../app/views/services/services.component.ts | 283 - .../internal-meeting-detail.component.ts | 3 +- .../meeting-calendar.component.ts | 13 +- .../meeting-list/meeting-list.component.ts | 17 +- .../src/app/views/start/start.component.ts | 51 +- 177 files changed, 13290 insertions(+), 11152 deletions(-) create mode 100644 httpdocs/plp-angular/package-lock.json delete mode 100644 httpdocs/plp-angular/src/app/services/operator.service.ts delete mode 100644 httpdocs/plp-angular/src/app/services/production.service.ts delete mode 100644 httpdocs/plp-angular/src/app/services/service.service.ts delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-detail/operator-contact-person-detail.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-detail/operator-contact-person-detail.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-detail/operator-contact-person-detail.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-edit/operator-contact-person-edit.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-edit/operator-contact-person-edit.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-edit/operator-contact-person-edit.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-view/operator-contact-person-view.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-view/operator-contact-person-view.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-view/operator-contact-person-view.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-edit/operator-data-edit.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-edit/operator-data-edit.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-edit/operator-data-edit.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-view/operator-data-view.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-view/operator-data-view.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-view/operator-data-view.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-detail/operator-meeting-detail.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-detail/operator-meeting-detail.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-detail/operator-meeting-detail.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-edit/operator-meeting-edit.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-edit/operator-meeting-edit.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-edit/operator-meeting-edit.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-view/operator-meeting-view.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-view/operator-meeting-view.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-view/operator-meeting-view.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-detail/operator-note-detail.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-detail/operator-note-detail.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-detail/operator-note-detail.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-edit/operator-note-edit.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-edit/operator-note-edit.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-edit/operator-note-edit.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-view/operator-note-view.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-view/operator-note-view.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-view/operator-note-view.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-view.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-view.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operator-view/operator-view.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operators-contact-list/operators-contact-list.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operators-contact-list/operators-contact-list.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operators-contact-list/operators-contact-list.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operators-list/operators-list.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operators-list/operators-list.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operators-list/operators-list.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operators.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operators.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/operators/operators.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-detail/production-contact-person-detail.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-detail/production-contact-person-detail.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-detail/production-contact-person-detail.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-edit/production-contact-person-edit.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-edit/production-contact-person-edit.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-edit/production-contact-person-edit.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-view/production-contact-person-view.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-view/production-contact-person-view.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-view/production-contact-person-view.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-data-edit/production-data-edit.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-data-edit/production-data-edit.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-data-edit/production-data-edit.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-data-view/production-data-view.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-data-view/production-data-view.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-data-view/production-data-view.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-detail/production-meeting-detail.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-detail/production-meeting-detail.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-detail/production-meeting-detail.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-edit/production-meeting-edit.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-edit/production-meeting-edit.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-edit/production-meeting-edit.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-view/production-meeting-view.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-view/production-meeting-view.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-view/production-meeting-view.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-note-detail/production-note-detail.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-note-detail/production-note-detail.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-note-detail/production-note-detail.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-note-edit/production-note-edit.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-note-edit/production-note-edit.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-note-edit/production-note-edit.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-note-view/production-note-view.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-note-view/production-note-view.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-note-view/production-note-view.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-view.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-view.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/productions/production-view/production-view.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/productions/productions-contact-list/productions-contact-list.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/productions/productions-contact-list/productions-contact-list.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/productions/productions-contact-list/productions-contact-list.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/productions/productions-list/productions-list.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/productions/productions-list/productions-list.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/productions/productions-list/productions-list.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/productions/productions.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/productions/productions.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/productions/productions.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-detail/service-contact-person-detail.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-detail/service-contact-person-detail.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-detail/service-contact-person-detail.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-edit/service-contact-person-edit.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-edit/service-contact-person-edit.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-edit/service-contact-person-edit.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-view/service-contact-person-view.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-view/service-contact-person-view.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-view/service-contact-person-view.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-data-edit/service-data-edit.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-data-edit/service-data-edit.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-data-edit/service-data-edit.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-data-view/service-data-view.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-data-view/service-data-view.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-data-view/service-data-view.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-detail/service-meeting-detail.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-detail/service-meeting-detail.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-detail/service-meeting-detail.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-edit/service-meeting-edit.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-edit/service-meeting-edit.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-edit/service-meeting-edit.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-view/service-meeting-view.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-view/service-meeting-view.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-view/service-meeting-view.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-note-detail/service-note-detail.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-note-detail/service-note-detail.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-note-detail/service-note-detail.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-note-edit/service-note-edit.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-note-edit/service-note-edit.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-note-edit/service-note-edit.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-note-view/service-note-view.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-note-view/service-note-view.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-note-view/service-note-view.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-view.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-view.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/services/service-view/service-view.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/services/services-contact-list/services-contact-list.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/services/services-contact-list/services-contact-list.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/services/services-contact-list/services-contact-list.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/services/services-list/services-list.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/services/services-list/services-list.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/services/services-list/services-list.component.ts delete mode 100644 httpdocs/plp-angular/src/app/views/services/services.component.html delete mode 100644 httpdocs/plp-angular/src/app/views/services/services.component.scss delete mode 100644 httpdocs/plp-angular/src/app/views/services/services.component.ts diff --git a/httpdocs/plp-angular/.gitignore b/httpdocs/plp-angular/.gitignore index 86d943a..67cb607 100644 --- a/httpdocs/plp-angular/.gitignore +++ b/httpdocs/plp-angular/.gitignore @@ -44,3 +44,6 @@ testem.log # System Files .DS_Store Thumbs.db + +# cache etc +/.angular diff --git a/httpdocs/plp-angular/angular.json b/httpdocs/plp-angular/angular.json index 6c5da40..f5da50e 100644 --- a/httpdocs/plp-angular/angular.json +++ b/httpdocs/plp-angular/angular.json @@ -23,7 +23,7 @@ "main": "src/main.ts", "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.app.json", - "aot": false, + "aot": true, "assets": [ "src/favicon.ico", "src/assets" diff --git a/httpdocs/plp-angular/package-lock.json b/httpdocs/plp-angular/package-lock.json new file mode 100644 index 0000000..13ac14b --- /dev/null +++ b/httpdocs/plp-angular/package-lock.json @@ -0,0 +1,13084 @@ +{ + "name": "plp-angular", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "plp-angular", + "version": "0.0.0", + "dependencies": { + "@angular-devkit/build-angular": "^16.0.0", + "@angular-devkit/schematics": "^16.0.0", + "@angular/animations": "^16.0.0", + "@angular/common": "^16.0.0", + "@angular/compiler": "^16.0.0", + "@angular/core": "^16.0.0", + "@angular/forms": "^16.0.0", + "@angular/platform-browser": "^16.0.0", + "@angular/platform-browser-dynamic": "^16.0.0", + "@angular/router": "^16.0.0", + "@ng-bootstrap/ng-bootstrap": "^14.1.1", + "ag-grid-angular": "^21.2.2", + "ag-grid-community": "^21.2.2", + "angular-calendar": "^0.31.0", + "angularx-flatpickr": "^6.2.0", + "codelyzer": "^6.0.2", + "date-fns": "^1.30.1", + "file-saver": "^2.0.2", + "flatpickr": "^4.6.13", + "ng6-breadcrumbs": "^1.0.7", + "rxjs": "~6.6.7", + "tslib": "^2.0.0", + "zone.js": "~0.13.0" + }, + "devDependencies": { + "@angular/cli": "^16.0.0", + "@angular/compiler-cli": "^16.0.0", + "@angular/language-service": "^16.0.0", + "@types/file-saver": "^2.0.1", + "@types/jasmine": "~3.3.8", + "@types/jasminewd2": "^2.0.8", + "@types/node": "~8.9.4", + "jasmine-core": "~3.8.0", + "jasmine-spec-reporter": "~5.0.0", + "karma": "^6.4.2", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage-istanbul-reporter": "~3.0.2", + "karma-jasmine": "~4.0.0", + "karma-jasmine-html-reporter": "^1.5.0", + "protractor": "^7.0.0", + "ts-node": "~7.0.0", + "tslint": "~6.1.0", + "typescript": "~4.9.5" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.1600.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1600.0.tgz", + "integrity": "sha512-nYRcqAxZnndhAEpSpJ1U2TScs2huu674OKrsEyJTqLEANEyCPBnusAmS9HcGzMBgePAwNElqOKrr5/f1DbYq1A==", + "dependencies": { + "@angular-devkit/core": "16.0.0", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/architect/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@angular-devkit/build-angular": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.0.0.tgz", + "integrity": "sha512-OvDQAbrV3cUMfHws30MnDURsXselZ0GWhSxZjOdcD3cF64Nsq5ywftHOT+QC3YdDghwI8gMADN9et+aVDscBzQ==", + "dependencies": { + "@ampproject/remapping": "2.2.1", + "@angular-devkit/architect": "0.1600.0", + "@angular-devkit/build-webpack": "0.1600.0", + "@angular-devkit/core": "16.0.0", + "@babel/core": "7.21.4", + "@babel/generator": "7.21.4", + "@babel/helper-annotate-as-pure": "7.18.6", + "@babel/helper-split-export-declaration": "7.18.6", + "@babel/plugin-proposal-async-generator-functions": "7.20.7", + "@babel/plugin-transform-async-to-generator": "7.20.7", + "@babel/plugin-transform-runtime": "7.21.4", + "@babel/preset-env": "7.21.4", + "@babel/runtime": "7.21.0", + "@babel/template": "7.20.7", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "16.0.0", + "@vitejs/plugin-basic-ssl": "1.0.1", + "ansi-colors": "4.1.3", + "autoprefixer": "10.4.14", + "babel-loader": "9.1.2", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "4.21.5", + "cacache": "17.0.6", + "chokidar": "3.5.3", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.16", + "css-loader": "6.7.3", + "esbuild-wasm": "0.17.18", + "glob": "8.1.0", + "https-proxy-agent": "5.0.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.2.0", + "karma-source-map-support": "1.4.0", + "less": "4.1.3", + "less-loader": "11.1.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.1", + "magic-string": "0.30.0", + "mini-css-extract-plugin": "2.7.5", + "mrmime": "1.0.1", + "open": "8.4.2", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "7.0.0", + "piscina": "3.2.0", + "postcss": "8.4.23", + "postcss-loader": "7.2.4", + "resolve-url-loader": "5.0.0", + "rxjs": "7.8.1", + "sass": "1.62.1", + "sass-loader": "13.2.2", + "semver": "7.4.0", + "source-map-loader": "4.0.1", + "source-map-support": "0.5.21", + "terser": "5.17.1", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.5.0", + "vite": "4.3.1", + "webpack": "5.80.0", + "webpack-dev-middleware": "6.0.2", + "webpack-dev-server": "4.13.2", + "webpack-merge": "5.8.0", + "webpack-subresource-integrity": "5.1.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "esbuild": "0.17.18" + }, + "peerDependencies": { + "@angular/compiler-cli": "^16.0.0", + "@angular/localize": "^16.0.0", + "@angular/platform-server": "^16.0.0", + "@angular/service-worker": "^16.0.0", + "jest": "^29.5.0", + "jest-environment-jsdom": "^29.5.0", + "karma": "^6.3.0", + "ng-packagr": "^16.0.0", + "protractor": "^7.0.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=4.9.3 <5.1" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "jest": { + "optional": true + }, + "jest-environment-jsdom": { + "optional": true + }, + "karma": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "protractor": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@babel/core": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", + "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.4", + "@babel/helper-compilation-targets": "^7.21.4", + "@babel/helper-module-transforms": "^7.21.2", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.4", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.4", + "@babel/types": "^7.21.4", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@babel/generator": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.4.tgz", + "integrity": "sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==", + "dependencies": { + "@babel/types": "^7.21.4", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@types/node": { + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.1.2.tgz", + "integrity": "sha512-CTO/wa8x+rZU626cL2BlbCDzydgnFNgc19h4YvizpTO88MFQxab8wqisxaofQJ/9bLGugRdWIuX/TbIs6VVF6g==", + "peer": true + }, + "node_modules/@angular-devkit/build-angular/node_modules/@vitejs/plugin-basic-ssl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz", + "integrity": "sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==", + "engines": { + "node": ">=14.6.0" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/cacache": { + "version": "17.0.6", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.0.6.tgz", + "integrity": "sha512-ixcYmEBExFa/+ajIPjcwypxL97CjJyOsH9A/W+4qgEPIpJvKlC+HmVY8nkIck6n3PwUTdgq9c489niJGwl+5Cw==", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/cacache/node_modules/glob": { + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/cacache/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/cosmiconfig-typescript-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.3.0.tgz", + "integrity": "sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==", + "engines": { + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=7", + "ts-node": ">=10", + "typescript": ">=3" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "peer": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/postcss-loader": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.2.4.tgz", + "integrity": "sha512-F88rpxxNspo5hatIc+orYwZDtHFaVFOSIVAx+fBfJC1GmhWbVmPWtmg2gXKE1OxJbneOSGn8PWdIwsZFcruS+w==", + "dependencies": { + "cosmiconfig": "^8.1.3", + "cosmiconfig-typescript-loader": "^4.3.0", + "klona": "^2.0.6", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "ts-node": ">=10", + "typescript": ">=4", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "peer": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/vite": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.1.tgz", + "integrity": "sha512-EPmfPLAI79Z/RofuMvkIS0Yr091T2ReUoXQqc5ppBX/sjFRhHKiPPF/R46cTdoci/XgeQpB23diiJxq5w30vdg==", + "dependencies": { + "esbuild": "^0.17.5", + "postcss": "^8.4.21", + "rollup": "^3.20.2" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1600.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1600.0.tgz", + "integrity": "sha512-ZlNNMtAzgMCsaN5crkqtgeYxWEyZ78/ePfrJTB3+Hb6LS+hsRf4WAYubHWRWReSx87ppluRrgNZLy0K9ooWy1w==", + "dependencies": { + "@angular-devkit/architect": "0.1600.0", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^4.0.0" + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@angular-devkit/core": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.0.0.tgz", + "integrity": "sha512-YJKvAJlg4/lfP93pQNawlOTQalynWGpoatZU+1aXBgRh5YCTKu2S/A3gtQ71DBuhac76gJe1RpxDoq41kB2KlQ==", + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.0.0.tgz", + "integrity": "sha512-9uFOqjOQdhnpxU5mku2LvBkV5Ave2ihHBFaQCH7vQ7DD+p4NpLHu93bMSh+f7k9W7F0lY18g9qrihRgK/7wfuA==", + "dependencies": { + "@angular-devkit/core": "16.0.0", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.0", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@angular/animations": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.0.0.tgz", + "integrity": "sha512-Xx4Ffdo3sweg24MDVAXbDfxqkNPEuRgqOC1+f9171kf+w7cBEr4Bmy37DP7YkJceaU0xJH9imcx4708KeIjqkQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "16.0.0" + } + }, + "node_modules/@angular/cli": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.0.0.tgz", + "integrity": "sha512-vsveaSJ5kj0MeJCg1nir5iJJEsdrRRnyNeL1awMcyrEjAhBPX3d0gfOP2fe0HR5KJtntX8zvihGus3i48Quo7A==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1600.0", + "@angular-devkit/core": "16.0.0", + "@angular-devkit/schematics": "16.0.0", + "@schematics/angular": "16.0.0", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "ini": "4.0.0", + "inquirer": "8.2.4", + "jsonc-parser": "3.2.0", + "npm-package-arg": "10.1.0", + "npm-pick-manifest": "8.0.1", + "open": "8.4.2", + "ora": "5.4.1", + "pacote": "15.1.3", + "resolve": "1.22.2", + "semver": "7.4.0", + "symbol-observable": "4.0.0", + "yargs": "17.7.2" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/common": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.0.0.tgz", + "integrity": "sha512-at3/xCevf2t9swX2P7K7gaSBuQPy7ZJsf37qQkYIuczzfij69r7s9NjYeA74/q3EWG9Yl2DCrhYoCW7ViXQINQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "16.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/compiler": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.0.0.tgz", + "integrity": "sha512-xtg+KRvSeB9DUzMDtvlaRGKv+Y0MERsz+JOoqV9H4606ThNz5h8ih6fEhVKYqG100o7GhdJaVFO+vlr2/edUHA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "16.0.0" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + } + } + }, + "node_modules/@angular/compiler-cli": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.0.0.tgz", + "integrity": "sha512-oyJzxiTHxziv7mD0QuA7K6tpDoL6YNGPkquKjeJjNVZvUrodGsvJ8xHO4ydmjK3nMu2ET1YarsdI8bRp4vp/7w==", + "dependencies": { + "@babel/core": "7.19.3", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/index.js" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/compiler": "16.0.0", + "typescript": ">=4.9.3 <5.1" + } + }, + "node_modules/@angular/core": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.0.0.tgz", + "integrity": "sha512-scppDxtXubum6ZiGu3ogmReBtMuA5XXk5FL3YKLb3c9O7q9Z5PC8KNQ6SsaOwEb6oW+0BWXMV698p/zmd0J4tA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.13.0" + } + }, + "node_modules/@angular/forms": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.0.0.tgz", + "integrity": "sha512-avpreXyDYWf44RNM5hfi5cTXXiNwcajBURP5rLap8RPMSUi2ePlJsmi0O+3+GduNZFbtnRXIpKTj3W+GeNa0PA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "16.0.0", + "@angular/core": "16.0.0", + "@angular/platform-browser": "16.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/language-service": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-16.0.0.tgz", + "integrity": "sha512-jySin8NdZIfcvwyemh2kRVveOvL1SPvywmIrv/6+MbKebG9Oc+casxruoRai8gh8bhahdpUAOG0t8wbedUWcxw==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.10.0" + } + }, + "node_modules/@angular/localize": { + "version": "15.2.9", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-15.2.9.tgz", + "integrity": "sha512-7ZGK3BWwIukSK5ORWjM3y/FYj7/ZJFl1RO1GCeL/tHD4nq0kd3q3pYvcpnoi9HGl+q8AkL24xdsfzgCFo8SB0g==", + "peer": true, + "dependencies": { + "@babel/core": "7.19.3", + "glob": "8.1.0", + "yargs": "^17.2.1" + }, + "bin": { + "localize-extract": "tools/bundles/src/extract/cli.js", + "localize-migrate": "tools/bundles/src/migrate/cli.js", + "localize-translate": "tools/bundles/src/translate/cli.js" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/compiler": "15.2.9", + "@angular/compiler-cli": "15.2.9" + } + }, + "node_modules/@angular/localize/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@angular/localize/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@angular/localize/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/platform-browser": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.0.0.tgz", + "integrity": "sha512-6LpgLfEnumKMKM/S9joWrVSm4MdFuIjddFmlSG7zGcRqwM0N8doH/YkuwTK8/t9q8wI/yztp6qM2pg25Pgv1XA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/animations": "16.0.0", + "@angular/common": "16.0.0", + "@angular/core": "16.0.0" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.0.0.tgz", + "integrity": "sha512-xUR36r+7hFQjAb0RA0VFfWrCLj2VnWg0xJgPe4FQmwaEWjKMc011tkJXs0PApaiTxvE0W08nadSDTu5jfsBrFw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "16.0.0", + "@angular/compiler": "16.0.0", + "@angular/core": "16.0.0", + "@angular/platform-browser": "16.0.0" + } + }, + "node_modules/@angular/router": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.0.0.tgz", + "integrity": "sha512-+5gjJwFx3AFGv7OnY53pfUzaPbWe5gOVQWXAnlUuk6tsQmWJBMehuCQ5ZO5cxViQDZkyvNALzoUeU6aKWmNqmg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "16.0.0", + "@angular/core": "16.0.0", + "@angular/platform-browser": "16.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@assemblyscript/loader": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==" + }, + "node_modules/@babel/code-frame": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.21.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.7.tgz", + "integrity": "sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.19.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.3.tgz", + "integrity": "sha512-WneDJxdsjEvyKtXKsaBGbDeiyOjR5vYq4HcShxnIbG0qixpoHjI3MqeZM9NDvsojNCEBItQE4juOo/bU6e72gQ==", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.19.3", + "@babel/helper-compilation-targets": "^7.19.3", + "@babel/helper-module-transforms": "^7.19.0", + "@babel/helpers": "^7.19.0", + "@babel/parser": "^7.19.3", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.19.3", + "@babel/types": "^7.19.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz", + "integrity": "sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==", + "dependencies": { + "@babel/types": "^7.21.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.21.5.tgz", + "integrity": "sha512-uNrjKztPLkUk7bpCNC0jEKDJzzkvel/W+HguzbN8krA+LPfC1CEobJEvAvGka2A/M+ViOqXdcRL0GqPUJSjx9g==", + "dependencies": { + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz", + "integrity": "sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==", + "dependencies": { + "@babel/compat-data": "^7.21.5", + "@babel/helper-validator-option": "^7.21.0", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.21.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.8.tgz", + "integrity": "sha512-+THiN8MqiH2AczyuZrnrKL6cAxFRRQDKW9h1YkBvbgKmAm6mwiacig1qT73DHIWMGo40GRnsEfN3LA+E6NtmSw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.21.5", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-member-expression-to-functions": "^7.21.5", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.21.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/helper-split-export-declaration": "^7.18.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.21.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.8.tgz", + "integrity": "sha512-zGuSdedkFtsFHGbexAvNuipg1hbtitDLo2XE8/uf6Y9sOQV1xsYX/2pNbtedp/X0eU1pIt+kGvaqHCowkRbS5g==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.3.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz", + "integrity": "sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.5.tgz", + "integrity": "sha512-nIcGfgwpH2u4n9GG1HpStW5Ogx7x7ekiFHbjjFRKXbn5zUvqO9ZgotCO4x1aNbKn/x/xOUaXEhyNHCwtFCpxWg==", + "dependencies": { + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", + "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "dependencies": { + "@babel/types": "^7.21.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz", + "integrity": "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.21.5", + "@babel/helper-module-imports": "^7.21.4", + "@babel/helper-simple-access": "^7.21.5", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", + "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.21.5.tgz", + "integrity": "sha512-/y7vBgsr9Idu4M6MprbOVUfH3vs7tsIfnVWv/Ml2xgwvyH6LTngdfbf5AdsKwkJy4zgy1X/kuNrEKvhhK28Yrg==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.21.5", + "@babel/helper-member-expression-to-functions": "^7.21.5", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", + "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", + "dependencies": { + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", + "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz", + "integrity": "sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==", + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.5", + "@babel/types": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.21.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz", + "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", + "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz", + "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.21.5.tgz", + "integrity": "sha512-wb1mhwGOCaXHDTcsRYMKF9e5bbMgqwxtqa2Y1ifH96dXJPwbuLX9qHy3clhrxVqgMz7nyNXs8VkxdH8UBcjKqA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", + "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz", + "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz", + "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.21.5.tgz", + "integrity": "sha512-TR653Ki3pAwxBxUe8srfF3e4Pe3FTA46uaNHYyQwIoM4oWKSoOZiDNyHJ0oIoDIUPSRQbQG7jzgVBX3FPVne1Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5", + "@babel/template": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz", + "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.5.tgz", + "integrity": "sha512-nYWpjKW/7j/I/mZkGVgHJXh4bA1sfdFnJoOXwJuj4m3Q2EraO/8ZyrkCau9P5tbHQk01RMSt6KYLCsW7730SXQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "dependencies": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.5.tgz", + "integrity": "sha512-OVryBEgKUbtqMoB7eG2rs6UFexJi6Zj6FDXx+esBLPTCxCNxAY9o+8Di7IsUGJ+AVhp5ncK0fxWUBd0/1gPhrQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.21.5", + "@babel/helper-plugin-utils": "^7.21.5", + "@babel/helper-simple-access": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz", + "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.21.5.tgz", + "integrity": "sha512-ZoYBKDb6LyMi5yCsByQ5jmXsHAQDDYeexT1Szvlmui+lADvfSecr5Dxd/PkrTC3pAD182Fcju1VQkB4oCp9M+w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5", + "regenerator-transform": "^0.15.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz", + "integrity": "sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==", + "dependencies": { + "@babel/helper-module-imports": "^7.21.4", + "@babel/helper-plugin-utils": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.21.5.tgz", + "integrity": "sha512-LYm/gTOwZqsYohlvFUe/8Tujz75LqqVC2w+2qPHLR+WyWHGCZPN1KBpJCJn+4Bk4gOkQy/IXKIge6az5MqwlOg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.21.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.21.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.21.4.tgz", + "integrity": "sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==", + "dependencies": { + "@babel/compat-data": "^7.21.4", + "@babel/helper-compilation-targets": "^7.21.4", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.21.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.20.7", + "@babel/plugin-proposal-async-generator-functions": "^7.20.7", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.21.0", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.20.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.21.0", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.21.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.20.7", + "@babel/plugin-transform-async-to-generator": "^7.20.7", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.21.0", + "@babel/plugin-transform-classes": "^7.21.0", + "@babel/plugin-transform-computed-properties": "^7.20.7", + "@babel/plugin-transform-destructuring": "^7.21.3", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.21.0", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.20.11", + "@babel/plugin-transform-modules-commonjs": "^7.21.2", + "@babel/plugin-transform-modules-systemjs": "^7.20.11", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.20.5", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.21.3", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.20.5", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.20.7", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.21.4", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, + "node_modules/@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz", + "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==", + "dependencies": { + "@babel/code-frame": "^7.21.4", + "@babel/generator": "^7.21.5", + "@babel/helper-environment-visitor": "^7.21.5", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.5", + "@babel/types": "^7.21.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.21.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz", + "integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==", + "dependencies": { + "@babel/helper-string-parser": "^7.21.5", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "devOptional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.18.tgz", + "integrity": "sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz", + "integrity": "sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.18.tgz", + "integrity": "sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz", + "integrity": "sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz", + "integrity": "sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz", + "integrity": "sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz", + "integrity": "sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz", + "integrity": "sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz", + "integrity": "sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz", + "integrity": "sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz", + "integrity": "sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz", + "integrity": "sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz", + "integrity": "sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz", + "integrity": "sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz", + "integrity": "sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz", + "integrity": "sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz", + "integrity": "sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz", + "integrity": "sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz", + "integrity": "sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz", + "integrity": "sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz", + "integrity": "sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz", + "integrity": "sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" + }, + "node_modules/@mattlewis92/dom-autoscroller": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@mattlewis92/dom-autoscroller/-/dom-autoscroller-2.4.2.tgz", + "integrity": "sha512-YbrUWREPGEjE/FU6foXcAT1YbVwqD/jkYnY1dFb0o4AxtP3s4xKBthlELjndZih8uwsDWgQZx1eNskRNe2BgZQ==" + }, + "node_modules/@ng-bootstrap/ng-bootstrap": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-14.1.1.tgz", + "integrity": "sha512-3EIc+lCmqUlr7sghzx0r28sjk771zvyqe3SXkrT7grYFzQCVbjtms6Wr9OPbdbmpqDNXG6a8llUoyVgtp1B2Tg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^15.0.0", + "@angular/core": "^15.0.0", + "@angular/forms": "^15.0.0", + "@angular/localize": "^15.0.0", + "@popperjs/core": "^2.11.6", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@ngtools/webpack": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.0.0.tgz", + "integrity": "sha512-I5zjGtJu2wwIdM+OFUHXezmwTJ0wpParVJgCxR0cLd0CIbpRYSjOSZQN/nR9ZnTKAI5uFZ3MM2p/VRQGUUHUcw==", + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^16.0.0", + "typescript": ">=4.9.3 <5.1", + "webpack": "^5.54.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", + "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.0.4.tgz", + "integrity": "sha512-5yZghx+u5M47LghaybLCkdSyFzV/w4OuH12d96HO389Ik9CDsLaDZJVynSGGVJOLn6gy/k7Dz5XYcplM3uxXRg==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", + "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "dev": true, + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "dev": true, + "dependencies": { + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.7.tgz", + "integrity": "sha512-Cr4OjIkipTtcXKjAsm8agyleBuDHvxzeBoa1v543lbv1YaIwQjESsVcmjiWiPEbC1FIeHOG/Op9kdCmAmiS3Kw==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@scarf/scarf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.1.1.tgz", + "integrity": "sha512-VGbKDbk1RFIaSmdVb0cNjjWJoRWRI/Weo23AjRCC2nryO0iAS8pzsToJfPVPtVs74WHw4L1UTADNdIYRLkirZQ==", + "hasInstallScript": true + }, + "node_modules/@schematics/angular": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.0.0.tgz", + "integrity": "sha512-Ao1Y0hEDa30JjWDLnUfOsD+9nnfdBFclfKFzR+7pvvFYCpSUhH1u+8e+7noruIxlP26+SpqPn3AF5+IRTGza8w==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.0.0", + "@angular-devkit/schematics": "16.0.0", + "jsonc-parser": "3.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz", + "integrity": "sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "devOptional": true + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "peer": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "peer": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "peer": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "peer": true + }, + "node_modules/@tufjs/canonical-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", + "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", + "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", + "dev": true, + "dependencies": { + "@tufjs/canonical-json": "1.0.0", + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==", + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "devOptional": true + }, + "node_modules/@types/cors": { + "version": "2.8.13", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", + "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "devOptional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.37.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz", + "integrity": "sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.34", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", + "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-zv9kNf3keYegP5oThGLaPk8E081DFDuwfqjtiTzm6PoxChdJ1raSuADf2YGCVIyrSynLrgc8JWv296s7Q7pQSQ==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/jasmine": { + "version": "3.3.16", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.3.16.tgz", + "integrity": "sha512-Nveep4zKGby8uIvG2AEUyYOwZS8uVeHK9TgbuWYSawUDDdIgfhCKz28QzamTo//Jk7Ztt9PO3f+vzlB6a4GV1Q==", + "dev": true + }, + "node_modules/@types/jasminewd2": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.10.tgz", + "integrity": "sha512-J7mDz7ovjwjc+Y9rR9rY53hFWKATcIkrr9DwQWmOas4/pnIPJTXawnzjwpHm3RSxz/e3ZVUvQ7cRbd5UQLo10g==", + "dev": true, + "dependencies": { + "@types/jasmine": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + }, + "node_modules/@types/node": { + "version": "8.9.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", + "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" + }, + "node_modules/@types/selenium-webdriver": { + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.21.tgz", + "integrity": "sha512-DRHyGEr25ra2C4+eU7eiCSto2j9eUa9pR4z5uiLRBXWFlmfMCAeXwecZnAhuB3eOOCA8OkwcNlb6QUkVZFlKTA==", + "devOptional": true + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", + "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", + "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "peer": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/adm-zip": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "devOptional": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ag-grid-angular": { + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/ag-grid-angular/-/ag-grid-angular-21.2.2.tgz", + "integrity": "sha512-cd6mYMLn0ah1guISN+4SQZ6OFTLosbfFweaIsGWeVWN8mIOZGBNIpOy+GkuAJH53lkpsMqGgo9CEeUmTh/RhNg==", + "peerDependencies": { + "@angular/compiler": ">=2.1.x", + "@angular/core": ">=2.1.x", + "ag-grid-community": "^21.2.0", + "rxjs": ">=5.0.0-beta.12", + "zone.js": ">=0.6.x" + } + }, + "node_modules/ag-grid-community": { + "version": "21.2.2", + "resolved": "https://registry.npmjs.org/ag-grid-community/-/ag-grid-community-21.2.2.tgz", + "integrity": "sha512-x8kQmynYM/7zoigs7wIe7DkK1TIlUP5N1TYrGPsK8vO2gN+rqOok9csGPy4YamggWTcSxpy7wji/Kcz/gUp8/w==" + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz", + "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^2.0.0", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/angular-calendar": { + "version": "0.31.0", + "resolved": "https://registry.npmjs.org/angular-calendar/-/angular-calendar-0.31.0.tgz", + "integrity": "sha512-QGPObUmOYLr4IeSaj1pzZjcycN6otYx+SbeezJuujstXR9f2wo4CtMlBQ+SU+ZF5VFfrdYge8qkxMGCLBLBRrw==", + "dependencies": { + "@scarf/scarf": "^1.1.1", + "angular-draggable-droppable": "^8.0.0", + "angular-resizable-element": "^7.0.0", + "calendar-utils": "^0.10.4", + "positioning": "^2.0.1", + "tslib": "^2.4.1" + }, + "funding": { + "url": "https://github.com/sponsors/mattlewis92" + }, + "peerDependencies": { + "@angular/core": ">=15.0.0" + } + }, + "node_modules/angular-draggable-droppable": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/angular-draggable-droppable/-/angular-draggable-droppable-8.0.0.tgz", + "integrity": "sha512-+gpSNBbygjV1pxTxsM3UPJKcXHXJabYoTtKcgQe74rGnb1umKc07XCBD1qDzvlG/kocthvhQ12qfYOYzHnE3ZA==", + "dependencies": { + "@mattlewis92/dom-autoscroller": "^2.4.2", + "tslib": "^2.4.1" + }, + "peerDependencies": { + "@angular/core": ">=15.0.0" + } + }, + "node_modules/angular-resizable-element": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/angular-resizable-element/-/angular-resizable-element-7.0.2.tgz", + "integrity": "sha512-/BGuNiA38n9klexHO1xgnsA3VYigj9v+jUGjKtBRgfB26bCxZKsNWParSu2k3EqbATrfAJC4Nl8f7cORpJFf4w==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": ">=15.0.0" + } + }, + "node_modules/angularx-flatpickr": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/angularx-flatpickr/-/angularx-flatpickr-6.6.0.tgz", + "integrity": "sha512-n/csZmAwfL32P7pUv52FXihSbPjVAjiKglbY8WO9hsBKvAk7mw8PKNjiovln4+fuscJwKo0wSsw+s7A+JpetQg==", + "dependencies": { + "tslib": "^1.9.0" + }, + "peerDependencies": { + "@angular/core": ">=5.0.0", + "@angular/forms": ">=5.0.0", + "flatpickr": "^4.5.0" + } + }, + "node_modules/angularx-flatpickr/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/app-root-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", + "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "peer": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw==", + "dependencies": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "devOptional": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "devOptional": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "devOptional": true + }, + "node_modules/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "devOptional": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "devOptional": true + }, + "node_modules/axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dependencies": { + "ast-types-flow": "0.0.7" + } + }, + "node_modules/babel-loader": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.2.tgz", + "integrity": "sha512-mN14niXW43tddohGl8HPu5yfQq70iUThvFL/4QzESA7GcZoC0eVOhvWdQ8+3UlSjaDE9MVtsW9mxDY07W7VpVA==", + "dependencies": { + "find-cache-dir": "^3.3.2", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "devOptional": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "devOptional": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "devOptional": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "blocking-proxy": "built/lib/bin.js" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "devOptional": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "devOptional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "devOptional": true + }, + "node_modules/bonjour-service": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.1.tgz", + "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==", + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/browserstack": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.1.tgz", + "integrity": "sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==", + "devOptional": true, + "dependencies": { + "https-proxy-agent": "^2.2.1" + } + }, + "node_modules/browserstack/node_modules/agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "devOptional": true, + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/browserstack/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "devOptional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/browserstack/node_modules/https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "devOptional": true, + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.0.tgz", + "integrity": "sha512-hXpFU+Z3AfVmNuiLve1qxWHMq0RSIt5gjCKAHi/M6DktwFwDdAXAtunl1i4WSKaaVcU9IsRvXFg42jTHigcC6Q==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/calendar-utils": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/calendar-utils/-/calendar-utils-0.10.4.tgz", + "integrity": "sha512-gBK4xCJ42yjaUKwuUha6cZOfxAmGzvSgbdAaX3xLRioeKbYoOK1x1qeD6dch72rsMZlTgATPbBBx42bnkStqgQ==" + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001486", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001486.tgz", + "integrity": "sha512-uv7/gXuHi10Whlj0pp5q/tsK/32J2QSqVRKQhs2j8VsDCjgyruAh/eEXHF822VqO9yT6iZKw3nRwZRSPBE9OQg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "devOptional": true + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", + "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/codelyzer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.2.tgz", + "integrity": "sha512-v3+E0Ucu2xWJMOJ2fA/q9pDT/hlxHftHGPUay1/1cTgyPV5JTHFdO9hqo837Sx2s9vKBMTt5gO+lhF95PO6J+g==", + "dependencies": { + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", + "app-root-path": "^3.0.0", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "rxjs": "^6.5.3", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2", + "tslib": "^1.10.0", + "zone.js": "~0.10.3" + }, + "peerDependencies": { + "@angular/compiler": ">=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next", + "@angular/core": ">=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next", + "tslint": "^5.0.0 || ^6.0.0" + } + }, + "node_modules/codelyzer/node_modules/@angular/compiler": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", + "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", + "peerDependencies": { + "tslib": "^1.10.0" + } + }, + "node_modules/codelyzer/node_modules/@angular/core": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", + "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", + "peerDependencies": { + "rxjs": "^6.5.3", + "tslib": "^1.10.0", + "zone.js": "~0.10.2" + } + }, + "node_modules/codelyzer/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/codelyzer/node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "node_modules/codelyzer/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/codelyzer/node_modules/zone.js": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==" + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "devOptional": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "devOptional": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "devOptional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "devOptional": true + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "devOptional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/core-js-compat": { + "version": "3.30.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.30.2.tgz", + "integrity": "sha512-nriW1nuJjUgvkEjIot1Spwakz52V9YkYHZAQG6A1eCgC8AA1p0zngrQEP9R0+V6hji5XilWKG1Bd0YRppmGimA==", + "dependencies": { + "browserslist": "^4.21.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "devOptional": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz", + "integrity": "sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==", + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "peer": true + }, + "node_modules/critters": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", + "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", + "dependencies": { + "chalk": "^4.1.0", + "css-select": "^4.2.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "postcss": "^8.3.7", + "pretty-bytes": "^5.3.0" + } + }, + "node_modules/critters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/critters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/critters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/critters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/critters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/critters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-loader": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", + "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.19", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dependencies": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw==", + "dependencies": { + "through": "X.X.X" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "devOptional": true + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "devOptional": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" + }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "devOptional": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "devOptional": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + }, + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "devOptional": true + }, + "node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + }, + "node_modules/dns-packet": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz", + "integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "devOptional": true, + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "devOptional": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.389", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.389.tgz", + "integrity": "sha512-WDgWUOK8ROR7sDFyYmxCUOoDc50lPgYAHAHwnnD1iN3SKO/mpqftb9iIPiEkMKmqYdkrR0j3N/O+YB/U7lSxwg==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/engine.io": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz", + "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==", + "devOptional": true, + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.11.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", + "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", + "devOptional": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/@types/node": { + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.1.2.tgz", + "integrity": "sha512-CTO/wa8x+rZU626cL2BlbCDzydgnFNgc19h4YvizpTO88MFQxab8wqisxaofQJ/9bLGugRdWIuX/TbIs6VVF6g==", + "devOptional": true + }, + "node_modules/engine.io/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "devOptional": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/enhanced-resolve": { + "version": "5.14.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.0.tgz", + "integrity": "sha512-+DCows0XNwLDcUhbFJPdlQEVnT2zXlCv7hPxemTz86/O+B/hCQ+mb7ydkPKiflpVraqLPCAfu7lDy+hBXueojw==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", + "devOptional": true + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-module-lexer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==" + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "devOptional": true + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", + "devOptional": true, + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/esbuild": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.18.tgz", + "integrity": "sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.18", + "@esbuild/android-arm64": "0.17.18", + "@esbuild/android-x64": "0.17.18", + "@esbuild/darwin-arm64": "0.17.18", + "@esbuild/darwin-x64": "0.17.18", + "@esbuild/freebsd-arm64": "0.17.18", + "@esbuild/freebsd-x64": "0.17.18", + "@esbuild/linux-arm": "0.17.18", + "@esbuild/linux-arm64": "0.17.18", + "@esbuild/linux-ia32": "0.17.18", + "@esbuild/linux-loong64": "0.17.18", + "@esbuild/linux-mips64el": "0.17.18", + "@esbuild/linux-ppc64": "0.17.18", + "@esbuild/linux-riscv64": "0.17.18", + "@esbuild/linux-s390x": "0.17.18", + "@esbuild/linux-x64": "0.17.18", + "@esbuild/netbsd-x64": "0.17.18", + "@esbuild/openbsd-x64": "0.17.18", + "@esbuild/sunos-x64": "0.17.18", + "@esbuild/win32-arm64": "0.17.18", + "@esbuild/win32-ia32": "0.17.18", + "@esbuild/win32-x64": "0.17.18" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.17.18", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.17.18.tgz", + "integrity": "sha512-h4m5zVa+KaDuRFIbH9dokMwovvkIjTQJS7/Ry+0Z1paVuS9aIkso2vdA2GmwH9GSvGX6w71WveJ3PfkoLuWaRw==", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter-asyncresource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==" + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "devOptional": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/express/node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "devOptional": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "devOptional": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "devOptional": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "devOptional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "devOptional": true + }, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "devOptional": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flatpickr": { + "version": "4.6.13", + "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.13.tgz", + "integrity": "sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw==" + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "devOptional": true + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", + "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "devOptional": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "devOptional": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "devOptional": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", + "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "dependencies": { + "minipass": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "devOptional": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "13.1.4", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", + "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==" + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "devOptional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "devOptional": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/har-validator/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "devOptional": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/har-validator/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "devOptional": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "devOptional": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hdr-histogram-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", + "dependencies": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "node_modules/hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==" + }, + "node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "devOptional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", + "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", + "dev": true, + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "devOptional": true + }, + "node_modules/immutable": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", + "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.0.0.tgz", + "integrity": "sha512-t0ikzf5qkSFqRl1e6ejKBe+Tk2bsQd8ivEkcisyGXsku2t8NvXZ1Y3RRz5vxrDgOrTBOi13CvGsVoI5wVpd7xg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "devOptional": true + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==" + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "devOptional": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "devOptional": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.0.tgz", + "integrity": "sha512-r5XBrqIJfwRIjRt/Xr5fv9Wh09qyhHfKnYddDlpM+ibRR20qrYActpCAgU6U+d53EOEjzkvxPMVHSlgR7leXrQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==", + "devOptional": true, + "dependencies": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "bin": { + "jasmine": "bin/jasmine.js" + } + }, + "node_modules/jasmine-core": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.8.0.tgz", + "integrity": "sha512-zl0nZWDrmbCiKns0NcjkFGYkVTGCPUgoHypTaj+G2AzaWus7QGoXARSlYsSle2VRpSdfJmM+hzmFKzQNhF2kHg==", + "dev": true + }, + "node_modules/jasmine-spec-reporter": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.2.tgz", + "integrity": "sha512-6gP1LbVgJ+d7PKksQBc2H0oDGNRQI3gKUsWlswKaQ2fif9X5gzhQcgM5+kiJGCQVurOG09jqNhk7payggyp5+g==", + "dev": true, + "dependencies": { + "colors": "1.4.0" + } + }, + "node_modules/jasmine/node_modules/jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ==", + "devOptional": true + }, + "node_modules/jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==", + "devOptional": true, + "engines": { + "node": ">= 6.9.x" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "devOptional": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", + "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "devOptional": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "devOptional": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "devOptional": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "devOptional": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "devOptional": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "devOptional": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "devOptional": true + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "devOptional": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/karma": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.2.tgz", + "integrity": "sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==", + "devOptional": true, + "dependencies": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", + "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", + "dev": true, + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-coverage-istanbul-reporter": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz", + "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^3.0.2", + "minimatch": "^3.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/mattlewis92" + } + }, + "node_modules/karma-jasmine": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.2.tgz", + "integrity": "sha512-ggi84RMNQffSDmWSyyt4zxzh2CQGwsxvYYsprgyR1j8ikzIduEdOlcLvXjZGwXG/0j41KUXOWsUCBfbEHPWP9g==", + "dev": true, + "dependencies": { + "jasmine-core": "^3.6.0" + }, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "karma": "*" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", + "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", + "dev": true, + "peerDependencies": { + "jasmine-core": ">=3.8", + "karma": ">=0.9", + "karma-jasmine": ">=1.1" + } + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dependencies": { + "source-map-support": "^0.5.5" + } + }, + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "devOptional": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/karma/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "devOptional": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "devOptional": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/karma/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "devOptional": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/launch-editor": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.0.tgz", + "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==", + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "dependencies": { + "klona": "^2.0.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dependencies": { + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "devOptional": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log4js": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", + "devOptional": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.5" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/make-fetch-happen/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-fetch-happen/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.1.tgz", + "integrity": "sha512-UWbFJKvj5k+nETdteFndTpYxdeTMox/ULeqX5k/dpaQJCCFmj5EeKv3dBcyO2xmkRAx2vppRu5dVG7SOtsGOzA==", + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "devOptional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.5", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.5.tgz", + "integrity": "sha512-9HaR++0mlgom81s95vvNjxkg52n2b5s//3ZTI1EtzFb98awsLSivs2LMsVqnQ3ay0PVhqWcGNyDaTE961FOcjQ==", + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-fetch/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-json-stream/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "optional": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/ng6-breadcrumbs": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/ng6-breadcrumbs/-/ng6-breadcrumbs-1.0.7.tgz", + "integrity": "sha512-U/WRZ/iFMFq1zxwnY9VnvhT556+5XythO5g3EXidR5wIctUWwb6WCIevLExmFyU/ATaplruGtVZR8zQyyABA3g==" + }, + "node_modules/nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "optional": true + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.1.tgz", + "integrity": "sha512-4Q16ZCqq3g8awk6UplT7AuxQ35XN4R/yf/+wSAwcBUAjg7l58RTactWaP8fIDTi0FzI7YcVLujwExakZlfWkXg==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==" + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-bundled": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", + "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-install-checks": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz", + "integrity": "sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "dev": true, + "dependencies": { + "ignore-walk": "^6.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", + "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", + "dev": true, + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "dev": true, + "dependencies": { + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "devOptional": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pacote": { + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.1.3.tgz", + "integrity": "sha512-aRts8cZqxiJVDitmAh+3z+FxuO3tLNWEmwDRPEpDDiZJaRz06clP4XX112ynMT5uF0QNoMPajBBHnaStUEPJXA==", + "dev": true, + "dependencies": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/parse5-html-rewriting-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", + "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", + "dependencies": { + "entities": "^4.3.0", + "parse5": "^7.0.0", + "parse5-sax-parser": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-html-rewriting-stream/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-sax-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", + "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-sax-parser/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/parse5-sax-parser/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "devOptional": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.7.0.tgz", + "integrity": "sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==", + "dependencies": { + "lru-cache": "^9.0.0", + "minipass": "^5.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", + "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "devOptional": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "devOptional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "devOptional": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/piscina": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", + "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", + "dependencies": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0" + }, + "optionalDependencies": { + "nice-napi": "^1.0.2" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/positioning": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/positioning/-/positioning-2.0.1.tgz", + "integrity": "sha512-DsAgM42kV/ObuwlRpAzDTjH9E8fGKkMDJHWFX+kfNXSxh7UCCQxEmdjv/Ws5Ft1XDnt3JT8fIDYeKNSE2TbttA==" + }, + "node_modules/postcss": { + "version": "8.4.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", + "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz", + "integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/protractor": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", + "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", + "deprecated": "We have news to share - Protractor is deprecated and will reach end-of-life by Summer 2023. To learn more and find out about other options please refer to this post on the Angular blog. Thank you for using and contributing to Protractor. https://goo.gle/state-of-e2e-in-angular", + "devOptional": true, + "dependencies": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.1.7", + "yargs": "^15.3.1" + }, + "bin": { + "protractor": "bin/protractor", + "webdriver-manager": "bin/webdriver-manager" + }, + "engines": { + "node": ">=10.13.x" + } + }, + "node_modules/protractor/node_modules/@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug==", + "devOptional": true + }, + "node_modules/protractor/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "devOptional": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/protractor/node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "devOptional": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/protractor/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true + }, + "node_modules/protractor/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "devOptional": true, + "dependencies": { + "source-map": "^0.5.6" + } + }, + "node_modules/protractor/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "devOptional": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "devOptional": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/protractor/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "devOptional": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/protractor/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "devOptional": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "devOptional": true + }, + "node_modules/protractor/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "devOptional": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "devOptional": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "optional": true + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "devOptional": true + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==", + "devOptional": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "devOptional": true, + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "devOptional": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-package-json": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.3.tgz", + "integrity": "sha512-4QbpReW4kxFgeBQ0vPAqh2y8sXEB3D4t3jsXbJKIhBiF80KT6XRo45reqwtftju5J6ru1ax06A2Gb/wM1qCOEQ==", + "dev": true, + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.3.tgz", + "integrity": "sha512-Kb4rfmBVE3eQTAimgmeqc2LwSnN0wIOkkUL6HmxEFxNJ4fHghYHVbFba/HcGcRjE6s9KoMNK3rSOwkL4PioZjg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.0", + "minipass": "^5.0.0", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", + "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "devOptional": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "devOptional": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "devOptional": true + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "devOptional": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.21.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.6.tgz", + "integrity": "sha512-SXIICxvxQxR3D4dp/3LDHZIJPC8a4anKMHd4E3Jiz2/JnY+2bEjqrOokAauc5ShGVNFHlEFjBXAXlaxkJqIqSg==", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sass": { + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz", + "integrity": "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.2.2.tgz", + "integrity": "sha512-nrIdVAAte3B9icfBiGWvmMhT/D+eCDwnk+yA7VE/76dp/WkHX+i44Q/pfo71NYbwj0Ap+PGsn0ekOuU1WFJ2AA==", + "dependencies": { + "klona": "^2.0.6", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "devOptional": true, + "dependencies": { + "https-proxy-agent": "^2.2.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/saucelabs/node_modules/agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "devOptional": true, + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/saucelabs/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "devOptional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/saucelabs/node_modules/https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "devOptional": true, + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "devOptional": true + }, + "node_modules/schema-utils": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", + "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + }, + "node_modules/selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "devOptional": true, + "dependencies": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "engines": { + "node": ">= 6.9.0" + } + }, + "node_modules/selenium-webdriver/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "devOptional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/selenium-webdriver/node_modules/tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==", + "devOptional": true, + "dependencies": { + "os-tmpdir": "~1.0.1" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.4.0.tgz", + "integrity": "sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng==", + "dependencies": { + "semver": "^5.3.0" + } + }, + "node_modules/semver-dsl/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "devOptional": true + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "devOptional": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/sigstore": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.4.0.tgz", + "integrity": "sha512-N7TRpSbFjY/TrFDg6yGAQSYBrQ5s6qmPiq4pD6fkv1LoyfMsLG0NwZWG2s5q+uttLHgyVyTa0Rogx2P78rN8kQ==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.1.0", + "make-fetch-happen": "^11.0.1", + "tuf-js": "^1.1.3" + }, + "bin": { + "sigstore": "bin/sigstore.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/sigstore/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "dev": true, + "dependencies": { + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socket.io": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", + "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", + "devOptional": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.4.1", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "devOptional": true, + "dependencies": { + "ws": "~8.11.0" + } + }, + "node_modules/socket.io-adapter/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "devOptional": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", + "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", + "devOptional": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sockjs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.1.tgz", + "integrity": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==", + "dependencies": { + "abab": "^2.0.6", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "devOptional": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssri": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", + "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "dependencies": { + "minipass": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/streamroller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", + "devOptional": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.14", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.14.tgz", + "integrity": "sha512-piERznXu0U7/pW7cdSn7hjqySIVTYT6F76icmFk7ptU7dDYlXTm5r9A6K04R2vU3olYgoKeo1Cg3eeu5nhftAw==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/terser": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", + "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.8.tgz", + "integrity": "sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "devOptional": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-7.0.1.tgz", + "integrity": "sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==", + "dev": true, + "dependencies": { + "arrify": "^1.0.0", + "buffer-from": "^1.1.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.6", + "yn": "^2.0.0" + }, + "bin": { + "ts-node": "dist/bin.js" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + }, + "node_modules/tslint": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + } + }, + "node_modules/tslint/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslint/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/tslint/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/tuf-js": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.6.tgz", + "integrity": "sha512-CXwFVIsXGbVY4vFiWF7TJKWmlKJAT8TWkH4RmiohJRcDJInix++F0dznDmoVbtJNzZ8yLprKUG4YrDIhv3nBMg==", + "dev": true, + "dependencies": { + "@tufjs/models": "1.0.4", + "debug": "^4.3.4", + "make-fetch-happen": "^11.1.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/tuf-js/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/minipass-fetch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", + "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "dev": true, + "dependencies": { + "minipass": "^5.0.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "devOptional": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "devOptional": true + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==" + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.35", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.35.tgz", + "integrity": "sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "devOptional": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "devOptional": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "peer": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", + "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "devOptional": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webdriver-js-extender": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", + "devOptional": true, + "dependencies": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/webdriver-manager": { + "version": "12.1.9", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.9.tgz", + "integrity": "sha512-Yl113uKm8z4m/KMUVWHq1Sjtla2uxEBtx2Ue3AmIlnlPAKloDn/Lvmy6pqWCUersVISpdMeVpAaGbNnvMuT2LQ==", + "devOptional": true, + "dependencies": { + "adm-zip": "^0.5.2", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + }, + "bin": { + "webdriver-manager": "bin/webdriver-manager" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/webdriver-manager/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "devOptional": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "devOptional": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==", + "devOptional": true, + "dependencies": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==", + "devOptional": true, + "dependencies": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "devOptional": true + }, + "node_modules/webdriver-manager/node_modules/is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "devOptional": true, + "dependencies": { + "is-path-inside": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", + "devOptional": true, + "dependencies": { + "path-is-inside": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "devOptional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/webdriver-manager/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "devOptional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/webdriver-manager/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "devOptional": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "devOptional": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/webpack": { + "version": "5.80.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.80.0.tgz", + "integrity": "sha512-OIMiq37XK1rWO8mH9ssfFKZsXg4n6klTEDL7S8/HqbAOBBaiy8ABvXvz0dDCXeEF9gqwxSvVk611zFPjS8hJxA==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.13.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.0.2.tgz", + "integrity": "sha512-iOddiJzPcQC6lwOIu60vscbGWth8PCRcWRCwoQcTQf9RMoOWBHg5EyzpGdtSmGMrSPd5vHEfFXmVErQEmkRngQ==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.12", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server": { + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.13.2.tgz", + "integrity": "sha512-5i6TrGBRxG4vnfDpB6qSQGfnB6skGBXNL5/542w2uRGLimX6qeE5BQMLrzIC3JYV/xlGOv+s+hTleI9AZKUQNw==", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", + "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "devOptional": true + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "devOptional": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "devOptional": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/zone.js": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.13.0.tgz", + "integrity": "sha512-7m3hNNyswsdoDobCkYNAy5WiUulkMd3+fWaGT9ij6iq3Zr/IwJo4RMCYPSDjT+r7tnPErmY9sZpKhWQ8S5k6XQ==", + "dependencies": { + "tslib": "^2.3.0" + } + } + } +} diff --git a/httpdocs/plp-angular/package.json b/httpdocs/plp-angular/package.json index a1f7fef..623245f 100644 --- a/httpdocs/plp-angular/package.json +++ b/httpdocs/plp-angular/package.json @@ -11,30 +11,34 @@ }, "private": true, "dependencies": { + "@angular-devkit/build-angular": "^16.0.0", "@angular-devkit/schematics": "^16.0.0", - "@angular/common": "^12.2.17", - "@angular/compiler": "^12.2.17", - "@angular/core": "^12.2.17", - "@angular/forms": "^12.2.17", - "@angular/platform-browser": "^12.2.17", - "@angular/platform-browser-dynamic": "^12.2.17", - "@angular/router": "^12.2.17", - "@ng-bootstrap/ng-bootstrap": "^9.1.3", + "@angular/animations": "^16.0.0", + "@angular/common": "^16.0.0", + "@angular/compiler": "^16.0.0", + "@angular/core": "^16.0.0", + "@angular/forms": "^16.0.0", + "@angular/platform-browser": "^16.0.0", + "@angular/platform-browser-dynamic": "^16.0.0", + "@angular/router": "^16.0.0", + "@ng-bootstrap/ng-bootstrap": "^14.1.1", "ag-grid-angular": "^21.2.2", "ag-grid-community": "^21.2.2", + "angular-calendar": "^0.31.0", "angularx-flatpickr": "^6.2.0", + "codelyzer": "^6.0.2", "date-fns": "^1.30.1", "file-saver": "^2.0.2", - "flatpickr": "^4.6.3", + "flatpickr": "^4.6.13", "ng6-breadcrumbs": "^1.0.7", "rxjs": "~6.6.7", "tslib": "^2.0.0", - "zone.js": "~0.11.8" + "zone.js": "~0.13.0" }, "devDependencies": { "@angular/cli": "^16.0.0", - "@angular/compiler-cli": "^12.2.17", - "@angular/language-service": "^12.2.17", + "@angular/compiler-cli": "^16.0.0", + "@angular/language-service": "^16.0.0", "@types/file-saver": "^2.0.1", "@types/jasmine": "~3.3.8", "@types/jasminewd2": "^2.0.8", @@ -46,9 +50,9 @@ "karma-coverage-istanbul-reporter": "~3.0.2", "karma-jasmine": "~4.0.0", "karma-jasmine-html-reporter": "^1.5.0", - "protractor": "^3.3.0", + "protractor": "^7.0.0", "ts-node": "~7.0.0", "tslint": "~6.1.0", - "typescript": "~4.3.5" + "typescript": "~4.9.5" } -} \ No newline at end of file +} diff --git a/httpdocs/plp-angular/src/app/app.module.ts b/httpdocs/plp-angular/src/app/app.module.ts index 2cc4fb2..d693834 100644 --- a/httpdocs/plp-angular/src/app/app.module.ts +++ b/httpdocs/plp-angular/src/app/app.module.ts @@ -64,94 +64,9 @@ import { CustomerContactPersonDetailComponent } from './views/customer-managemen import {MeetingService} from './services/meeting.service'; import { InternalMeetingEditComponent } from './views/start/internal-meeting-edit/internal-meeting-edit.component'; import { InternalMeetingDetailComponent } from './views/start/internal-meeting-detail/internal-meeting-detail.component'; -import {OperatorService} from './services/operator.service'; -import { OperatorsComponent } from './views/operators/operators.component'; -import { OperatorsContactListComponent } from './views/operators/operators-contact-list/operators-contact-list.component'; -import { OperatorsListComponent } from './views/operators/operators-list/operators-list.component'; -import { OperatorViewComponent } from './views/operators/operator-view/operator-view.component'; -import { OperatorContactPersonViewComponent } from './views/operators/operator-view/operator-contact-person-view/operator-contact-person-view.component'; -import { OperatorContactPersonEditComponent } from './views/operators/operator-view/operator-contact-person-edit/operator-contact-person-edit.component'; -import { OperatorContactPersonDetailComponent } from './views/operators/operator-view/operator-contact-person-detail/operator-contact-person-detail.component'; -import { OperatorDataEditComponent } from './views/operators/operator-view/operator-data-edit/operator-data-edit.component'; -import { OperatorDataViewComponent } from './views/operators/operator-view/operator-data-view/operator-data-view.component'; -import { OperatorNoteDetailComponent } from './views/operators/operator-view/operator-note-detail/operator-note-detail.component'; -import { OperatorNoteViewComponent } from './views/operators/operator-view/operator-note-view/operator-note-view.component'; -import { OperatorNoteEditComponent } from './views/operators/operator-view/operator-note-edit/operator-note-edit.component'; -import { OperatorMeetingViewComponent } from './views/operators/operator-view/operator-meeting-view/operator-meeting-view.component'; -import { OperatorMeetingEditComponent } from './views/operators/operator-view/operator-meeting-edit/operator-meeting-edit.component'; -import { OperatorMeetingDetailComponent } from './views/operators/operator-view/operator-meeting-detail/operator-meeting-detail.component'; import { CalendarLegendComponent } from './components/calendar-legend/calendar-legend.component'; import { CommonService } from './services/common.service'; -import { - ProductionsContactListComponent -} from './views/productions/productions-contact-list/productions-contact-list.component'; -import {ProductionsListComponent} from './views/productions/productions-list/productions-list.component'; -import {ProductionViewComponent} from './views/productions/production-view/production-view.component'; -import { - ProductionContactPersonViewComponent -} from './views/productions/production-view/production-contact-person-view/production-contact-person-view.component'; -import { - ProductionContactPersonEditComponent -} from './views/productions/production-view/production-contact-person-edit/production-contact-person-edit.component'; -import { - ProductionContactPersonDetailComponent -} from './views/productions/production-view/production-contact-person-detail/production-contact-person-detail.component'; -import { - ProductionDataEditComponent -} from './views/productions/production-view/production-data-edit/production-data-edit.component'; -import { - ProductionDataViewComponent -} from './views/productions/production-view/production-data-view/production-data-view.component'; -import { - ProductionNoteDetailComponent -} from './views/productions/production-view/production-note-detail/production-note-detail.component'; -import { - ProductionNoteViewComponent -} from './views/productions/production-view/production-note-view/production-note-view.component'; -import { - ProductionNoteEditComponent -} from './views/productions/production-view/production-note-edit/production-note-edit.component'; -import { - ProductionMeetingViewComponent -} from './views/productions/production-view/production-meeting-view/production-meeting-view.component'; -import { - ProductionMeetingEditComponent -} from './views/productions/production-view/production-meeting-edit/production-meeting-edit.component'; -import { - ProductionMeetingDetailComponent -} from './views/productions/production-view/production-meeting-detail/production-meeting-detail.component'; -import {ProductionService} from './services/production.service'; -import {ServiceService} from './services/service.service'; -import {ProductionsComponent} from './views/productions/productions.component'; -import {ServicesContactListComponent} from './views/services/services-contact-list/services-contact-list.component'; -import {ServicesListComponent} from './views/services/services-list/services-list.component'; -import {ServiceViewComponent} from './views/services/service-view/service-view.component'; -import { - ServiceContactPersonViewComponent -} from './views/services/service-view/service-contact-person-view/service-contact-person-view.component'; -import { - ServiceContactPersonEditComponent -} from './views/services/service-view/service-contact-person-edit/service-contact-person-edit.component'; -import { - ServiceContactPersonDetailComponent -} from './views/services/service-view/service-contact-person-detail/service-contact-person-detail.component'; -import {ServiceDataEditComponent} from './views/services/service-view/service-data-edit/service-data-edit.component'; -import {ServiceDataViewComponent} from './views/services/service-view/service-data-view/service-data-view.component'; -import { - ServiceNoteDetailComponent -} from './views/services/service-view/service-note-detail/service-note-detail.component'; -import {ServiceNoteViewComponent} from './views/services/service-view/service-note-view/service-note-view.component'; -import {ServiceNoteEditComponent} from './views/services/service-view/service-note-edit/service-note-edit.component'; -import { - ServiceMeetingViewComponent -} from './views/services/service-view/service-meeting-view/service-meeting-view.component'; -import { - ServiceMeetingEditComponent -} from './views/services/service-view/service-meeting-edit/service-meeting-edit.component'; -import { - ServiceMeetingDetailComponent -} from './views/services/service-view/service-meeting-detail/service-meeting-detail.component'; -import {ServicesComponent} from './views/services/services.component'; + registerLocaleData(localeDe); @@ -164,7 +79,6 @@ registerLocaleData(localeDe); LoginComponent, AsideComponent, TechniqueComponent, - ProductionsComponent, SalesComponent, AccountingComponent, ModalComponent, @@ -201,51 +115,6 @@ registerLocaleData(localeDe); CustomerContactPersonDetailComponent, InternalMeetingEditComponent, InternalMeetingDetailComponent, - OperatorsComponent, - OperatorsContactListComponent, - OperatorsListComponent, - OperatorViewComponent, - OperatorContactPersonViewComponent, - OperatorContactPersonEditComponent, - OperatorContactPersonDetailComponent, - OperatorDataEditComponent, - OperatorDataViewComponent, - OperatorNoteDetailComponent, - OperatorNoteViewComponent, - OperatorNoteEditComponent, - OperatorMeetingViewComponent, - OperatorMeetingEditComponent, - OperatorMeetingDetailComponent, - ProductionsComponent, - ProductionsContactListComponent, - ProductionsListComponent, - ProductionViewComponent, - ProductionContactPersonViewComponent, - ProductionContactPersonEditComponent, - ProductionContactPersonDetailComponent, - ProductionDataEditComponent, - ProductionDataViewComponent, - ProductionNoteDetailComponent, - ProductionNoteViewComponent, - ProductionNoteEditComponent, - ProductionMeetingViewComponent, - ProductionMeetingEditComponent, - ProductionMeetingDetailComponent, - ServicesComponent, - ServicesContactListComponent, - ServicesListComponent, - ServiceViewComponent, - ServiceContactPersonViewComponent, - ServiceContactPersonEditComponent, - ServiceContactPersonDetailComponent, - ServiceDataEditComponent, - ServiceDataViewComponent, - ServiceNoteDetailComponent, - ServiceNoteViewComponent, - ServiceNoteEditComponent, - ServiceMeetingViewComponent, - ServiceMeetingEditComponent, - ServiceMeetingDetailComponent, CalendarLegendComponent, ], imports: [ @@ -279,10 +148,7 @@ registerLocaleData(localeDe); CacheService, MessageService, HttpService, - CustomerService, - OperatorService, - ProductionService, - ServiceService, + CustomerService MeetingService, CommonService, {provide: HTTP_INTERCEPTORS, useClass: HttpClientInterceptor, multi: true}, diff --git a/httpdocs/plp-angular/src/app/components/ag-grid-component-const.ts b/httpdocs/plp-angular/src/app/components/ag-grid-component-const.ts index c76fdbe..6c0ceb7 100644 --- a/httpdocs/plp-angular/src/app/components/ag-grid-component-const.ts +++ b/httpdocs/plp-angular/src/app/components/ag-grid-component-const.ts @@ -1,5 +1,4 @@ import {GridFactory} from '../grid-cellrenderer/grid-factory'; -import {isNull} from 'util'; import {IGridCellParams} from '../grid-cellrenderer/grid-cell-params'; import {Const} from '../utils/const'; @@ -62,12 +61,11 @@ export class AgGridComponentConst { /** * Sets input error - * @param {string} errorMessage */ public static setGridInputError(errorMessage: string = null): void { AgGridComponentConst.gridInputError = errorMessage; - if (!isNull(errorMessage)) { - setTimeout(function() { + if (null !== errorMessage) { + setTimeout(() => { AgGridComponentConst.setGridInputError(); }, 10); } @@ -75,12 +73,9 @@ export class AgGridComponentConst { /** * Returns a cell renderer for given type with given parameters - * @param params - * @param {IGridCellParams} gridCellParams - * @returns {{}} */ public static cellRendererSelector(params: any, gridCellParams: IGridCellParams = null): {} { - if (isNull(gridCellParams)) { + if (null === gridCellParams) { gridCellParams = GridFactory.getGridCellParams(); } @@ -109,12 +104,9 @@ export class AgGridComponentConst { /** * Returns a cell editor for given type with given parameters - * @param params - * @param {IGridCellParams} gridCellParams - * @returns {{component: string; params: IGridCellParams}} */ public static cellEditorSelector(params: any, gridCellParams: IGridCellParams = null) { - if (isNull(gridCellParams)) { + if (null === gridCellParams) { gridCellParams = GridFactory.getGridCellParams(); } @@ -148,7 +140,7 @@ export class AgGridComponentConst { * @param {string} type */ private static checkCellValueType(type: string = null): void { - if (!isNull(type) && AgGridComponentConst.validCellValueTypes.indexOf(type) < 0) { + if (null !== type && AgGridComponentConst.validCellValueTypes.indexOf(type) < 0) { throw new Error('Unknown cell value type'); } } @@ -158,7 +150,7 @@ export class AgGridComponentConst { * @param {string} type */ private static checkCellUnit(type: string = null): void { - if (!isNull(type) && AgGridComponentConst.validCellUnits.indexOf(type) < 0) { + if (null !== type && AgGridComponentConst.validCellUnits.indexOf(type) < 0) { throw new Error('Unknown cell value type'); } } diff --git a/httpdocs/plp-angular/src/app/components/ag-grid-component.ts b/httpdocs/plp-angular/src/app/components/ag-grid-component.ts index 1137808..4539be6 100644 --- a/httpdocs/plp-angular/src/app/components/ag-grid-component.ts +++ b/httpdocs/plp-angular/src/app/components/ag-grid-component.ts @@ -1,4 +1,4 @@ -import {isNull, isUndefined} from 'util'; +import {isUndefined} from 'util'; import {path} from '../../environments/path'; import {AgGridLocale} from '../lang/ag-gridlocale'; import {IGridValidationErrors} from '../model/virtual/grid-validation-errors'; @@ -39,7 +39,6 @@ export class AgGridComponent { /** * Constructor - * @param {boolean} bSizeColumnsToFit */ constructor(bSizeColumnsToFit: boolean = true) { AgGridComponentConst.setGridInputError(); @@ -77,7 +76,6 @@ export class AgGridComponent { /** * Callback on grid ready - * @param params */ public onGridReady(params): void { this.params = params; @@ -87,7 +85,7 @@ export class AgGridComponent { // Set for cadasters if (!this.bSizeColumnsToFit) { const allColumnIds = []; - this.gridParamsColumnApi.getAllColumns().forEach(function(column) { + this.gridParamsColumnApi.getAllColumns().forEach((column) => { allColumnIds.push(column.colId); }); this.gridParamsColumnApi.autoSizeColumns(allColumnIds); @@ -96,7 +94,6 @@ export class AgGridComponent { /** * On row clicked - * @param e */ public onRowClicked(e): void { // Reset error message @@ -109,7 +106,7 @@ export class AgGridComponent { * @param e */ public onCellEditingStopped(e): void { - if (!isNull(AgGridComponentConst.gridInputError)) { + if (null !== AgGridComponentConst.gridInputError) { this.errorMessage = AgGridComponentConst.gridInputError; e.api.ensureIndexVisible(e.rowIndex, 'middle'); e.api.ensureColumnVisible(e.colDef.field.toString()); @@ -131,7 +128,6 @@ export class AgGridComponent { /** * Resizes grid - * @param params */ public gridSizeChanged(params: any): void { if (!isUndefined(this.gridParamsApi)) { @@ -141,10 +137,9 @@ export class AgGridComponent { /** * Search Form - * @param params */ public searchFormSubmit(params: any): void { - if (params.target.value != '') { + if (params.target.value !== '') { this.resetSearchBtn = true; this.gridParamsApi.setQuickFilter(params.target.value); } else { @@ -155,7 +150,6 @@ export class AgGridComponent { /** * Reset search input - * @param e */ public resetSearch(e: any): void { e.originalTarget[0].value = ''; @@ -172,12 +166,10 @@ export class AgGridComponent { /** * Configures scrollToService - https://www.npmjs.com/package/@nicky-lenaers/ngx-scroll-to - * @param {string} targetFieldName - * @param {string} lastFieldName */ public scrollTo(targetFieldName: string = null, lastFieldName: string = null): void { - if (!isNull(targetFieldName)) { - if (!isNull(lastFieldName)) { + if (null !== targetFieldName) { + if (null !== lastFieldName) { // Scroll to last field first to ensure our target field name is on left-hand side this.params.api.ensureColumnVisible(lastFieldName); } @@ -187,7 +179,6 @@ export class AgGridComponent { /** * Cell renderer selector for individual cells with optional default parameters - * @param params */ public cellRendererSelector(params: any): {} { return AgGridComponentConst.cellRendererSelector(params); @@ -195,7 +186,6 @@ export class AgGridComponent { /** * Cell editor selector for individual cells - * @param params */ public cellEditorSelector(params: any): {} { return AgGridComponentConst.cellEditorSelector(params); @@ -213,50 +203,48 @@ export class AgGridComponent { const errorColumn: any[] = []; const errors: IGridValidationErrors[] = []; - for (let k = 0; k < primaryColumns.length; k++) { - if (!isUndefined(primaryColumns[k].colDef.cellEditorParams)) { - if (!isUndefined(primaryColumns[k].colDef.cellEditorParams.mandatory) && primaryColumns[k].colDef.cellEditorParams.mandatory == true) { - errorColumn.push(primaryColumns[k].colDef.field); + primaryColumns.forEach((value) => { + if (!isUndefined(value.colDef.cellEditorParams)) { + if (!isUndefined(value.colDef.cellEditorParams.mandatory) && value.colDef.cellEditorParams.mandatory === true) { + errorColumn.push(value.colDef.field); } } - } + }); - for (let m = 0; m < errorColumn.length; m++) { - this.params.api.forEachNode(function(rowNode, index) { - if (isNull(rowNode.data[errorColumn[m]]) || isUndefined(rowNode.data[errorColumn[m]])) { + errorColumn.forEach((value, i) => { + this.params.api.forEachNode((rowNode, index) => { + if (null === rowNode.data[value] || isUndefined(rowNode.data[value])) { errors.push({ - column: errorColumn[m], + column: value, row: index }); } }); - } - + }); this.gridErrors = errors; - if (this.gridErrors.length != 0) { - if (oldErrors.length != this.gridErrors.length) { + if (this.gridErrors.length !== 0) { + if (oldErrors.length !== this.gridErrors.length) { this.params.api.ensureIndexVisible(this.gridErrors[0].row, 'middle'); this.params.api.ensureColumnVisible(this.gridErrors[0].column); } } - return this.gridErrors.length == 0; + return this.gridErrors.length === 0; } /** * Jumps to error - * @param direction */ public jumpToError(direction: string): void { const errorLength: number = this.gridErrors.length - 1; // If any errors if (errorLength >= 0) { // if errorIndex is smaller or same as list of all errors - if (errorLength == 0) { + if (errorLength === 0) { this.errorIndex = 0; } else { - if (direction == 'next') { + if (direction === 'next') { this.errorIndex = this.errorIndex < errorLength ? this.errorIndex + 1 : 0; } else { this.errorIndex = this.errorIndex <= 0 ? errorLength : this.errorIndex - 1; @@ -272,10 +260,6 @@ export class AgGridComponent { /** * Shows input error - * @param {number} positionIndex - * @param {string} field - * @param {string} oldValue - * @param {string} type */ public showInputError(positionIndex: number, field: string, oldValue: string, type: string): void { this.resetValueByError = true; @@ -303,20 +287,19 @@ export class AgGridComponent { /** * Add row to grid and returns position index - * @param item */ public addRow(item: {}): number { this.initNextAddedItemId(); const rowModel = this.gridParamsApi.rowModel; // Note: default is last row let addIndex: number = rowModel.rowsToDisplay.length + 1; - for (let i = 0; i < rowModel.rowsToDisplay.length; i++) { - if (rowModel.rowsToDisplay[i].selected == true) { + rowModel.rowsToDisplay.forEach((row, i) => { + if (row.selected === true) { // Note: Add index is the row after selected row addIndex = i + 1; - break; + return; } - } + }); this.gridParamsApi.updateRowData({ add: [item], addIndex @@ -351,7 +334,6 @@ export class AgGridComponent { /** * Returns dummy id for added entry - * @returns {number} */ public getNextAddedItemId(): number { this.initNextAddedItemId(); @@ -362,7 +344,6 @@ export class AgGridComponent { /** * column resize event - * @param event */ public onColumnResized(event): void { if (event.finished !== false) { @@ -383,7 +364,6 @@ export class AgGridComponent { /** * Renders colored dot - * @param params */ public dotRenderer(params): string { return ''; @@ -391,31 +371,27 @@ export class AgGridComponent { /** * Renders email address - * @param params */ public emailRenderer(params): string { - return !isNull(params.value) ? '' + params.value + '' : ''; + return null !== params.value ? '' + params.value + '' : ''; } /** * Renders phone number - * @param params */ public phoneRenderer(params): string { - return !isNull(params.value) ? '' + params.value + '' : ''; + return null !== params.value ? '' + params.value + '' : ''; } /** * Renders phone number - * @param params */ public urlRenderer(params): string { - return !isNull(params.value) ? '' + params.value + '' : ''; + return null !== params.value ? '' + params.value + '' : ''; } /** * option renderer - * @param params */ public optionRenderer(params): string { return params.data.is_option_meeting ? 'Ja' : ''; @@ -423,7 +399,6 @@ export class AgGridComponent { /** * address renderer - * @param params */ public addressRenderer(params): string { let address = ''; @@ -443,20 +418,18 @@ export class AgGridComponent { /** * participants renderer - * @param params */ public participantsRenderer(params): string { let participantNames = ''; - for (let i = 0; i < params.data.participants.length; i++) { - participantNames += params.data.that.appService.getConfig().vc_user_by_id[params.data.participants[i].participant_user_id].firstname + - ' ' + params.data.that.appService.getConfig().vc_user_by_id[params.data.participants[i].participant_user_id].lastname + '
'; - } + params.data.participants.forEach((value) => { + participantNames += params.data.that.appService.getConfig().vc_user_by_id[value.participant_user_id].firstname + + ' ' + params.data.that.appService.getConfig().vc_user_by_id[value.participant_user_id].lastname + '
'; + }); return participantNames; } /** * Time renderer - * @param params */ public timeRenderer(params): string { return Utils.getDateTimeToDisplay(params.value, false, true); @@ -464,7 +437,6 @@ export class AgGridComponent { /** * Date renderer - * @param params */ public dateRenderer(params): string { return Utils.getDateTimeToDisplay(params.value); @@ -472,7 +444,6 @@ export class AgGridComponent { /** * Datetime renderer - * @param params */ public dateTimeRenderer(params): string { return Utils.getDateTimeToDisplay(params.value, true, true); @@ -480,9 +451,6 @@ export class AgGridComponent { /** * Date comparator - * @param date1 - * @param date2 - * @param callbackCheck */ public dateComparator(date1, date2, callbackCheck: boolean = true) { if (date1 === null && date2 === null) { @@ -496,6 +464,6 @@ export class AgGridComponent { } const stamp1: number = Utils.getParsedDate(date1); const stamp2: number = Utils.getParsedDate(date2); - return stamp1 < stamp2 ? 1 : stamp1 == stamp2 ? 0 : -1; + return stamp1 < stamp2 ? 1 : stamp1 === stamp2 ? 0 : -1; } } diff --git a/httpdocs/plp-angular/src/app/components/message/message.component.ts b/httpdocs/plp-angular/src/app/components/message/message.component.ts index 9803416..9803b22 100644 --- a/httpdocs/plp-angular/src/app/components/message/message.component.ts +++ b/httpdocs/plp-angular/src/app/components/message/message.component.ts @@ -1,7 +1,6 @@ import {Component, OnDestroy, OnInit} from '@angular/core'; import {MessageService} from '../../services/message.service'; import {Subscription} from 'rxjs'; -import {isNull} from 'util'; @Component({ selector: 'app-message', @@ -76,7 +75,7 @@ export class MessageComponent implements OnInit, OnDestroy { this.showClientError = false; this.message = errorMsg; // Set optional info (if exists) - this.optionalInfo = !isNull(optionalInfo) ? optionalInfo : null; + this.optionalInfo = null !== optionalInfo ? optionalInfo : null; } /** diff --git a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-checkbox/grid-checkbox-editor/grid-checkbox-editor.component.ts b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-checkbox/grid-checkbox-editor/grid-checkbox-editor.component.ts index 2a34f86..d90839b 100644 --- a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-checkbox/grid-checkbox-editor/grid-checkbox-editor.component.ts +++ b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-checkbox/grid-checkbox-editor/grid-checkbox-editor.component.ts @@ -1,7 +1,6 @@ import {Component} from '@angular/core'; import {GridEditorComponent} from '../../grid-editor-component'; import {Utils} from '../../../utils/utils'; -import {isNull} from 'util'; @Component({ selector: 'app-grid-checkbox-editor', @@ -19,7 +18,7 @@ export class GridCheckboxEditorComponent extends GridEditorComponent { super.agInit(params); // Set true to false, because of single click - this.value = isNull(this.value) ? true : !this.value; + this.value = null === this.value ? true : !this.value; if (!Utils.isBoolean(this.value)) { throw new Error('checkbox requires boolean value'); } diff --git a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-checkbox/grid-checkbox-renderer/grid-checkbox-renderer.component.ts b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-checkbox/grid-checkbox-renderer/grid-checkbox-renderer.component.ts index 340243f..14973ca 100644 --- a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-checkbox/grid-checkbox-renderer/grid-checkbox-renderer.component.ts +++ b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-checkbox/grid-checkbox-renderer/grid-checkbox-renderer.component.ts @@ -1,7 +1,6 @@ import {Component} from '@angular/core'; import {GridRendererComponent} from '../../grid-renderer-component'; import {Utils} from '../../../utils/utils'; -import {isNull} from 'util'; @Component({ selector: 'app-grid-checkbox-renderer', @@ -16,7 +15,7 @@ export class GridCheckboxRendererComponent extends GridRendererComponent { */ agInit(params: any): void { super.agInit(params); - this.value = isNull(this.value) ? false : this.value; + this.value = null === this.value ? false : this.value; if (!Utils.isBoolean(this.value)) { throw new Error('checkbox requires boolean value'); } diff --git a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-date/grid-date-renderer/grid-date-renderer.component.ts b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-date/grid-date-renderer/grid-date-renderer.component.ts index b6f63b9..9c43b33 100644 --- a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-date/grid-date-renderer/grid-date-renderer.component.ts +++ b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-date/grid-date-renderer/grid-date-renderer.component.ts @@ -1,5 +1,5 @@ import {Component} from '@angular/core'; -import {isNull, isUndefined} from 'util'; +import {isUndefined} from 'util'; import {GridRendererComponent} from '../../grid-renderer-component'; @Component({ @@ -19,7 +19,7 @@ export class GridDateRendererComponent extends GridRendererComponent { agInit(params: any): void { super.agInit(params); let tempValue: string[] = []; - if (isNull(this.value) || isUndefined(this.value)) { + if (null === this.value || isUndefined(this.value)) { this.displayedValue = ''; } else { tempValue = this.value.split('-'); diff --git a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-input/grid-input-editor/grid-input-editor.component.ts b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-input/grid-input-editor/grid-input-editor.component.ts index 819a3b1..651a6cf 100644 --- a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-input/grid-input-editor/grid-input-editor.component.ts +++ b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-input/grid-input-editor/grid-input-editor.component.ts @@ -1,7 +1,6 @@ import {Component} from '@angular/core'; import {GridEditorComponent} from '../../grid-editor-component'; import {AgGridComponentConst} from '../../../components/ag-grid-component-const'; -import {isNull} from 'util'; import {Utils} from '../../../utils/utils'; @Component({ @@ -18,9 +17,9 @@ export class GridInputEditorComponent extends GridEditorComponent { agInit(params: any): void { super.agInit(params); - if (this.cellParams != undefined && this.cellParams.type == AgGridComponentConst.CELL_VALUE_TYPE_FLOAT) { + if (this.cellParams !== undefined && this.cellParams.type === AgGridComponentConst.CELL_VALUE_TYPE_FLOAT) { // Replace "." with "," for display purpose - this.value = isNaN(this.value) || isNull(this.value) ? '' : parseFloat(this.value).toFixed(2).replace('.', ','); + this.value = isNaN(this.value) || null === this.value ? '' : parseFloat(this.value).toFixed(2).replace('.', ','); } } @@ -28,10 +27,10 @@ export class GridInputEditorComponent extends GridEditorComponent { * Returns value to cell renderer */ getValue(): any { - if (this.cellParams != undefined && this.cellParams.type == AgGridComponentConst.CELL_VALUE_TYPE_FLOAT) { + if (this.cellParams !== undefined && this.cellParams.type === AgGridComponentConst.CELL_VALUE_TYPE_FLOAT) { // Replace "." with "," for display purpose and cast back to number this.value = this.value.replace(',', '.'); - this.value = isNaN(this.value) || isNull(this.value) ? '' : Number(parseFloat(this.value).toFixed(2)); + this.value = isNaN(this.value) || null === this.value ? '' : Number(parseFloat(this.value).toFixed(2)); } return this.value; } @@ -41,7 +40,7 @@ export class GridInputEditorComponent extends GridEditorComponent { * @returns {boolean} */ isCancelAfterEnd(): boolean { - if (this.cellParams.mandatory && (isNull(this.value) || this.value.toString().trim() == '')) { + if (this.cellParams.mandatory && (null === this.value || this.value.toString().trim() === '')) { // Null value or empty string AgGridComponentConst.setGridInputError(this.GRID_ERROR_EMPTY); return true; @@ -62,10 +61,10 @@ export class GridInputEditorComponent extends GridEditorComponent { if (this.cellParams.type == AgGridComponentConst.CELL_VALUE_TYPE_INT || this.cellParams.type == AgGridComponentConst.CELL_VALUE_TYPE_FLOAT) { const numericVal: number = Number(String(this.value).replace(',', '.')); - if (!isNull(this.cellParams.min) && numericVal < Number(this.cellParams.min)) { + if (null !== this.cellParams.min && numericVal < Number(this.cellParams.min)) { // Check on alternative value - if (!isNull(this.cellParams.altVal)) { - if (numericVal == this.cellParams.altVal) { + if (null !== this.cellParams.altVal) { + if (numericVal === this.cellParams.altVal) { // Alternative value (to min and max) -> no error return false; } else { @@ -79,10 +78,10 @@ export class GridInputEditorComponent extends GridEditorComponent { return true; } } - if (!isNull(this.cellParams.max) && numericVal > Number(this.cellParams.max)) { + if (null !== this.cellParams.max && numericVal > Number(this.cellParams.max)) { // Check on alternative value - if (!isNull(this.cellParams.altVal)) { - if (numericVal == this.cellParams.altVal) { + if (null !== this.cellParams.altVal) { + if (numericVal === this.cellParams.altVal) { // Alternative value (to min and max) -> no error return false; } else { diff --git a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-input/grid-input-renderer/grid-input-renderer.component.ts b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-input/grid-input-renderer/grid-input-renderer.component.ts index 7e37dfe..3275288 100644 --- a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-input/grid-input-renderer/grid-input-renderer.component.ts +++ b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-input/grid-input-renderer/grid-input-renderer.component.ts @@ -1,7 +1,6 @@ import {Component} from '@angular/core'; import {GridRendererComponent} from '../../grid-renderer-component'; import {AgGridComponentConst} from '../../../components/ag-grid-component-const'; -import {isNull} from 'util'; @Component({ selector: 'app-grid-input-renderer', @@ -16,13 +15,13 @@ export class GridInputRendererComponent extends GridRendererComponent { */ agInit(params: any): void { super.agInit(params); - if (this.cellParams != undefined) { + if (this.cellParams !== undefined) { // Replace "." with "," for display purpose - if (this.cellParams.type == AgGridComponentConst.CELL_VALUE_TYPE_FLOAT) { - this.value = isNaN(this.value) || isNull(this.value) ? '' : parseFloat(parseFloat(this.value).toFixed(2)).toLocaleString('de-DE'); + if (this.cellParams.type === AgGridComponentConst.CELL_VALUE_TYPE_FLOAT) { + this.value = isNaN(this.value) || null === this.value ? '' : parseFloat(parseFloat(this.value).toFixed(2)).toLocaleString('de-DE'); } - if (this.cellParams.type == AgGridComponentConst.CELL_VALUE_TYPE_INT) { - this.value = isNaN(this.value) || isNull(this.value) ? '' : parseInt(parseInt(this.value).toFixed(2)).toLocaleString('de-DE'); + if (this.cellParams.type === AgGridComponentConst.CELL_VALUE_TYPE_INT) { + this.value = isNaN(this.value) || null === this.value ? '' : parseInt(parseInt(this.value).toFixed(2)).toLocaleString('de-DE'); } } } diff --git a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-editor/grid-select-editor.component.ts b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-editor/grid-select-editor.component.ts index af790ab..38bfb55 100644 --- a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-editor/grid-select-editor.component.ts +++ b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-editor/grid-select-editor.component.ts @@ -1,9 +1,9 @@ import {Component} from '@angular/core'; import {IGridSelectItem} from '../grid-select-item'; -import {isNull, isUndefined} from 'util'; +import {isUndefined} from 'util'; import {GridEditorComponent} from '../../grid-editor-component'; import {GridSelectFactory} from '../grid-select-factory'; -import {IGridCellEditorParams} from "../../grid-cell-editor-params"; +import {IGridCellEditorParams} from '../../grid-cell-editor-params'; @Component({ selector: 'app-grid-select-editor', @@ -22,7 +22,6 @@ export class GridSelectEditorComponent extends GridEditorComponent { /** * Initialize select editor (called after double-click) - * @param params */ agInit(params: any): void { super.agInit(params); @@ -32,17 +31,16 @@ export class GridSelectEditorComponent extends GridEditorComponent { this.itemKey = cellEditorParams.itemKey; this.itemValueKeys = cellEditorParams.itemValueKeys; + const relatedValue: string | null = cellEditorParams.relatesOnDgField; - if (!isNull(cellEditorParams.relatesOnDgField)) { - // Get values by related dg field - const relatedValue: string = cellEditorParams.relatesOnDgField; - const itemRange: any[] = params.node.data.hasOwnProperty(relatedValue) && !isNull(params.node.data[relatedValue]) ? + if (null !== relatedValue) { + const itemRange: any[] = (params.node.data.hasOwnProperty(relatedValue) && null !== params.node.data[relatedValue]) ? cellEditorParams.values[params.node.data[relatedValue]] : null; - if (!isNull(itemRange) && !isUndefined(itemRange)) { - for (let i = 0; i < itemRange.length; i++) { - this.values.push(GridSelectFactory.getGridSelectItem(itemRange[i], this.itemKey, this.itemValueKeys)); - } + if (null !== itemRange && !isUndefined(itemRange)) { + itemRange.forEach(item => { + this.values.push(GridSelectFactory.getGridSelectItem(item, this.itemKey, this.itemValueKeys)); + }); } } else if (cellEditorParams.exclusive === true) { @@ -71,7 +69,7 @@ export class GridSelectEditorComponent extends GridEditorComponent { * Returns value to cell renderer */ getValue(): any { - return isNull(this.newValue) ? null : this.newValue.key; + return null === this.newValue ?? this.newValue.key; } /** diff --git a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-factory.ts b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-factory.ts index ea8e4ba..bb160e9 100644 --- a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-factory.ts +++ b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-factory.ts @@ -1,5 +1,4 @@ import {Const} from '../../utils/const'; -import {isNull} from 'util'; import {IGridSelectItem} from './grid-select-item'; @@ -26,7 +25,7 @@ export class GridSelectFactory { headerClass: string = null, pinned: boolean = false, cellClass: any = null, exclusive: boolean = false, exclusiveCompareData: any = null, exclusiveCompareDataKey: string = null): {} { - if (!isNull(relatesOnDgField) && exclusive) { + if (null !== relatesOnDgField && exclusive) { // NOTE: This is not allowed for now, maybe needed in future throw new Error('Select can be either relative or exclusive'); } @@ -37,11 +36,11 @@ export class GridSelectFactory { headerClass, pinned, editable, - cellClass: isNull(cellClass) ? (editable ? '' : Const.CSS_NO_EDIT) : cellClass, + cellClass: null === cellClass ?? (editable ? '' : Const.CSS_NO_EDIT), cellRenderer: 'gridSelectRenderer', cellEditor: 'gridSelectEditor', cellEditorParams: { - values: isNull(relatesOnDgField) && !exclusive ? GridSelectFactory.getGridSelectItems(values, itemKey, itemValueKeys, mandatory) : values, + values: null === relatesOnDgField && !exclusive ? GridSelectFactory.getGridSelectItems(values, itemKey, itemValueKeys, mandatory) : values, itemKey, itemValueKeys, mandatory, @@ -52,7 +51,7 @@ export class GridSelectFactory { } }; if (mandatory) { - res['cellClassRules'] = { + res.cellClassRules = { error(params) { return params.value == null; } @@ -87,8 +86,8 @@ export class GridSelectFactory { headerName, field, editable, values, itemKey, itemValueKeys, mandatory, relatesOnDgField, headerClass, pinned, cellClass, exclusive, exclusiveCompareData, exclusiveCompareDataKey ); - delete res['cellRenderer']; - delete res['cellEditor']; + delete res.cellRenderer; + delete res.cellEditor; return res; } @@ -107,18 +106,14 @@ export class GridSelectFactory { res.push(GridSelectFactory.getGridSelectItem({key: null, value: '-'}, 'key', valueKeys, true)); } - for (let i = 0; i < objArray.length; i++) { - res.push(GridSelectFactory.getGridSelectItem(objArray[i], key, valueKeys)); - } + objArray.forEach(item => { + res.push(GridSelectFactory.getGridSelectItem(item, key, valueKeys)); + }); return res; } /** * Returns single grid select item - * @param obj - * @param key - * @param valueKeys - * @param isNullItem */ static getGridSelectItem(obj: any, key: string, valueKeys: string[], isNullItem: boolean = false): IGridSelectItem { if (!obj.hasOwnProperty(key)) { @@ -127,9 +122,9 @@ export class GridSelectFactory { let gridItem: {} = {}; if (!isNullItem) { - for (let i = 0; i < valueKeys.length; i++) { - if (!obj.hasOwnProperty(key) || !obj.hasOwnProperty(valueKeys[i])) { - throw new Error('GridFactory: Value not found: ' + valueKeys[i]); + for (const item of valueKeys) { + if (!obj.hasOwnProperty(key) || !obj.hasOwnProperty(item)) { + throw new Error('GridFactory: Value not found: ' + item); } } gridItem = { diff --git a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-renderer/grid-select-renderer.component.ts b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-renderer/grid-select-renderer.component.ts index 64b2c35..4500238 100644 --- a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-renderer/grid-select-renderer.component.ts +++ b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-select/grid-select-renderer/grid-select-renderer.component.ts @@ -1,6 +1,5 @@ import {Component} from '@angular/core'; import {IGridSelectItem} from '../grid-select-item'; -import {isNull} from 'util'; import {GridRendererComponent} from '../../grid-renderer-component'; import {GridSelectFactory} from '../grid-select-factory'; @@ -27,7 +26,7 @@ export class GridSelectRendererComponent extends GridRendererComponent { */ agInit(params: any): void { super.agInit(params); - if (isNull(params.colDef.cellEditorParams.relatesOnDgField)) { + if (null === params.colDef.cellEditorParams.relatesOnDgField) { // Static item range (default behaviour) this.setStaticValue(params); } else { @@ -41,12 +40,12 @@ export class GridSelectRendererComponent extends GridRendererComponent { * @param params */ private setStaticValue(params: any): void { - if (this.itemRange == null || this.itemRange == undefined) { + if (this.itemRange === null || undefined === this.itemRange) { // Item range is the same for all rows this.itemRange = params.colDef.cellEditorParams.values as IGridSelectItem[]; - if (!isNull(params.value)) { + if (null !== params.value) { for (let i = 0; i < this.itemRange.length; i++) { - if (this.itemRange[i].key == params.value) { + if (this.itemRange[i].key === params.value) { this.value = this.itemRange[i].value; break; } @@ -68,13 +67,13 @@ export class GridSelectRendererComponent extends GridRendererComponent { const itemValueKeys: string[] = params.colDef.cellEditorParams.itemValueKeys; // Get item range by related value - this.itemRange = params.data.hasOwnProperty(relatedValue) && !isNull(params.data[relatedValue]) ? + this.itemRange = params.data.hasOwnProperty(relatedValue) && null !== params.data[relatedValue]) ? params.colDef.cellEditorParams.values[params.data[relatedValue]] : null; - if (!isNull(params.value) && !isNull(this.itemRange)) { + if (null !== params.value && null !== this.itemRange)) { // let value: string = GridFactory.getGridSelectItemValue() for (let i = 0; i < this.itemRange.length; i++) { - if (this.itemRange[i][itemKey] == params.value) { + if (this.itemRange[i][itemKey] === params.value) { this.value = GridSelectFactory.getGridSelectItemValue(this.itemRange[i], itemValueKeys); break; } diff --git a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-text/grid-text-renderer/grid-text-renderer.component.ts b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-text/grid-text-renderer/grid-text-renderer.component.ts index c8ce7dd..f2b331e 100644 --- a/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-text/grid-text-renderer/grid-text-renderer.component.ts +++ b/httpdocs/plp-angular/src/app/grid-cellrenderer/grid-text/grid-text-renderer/grid-text-renderer.component.ts @@ -1,7 +1,6 @@ import {Component} from '@angular/core'; import {GridRendererComponent} from '../../grid-renderer-component'; import {AgGridComponentConst} from '../../../components/ag-grid-component-const'; -import {isNull} from 'util'; @Component({ selector: 'app-grid-text-renderer', @@ -16,13 +15,13 @@ export class GridTextRendererComponent extends GridRendererComponent { */ agInit(params: any): void { super.agInit(params); - if (this.cellParams != undefined) { + if (undefined !== this.cellParams) { // Replace "." with "," for display purpose - if (this.cellParams.type == AgGridComponentConst.CELL_VALUE_TYPE_FLOAT) { - this.value = isNaN(this.value) || isNull(this.value) ? '' : this.value = parseFloat(parseFloat(this.value).toFixed(2)).toLocaleString('de-DE'); + if (this.cellParams.type === AgGridComponentConst.CELL_VALUE_TYPE_FLOAT) { + this.value = isNaN(this.value) || null === this.value) ? '' : this.value = parseFloat(parseFloat(this.value).toFixed(2)).toLocaleString('de-DE'); } if (this.cellParams.type == AgGridComponentConst.CELL_VALUE_TYPE_INT) { - this.value = isNaN(this.value) || isNull(this.value) ? '' : this.value = parseInt(parseInt(this.value).toFixed(2)).toLocaleString('de-DE'); + this.value = isNaN(this.value) || null === this.value) ? '' : this.value = parseInt(parseInt(this.value).toFixed(2)).toLocaleString('de-DE'); } } } diff --git a/httpdocs/plp-angular/src/app/interceptor/route-interceptor.ts b/httpdocs/plp-angular/src/app/interceptor/route-interceptor.ts index 1b3ec89..01697e8 100644 --- a/httpdocs/plp-angular/src/app/interceptor/route-interceptor.ts +++ b/httpdocs/plp-angular/src/app/interceptor/route-interceptor.ts @@ -1,11 +1,11 @@ import {Injectable} from '@angular/core'; -import {CanActivate, Router} from '@angular/router'; +import { Router } from '@angular/router'; import {AppService} from '../services/app.service'; import {Subscription} from 'rxjs/index'; import {ILoginState} from '../model/virtual/login-state'; @Injectable() -export class RouteInterceptor implements CanActivate { +export class RouteInterceptor { private loginSub: Subscription; private loginState: ILoginState; diff --git a/httpdocs/plp-angular/src/app/services/app.service.ts b/httpdocs/plp-angular/src/app/services/app.service.ts index e1380e0..892005f 100644 --- a/httpdocs/plp-angular/src/app/services/app.service.ts +++ b/httpdocs/plp-angular/src/app/services/app.service.ts @@ -10,9 +10,6 @@ import {IApiResponse} from '../model/virtual/api-response'; import {Utils} from '../utils/utils'; import {CustomerService} from './customer.service'; import {MeetingService} from './meeting.service'; -import {OperatorService} from './operator.service'; -import {ProductionService} from "./production.service"; -import {ServiceService} from "./service.service"; @Injectable() export class AppService { @@ -29,9 +26,6 @@ export class AppService { private router: Router, private customerService: CustomerService, private meetingService: MeetingService, - private operatorService: OperatorService, - private productionService: ProductionService, - private serviceService: ServiceService ) { this.loginState = new BehaviorSubject(cacheService.getItem('loginState') as ILoginState); this.user = new BehaviorSubject(cacheService.getItem('user') as IUser); @@ -124,9 +118,6 @@ export class AppService { this.user.next(null); this.customerService.resetCustomerServiceData(); this.meetingService.resetMeetingServiceData(); - this.operatorService.resetOperatorServiceData(); - this.productionService.resetProductionServiceData(); - this.serviceService.resetServiceServiceData(); this.router.navigate(['./login']); } ); diff --git a/httpdocs/plp-angular/src/app/services/customer.service.ts b/httpdocs/plp-angular/src/app/services/customer.service.ts index 75fd6a6..62e7b00 100644 --- a/httpdocs/plp-angular/src/app/services/customer.service.ts +++ b/httpdocs/plp-angular/src/app/services/customer.service.ts @@ -7,7 +7,6 @@ import {ICustomer} from '../model/entities/customer'; import {IApiResponse} from '../model/virtual/api-response'; import {ICustomerContact} from '../model/entities/customer-contact'; import {IAppServiceData} from '../model/virtual/app-service-data'; -import {isNull} from 'util'; import {ServiceHelper} from '../utils/service-helper'; import {ICustomerNote} from '../model/entities/customer-note'; import {ICustomerData} from '../model/virtual/customer-data'; @@ -41,16 +40,16 @@ export class CustomerService { * @param {IAppServiceData} serviceData */ public handleServiceData(serviceData: IAppServiceData = null): void { - if (!isNull(serviceData)) { + if (!null === serviceData)) { let bSetNewData = false; let updatedCustomers: ICustomer[] = this.customers.getValue(); let updatedCustomerContacts: ICustomerContact[] = this.customerContacts.getValue(); - if (!isNull(serviceData.customers)) { + if (!null === serviceData.customers)) { // Update service data updatedCustomers = ServiceHelper.updateServiceEntries(serviceData.customers, this.customers.getValue()) as ICustomer[]; bSetNewData = true; } - if (!isNull(serviceData.customerContacts)) { + if (!null === serviceData.customerContacts)) { // Update service data updatedCustomerContacts = ServiceHelper.updateServiceEntries(serviceData.customerContacts, this.customerContacts.getValue()) as ICustomerContact[]; bSetNewData = true; diff --git a/httpdocs/plp-angular/src/app/services/http.service.ts b/httpdocs/plp-angular/src/app/services/http.service.ts index 106b4a7..88aae5b 100644 --- a/httpdocs/plp-angular/src/app/services/http.service.ts +++ b/httpdocs/plp-angular/src/app/services/http.service.ts @@ -3,7 +3,7 @@ import {HttpClient, HttpErrorResponse} from '@angular/common/http'; import {BehaviorSubject, Observable} from 'rxjs'; import {environment} from '../../environments/environment'; import {finalize, tap} from 'rxjs/operators'; -import {isNull, isUndefined} from 'util'; +import {isUndefined} from 'util'; import {MessageService} from './message.service'; import {IApiResponse} from '../model/virtual/api-response'; import {CacheService} from './cache.service'; @@ -46,17 +46,17 @@ export class HttpService { */ private checkMessages(data: IApiResponse): void { // Show optional success message - if (!isUndefined(data.success_code) && !isNull(data.success_code) && data.success_code != 0) { + if (!isUndefined(data.success_code) && null !== data.success_code && data.success_code !== 0) { this.messageService.setSuccess(data.success_code, data.success_msg); } // Show optional info message - if (!isUndefined(data.info_code) && !isNull(data.info_code) && data.info_code != 0) { + if (!isUndefined(data.info_code) && null !== data.info_code && data.info_code !== 0) { this.messageService.setInfoCode(data.info_code, data.info_msg); } // Show optional error message - if (!isUndefined(data.error_code) && !isNull(data.error_code) && data.error_code != 0) { + if (!isUndefined(data.error_code) && null !== data.error_code && data.error_code !== 0) { this.messageService.setError(data.error_code, data.error_msg); } } diff --git a/httpdocs/plp-angular/src/app/services/meeting.service.ts b/httpdocs/plp-angular/src/app/services/meeting.service.ts index 06e9f39..e071378 100644 --- a/httpdocs/plp-angular/src/app/services/meeting.service.ts +++ b/httpdocs/plp-angular/src/app/services/meeting.service.ts @@ -5,7 +5,6 @@ import {Router} from '@angular/router'; import {HttpService} from './http.service'; import {IApiResponse} from '../model/virtual/api-response'; import {IAppServiceData} from '../model/virtual/app-service-data'; -import {isNull} from 'util'; import {saveAs} from 'file-saver'; import {ServiceHelper} from '../utils/service-helper'; import {ICustomerNote} from '../model/entities/customer-note'; @@ -62,34 +61,34 @@ export class MeetingService { * @param {IAppServiceData} serviceData */ public handleServiceData(serviceData: IAppServiceData = null): void { - if (!isNull(serviceData)) { + if (!null === serviceData)) { let bSetNewData = false; let updatedCustomerMeetings: ICustomerMeeting[] = this.customerMeetings.getValue(); let updatedInternalMeetings: IInternalMeeting[] = this.internalMeetings.getValue(); let updatedOperatorMeetings: IOperatorMeeting[] = this.operatorMeetings.getValue(); let updatedProductionMeetings: IProductionMeeting[] = this.productionMeetings.getValue(); let updatedServiceMeetings: IServiceMeeting[] = this.serviceMeetings.getValue(); - if (!isNull(serviceData.customerMeetings)) { + if (!null === serviceData.customerMeetings)) { // Update service data updatedCustomerMeetings = ServiceHelper.updateServiceEntries(serviceData.customerMeetings, this.customerMeetings.getValue()) as ICustomerMeeting[]; bSetNewData = true; } - if (!isNull(serviceData.internalMeetings)) { + if (!null === serviceData.internalMeetings)) { // Update service data updatedInternalMeetings = ServiceHelper.updateServiceEntries(serviceData.internalMeetings, this.internalMeetings.getValue()) as IInternalMeeting[]; bSetNewData = true; } - if (!isNull(serviceData.operatorMeetings)) { + if (!null === serviceData.operatorMeetings)) { // Update service data updatedOperatorMeetings = ServiceHelper.updateServiceEntries(serviceData.operatorMeetings, this.operatorMeetings.getValue()) as IOperatorMeeting[]; bSetNewData = true; } - if (!isNull(serviceData.productionMeetings)) { + if (!null === serviceData.productionMeetings)) { // Update service data updatedProductionMeetings = ServiceHelper.updateServiceEntries(serviceData.productionMeetings, this.productionMeetings.getValue()) as IProductionMeeting[]; bSetNewData = true; } - if (!isNull(serviceData.operatorMeetings)) { + if (!null === serviceData.operatorMeetings)) { // Update service data updatedServiceMeetings = ServiceHelper.updateServiceEntries(serviceData.serviceMeetings, this.serviceMeetings.getValue()) as IServiceMeeting[]; bSetNewData = true; diff --git a/httpdocs/plp-angular/src/app/services/operator.service.ts b/httpdocs/plp-angular/src/app/services/operator.service.ts deleted file mode 100644 index fcfac94..0000000 --- a/httpdocs/plp-angular/src/app/services/operator.service.ts +++ /dev/null @@ -1,239 +0,0 @@ -import {Injectable} from '@angular/core'; -import {BehaviorSubject, Observable, Subscription} from 'rxjs'; -import {CacheService} from './cache.service'; -import {Router} from '@angular/router'; -import {HttpService} from './http.service'; -import {IOperator} from '../model/entities/operator'; -import {IApiResponse} from '../model/virtual/api-response'; -import {IOperatorContact} from '../model/entities/operator-contact'; -import {IAppServiceData} from '../model/virtual/app-service-data'; -import {isNull} from 'util'; -import {ServiceHelper} from '../utils/service-helper'; -import {IOperatorNote} from '../model/entities/operator-note'; -import {IOperatorData} from '../model/virtual/operator-data'; -import {saveAs} from 'file-saver'; - -@Injectable() -export class OperatorService { - - private operators: BehaviorSubject; - private dataOperators$: Observable; - private operatorContacts: BehaviorSubject; - private dataOperatorContacts$: Observable; - private serviceDataSub: Subscription; - - constructor(private httpService: HttpService, private cacheService: CacheService, private router: Router) { - this.operators = new BehaviorSubject(null); - this.dataOperators$ = this.operators.asObservable(); - this.operatorContacts = new BehaviorSubject(null); - this.dataOperatorContacts$ = this.operatorContacts.asObservable(); - - // Subscription for service data - this.serviceDataSub = this.httpService.getServiceData$().subscribe( - data => { - this.handleServiceData(data as IAppServiceData); - }, error => { - } - ); - } - - /** - * Handles service data updates - * @param {IAppServiceData} serviceData - */ - public handleServiceData(serviceData: IAppServiceData = null): void { - if (!isNull(serviceData)) { - let bSetNewData = false; - let updatedOperators: IOperator[] = this.operators.getValue(); - let updatedOperatorContacts: IOperatorContact[] = this.operatorContacts.getValue(); - if (!isNull(serviceData.operators)) { - // Update service data - updatedOperators = ServiceHelper.updateServiceEntries(serviceData.operators, this.operators.getValue()) as IOperator[]; - bSetNewData = true; - } - if (!isNull(serviceData.operatorContacts)) { - // Update service data - updatedOperatorContacts = ServiceHelper.updateServiceEntries(serviceData.operatorContacts, this.operatorContacts.getValue()) as IOperatorContact[]; - bSetNewData = true; - } - if (bSetNewData) { - this.setOperatorServiceData(updatedOperators, updatedOperatorContacts); - } - } - } - - /** - * Sets operator service and cache data - * @param operators - * @param operatorContacts - */ - private setOperatorServiceData(operators: IOperator[], operatorContacts: IOperatorContact[]) { - this.operators.next(operators); - this.operatorContacts.next(operatorContacts); - } - - /** - * Reset service data (on logout) - */ - public resetOperatorServiceData() { - this.operators.next(null); - this.operatorContacts.next(null); - } - - /** - * Returns observable of operators - * @returns {Observable} - */ - public getOperators$(): Observable { - return this.dataOperators$; - } - - /** - * Returns observable of operator contacts - * @returns {Observable} - */ - public getOperatorContacts$(): Observable { - return this.dataOperatorContacts$; - } - - /** - * Gets all operators - * @returns {Observable} - */ - public apiGetOperatorData(): void { - this.httpService.apiGet('get-operator-data').subscribe( - data => { - const res: IOperatorData = data.result_data as IOperatorData; - this.setOperatorServiceData(res.operators, res.operatorContacts); - }, - error => {} - ); - } - - /** - * Returns full operator - * @param {number} operatorId - * @returns {Observable} - */ - public apiGetOperatorFull(operatorId: number): Observable { - const formData = new FormData(); - formData.append('operatorId', JSON.stringify(operatorId)); - return this.httpService.apiPost('get-operator-full', formData); - } - - /** - * Create operator - * @param {IOperator} operator - * @returns {Observable} - */ - public apiCreateOperator(operator: IOperator): Observable { - const formData = new FormData(); - formData.append('operator', JSON.stringify(operator)); - return this.httpService.apiPost('create-operator', formData); - } - - /** - * Edit operator - * @param {IOperator} operator - * @returns {Observable} - */ - public apiEditOperator(operator: IOperator): Observable { - const formData = new FormData(); - formData.append('operator', JSON.stringify(operator)); - return this.httpService.apiPost('edit-operator', formData); - } - - /** - * Create operator contact - * @param operatorContact - */ - public apiCreateOperatorContact(operatorContact: IOperatorContact): Observable { - const formData = new FormData(); - formData.append('operatorContact', JSON.stringify(operatorContact)); - return this.httpService.apiPost('create-operator-contact', formData); - } - - /** - * Edit operator contact - * @param {IOperatorContact} operatorContact - * @returns {Observable} - */ - public apiEditOperatorContact(operatorContact: IOperatorContact): Observable { - const formData = new FormData(); - formData.append('operatorContact', JSON.stringify(operatorContact)); - return this.httpService.apiPost('edit-operator-contact', formData); - } - - /** - * Delete operator contact - * @param {number} operatorContactId - * @returns {Observable} - */ - public apiDeleteOperatorContact(operatorContactId: number): Observable { - const formData = new FormData(); - formData.append('operatorContactId', JSON.stringify(operatorContactId)); - return this.httpService.apiPost('delete-operator-contact', formData); - } - - /** - * Create operator note - * @param {IOperatorNote} operatorNote - * @returns {Observable} - */ - public apiCreateOperatorNote(operatorNote: IOperatorNote): Observable { - const formData = new FormData(); - formData.append('operatorNote', JSON.stringify(operatorNote)); - return this.httpService.apiPost('create-operator-note', formData); - } - - /** - * Edit operator note - * @param {IOperatorNote} operatorNote - * @returns {Observable} - */ - public apiEditOperatorNote(operatorNote: IOperatorNote): Observable { - const formData = new FormData(); - formData.append('operatorNote', JSON.stringify(operatorNote)); - return this.httpService.apiPost('edit-operator-note', formData); - } - - /** - * Delete operator note - * @param {number} operatorNoteId - * @returns {Observable} - */ - public apiDeleteOperatorNote(operatorNoteId: number): Observable { - const formData = new FormData(); - formData.append('operatorNoteId', JSON.stringify(operatorNoteId)); - return this.httpService.apiPost('delete-operator-note', formData); - } - - /** - * Edit operator meeting report - * @param operatorMeetingId - * @param operatorMeetingReport - */ - public apiEditOperatorMeetingReport(operatorMeetingId: number, operatorMeetingReport: string): Observable { - const formData = new FormData(); - formData.append('operatorMeetingId', JSON.stringify(operatorMeetingId)); - formData.append('operatorMeetingReport', JSON.stringify(operatorMeetingReport)); - return this.httpService.apiPost('edit-operator-meeting-report', formData); - } - - /** - * Returns meeting list as excel - * @param meetingList - * @param fileName - */ - public apiExportXmasPdf(meetingList: {}[], fileName: string): void { - const formData = new FormData(); - formData.append('meetingList', JSON.stringify(meetingList)); - this.httpService.apiFilePost('export-meeting-list', formData).subscribe( - data => { - saveAs(new Blob([data], {type: 'pdf'}), fileName + '.pdf'); - }, - error => { - } - ); - } -} diff --git a/httpdocs/plp-angular/src/app/services/production.service.ts b/httpdocs/plp-angular/src/app/services/production.service.ts deleted file mode 100644 index b340228..0000000 --- a/httpdocs/plp-angular/src/app/services/production.service.ts +++ /dev/null @@ -1,239 +0,0 @@ -import {Injectable} from '@angular/core'; -import {BehaviorSubject, Observable, Subscription} from 'rxjs'; -import {CacheService} from './cache.service'; -import {Router} from '@angular/router'; -import {HttpService} from './http.service'; -import {IApiResponse} from '../model/virtual/api-response'; -import {IAppServiceData} from '../model/virtual/app-service-data'; -import {isNull} from 'util'; -import {ServiceHelper} from '../utils/service-helper'; -import {saveAs} from 'file-saver'; -import {IProduction} from '../model/entities/production'; -import {IProductionContact} from '../model/entities/production-contact'; -import {IProductionData} from '../model/virtual/production-data'; -import {IProductionNote} from '../model/entities/production-note'; - -@Injectable() -export class ProductionService { - - private productions: BehaviorSubject; - private dataProductions$: Observable; - private productionContacts: BehaviorSubject; - private dataProductionContacts$: Observable; - private serviceDataSub: Subscription; - - constructor(private httpService: HttpService, private cacheService: CacheService, private router: Router) { - this.productions = new BehaviorSubject(null); - this.dataProductions$ = this.productions.asObservable(); - this.productionContacts = new BehaviorSubject(null); - this.dataProductionContacts$ = this.productionContacts.asObservable(); - - // Subscription for service data - this.serviceDataSub = this.httpService.getServiceData$().subscribe( - data => { - this.handleServiceData(data as IAppServiceData); - }, error => { - } - ); - } - - /** - * Handles service data updates - * @param {IAppServiceData} serviceData - */ - public handleServiceData(serviceData: IAppServiceData = null): void { - if (!isNull(serviceData)) { - let bSetNewData = false; - let updatedProductions: IProduction[] = this.productions.getValue(); - let updatedProductionContacts: IProductionContact[] = this.productionContacts.getValue(); - if (!isNull(serviceData.productions)) { - // Update service data - updatedProductions = ServiceHelper.updateServiceEntries(serviceData.productions, this.productions.getValue()) as IProduction[]; - bSetNewData = true; - } - if (!isNull(serviceData.productionContacts)) { - // Update service data - updatedProductionContacts = ServiceHelper.updateServiceEntries(serviceData.productionContacts, this.productionContacts.getValue()) as IProductionContact[]; - bSetNewData = true; - } - if (bSetNewData) { - this.setProductionServiceData(updatedProductions, updatedProductionContacts); - } - } - } - - /** - * Sets production service and cache data - * @param productions - * @param productionContacts - */ - private setProductionServiceData(productions: IProduction[], productionContacts: IProductionContact[]) { - this.productions.next(productions); - this.productionContacts.next(productionContacts); - } - - /** - * Reset service data (on logout) - */ - public resetProductionServiceData() { - this.productions.next(null); - this.productionContacts.next(null); - } - - /** - * Returns observable of productions - * @returns {Observable} - */ - public getProductions$(): Observable { - return this.dataProductions$; - } - - /** - * Returns observable of production contacts - * @returns {Observable} - */ - public getProductionContacts$(): Observable { - return this.dataProductionContacts$; - } - - /** - * Gets all productions - * @returns {Observable} - */ - public apiGetProductionData(): void { - this.httpService.apiGet('get-production-data').subscribe( - data => { - const res: IProductionData = data.result_data as IProductionData; - this.setProductionServiceData(res.productions, res.productionContacts); - }, - error => {} - ); - } - - /** - * Returns full production - * @param {number} productionId - * @returns {Observable} - */ - public apiGetProductionFull(productionId: number): Observable { - const formData = new FormData(); - formData.append('productionId', JSON.stringify(productionId)); - return this.httpService.apiPost('get-production-full', formData); - } - - /** - * Create production - * @param {IProduction} production - * @returns {Observable} - */ - public apiCreateProduction(production: IProduction): Observable { - const formData = new FormData(); - formData.append('production', JSON.stringify(production)); - return this.httpService.apiPost('create-production', formData); - } - - /** - * Edit production - * @param {IProduction} production - * @returns {Observable} - */ - public apiEditProduction(production: IProduction): Observable { - const formData = new FormData(); - formData.append('production', JSON.stringify(production)); - return this.httpService.apiPost('edit-production', formData); - } - - /** - * Create production contact - * @param productionContact - */ - public apiCreateProductionContact(productionContact: IProductionContact): Observable { - const formData = new FormData(); - formData.append('productionContact', JSON.stringify(productionContact)); - return this.httpService.apiPost('create-production-contact', formData); - } - - /** - * Edit production contact - * @param {IProductionContact} productionContact - * @returns {Observable} - */ - public apiEditProductionContact(productionContact: IProductionContact): Observable { - const formData = new FormData(); - formData.append('productionContact', JSON.stringify(productionContact)); - return this.httpService.apiPost('edit-production-contact', formData); - } - - /** - * Delete production contact - * @param {number} productionContactId - * @returns {Observable} - */ - public apiDeleteProductionContact(productionContactId: number): Observable { - const formData = new FormData(); - formData.append('productionContactId', JSON.stringify(productionContactId)); - return this.httpService.apiPost('delete-production-contact', formData); - } - - /** - * Create production note - * @param {IProductionNote} productionNote - * @returns {Observable} - */ - public apiCreateProductionNote(productionNote: IProductionNote): Observable { - const formData = new FormData(); - formData.append('productionNote', JSON.stringify(productionNote)); - return this.httpService.apiPost('create-production-note', formData); - } - - /** - * Edit production note - * @param {IProductionNote} productionNote - * @returns {Observable} - */ - public apiEditProductionNote(productionNote: IProductionNote): Observable { - const formData = new FormData(); - formData.append('productionNote', JSON.stringify(productionNote)); - return this.httpService.apiPost('edit-production-note', formData); - } - - /** - * Delete production note - * @param {number} productionNoteId - * @returns {Observable} - */ - public apiDeleteProductionNote(productionNoteId: number): Observable { - const formData = new FormData(); - formData.append('productionNoteId', JSON.stringify(productionNoteId)); - return this.httpService.apiPost('delete-production-note', formData); - } - - /** - * Edit production meeting report - * @param productionMeetingId - * @param productionMeetingReport - */ - public apiEditProductionMeetingReport(productionMeetingId: number, productionMeetingReport: string): Observable { - const formData = new FormData(); - formData.append('productionMeetingId', JSON.stringify(productionMeetingId)); - formData.append('productionMeetingReport', JSON.stringify(productionMeetingReport)); - return this.httpService.apiPost('edit-production-meeting-report', formData); - } - - /** - * Returns meeting list as excel - * @param meetingList - * @param fileName - */ - public apiExportXmasPdf(meetingList: {}[], fileName: string): void { - const formData = new FormData(); - formData.append('meetingList', JSON.stringify(meetingList)); - this.httpService.apiFilePost('export-meeting-list', formData).subscribe( - data => { - saveAs(new Blob([data], {type: 'pdf'}), fileName + '.pdf'); - }, - error => { - } - ); - } -} diff --git a/httpdocs/plp-angular/src/app/services/service.service.ts b/httpdocs/plp-angular/src/app/services/service.service.ts deleted file mode 100644 index 990ce68..0000000 --- a/httpdocs/plp-angular/src/app/services/service.service.ts +++ /dev/null @@ -1,239 +0,0 @@ -import {Injectable} from '@angular/core'; -import {BehaviorSubject, Observable, Subscription} from 'rxjs'; -import {CacheService} from './cache.service'; -import {Router} from '@angular/router'; -import {HttpService} from './http.service'; -import {IApiResponse} from '../model/virtual/api-response'; -import {IAppServiceData} from '../model/virtual/app-service-data'; -import {isNull} from 'util'; -import {ServiceHelper} from '../utils/service-helper'; -import {saveAs} from 'file-saver'; -import {IService} from '../model/entities/service'; -import {IServiceContact} from '../model/entities/service-contact'; -import {IServiceData} from '../model/virtual/service-data'; -import {IServiceNote} from '../model/entities/service-note'; - -@Injectable() -export class ServiceService { - - private services: BehaviorSubject; - private dataServices$: Observable; - private serviceContacts: BehaviorSubject; - private dataServiceContacts$: Observable; - private serviceDataSub: Subscription; - - constructor(private httpService: HttpService, private cacheService: CacheService, private router: Router) { - this.services = new BehaviorSubject(null); - this.dataServices$ = this.services.asObservable(); - this.serviceContacts = new BehaviorSubject(null); - this.dataServiceContacts$ = this.serviceContacts.asObservable(); - - // Subscription for service data - this.serviceDataSub = this.httpService.getServiceData$().subscribe( - data => { - this.handleServiceData(data as IAppServiceData); - }, error => { - } - ); - } - - /** - * Handles service data updates - * @param {IAppServiceData} serviceData - */ - public handleServiceData(serviceData: IAppServiceData = null): void { - if (!isNull(serviceData)) { - let bSetNewData = false; - let updatedServices: IService[] = this.services.getValue(); - let updatedServiceContacts: IServiceContact[] = this.serviceContacts.getValue(); - if (!isNull(serviceData.services)) { - // Update service data - updatedServices = ServiceHelper.updateServiceEntries(serviceData.services, this.services.getValue()) as IService[]; - bSetNewData = true; - } - if (!isNull(serviceData.serviceContacts)) { - // Update service data - updatedServiceContacts = ServiceHelper.updateServiceEntries(serviceData.serviceContacts, this.serviceContacts.getValue()) as IServiceContact[]; - bSetNewData = true; - } - if (bSetNewData) { - this.setServiceServiceData(updatedServices, updatedServiceContacts); - } - } - } - - /** - * Sets service service and cache data - * @param services - * @param serviceContacts - */ - private setServiceServiceData(services: IService[], serviceContacts: IServiceContact[]) { - this.services.next(services); - this.serviceContacts.next(serviceContacts); - } - - /** - * Reset service data (on logout) - */ - public resetServiceServiceData() { - this.services.next(null); - this.serviceContacts.next(null); - } - - /** - * Returns observable of services - * @returns {Observable} - */ - public getServices$(): Observable { - return this.dataServices$; - } - - /** - * Returns observable of service contacts - * @returns {Observable} - */ - public getServiceContacts$(): Observable { - return this.dataServiceContacts$; - } - - /** - * Gets all services - * @returns {Observable} - */ - public apiGetServiceData(): void { - this.httpService.apiGet('get-service-data').subscribe( - data => { - const res: IServiceData = data.result_data as IServiceData; - this.setServiceServiceData(res.services, res.serviceContacts); - }, - error => {} - ); - } - - /** - * Returns full service - * @param {number} serviceId - * @returns {Observable} - */ - public apiGetServiceFull(serviceId: number): Observable { - const formData = new FormData(); - formData.append('serviceId', JSON.stringify(serviceId)); - return this.httpService.apiPost('get-service-full', formData); - } - - /** - * Create service - * @param {IService} service - * @returns {Observable} - */ - public apiCreateService(service: IService): Observable { - const formData = new FormData(); - formData.append('service', JSON.stringify(service)); - return this.httpService.apiPost('create-service', formData); - } - - /** - * Edit service - * @param {IService} service - * @returns {Observable} - */ - public apiEditService(service: IService): Observable { - const formData = new FormData(); - formData.append('service', JSON.stringify(service)); - return this.httpService.apiPost('edit-service', formData); - } - - /** - * Create service contact - * @param serviceContact - */ - public apiCreateServiceContact(serviceContact: IServiceContact): Observable { - const formData = new FormData(); - formData.append('serviceContact', JSON.stringify(serviceContact)); - return this.httpService.apiPost('create-service-contact', formData); - } - - /** - * Edit service contact - * @param {IServiceContact} serviceContact - * @returns {Observable} - */ - public apiEditServiceContact(serviceContact: IServiceContact): Observable { - const formData = new FormData(); - formData.append('serviceContact', JSON.stringify(serviceContact)); - return this.httpService.apiPost('edit-service-contact', formData); - } - - /** - * Delete service contact - * @param {number} serviceContactId - * @returns {Observable} - */ - public apiDeleteServiceContact(serviceContactId: number): Observable { - const formData = new FormData(); - formData.append('serviceContactId', JSON.stringify(serviceContactId)); - return this.httpService.apiPost('delete-service-contact', formData); - } - - /** - * Create service note - * @param {IServiceNote} serviceNote - * @returns {Observable} - */ - public apiCreateServiceNote(serviceNote: IServiceNote): Observable { - const formData = new FormData(); - formData.append('serviceNote', JSON.stringify(serviceNote)); - return this.httpService.apiPost('create-service-note', formData); - } - - /** - * Edit service note - * @param {IServiceNote} serviceNote - * @returns {Observable} - */ - public apiEditServiceNote(serviceNote: IServiceNote): Observable { - const formData = new FormData(); - formData.append('serviceNote', JSON.stringify(serviceNote)); - return this.httpService.apiPost('edit-service-note', formData); - } - - /** - * Delete service note - * @param {number} serviceNoteId - * @returns {Observable} - */ - public apiDeleteServiceNote(serviceNoteId: number): Observable { - const formData = new FormData(); - formData.append('serviceNoteId', JSON.stringify(serviceNoteId)); - return this.httpService.apiPost('delete-service-note', formData); - } - - /** - * Edit service meeting report - * @param serviceMeetingId - * @param serviceMeetingReport - */ - public apiEditServiceMeetingReport(serviceMeetingId: number, serviceMeetingReport: string): Observable { - const formData = new FormData(); - formData.append('serviceMeetingId', JSON.stringify(serviceMeetingId)); - formData.append('serviceMeetingReport', JSON.stringify(serviceMeetingReport)); - return this.httpService.apiPost('edit-service-meeting-report', formData); - } - - /** - * Returns meeting list as excel - * @param meetingList - * @param fileName - */ - public apiExportXmasPdf(meetingList: {}[], fileName: string): void { - const formData = new FormData(); - formData.append('meetingList', JSON.stringify(meetingList)); - this.httpService.apiFilePost('export-meeting-list', formData).subscribe( - data => { - saveAs(new Blob([data], {type: 'pdf'}), fileName + '.pdf'); - }, - error => { - } - ); - } -} diff --git a/httpdocs/plp-angular/src/app/utils/utils.ts b/httpdocs/plp-angular/src/app/utils/utils.ts index e8501dd..0a34ff7 100644 --- a/httpdocs/plp-angular/src/app/utils/utils.ts +++ b/httpdocs/plp-angular/src/app/utils/utils.ts @@ -1,4 +1,4 @@ -import {isNull} from 'util'; +import {null === } from 'util'; export class Utils { @@ -29,8 +29,8 @@ export class Utils { */ static getSortedObjFromArray(paramArray: Array = null, criteria: string = null) { const res: {} = {}; - if (!isNull(paramArray)) { - if (!isNull(criteria)) { + if (!null === paramArray)) { + if (!null === criteria)) { for (let i = 0; i < paramArray.length; i++) { res[paramArray[i][criteria]] = paramArray[i]; } @@ -148,7 +148,7 @@ export class Utils { */ static getDateTimeToDisplay(dateString: string = null, withDate: boolean = true, withTime: boolean = false, withSeconds: boolean = false, forDatePicker: boolean = false): string { let res = ''; - const date: Date = isNull(dateString) ? new Date() : new Date(dateString.replace(/\s/, 'T')); + const date: Date = null === dateString) ? new Date() : new Date(dateString.replace(/\s/, 'T')); const day: number = date.getDate(); const month: number = date.getMonth() + 1; const year: number = date.getFullYear(); @@ -189,7 +189,7 @@ export class Utils { * @param url */ static checkUrl(url: string): string { - if (!isNull(url)) { + if (!null === url)) { let newUrl = decodeURIComponent(url); newUrl = newUrl.trim().replace(/\s/g, ''); if (/^(:\/\/)/.test(newUrl)) { diff --git a/httpdocs/plp-angular/src/app/views/customer-management/customer-contact-list/customer-contact-list.component.ts b/httpdocs/plp-angular/src/app/views/customer-management/customer-contact-list/customer-contact-list.component.ts index 676b023..1bec85e 100644 --- a/httpdocs/plp-angular/src/app/views/customer-management/customer-contact-list/customer-contact-list.component.ts +++ b/httpdocs/plp-angular/src/app/views/customer-management/customer-contact-list/customer-contact-list.component.ts @@ -6,7 +6,6 @@ import {ModalComponent} from '../../../components/modal/modal.component'; import {CustomerContactPersonDetailComponent} from '../customer-view/customer-contact-person-detail/customer-contact-person-detail.component'; import {Utils} from '../../../utils/utils'; import {CustomerService} from '../../../services/customer.service'; -import {isNull} from 'util'; import {Const} from '../../../utils/const'; import {AppService} from '../../../services/app.service'; import {CommonService} from '../../../services/common.service'; @@ -80,7 +79,7 @@ export class CustomerContactListComponent extends AgGridComponent implements OnI */ public generateEntries(): void { this.rowData = []; - if (!isNull(this.customerContacts)) { + if (null !== this.customerContacts)) { for (let i = 0; i < this.customerContacts.length; i++) { this.rowData.push({ id: this.customerContacts[i].id, diff --git a/httpdocs/plp-angular/src/app/views/customer-management/customer-list/customer-list.component.ts b/httpdocs/plp-angular/src/app/views/customer-management/customer-list/customer-list.component.ts index f95865e..de0aa4a 100644 --- a/httpdocs/plp-angular/src/app/views/customer-management/customer-list/customer-list.component.ts +++ b/httpdocs/plp-angular/src/app/views/customer-management/customer-list/customer-list.component.ts @@ -3,7 +3,6 @@ import {AgGridComponent} from '../../../components/ag-grid-component'; import {ICustomer} from '../../../model/entities/customer'; import {AppService} from '../../../services/app.service'; import {Const} from '../../../utils/const'; -import {isNull} from 'util'; @Component({ selector: 'app-customer-list', @@ -73,7 +72,7 @@ export class CustomerListComponent extends AgGridComponent implements OnInit { */ public generateEntries(): void { this.rowData = []; - if (!isNull(this.customers)) { + if (null !== this.customers) { for (let i = 0; i < this.customers.length; i++) { this.rowData.push({ customer_id: this.customers[i].id, @@ -82,8 +81,8 @@ export class CustomerListComponent extends AgGridComponent implements OnInit { customer_name: this.customers[i].name, customer_name_additional: this.customers[i].name_additional, old_plp_id: this.customers[i].old_plp_id, - v_consultant: !isNull(this.customers[i].consultant_user_id) ? - this.usersById[this.customers[i].consultant_user_id].firstname + ' ' + this.usersById[this.customers[i].consultant_user_id].lastname : null, + v_consultant: null !== this.customers[i].consultant_user_id ?? + this.usersById[this.customers[i].consultant_user_id].firstname + ' ' + this.usersById[this.customers[i].consultant_user_id].lastname, street: this.customers[i].street, street_no: this.customers[i].street_no, zip: this.customers[i].zip, diff --git a/httpdocs/plp-angular/src/app/views/customer-management/customer-management.component.ts b/httpdocs/plp-angular/src/app/views/customer-management/customer-management.component.ts index 0a9713f..815bb91 100644 --- a/httpdocs/plp-angular/src/app/views/customer-management/customer-management.component.ts +++ b/httpdocs/plp-angular/src/app/views/customer-management/customer-management.component.ts @@ -15,7 +15,6 @@ import {ICustomerMeeting} from '../../model/entities/customer-meeting'; import {CustomerListComponent} from './customer-list/customer-list.component'; import {CustomerContactListComponent} from './customer-contact-list/customer-contact-list.component'; import {MeetingService} from '../../services/meeting.service'; -import {isNull} from 'util'; @Component({ selector: 'app-customer-management', @@ -68,7 +67,7 @@ export class CustomerManagementComponent extends AgGridComponent implements OnIn * Set component data after all data has been received */ private setComponentData() { - if (!isNull(this.customers) && !isNull(this.customerContacts)) { + if (null !== this.customers && null !== this.customerContacts)) { this.customerList.setData(this.customers); this.customerContactList.setData(this.customers, this.customerContacts); } diff --git a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-detail/customer-contact-person-detail.component.ts b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-detail/customer-contact-person-detail.component.ts index 53ac271..e9bf152 100644 --- a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-detail/customer-contact-person-detail.component.ts +++ b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-detail/customer-contact-person-detail.component.ts @@ -47,20 +47,18 @@ export class CustomerContactPersonDetailComponent implements OnInit { /** * Updates data - * @param customer */ public updateData(customer: ICustomer): void { this.setContactPersonData(customer); - for (let i = 0; i < this.customer.v_customer_contacts.length; i++) { - if (this.customer.v_customer_contacts[i].id == this.customerContact.id) { - this.customerContact = this.customer.v_customer_contacts[i]; + this.customer.v_customer_contacts.forEach((value) => { + if (value.id === this.customerContact.id) { + this.customerContact = value; } - } + }); } /** * Sets contact person data - * @param customer */ public setContactPersonData(customer: ICustomer): void { this.isEditMode = false; @@ -77,7 +75,6 @@ export class CustomerContactPersonDetailComponent implements OnInit { /** * Edits meeting entry - * @param customerContact */ public editCustomerContactFunction(customerContact: ICustomerContact) { this.editCustomerContact.emit(customerContact); diff --git a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-edit/customer-contact-person-edit.component.ts b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-edit/customer-contact-person-edit.component.ts index 223d470..ae0ecbc 100644 --- a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-edit/customer-contact-person-edit.component.ts +++ b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-edit/customer-contact-person-edit.component.ts @@ -2,7 +2,6 @@ import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core' import {ICustomerContact} from '../../../../model/entities/customer-contact'; import {Factory} from '../../../../factory/factory'; import {NgForm} from '@angular/forms'; -import {isNull} from 'util'; import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; import {AppService} from '../../../../services/app.service'; import {IConfig} from '../../../../model/virtual/config'; @@ -39,7 +38,7 @@ export class CustomerContactPersonEditComponent extends FormComponent implements */ public setData(customerContact: ICustomerContact): void { this.customerContact = customerContact; - this.isCreationMode = isNull(this.customerContact.id); + this.isCreationMode = null === this.customerContact.id; this.errorMsg = ''; this.resetFormValidation(); } @@ -60,8 +59,8 @@ export class CustomerContactPersonEditComponent extends FormComponent implements this.errorMsg = 'Bitte beheben Sie alle Fehler.'; if (valid) { // Check if date is valid - if (isNull(this.customerContact.date_of_birth) || - (!isNull(this.customerContact.date_of_birth) && Utils.isValidDate(this.customerContact.date_of_birth))) { + if (null === this.customerContact.date_of_birth || + !(null === this.customerContact.date_of_birth && Utils.isValidDate(this.customerContact.date_of_birth))) { if (this.isCreationMode) { this.createCustomerContact.emit(this.customerContact); } else { diff --git a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-view/customer-contact-person-view.component.ts b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-view/customer-contact-person-view.component.ts index 3a3ffad..2116435 100644 --- a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-view/customer-contact-person-view.component.ts +++ b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-contact-person-view/customer-contact-person-view.component.ts @@ -5,7 +5,6 @@ import {ICustomerContact} from '../../../../model/entities/customer-contact'; import {AgGridComponent} from '../../../../components/ag-grid-component'; import {ModalComponent} from '../../../../components/modal/modal.component'; import {CustomerContactPersonEditComponent} from '../customer-contact-person-edit/customer-contact-person-edit.component'; -import {isNull} from 'util'; import {Utils} from '../../../../utils/utils'; import {IConfig} from '../../../../model/virtual/config'; import {AppService} from '../../../../services/app.service'; @@ -115,7 +114,7 @@ export class CustomerContactPersonViewComponent extends AgGridComponent implemen street_no: this.customerContacts[i].street_no, zip: this.customerContacts[i].zip, city: this.customerContacts[i].city, - country: !isNull(this.customerContacts[i].country_id) ? this.config.vc_countries_by_id[this.customerContacts[i].country_id].name : null, + country: null !== this.customerContacts[i].country_id ? this.config.vc_countries_by_id[this.customerContacts[i].country_id].name : null, comment: this.customerContacts[i].comment, }); } diff --git a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-data-edit/customer-data-edit.component.ts b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-data-edit/customer-data-edit.component.ts index f3b8a7d..b1f0545 100644 --- a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-data-edit/customer-data-edit.component.ts +++ b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-data-edit/customer-data-edit.component.ts @@ -2,7 +2,6 @@ import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core' import {ICustomer} from '../../../../model/entities/customer'; import {Factory} from '../../../../factory/factory'; import {NgForm} from '@angular/forms'; -import {isNull} from 'util'; import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; import {AppService} from '../../../../services/app.service'; import {IConfig} from '../../../../model/virtual/config'; @@ -45,7 +44,7 @@ export class CustomerDataEditComponent extends FormComponent implements OnInit { */ public setData(customer: ICustomer): void { this.customer = customer; - this.isCreationMode = isNull(this.customer.id); + this.isCreationMode = null === this.customer.id; this.errorMsg = ''; this.resetFormValidation(); } diff --git a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-detail/customer-meeting-detail.component.ts b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-detail/customer-meeting-detail.component.ts index bdaf749..3ae4028 100644 --- a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-detail/customer-meeting-detail.component.ts +++ b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-detail/customer-meeting-detail.component.ts @@ -19,7 +19,7 @@ import {IConfig} from '../../../../model/virtual/config'; import {NgForm} from '@angular/forms'; import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; import {CustomerService} from '../../../../services/customer.service'; -import {isNull} from 'util'; +import {null === } from 'util'; import {MeetingService} from '../../../../services/meeting.service'; import {FormComponent} from '../../../../components/form-component'; import {Const} from '../../../../utils/const'; @@ -101,7 +101,7 @@ export class CustomerMeetingDetailComponent extends FormComponent implements OnI */ public updateData(customer: ICustomer): void { this.customer = customer; - if (!isNull(this.customerMeeting.id)) { + if (!null === this.customerMeeting.id)) { for (let i = 0; i < this.customer.v_customer_meetings.length; i++) { if (this.customer.v_customer_meetings[i].id === this.customerMeeting.id) { this.customerMeeting = this.customer.v_customer_meetings[i]; diff --git a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-edit/customer-meeting-edit.component.ts b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-edit/customer-meeting-edit.component.ts index dc4d751..d174d80 100644 --- a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-edit/customer-meeting-edit.component.ts +++ b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-edit/customer-meeting-edit.component.ts @@ -10,7 +10,6 @@ import {AppService} from '../../../../services/app.service'; import {IUser} from '../../../../model/entities/user'; import {IMeetingType} from '../../../../model/entities/meeting-type'; import {IConfig} from '../../../../model/virtual/config'; -import {isNull} from 'util'; import {FormComponent} from '../../../../components/form-component'; @Component({ @@ -112,7 +111,7 @@ export class CustomerMeetingEditComponent extends FormComponent implements OnIni } } - if (isNull(this.customerMeeting.customer_contact_id)) { + if (null === this.customerMeeting.customer_contact_id) { this.customerMeeting.customer_contact_id = -1; } if (this.customerMeeting.customer_contact_id > 0) { diff --git a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-view/customer-meeting-view.component.ts b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-view/customer-meeting-view.component.ts index c1a62a6..ad9a066 100644 --- a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-view/customer-meeting-view.component.ts +++ b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-meeting-view/customer-meeting-view.component.ts @@ -10,7 +10,6 @@ import {CustomerMeetingDetailComponent} from '../customer-meeting-detail/custome import {IUser} from '../../../../model/entities/user'; import {IMeetingType} from '../../../../model/entities/meeting-type'; import {AppService} from '../../../../services/app.service'; -import {isNull} from 'util'; import {Const} from '../../../../utils/const'; @Component({ @@ -110,39 +109,38 @@ export class CustomerMeetingViewComponent extends AgGridComponent implements OnI public generateEntries(): void { this.rowData = []; const items: {}[] = []; - for (let i = 0; i < this.customerMeeting.length; i++) { - - this.owner = this.appService.getConfig().vc_user_by_id[this.customerMeeting[i].owner_user_id]; - this.meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.customerMeeting[i].meeting_type_id]; - let customerContactName: string = !isNull(this.customerMeeting[i].firstname) ? this.customerMeeting[i].firstname + ' ' : ''; - customerContactName += !isNull(this.customerMeeting[i].lastname) ? this.customerMeeting[i].lastname : ''; - const creator: IUser = this.appService.getConfig().vc_user_by_id[this.customerMeeting[i].creation_user_id]; + this.customerMeeting.forEach((value) => { + this.owner = this.appService.getConfig().vc_user_by_id[value.owner_user_id]; + this.meetingType = this.appService.getConfig().vc_meeting_types_by_id[value.meeting_type_id]; + let customerContactName: string = null === value.firstname ? value.firstname + ' ' : ''; + customerContactName += null === value.lastname ? value.lastname : ''; + const creator: IUser = this.appService.getConfig().vc_user_by_id[value.creation_user_id]; items.push({ that: this, - id: this.customerMeeting[i].id, - title: this.customerMeeting[i].title, - date: this.customerMeeting[i].start_date, - time_start: this.customerMeeting[i].start_date, - time_end: this.customerMeeting[i].end_date, + id: value.id, + title: value.title, + date: value.start_date, + time_start: value.start_date, + time_end: value.end_date, type: this.meetingType.name, typeType: this.meetingType.type, - is_option_meeting: this.customerMeeting[i].is_option_meeting, - street: this.customerMeeting[i].street, - street_no: this.customerMeeting[i].street_no, - zip: this.customerMeeting[i].zip, - city: this.customerMeeting[i].city, + is_option_meeting: value.is_option_meeting, + street: value.street, + street_no: value.street_no, + zip: value.zip, + city: value.city, owner: this.owner.firstname + ' ' + this.owner.lastname, creator: creator.firstname + ' ' + creator.lastname, customerContactName, - participants: this.customerMeeting[i].v_participants, - department: this.customerMeeting[i].department, - email: this.customerMeeting[i].email, - phone: this.customerMeeting[i].phone_no, - mobile: this.customerMeeting[i].mobile_no, + participants: value.v_participants, + department: value.department, + email: value.email, + phone: value.phone_no, + mobile: value.mobile_no, }); this.rowData = items.sort((a: {} , b: {}) => this.dateComparator(a['date'], b['date'], false)); - } + }); } /** diff --git a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-note-edit/customer-note-edit.component.ts b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-note-edit/customer-note-edit.component.ts index 77d29c7..ce4f4f6 100644 --- a/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-note-edit/customer-note-edit.component.ts +++ b/httpdocs/plp-angular/src/app/views/customer-management/customer-view/customer-note-edit/customer-note-edit.component.ts @@ -6,7 +6,6 @@ import {ICustomer} from '../../../../model/entities/customer'; import {ICustomerContact} from '../../../../model/entities/customer-contact'; import {Utils} from '../../../../utils/utils'; import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {isNull} from 'util'; import {FormComponent} from '../../../../components/form-component'; @Component({ @@ -58,7 +57,7 @@ export class CustomerNoteEditComponent extends FormComponent implements OnInit { this.contactId = ''; this.isCreationMode = isCreationMode; this.errorMsg = ''; - if (isNull(this.customerNote.customer_contact_id)) { + if (null === this.customerNote.customer_contact_id) { this.customerNote.customer_contact_id = -1; } if (this.customerNote.customer_contact_id > 0) { diff --git a/httpdocs/plp-angular/src/app/views/login/login.component.ts b/httpdocs/plp-angular/src/app/views/login/login.component.ts index a66befa..ce55fe1 100644 --- a/httpdocs/plp-angular/src/app/views/login/login.component.ts +++ b/httpdocs/plp-angular/src/app/views/login/login.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit } from '@angular/core'; -import {FormBuilder, FormGroup, Validators} from '@angular/forms'; +import {UntypedFormBuilder, UntypedFormGroup, Validators} from '@angular/forms'; import {environment} from '../../../environments/environment'; import {AppService} from '../../services/app.service'; import {Subscription} from 'rxjs'; @@ -16,7 +16,7 @@ export class LoginComponent implements OnInit { private loginSub: Subscription; public isLoggedIn: boolean; public errorMsg: string; - public loginForm: FormGroup; + public loginForm: UntypedFormGroup; /** * Gets email @@ -32,7 +32,7 @@ export class LoginComponent implements OnInit { return this.loginForm.get('password'); } - constructor(private router: Router, public appService: AppService, private fb: FormBuilder) { + constructor(private router: Router, public appService: AppService, private fb: UntypedFormBuilder) { this.errorMsg = ''; } diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-detail/operator-contact-person-detail.component.html b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-detail/operator-contact-person-detail.component.html deleted file mode 100644 index 8cd9eb3..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-detail/operator-contact-person-detail.component.html +++ /dev/null @@ -1,48 +0,0 @@ -
-

Ansprechpartner Detail

-
-
-
-
Gesprächspartner:
-
Herr - Frau - Divers {{operatorContact.firstname}} {{operatorContact.lastname}}
-
Abteilung:
-
{{operatorContact.department}}
-
E-Mail:
-
{{operatorContact.email}}
-
Telefon:
-
{{operatorContact.phone_no}}
-
Mobil:
-
{{operatorContact.mobile_no}}
-
Fax:
-
{{operatorContact.fax_no}}
-
Adresse:
-
{{operatorContact.street}} {{operatorContact.street_no}}
- {{operatorContact.zip}} {{operatorContact.city}} -
{{config.vc_countries_by_id[operatorContact.country_id]['name']}}
-
Notiz:
-
{{operatorContact.comment}}
-
Markiert für Weihnachtspost:
-
- Ja - Nein -
-
-
-
-
-
-
- Zum Betreiberprofil -
Eintrag bearbeiten
-
Eintrag löschen
-
-
-
-
-
-
- -
-
\ No newline at end of file diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-detail/operator-contact-person-detail.component.scss b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-detail/operator-contact-person-detail.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-detail/operator-contact-person-detail.component.ts b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-detail/operator-contact-person-detail.component.ts deleted file mode 100644 index 38998b8..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-detail/operator-contact-person-detail.component.ts +++ /dev/null @@ -1,105 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {IOperatorContact} from '../../../../model/entities/operator-contact'; -import {OperatorContactPersonEditComponent} from '../operator-contact-person-edit/operator-contact-person-edit.component'; -import {IOperator} from '../../../../model/entities/operator'; - -@Component({ - selector: 'app-operator-contact-person-detail', - templateUrl: './operator-contact-person-detail.component.html', - styleUrls: ['./operator-contact-person-detail.component.scss'] -}) - -export class OperatorContactPersonDetailComponent implements OnInit { - - @Output() deleteOperatorContact: EventEmitter = new EventEmitter(); - @Output() editOperatorContact: EventEmitter = new EventEmitter(); - @Output() shortcut: EventEmitter = new EventEmitter(); - @ViewChild('operatorContactEdit', { static: true }) operatorContactEdit: OperatorContactPersonEditComponent; - - public isEditMode: boolean; - public operator: IOperator; - public operatorContact: IOperatorContact; - public config: IConfig; - public hasEditRights: boolean; - - constructor(public appService: AppService) { } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_ACCOUNTING); - this.config = this.appService.getConfig(); - this.isEditMode = false; - this.operator = Factory.getEmptyOperator(); - this.operatorContact = Factory.getEmptyOperatorContact(); - } - - /** - * Sets data - */ - public setData(operator: IOperator, operatorContact: IOperatorContact): void { - this.setContactPersonData(operator); - this.operatorContact = operatorContact; - } - - /** - * Updates data - * @param operator - */ - public updateData(operator: IOperator): void { - this.setContactPersonData(operator); - for (let i = 0; i < this.operator.v_operator_contacts.length; i++) { - if (this.operator.v_operator_contacts[i].id == this.operatorContact.id) { - this.operatorContact = this.operator.v_operator_contacts[i]; - } - } - } - - /** - * Sets contact person data - * @param operator - */ - public setContactPersonData(operator: IOperator): void { - this.isEditMode = false; - this.operator = operator; - } - - /** - * Edit contact entry - */ - public editEntry(): void { - this.isEditMode = true; - this.operatorContactEdit.setData(Utils.deepClone(this.operatorContact) as IOperatorContact); - } - - /** - * Edits meeting entry - * @param operatorContact - */ - public editOperatorContactFunction(operatorContact: IOperatorContact) { - this.editOperatorContact.emit(operatorContact); - } - - /** - * Delete contact entry - */ - public deleteEntry(): void { - const confirmAction = confirm('Wollen Sie diesen Ansprechpartner wirklich löschen?'); - if (confirmAction == true) { - this.deleteOperatorContact.emit(this.operatorContact.id); - } - } - - /** - * Shortcut to operator detail - */ - public operatorShortcut(): void { - this.shortcut.emit(this.operator); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-edit/operator-contact-person-edit.component.html b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-edit/operator-contact-person-edit.component.html deleted file mode 100644 index a1a5004..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-edit/operator-contact-person-edit.component.html +++ /dev/null @@ -1,135 +0,0 @@ -

Ansprechpartner anlegen

-

Ansprechpartner bearbeiten

-
-
-
-

{{ errorMsg }}

-

- Anrede ist ein Pflichtfeld. -

-

- Nachname ist ein Pflichtfeld. -

-

- Bitte gültige E-Mail Adresse eingeben. -

-
-
-
-
-
-
- - -
-
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
-
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- -
-
- - -
-
-
diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-edit/operator-contact-person-edit.component.scss b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-edit/operator-contact-person-edit.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-edit/operator-contact-person-edit.component.ts b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-edit/operator-contact-person-edit.component.ts deleted file mode 100644 index 7f03a5c..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-edit/operator-contact-person-edit.component.ts +++ /dev/null @@ -1,80 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {FormComponent} from '../../../../components/form-component'; -import {NgForm} from '@angular/forms'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {Factory} from '../../../../factory/factory'; -import {isNull} from 'util'; -import {Utils} from '../../../../utils/utils'; -import {IOperatorContact} from '../../../../model/entities/operator-contact'; - -@Component({ - selector: 'app-operator-contact-person-edit', - templateUrl: './operator-contact-person-edit.component.html', - styleUrls: ['./operator-contact-person-edit.component.scss'] -}) - -export class OperatorContactPersonEditComponent extends FormComponent implements OnInit { - - @Output() createOperatorContact: EventEmitter = new EventEmitter(); - @Output() editOperatorContact: EventEmitter = new EventEmitter(); - @ViewChild('operatorContactForm', { static: true }) operatorContactForm: NgForm; - - public operatorContact: IOperatorContact; - public config: IConfig; - - constructor(private appService: AppService, protected scrollToService: ScrollToService) { - super(scrollToService); - } - - ngOnInit() { - this.operatorContact = Factory.getEmptyOperatorContact(); - this.config = this.appService.getConfig(); - } - - /** - * Sets data - * @param operatorContact - */ - public setData(operatorContact: IOperatorContact): void { - this.operatorContact = operatorContact; - this.isCreationMode = isNull(this.operatorContact.id); - this.errorMsg = ''; - this.resetFormValidation(); - } - - /** - * Resets Form Validation - */ - public resetFormValidation(): void { - this.operatorContactForm.form.markAsUntouched(); - } - - /** - * Saves operator - * @param value - * @param valid - */ - public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { - this.errorMsg = 'Bitte beheben Sie alle Fehler.'; - if (valid) { - // Check if date is valid - if (isNull(this.operatorContact.date_of_birth) || - (!isNull(this.operatorContact.date_of_birth) && Utils.isValidDate(this.operatorContact.date_of_birth))) { - if (this.isCreationMode) { - this.createOperatorContact.emit(this.operatorContact); - } else { - this.editOperatorContact.emit(this.operatorContact); - } - this.errorMsg = ''; - } else { - this.errorMsg = 'Bitte korrektes Datum eingeben.'; - this.scrollUp(this.isCreationMode ? 'operator-contact-person-modal' : 'operator-contact-person-edit-modal'); - } - } else { - this.scrollUp(this.isCreationMode ? 'operator-contact-person-modal' : 'operator-contact-person-edit-modal'); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-view/operator-contact-person-view.component.html b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-view/operator-contact-person-view.component.html deleted file mode 100644 index f318511..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-view/operator-contact-person-view.component.html +++ /dev/null @@ -1,35 +0,0 @@ -

Ansprechpartner

-

Hier sind die Ansprechpartner zu sehen:

-
Ansprechpartner anlegen
-
- - -
-
- - -
- - - - - - -
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-view/operator-contact-person-view.component.scss b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-view/operator-contact-person-view.component.scss deleted file mode 100644 index d811e8f..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-view/operator-contact-person-view.component.scss +++ /dev/null @@ -1,14 +0,0 @@ -#create-operator-contact { - position: absolute; - right: 0; - top: -6rem; -} - -@media only screen and (max-width: 1004px) { - #create-operator-contact { - position: relative; - right: auto; - top: auto; - display: inline-block; - } -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-view/operator-contact-person-view.component.ts b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-view/operator-contact-person-view.component.ts deleted file mode 100644 index d94fd0d..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-contact-person-view/operator-contact-person-view.component.ts +++ /dev/null @@ -1,176 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {AgGridComponent} from '../../../../components/ag-grid-component'; -import {ModalComponent} from '../../../../components/modal/modal.component'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {isNull} from 'util'; -import {IOperatorContact} from '../../../../model/entities/operator-contact'; -import {OperatorContactPersonDetailComponent} from '../operator-contact-person-detail/operator-contact-person-detail.component'; -import {OperatorContactPersonEditComponent} from '../operator-contact-person-edit/operator-contact-person-edit.component'; -import {IOperator} from '../../../../model/entities/operator'; - -@Component({ - selector: 'app-operator-contact-person-view', - templateUrl: './operator-contact-person-view.component.html', - styleUrls: ['./operator-contact-person-view.component.scss'] -}) - -export class OperatorContactPersonViewComponent extends AgGridComponent implements OnInit { - - @Output() createOperatorContact: EventEmitter = new EventEmitter(); - @Output() editOperatorContact: EventEmitter = new EventEmitter(); - @Output() deleteOperatorContact: EventEmitter = new EventEmitter(); - @Output() shortcut: EventEmitter = new EventEmitter(); - @ViewChild('modalOperatorContactPersonEdit', { static: true }) modalOperatorContactPersonEdit: ModalComponent; - @ViewChild('operatorContactPersonEdit', { static: true }) operatorContactPersonEdit: OperatorContactPersonEditComponent; - @ViewChild('modalOperatorContactPersonDetail', { static: true }) modalOperatorContactPersonDetail: ModalComponent; - @ViewChild('operatorContactPersonDetail', { static: true }) operatorContactPersonDetail: OperatorContactPersonDetailComponent; - - public operator: IOperator; - public operatorContacts: IOperatorContact[]; - public operatorContactsById: {}; - public config: IConfig; - public hasEditRights: boolean; - - constructor(private appService: AppService) { - super(); - } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_ACCOUNTING); - this.config = this.appService.getConfig(); - this.operator = Factory.getEmptyOperator(); - this.operatorContacts = []; - this.operatorContactsById = {}; - - this.defaultColDef = { - resizable: true, - sortable: true - }; - - this.columnDefs = [ - {headerName: 'Anrede', field: 'gender', width: 90 }, - {headerName: 'Vorname', field: 'firstname' }, - {headerName: 'Nachname', field: 'lastname' }, - {headerName: 'Abteilung', field: 'department' }, - {headerName: 'E-Mail Adresse', field: 'email', cellRenderer: this.emailRenderer }, - {headerName: 'Telefon', field: 'phone_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Mobil', field: 'mobile_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Fax', field: 'fax_no' }, - {headerName: 'Straße', field: 'street' }, - {headerName: 'Hausnummer', field: 'street_no' }, - {headerName: 'PLZ', field: 'zip' }, - {headerName: 'Ort', field: 'city' }, - {headerName: 'Land', field: 'country' }, - {headerName: 'Bemerkungen', field: 'comment' } - ]; - } - - /** - * Sets data - * @param operator - * @param isUpdate - */ - public setData(operator: IOperator, isUpdate: boolean): void { - this.operator = operator; - this.operatorContacts = this.operator.v_operator_contacts; - this.operatorContactsById = Utils.getSortedObjFromArray(this.operatorContacts, 'id'); - this.modalOperatorContactPersonEdit.closeModal(); - this.generateEntries(); - if (isUpdate) { - this.operatorContactPersonDetail.updateData(operator); - } else { - this.modalOperatorContactPersonDetail.closeModal(); - } - } - - /** - * Generates AG grid entries - */ - public generateEntries(): void { - this.rowData = []; - for (let i = 0; i < this.operatorContacts.length; i++) { - let ocGender: string; - if (this.operatorContacts[i].gender == 'male') { - ocGender = 'Herr'; - } else if (this.operatorContacts[i].gender == 'female') { - ocGender = 'Frau'; - } else { - ocGender = 'Divers'; - } - this.rowData.push({ - id: this.operatorContacts[i].id, - gender: ocGender, - firstname: this.operatorContacts[i].firstname, - lastname: this.operatorContacts[i].lastname, - department: this.operatorContacts[i].department, - email: this.operatorContacts[i].email, - phone_no: this.operatorContacts[i].phone_no, - mobile_no: this.operatorContacts[i].mobile_no, - fax_no: this.operatorContacts[i].fax_no, - street: this.operatorContacts[i].street, - street_no: this.operatorContacts[i].street_no, - zip: this.operatorContacts[i].zip, - city: this.operatorContacts[i].city, - country: !isNull(this.operatorContacts[i].country_id) ? this.config.vc_countries_by_id[this.operatorContacts[i].country_id].name : null, - comment: this.operatorContacts[i].comment, - }); - } - } - - /** - * On row click - * @param e - */ - public rowClicked(e: any) { - this.modalOperatorContactPersonDetail.openModal(); - this.operatorContactPersonDetail.setData(this.operator, Utils.deepClone(this.operatorContactsById[e.data.id]) as IOperatorContact); - } - - /** - * On create click - */ - public create(): void { - this.modalOperatorContactPersonEdit.openModal(); - this.operatorContactPersonEdit.setData(Factory.getEmptyOperatorContact(this.operator.id)); - } - - /** - * Creates operator contact - * @param operatorContact - */ - public createOperatorContactFunction(operatorContact: IOperatorContact): void { - this.createOperatorContact.emit(operatorContact); - } - - /** - * Edit operator contact - * @param operatorContact - */ - public editOperatorContactFunction(operatorContact: IOperatorContact): void { - this.editOperatorContact.emit(operatorContact); - } - - /** - * Deletes operator contact - * @param operatorId - */ - public deleteOperatorContactFunction(operatorId: number): void { - this.deleteOperatorContact.emit(operatorId); - } - - /** - * Shortcut to operator detail - * @param operator - */ - public shortcutFunction(operator: IOperator): void { - this.modalOperatorContactPersonDetail.closeModal(); - this.shortcut.emit(operator); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-edit/operator-data-edit.component.html b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-edit/operator-data-edit.component.html deleted file mode 100644 index 3d556a5..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-edit/operator-data-edit.component.html +++ /dev/null @@ -1,120 +0,0 @@ -

{{operator.name}} bearbeiten

-

Betreiber anlegen

-
-
-
-

{{ errorMsg }}

-

- Name ist ein Pflichtfeld. -

-

- Bitte gültige E-Mail Adresse eingeben. -

-
-
-
-
-

Aktivität

- - -
-
-
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
-
-
-
- - -
-
- - -
-
-
-
-
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
-
-
-
- -
-
- - -
-
-
diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-edit/operator-data-edit.component.scss b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-edit/operator-data-edit.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-edit/operator-data-edit.component.ts b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-edit/operator-data-edit.component.ts deleted file mode 100644 index 05f45d0..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-edit/operator-data-edit.component.ts +++ /dev/null @@ -1,71 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {FormComponent} from '../../../../components/form-component'; -import {NgForm} from '@angular/forms'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {Factory} from '../../../../factory/factory'; -import {isNull} from 'util'; -import {IOperator} from '../../../../model/entities/operator'; - -@Component({ - selector: 'app-operator-data-edit', - templateUrl: './operator-data-edit.component.html', - styleUrls: ['./operator-data-edit.component.scss'] -}) - -export class OperatorDataEditComponent extends FormComponent implements OnInit { - - @Output() editOperator: EventEmitter = new EventEmitter(); - @Output() createOperator: EventEmitter = new EventEmitter(); - @ViewChild('operatorDataForm', { static: true }) operatorDataForm: NgForm; - - public operator: IOperator; - public config: IConfig; - - constructor(private appService: AppService, protected scrollToService: ScrollToService) { - super(scrollToService); - } - - ngOnInit() { - this.operator = Factory.getEmptyOperator(); - this.config = this.appService.getConfig(); - } - - /** - * Sets data - * @param operator - */ - public setData(operator: IOperator): void { - this.operator = operator; - this.isCreationMode = isNull(this.operator.id); - this.errorMsg = ''; - this.resetFormValidation(); - } - - /** - * Resets Form Validation - */ - public resetFormValidation(): void { - this.operatorDataForm.form.markAsUntouched(); - } - - /** - * Saves operator - * @param value - * @param valid - */ - public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { - this.errorMsg = 'Bitte beheben Sie alle Fehler.'; - if (valid) { - if (this.isCreationMode) { - this.createOperator.emit(this.operator); - } else { - this.editOperator.emit(this.operator); - } - this.errorMsg = ''; - } else { - this.scrollUp(this.isCreationMode ? 'operator-data-modal' : 'operator-data-edit-modal'); - } - } -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-view/operator-data-view.component.html b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-view/operator-data-view.component.html deleted file mode 100644 index 3655995..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-view/operator-data-view.component.html +++ /dev/null @@ -1,38 +0,0 @@ -

Betreiberdaten

-
-
-
-
Status:
-
AktivInaktiv
-
Firma:
-
{{operator.name}} ({{operator.old_plp_id}})
-
Zusatz:
-
{{operator.name_additional}}
-
Adresse:
-
{{operator.street}} {{operator.street_no}}
- {{operator.zip}} {{operator.city}} -
{{config.vc_countries_by_id[operator.country_id]['name']}}
-
Internetadresse:
-
{{checkedUrl}}
-
E-Mail:
-
{{operator.email}}
-
Telefon:
-
{{operator.phone_no}}
-
Mobil:
-
{{operator.mobile_no}}
-
Fax:
-
{{operator.fax_no}}
-
Bemerkung:
-
{{operator.comment}}
-
-
-
-
bearbeiten
-
-
- - -
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-view/operator-data-view.component.scss b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-view/operator-data-view.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-view/operator-data-view.component.ts b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-view/operator-data-view.component.ts deleted file mode 100644 index 888acb4..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-data-view/operator-data-view.component.ts +++ /dev/null @@ -1,65 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {ModalComponent} from '../../../../components/modal/modal.component'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {IOperator} from '../../../../model/entities/operator'; -import {OperatorDataEditComponent} from '../operator-data-edit/operator-data-edit.component'; - -@Component({ - selector: 'app-operator-data-view', - templateUrl: './operator-data-view.component.html', - styleUrls: ['./operator-data-view.component.scss'] -}) - -export class OperatorDataViewComponent implements OnInit { - - @Output() editOperator: EventEmitter = new EventEmitter(); - @ViewChild('modalOperatorDataEdit', { static: true }) modalOperatorDataEdit: ModalComponent; - @ViewChild('operatorDataEdit', { static: true }) operatorDataEdit: OperatorDataEditComponent; - - public operator: IOperator; - public checkedUrl: string; - public config: IConfig; - public hasEditRights: boolean; - - constructor(private appService: AppService) { } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_ACCOUNTING); - this.config = this.appService.getConfig(); - this.operator = Factory.getEmptyOperator(); - this.checkedUrl = ''; - } - - /** - * Sets data - * @param operator - */ - public setData(operator: IOperator): void { - this.operator = operator; - this.checkedUrl = Utils.checkUrl(this.operator.url); - this.modalOperatorDataEdit.closeModal(); - } - - /** - * On edit click - */ - public edit(): void { - this.modalOperatorDataEdit.openModal(); - this.operatorDataEdit.setData(Utils.deepClone(this.operator) as IOperator); - } - - /** - * Saves operator - * @param operator - */ - public editOperatorFunction(operator: IOperator): void { - this.editOperator.emit(operator); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-detail/operator-meeting-detail.component.html b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-detail/operator-meeting-detail.component.html deleted file mode 100644 index b293dcd..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-detail/operator-meeting-detail.component.html +++ /dev/null @@ -1,77 +0,0 @@ -
-

Termin mit Betreiber: {{operator.name}}

-

{{date}} {{timeStart}} Uhr bis {{timeEnd}} Uhr

-

{{operatorMeeting.title}}

-
Erstellt von: {{creator.firstname}} {{creator.lastname}}
-

{{operatorMeeting.description}}

-
-
-
-
-
Termin-Art:
-
{{meetingType.name}}
-
PLP Verantwortlicher:
-
{{owner.firstname}} {{owner.lastname}}
-
Teilnehmer:
-
- - {{p.firstname}} {{p.lastname}}
-
-
- -
Adresse:
-
{{operatorMeeting.street}} {{operatorMeeting.street_no}}
- {{operatorMeeting.zip}} {{operatorMeeting.city}} -
{{config.vc_countries_by_id[operatorMeeting.country_id]['name']}}
-
-
Gesprächspartner:
-
Herr - Frau - Divers {{operatorMeeting.firstname}} {{operatorMeeting.lastname}}
-
Abteilung:
-
{{operatorMeeting.department}}
-
E-Mail:
-
{{operatorMeeting.email}}
-
Telefon:
-
{{operatorMeeting.phone_no}}
-
Mobil:
-
{{operatorMeeting.mobile_no}}
-
Report:
-
{{reportOld}}
-
-
-
-
-
-
-
-
Eintrag bearbeiten
-
Eintrag löschen
-
Report bearbeiten
-
-
-
-
-
-
-

{{ errorMsg }}

-
-
-
- - -
-
-
-
- -
-
-
-
-
-
-
- -
-
\ No newline at end of file diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-detail/operator-meeting-detail.component.scss b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-detail/operator-meeting-detail.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-detail/operator-meeting-detail.component.ts b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-detail/operator-meeting-detail.component.ts deleted file mode 100644 index 247e532..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-detail/operator-meeting-detail.component.ts +++ /dev/null @@ -1,203 +0,0 @@ -import { - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, - EventEmitter, - OnInit, - Output, - ViewChild -} from '@angular/core'; -import {FormComponent} from '../../../../components/form-component'; -import {NgForm} from '@angular/forms'; -import {IUser} from '../../../../model/entities/user'; -import {IMeetingType} from '../../../../model/entities/meeting-type'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {MeetingService} from '../../../../services/meeting.service'; -import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {isNull} from 'util'; -import {Utils} from '../../../../utils/utils'; -import {IOperatorMeeting} from '../../../../model/entities/operator-meeting'; -import {OperatorMeetingEditComponent} from '../operator-meeting-edit/operator-meeting-edit.component'; -import {IOperator} from '../../../../model/entities/operator'; -import {OperatorService} from '../../../../services/operator.service'; - -@Component({ - selector: 'app-operator-meeting-detail', - templateUrl: './operator-meeting-detail.component.html', - styleUrls: ['./operator-meeting-detail.component.scss'], - // NOTE: We need manual change detection in this component - changeDetection: ChangeDetectionStrategy.OnPush, -}) - -export class OperatorMeetingDetailComponent extends FormComponent implements OnInit { - - @Output() editMeeting: EventEmitter = new EventEmitter(); - @Output() deleteMeeting: EventEmitter = new EventEmitter(); - @Output() editMeetingReport: EventEmitter = new EventEmitter(); - @ViewChild('operatorMeetingDetailEdit', { static: true }) operatorMeetingDetailEdit: OperatorMeetingEditComponent; - @ViewChild('operatorMeetingReportForm', { static: true }) operatorMeetingReportForm: NgForm; - - public operator: IOperator; - public operatorMeeting: IOperatorMeeting; - public isEditMode: boolean; - public creator: IUser; - public owner: IUser; - public participants: IUser[]; - public meetingType: IMeetingType; - public date: string; - public timeStart: string; - public timeEnd: string; - public config: IConfig; - public reportFormVisible: boolean; - public reportOld: string; - public hasAdminRights: boolean; - - constructor( - public appService: AppService, - private operatorService: OperatorService, - private meetingService: MeetingService, - protected scrollToService: ScrollToService, - private ref: ChangeDetectorRef - ) { - super(scrollToService); - } - - ngOnInit() { - this.hasAdminRights = this.appService.userHasRole(Const.USER_ROLE_ADMIN); - this.config = this.appService.getConfig(); - this.operator = Factory.getEmptyOperator(); - this.operatorMeeting = Factory.getEmptyOperatorMeeting(); - this.creator = Factory.getEmptyUser(); - this.owner = Factory.getEmptyUser(); - this.participants = []; - this.meetingType = Factory.getEmptyMeetingType(); - this.date = ''; - this.timeStart = ''; - this.timeEnd = ''; - this.reportFormVisible = false; - this.reportOld = ''; - } - - /** - * Set data - * @param operator - * @param operatorMeeting - */ - public setData(operator: IOperator, operatorMeeting: IOperatorMeeting): void { - this.operator = operator; - this.operatorMeeting = operatorMeeting; - this.setMeetingData(); - } - - /** - * Updates data - * @param operator - */ - public updateData(operator: IOperator): void { - this.operator = operator; - if (!isNull(this.operatorMeeting.id)) { - for (let i = 0; i < this.operator.v_operator_meetings.length; i++) { - if (this.operator.v_operator_meetings[i].id == this.operatorMeeting.id) { - this.operatorMeeting = this.operator.v_operator_meetings[i]; - } - } - this.setMeetingData(); - } - } - - /** - * Sets variables for meeting - */ - public setMeetingData() { - this.errorMsg = ''; - this.reportFormVisible = false; - this.reportOld = this.operatorMeeting.report; - this.creator = this.appService.getConfig().vc_user_by_id[this.operatorMeeting.creation_user_id]; - this.owner = this.appService.getConfig().vc_user_by_id[this.operatorMeeting.owner_user_id]; - this.participants = []; - for (let i = 0; i < this.operatorMeeting.v_participants.length; i++) { - this.participants.push(this.appService.getConfig().vc_user_by_id[this.operatorMeeting.v_participants[i].participant_user_id]); - } - this.meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.operatorMeeting.meeting_type_id]; - this.date = Utils.getDateTimeToDisplay(this.operatorMeeting.start_date); - this.timeStart = Utils.getDateTimeToDisplay(this.operatorMeeting.start_date, false, true); - this.timeEnd = Utils.getDateTimeToDisplay(this.operatorMeeting.end_date, false, true); - this.isEditMode = false; - this.resetFormValidation(); - // NOTE: We need manual change detection in this component - this.ref.detectChanges(); - } - - /** - * Edit meeting entry - */ - public editEntry(): void { - this.isEditMode = true; - this.operatorMeetingDetailEdit.setData(this.operator, Utils.deepClone(this.operatorMeeting) as IOperatorMeeting); - } - - /** - * Edits meeting entry - * @param operatorMeeting - */ - public editOperatorMeetingFunction(operatorMeeting: IOperatorMeeting) { - this.editMeeting.emit(operatorMeeting); - } - - /** - * Delete meeting entry - */ - public deleteEntry(): void { - const confirmAction = confirm('Wollen Sie diesen Eintrag wirklich löschen?'); - if (confirmAction == true) { - this.deleteMeeting.emit(this.operatorMeeting.id); - } - } - - /** - * Check if edit report after meeting has started - */ - public editReport(): void { - this.meetingService.apiCheckOperatorMeetingReport(this.operatorMeeting.id).subscribe( - data => { - this.reportFormVisible = data.result_data as boolean; - // NOTE: We need manual change detection in this component - this.ref.detectChanges(); - this.scrollUp('operator-meeting-edit-report'); - }, - error => { - } - ); - } - - /** - * Resets Form Validation - */ - public resetFormValidation(): void { - if (this.reportFormVisible) { - this.operatorMeetingReportForm.form.markAsUntouched(); - } - } - - /** - * Saves operator meeting report - * @param value - * @param valid - */ - public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { - this.errorMsg = 'Bitte beheben Sie alle Fehler.'; - if (valid) { - this.editMeetingReport.emit({ - id: this.operatorMeeting.id, - report: this.operatorMeeting.report - }); - this.errorMsg = ''; - } else { - this.scrollUp('operator-meeting-edit-report'); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-edit/operator-meeting-edit.component.html b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-edit/operator-meeting-edit.component.html deleted file mode 100644 index 2de6956..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-edit/operator-meeting-edit.component.html +++ /dev/null @@ -1,200 +0,0 @@ -

Kunden-Termin anlegen

-

Kunden-Termin bearbeiten

-
-
-
-

{{ errorMsg }}

-

- Betreff ist ein Pflichtfeld. -

-

- Datum ist ein Pflichtfeld. -

-

- Uhrzeit (Start) ist ein Pflichtfeld. -

-

- Uhrzeit (Ende) ist ein Pflichtfeld. -

-

- Termin-Art ist ein Pflichtfeld. -

-

- PLP Verantwortlicher ist ein Pflichtfeld. -

-
-
-
-
-
-
- - -
-
-
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
-
-
- -
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
-
-
-
-
- - -
-
-
-
-
-
- - -
-
-
-
-
-

Teilnehmer

-
-
-
-
-
- - -
-
-
-
-
- - -
-
-
- - -
-
-
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
-
- -
-
- - -
-
-
\ No newline at end of file diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-edit/operator-meeting-edit.component.scss b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-edit/operator-meeting-edit.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-edit/operator-meeting-edit.component.ts b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-edit/operator-meeting-edit.component.ts deleted file mode 100644 index ab19d49..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-edit/operator-meeting-edit.component.ts +++ /dev/null @@ -1,261 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {FormComponent} from '../../../../components/form-component'; -import {NgForm} from '@angular/forms'; -import {IUser} from '../../../../model/entities/user'; -import {IMeetingType} from '../../../../model/entities/meeting-type'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {isNull} from 'util'; -import {IOperatorMeeting} from '../../../../model/entities/operator-meeting'; -import {IOperator} from '../../../../model/entities/operator'; -import {IOperatorContact} from '../../../../model/entities/operator-contact'; - -@Component({ - selector: 'app-operator-meeting-edit', - templateUrl: './operator-meeting-edit.component.html', - styleUrls: ['./operator-meeting-edit.component.scss'] -}) - -export class OperatorMeetingEditComponent extends FormComponent implements OnInit { - - @Output() createMeeting: EventEmitter = new EventEmitter(); - @Output() editMeeting: EventEmitter = new EventEmitter(); - @ViewChild('operatorMeetingForm', { static: true }) operatorMeetingForm: NgForm; - - public operator: IOperator; - public operatorMeeting: IOperatorMeeting; - public operatorContacts: IOperatorContact[]; - public operatorContactsById: {}; - public isExistingOperatorContact: boolean; - public users: IUser[]; - public usersById: {}; - public possibleOwners: IUser[]; - public participants: IUser[]; - public selectedParticipantsById: {}; - public selectedParticipantsByIdInitial: {}; - public owner: IUser; - public startDate: string; - public timeStart: string; - public timeEnd: string; - public meetingTypes: IMeetingType[]; - public contactPersonValue: string; - public config: IConfig; - - constructor(public appService: AppService, protected scrollToService: ScrollToService) { - super(scrollToService); - } - - ngOnInit() { - this.config = this.appService.getConfig(); - this.operator = Factory.getEmptyOperator(); - this.operatorMeeting = Factory.getEmptyOperatorMeeting(); - this.operatorContacts = []; - this.operatorContactsById = {}; - this.isExistingOperatorContact = false; - this.users = []; - this.usersById = {}; - this.possibleOwners = []; - this.participants = []; - this.selectedParticipantsById = {}; - this.selectedParticipantsByIdInitial = {}; - this.owner = Factory.getEmptyUser(); - this.startDate = ''; - this.timeStart = ''; - this.timeEnd = ''; - this.meetingTypes = []; - this.contactPersonValue = ''; - } - - /** - * Sets data - * @param operator - * @param operatorMeeting - * @param isCreationMode - */ - public setData(operator: IOperator, operatorMeeting: IOperatorMeeting, isCreationMode: boolean = false): void { - this.operator = operator; - this.operatorMeeting = operatorMeeting; - this.operatorContacts = this.operator.v_operator_contacts; - this.operatorContactsById = Utils.getSortedObjFromArray(this.operatorContacts, 'id'); - this.isCreationMode = isCreationMode; - this.users = this.appService.getConfig().users; - this.owner = this.operatorMeeting.owner_user_id !== null ? - this.appService.getConfig().vc_user_by_id[this.operatorMeeting.owner_user_id] : null; - this.startDate = Utils.getDateTimeToDisplay(this.operatorMeeting.start_date, true, false, false, true); - this.timeStart = Utils.getDateTimeToDisplay(this.operatorMeeting.start_date, false, true); - this.timeEnd = Utils.getDateTimeToDisplay(this.operatorMeeting.end_date, false, true); - this.meetingTypes = this.appService.getConfig().meeting_types; - this.selectedParticipantsById = Utils.getSortedObjFromArray(this.operatorMeeting.v_participants, 'participant_user_id'); - this.selectedParticipantsByIdInitial = Utils.getSortedObjFromArray(this.operatorMeeting.v_participants, 'participant_user_id'); - this.participants = []; - this.usersById = Utils.getSortedObjFromArray(this.appService.getConfig().users, 'id'); - for (const p in this.usersById) { - if (this.isCreationMode) { - // New meeting - if (this.usersById[p].active) { - this.participants.push(this.usersById[p]); - this.possibleOwners.push(this.usersById[p]); - } - } else { - // Existing meeting - const userAttendsToMeeting: boolean = this.selectedParticipantsByIdInitial.hasOwnProperty(this.usersById[p].id); - if (this.usersById[p].id !== this.owner.id && (this.usersById[p].active || userAttendsToMeeting)) { - this.participants.push(this.usersById[p]); - this.possibleOwners.push(this.usersById[p]); - } - if (this.usersById[p].id === this.owner.id) { - this.possibleOwners.push(this.usersById[p]); - } - } - } - - - if (isNull(this.operatorMeeting.operator_contact_id)) { - this.operatorMeeting.operator_contact_id = -1; - } - if (this.operatorMeeting.operator_contact_id > 0) { - this.isExistingOperatorContact = true; - } - this.errorMsg = ''; - this.resetFormValidation(); - } - - /** - * On select contact - * @param e - */ - public selectContact(e: any) { - this.operatorMeeting.operator_contact_id = e.target.value; - this.isExistingOperatorContact = false; - this.operatorMeeting.gender = null; - this.operatorMeeting.firstname = null; - this.operatorMeeting.lastname = null; - this.operatorMeeting.department = null; - this.operatorMeeting.email = null; - this.operatorMeeting.phone_no = null; - this.operatorMeeting.mobile_no = null; - if (this.operatorMeeting.operator_contact_id > 0) { - this.operatorMeeting.gender = this.operatorContactsById[this.operatorMeeting.operator_contact_id].gender; - this.operatorMeeting.firstname = this.operatorContactsById[this.operatorMeeting.operator_contact_id].firstname; - this.operatorMeeting.lastname = this.operatorContactsById[this.operatorMeeting.operator_contact_id].lastname; - this.operatorMeeting.department = this.operatorContactsById[this.operatorMeeting.operator_contact_id].department; - this.operatorMeeting.email = this.operatorContactsById[this.operatorMeeting.operator_contact_id].email; - this.operatorMeeting.phone_no = this.operatorContactsById[this.operatorMeeting.operator_contact_id].phone_no; - this.operatorMeeting.mobile_no = this.operatorContactsById[this.operatorMeeting.operator_contact_id].mobile_no; - this.isExistingOperatorContact = true; - } - } - - /** - * On select owner - * @param e - */ - public selectOwner(e: any) { - if (e.target.value !== '0: null') { - this.owner = this.usersById[e.target.value]; - if (this.selectedParticipantsById.hasOwnProperty(this.owner.id)) { - delete this.selectedParticipantsById[this.owner.id]; - } - } else { - this.owner = null; - } - this.participants = []; - for (const p in this.usersById) { - if ((this.owner == null || this.usersById[p].id !== this.owner.id) && this.usersById[p].active) { - this.participants.push(this.usersById[p]); - } - } - } - - /** - * On select meeting type - * @param e - */ - public selectMeetingType(e: any) { - this.operatorMeeting.meeting_type_id = e.target.value; - } - - /** - * On select participant - * @param e - */ - public participantsChange(e: any) { - const participantUserId: number = parseInt(e.target.value); - if (this.selectedParticipantsById.hasOwnProperty(participantUserId)) { - delete this.selectedParticipantsById[participantUserId]; - } else { - let myId: number = null; - if (this.selectedParticipantsByIdInitial.hasOwnProperty(participantUserId)) { - myId = this.selectedParticipantsByIdInitial[participantUserId].id; - } - this.selectedParticipantsById[participantUserId] = { - id: myId, - operator_meeting_id: this.operatorMeeting.id, - participant_user_id: participantUserId - }; - } - } - - /** - * Checks if participant is selected - * @param id - */ - public checkParticipants(id: number) { - return this.selectedParticipantsById.hasOwnProperty(id); - - } - - /** - * Resets Form Validation - */ - public resetFormValidation(): void { - this.operatorMeetingForm.form.markAsUntouched(); - } - - /** - * Saves operator meeting - * @param value - * @param valid - */ - public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { - this.errorMsg = 'Bitte beheben Sie alle Fehler.'; - const identifier: string = this.isCreationMode ? 'operator-meeting-modal' : 'operator-meeting-edit-modal'; - if (valid) { - // Check if start time before end time - if (parseInt(this.timeStart.replace(/\:/g, '')) - parseInt(this.timeEnd.replace(/\:/g, '')) > 0) { - this.errorMsg = 'Zeit (Ende) darf nicht vor Zeit (Start) liegen.'; - this.scrollUp(identifier); - } else { - this.operatorMeeting.start_date = this.startDate + ' ' + this.timeStart + ':00'; - this.operatorMeeting.end_date = this.startDate + ' ' + this.timeEnd + ':00'; - // Check if date is valid - if (Utils.isValidDate(this.operatorMeeting.start_date)) { - this.operatorMeeting.v_participants = []; - for (const spId in this.selectedParticipantsById) { - this.operatorMeeting.v_participants.push(this.selectedParticipantsById[spId]); - } - - if (this.operatorMeeting.operator_contact_id == -1) { - this.operatorMeeting.operator_contact_id = null; - } - - if (this.isCreationMode) { - this.createMeeting.emit(this.operatorMeeting); - } else { - this.editMeeting.emit(this.operatorMeeting); - } - this.errorMsg = ''; - } else { - this.errorMsg = 'Bitte korrektes Datum eingeben.'; - this.scrollUp(identifier); - } - } - } else { - this.scrollUp(identifier); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-view/operator-meeting-view.component.html b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-view/operator-meeting-view.component.html deleted file mode 100644 index 9be6578..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-view/operator-meeting-view.component.html +++ /dev/null @@ -1,33 +0,0 @@ -

Termine

-
Termin hinzufügen
-
- - -
-
- - -
- - - - - - -
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-view/operator-meeting-view.component.scss b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-view/operator-meeting-view.component.scss deleted file mode 100644 index ae0854b..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-view/operator-meeting-view.component.scss +++ /dev/null @@ -1,14 +0,0 @@ -#create-operator-meeting { - position: absolute; - right: 0; - top: -6rem; -} - -@media only screen and (max-width: 1004px) { - #create-operator-meeting { - position: relative; - right: auto; - top: auto; - display: inline-block; - } -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-view/operator-meeting-view.component.ts b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-view/operator-meeting-view.component.ts deleted file mode 100644 index caea848..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-meeting-view/operator-meeting-view.component.ts +++ /dev/null @@ -1,199 +0,0 @@ -import {Component, EventEmitter, OnDestroy, OnInit, Output, ViewChild} from '@angular/core'; -import {AgGridComponent} from '../../../../components/ag-grid-component'; -import {ModalComponent} from '../../../../components/modal/modal.component'; -import {IUser} from '../../../../model/entities/user'; -import {IMeetingType} from '../../../../model/entities/meeting-type'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {isNull} from 'util'; -import {IOperatorMeeting} from '../../../../model/entities/operator-meeting'; -import {OperatorMeetingEditComponent} from '../operator-meeting-edit/operator-meeting-edit.component'; -import {OperatorMeetingDetailComponent} from '../operator-meeting-detail/operator-meeting-detail.component'; -import {IOperator} from '../../../../model/entities/operator'; - -@Component({ - selector: 'app-operator-meeting-view', - templateUrl: './operator-meeting-view.component.html', - styleUrls: ['./operator-meeting-view.component.scss'] -}) - -export class OperatorMeetingViewComponent extends AgGridComponent implements OnInit, OnDestroy { - - @Output() createMeeting: EventEmitter = new EventEmitter(); - @Output() editMeeting: EventEmitter = new EventEmitter(); - @Output() deleteMeeting: EventEmitter = new EventEmitter(); - @Output() editMeetingReport: EventEmitter = new EventEmitter(); - @ViewChild('modalOperatorMeetingEdit', {static: true}) modalOperatorMeetingEdit: ModalComponent; - @ViewChild('operatorMeetingEdit', {static: true}) operatorMeetingEdit: OperatorMeetingEditComponent; - @ViewChild('modalOperatorMeetingDetail', {static: true}) modalOperatorMeetingDetail: ModalComponent; - @ViewChild('operatorMeetingDetail', {static: true}) operatorMeetingDetail: OperatorMeetingDetailComponent; - - public operator: IOperator; - public operatorMeeting: IOperatorMeeting[]; - public operatorMeetingEntriesById: {}; - public owner: IUser; - public participants: IUser[]; - public meetingType: IMeetingType; - public date: string; - public timeStart: string; - public timeEnd: string; - public hasAdminRights: boolean; - - constructor(public appService: AppService) { - super(); - } - - ngOnInit() { - this.hasAdminRights = this.appService.userHasRole(Const.USER_ROLE_ADMIN); - this.operator = Factory.getEmptyOperator(); - this.operatorMeeting = []; - this.operatorMeetingEntriesById = {}; - this.owner = Factory.getEmptyUser(); - this.participants = []; - this.meetingType = Factory.getEmptyMeetingType(); - this.date = ''; - this.timeStart = ''; - this.timeEnd = ''; - - this.defaultColDef = { - resizable: true, - sortable: true - }; - - this.columnDefs = [ - {headerName: 'Datum', field: 'date', cellRenderer: this.dateRenderer, comparator: this.dateComparator}, - {headerName: 'Ersteller', field: 'creator' }, - {headerName: 'PLP Verantwortlicher', field: 'owner'}, - {headerName: 'Gesprächspartner', field: 'operatorContactName'}, - {headerName: 'Titel', field: 'title'}, - {headerName: 'Uhrzeit (Start)', field: 'time_start', cellRenderer: this.timeRenderer}, - {headerName: 'Uhrzeit (Ende)', field: 'time_end', cellRenderer: this.timeRenderer}, - {headerName: 'Termin-Art', field: 'type'}, - {headerName: 'Adresse', field: 'address', cellRenderer: this.addressRenderer, autoHeight: true}, - { - headerName: 'Teilnehmer', - field: 'participants', - cellRenderer: this.participantsRenderer, - autoHeight: true - }, - {headerName: 'Abteilung', field: 'department'}, - {headerName: 'E-Mail', field: 'email'}, - {headerName: 'Telefon', field: 'phone'}, - {headerName: 'Mobil', field: 'mobile'}, - ]; - } - - /** - * Sets data - * @param operator - * @param isUpdate - */ - public setData(operator: IOperator, isUpdate: boolean): void { - this.operator = operator; - this.operatorMeeting = this.operator.v_operator_meetings; - this.operatorMeetingEntriesById = Utils.getSortedObjFromArray(this.operatorMeeting, 'id'); - this.modalOperatorMeetingEdit.closeModal(); - this.generateEntries(); - if (isUpdate) { - this.operatorMeetingDetail.updateData(operator); - } else { - this.modalOperatorMeetingDetail.closeModal(); - } - } - - /** - * Generates AG grid entries - */ - public generateEntries(): void { - this.rowData = []; - const items: {}[] = []; - for (let i = 0; i < this.operatorMeeting.length; i++) { - - this.owner = this.appService.getConfig().vc_user_by_id[this.operatorMeeting[i].owner_user_id]; - this.meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.operatorMeeting[i].meeting_type_id]; - let operatorContactName: string = !isNull(this.operatorMeeting[i].firstname) ? this.operatorMeeting[i].firstname + ' ' : ''; - operatorContactName += !isNull(this.operatorMeeting[i].lastname) ? this.operatorMeeting[i].lastname : ''; - const creator: IUser = this.appService.getConfig().vc_user_by_id[this.operatorMeeting[i].creation_user_id]; - - items.push({ - that: this, - id: this.operatorMeeting[i].id, - title: this.operatorMeeting[i].title, - date: this.operatorMeeting[i].start_date, - time_start: this.operatorMeeting[i].start_date, - time_end: this.operatorMeeting[i].end_date, - type: this.meetingType.name, - typeType: this.meetingType.type, - street: this.operatorMeeting[i].street, - street_no: this.operatorMeeting[i].street_no, - zip: this.operatorMeeting[i].zip, - city: this.operatorMeeting[i].city, - owner: this.owner.firstname + ' ' + this.owner.lastname, - creator: creator.firstname + ' ' + creator.lastname, - operatorContactName, - participants: this.operatorMeeting[i].v_participants, - department: this.operatorMeeting[i].department, - email: this.operatorMeeting[i].email, - phone: this.operatorMeeting[i].phone_no, - mobile: this.operatorMeeting[i].mobile_no, - }); - } - this.rowData = items.sort((a: {} , b: {}) => this.dateComparator(a['date'], b['date'], false)); - } - - /** - * On row click - * @param e - */ - public rowClicked(e: any) { - this.modalOperatorMeetingDetail.openModal(); - this.operatorMeetingDetail.setData(this.operator, this.operatorMeetingEntriesById[e.data.id]); - } - - /** - * On create click - */ - public create(): void { - this.modalOperatorMeetingEdit.openModal(); - this.operatorMeetingEdit.setData(this.operator, Factory.getEmptyOperatorMeeting(this.operator.id), true); - } - - /** - * Creates operator meeting - * @param operatorMeeting - */ - public createOperatorMeetingFunction(operatorMeeting: IOperatorMeeting): void { - this.createMeeting.emit(operatorMeeting); - } - - /** - * Edits meeting entry - * @param operatorMeeting - */ - public editOperatorMeetingFunction(operatorMeeting: IOperatorMeeting) { - this.editMeeting.emit(operatorMeeting); - } - - /** - * Deletes operator meeting - * @param meetingId - */ - public deleteOperatorMeetingFunction(meetingId: number): void { - this.deleteMeeting.emit(meetingId); - } - - /** - * Edit report after meeting has started - * @param reportValues - */ - public editOperatorMeetingReportFunction(reportValues: any): void { - this.editMeetingReport.emit(reportValues); - } - - ngOnDestroy(): void { - - } - -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-detail/operator-note-detail.component.html b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-detail/operator-note-detail.component.html deleted file mode 100644 index c503ab0..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-detail/operator-note-detail.component.html +++ /dev/null @@ -1,45 +0,0 @@ -
-

Notiz Detail

-

Erstellt am {{creationDate}} von {{operatorNote.creation_user_firstname}} - {{operatorNote.creation_user_lastname}}

-
-
-
-
Datum:
-
{{noteDate}}
-
Betreff:
-
{{operatorNote.title}}
-
Gesprächspartner:
-
Herr - Frau - Divers {{operatorNote.firstname}} {{operatorNote.lastname}}
-
Abteilung:
-
{{operatorNote.department}}
-
E-Mail:
-
{{operatorNote.email}}
-
Telefon:
-
{{operatorNote.phone_no}}
-
Mobil:
-
{{operatorNote.mobile_no}}
-
Fax:
-
{{operatorNote.fax_no}}
-
Notiz:
-
{{operatorNote.comment}}
-
-
-
- -
-
-
-
Eintrag bearbeiten
-
Eintrag löschen
-
-
-
-
-
-
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-detail/operator-note-detail.component.scss b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-detail/operator-note-detail.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-detail/operator-note-detail.component.ts b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-detail/operator-note-detail.component.ts deleted file mode 100644 index 650e36b..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-detail/operator-note-detail.component.ts +++ /dev/null @@ -1,94 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {IOperatorNote} from '../../../../model/entities/operator-note'; -import {OperatorNoteEditComponent} from '../operator-note-edit/operator-note-edit.component'; -import {IOperator} from '../../../../model/entities/operator'; - -@Component({ - selector: 'app-operator-note-detail', - templateUrl: './operator-note-detail.component.html', - styleUrls: ['./operator-note-detail.component.scss'] -}) - -export class OperatorNoteDetailComponent implements OnInit { - - @Output() editNote: EventEmitter = new EventEmitter(); - @Output() deleteNote: EventEmitter = new EventEmitter(); - @ViewChild('operatorNoteEdit', { static: true }) operatorNoteEdit: OperatorNoteEditComponent; - - public operator: IOperator; - public operatorNote: IOperatorNote; - public creationDate: string; - public isEditMode: boolean; - public noteDate: string; - public hasEditRights: boolean; - - constructor(public appService: AppService) { } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_ACCOUNTING); - this.operator = Factory.getEmptyOperator(); - this.operatorNote = Factory.getEmptyOperatorNote(); - this.creationDate = ''; - this.isEditMode = false; - this.noteDate = ''; - } - - /** - * Set data - */ - public setData(operator: IOperator, operatorNote: IOperatorNote): void { - this.operator = operator; - this.operatorNote = operatorNote; - this.creationDate = Utils.getDateTimeToDisplay(this.operatorNote.creation_date); - this.isEditMode = false; - this.noteDate = Utils.getDateTimeToDisplay(this.operatorNote.note_date); - } - - /** - * Updates data - * @param operator - */ - public updateData(operator: IOperator): void { - this.operator = operator; - for (let i = 0; i < this.operator.v_operator_notes.length; i++) { - if (this.operator.v_operator_notes[i].id == this.operatorNote.id) { - this.operatorNote = this.operator.v_operator_notes[i]; - this.noteDate = Utils.getDateTimeToDisplay(this.operatorNote.note_date); - } - } - this.isEditMode = false; - } - - /** - * Edit note entry - */ - public editEntry(): void { - this.isEditMode = true; - this.operatorNoteEdit.setData(this.operator, Utils.deepClone(this.operatorNote) as IOperatorNote); - } - - /** - * Edits note entry - * @param operatorNote - */ - public editOperatorNoteFunction(operatorNote: IOperatorNote) { - this.editNote.emit(operatorNote); - } - - /** - * Delete note entry - */ - public deleteEntry(): void { - const confirmAction = confirm('Wollen Sie diesen Eintrag wirklich löschen?'); - if (confirmAction == true) { - this.deleteNote.emit(this.operatorNote.id); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-edit/operator-note-edit.component.html b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-edit/operator-note-edit.component.html deleted file mode 100644 index d431eec..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-edit/operator-note-edit.component.html +++ /dev/null @@ -1,116 +0,0 @@ -

Notiz anlegen

-

Notiz bearbeiten

-
-
-
-

{{ errorMsg }}

-

- Datum ist ein Pflichtfeld. -

-

- Betreff ist ein Pflichtfeld. -

-
-
-
-
-
-
- - -
-
-
-
-
- - -
-
-
-
- - -
-
-
-
-
-
- - -
-
-
- - -
-
-
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
-
-
-
-
- -
-
- - -
-
-
diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-edit/operator-note-edit.component.scss b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-edit/operator-note-edit.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-edit/operator-note-edit.component.ts b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-edit/operator-note-edit.component.ts deleted file mode 100644 index 1758310..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-edit/operator-note-edit.component.ts +++ /dev/null @@ -1,127 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {FormComponent} from '../../../../components/form-component'; -import {NgForm} from '@angular/forms'; -import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {isNull} from 'util'; -import {IOperatorNote} from '../../../../model/entities/operator-note'; -import {IOperator} from '../../../../model/entities/operator'; -import {IOperatorContact} from '../../../../model/entities/operator-contact'; - -@Component({ - selector: 'app-operator-note-edit', - templateUrl: './operator-note-edit.component.html', - styleUrls: ['./operator-note-edit.component.scss'] -}) - -export class OperatorNoteEditComponent extends FormComponent implements OnInit { - - @Output() createNote: EventEmitter = new EventEmitter(); - @Output() editNote: EventEmitter = new EventEmitter(); - @ViewChild('operatorNoteForm', { static: true }) operatorNoteForm: NgForm; - - public operator: IOperator; - public operatorNote: IOperatorNote; - public operatorContacts: IOperatorContact[]; - public operatorContactsById: {}; - public isExistingOperatorContact: boolean; - public contactId: string; - - constructor(protected scrollToService: ScrollToService) { - super(scrollToService); - } - - ngOnInit() { - this.operator = Factory.getEmptyOperator(); - this.operatorNote = Factory.getEmptyOperatorNote(); - this.operatorContacts = []; - this.operatorContactsById = {}; - this.errorMsg = ''; - this.contactId = ''; - this.isCreationMode = false; - this.isExistingOperatorContact = false; - } - - /** - * Sets data - * @param operator - * @param operatorNote - * @param isCreationMode - */ - public setData(operator: IOperator, operatorNote: IOperatorNote, isCreationMode = false): void { - this.operator = operator; - this.operatorNote = operatorNote; - this.operatorContacts = this.operator.v_operator_contacts; - this.operatorContactsById = Utils.getSortedObjFromArray(this.operatorContacts, 'id'); - this.operatorNote.operator_id = this.operator.id; - this.contactId = ''; - this.isCreationMode = isCreationMode; - this.errorMsg = ''; - if (isNull(this.operatorNote.operator_contact_id)) { - this.operatorNote.operator_contact_id = -1; - } - if (this.operatorNote.operator_contact_id > 0) { - this.isExistingOperatorContact = true; - } - this.resetFormValidation(); - } - - /** - * On select contact - * @param e - */ - public selectContact(e: any) { - this.operatorNote.operator_contact_id = e.target.value; - this.isExistingOperatorContact = false; - this.operatorNote.gender = null; - this.operatorNote.firstname = null; - this.operatorNote.lastname = null; - this.operatorNote.department = null; - this.operatorNote.email = null; - this.operatorNote.phone_no = null; - this.operatorNote.mobile_no = null; - this.operatorNote.fax_no = null; - if (this.operatorNote.operator_contact_id > 0) { - this.operatorNote.gender = this.operatorContactsById[this.operatorNote.operator_contact_id].gender; - this.operatorNote.firstname = this.operatorContactsById[this.operatorNote.operator_contact_id].firstname; - this.operatorNote.lastname = this.operatorContactsById[this.operatorNote.operator_contact_id].lastname; - this.operatorNote.department = this.operatorContactsById[this.operatorNote.operator_contact_id].department; - this.operatorNote.email = this.operatorContactsById[this.operatorNote.operator_contact_id].email; - this.operatorNote.phone_no = this.operatorContactsById[this.operatorNote.operator_contact_id].phone_no; - this.operatorNote.mobile_no = this.operatorContactsById[this.operatorNote.operator_contact_id].mobile_no; - this.operatorNote.fax_no = this.operatorContactsById[this.operatorNote.operator_contact_id].fax_no; - this.isExistingOperatorContact = true; - } - } - - /** - * Resets Form Validation - */ - public resetFormValidation(): void { - this.operatorNoteForm.form.markAsUntouched(); - } - - /** - * Saves operator - * @param value - * @param valid - */ - public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { - this.errorMsg = 'Bitte beheben Sie alle Fehler.'; - if (valid) { - if (this.operatorNote.operator_contact_id == -1) { - this.operatorNote.operator_contact_id = null; - } - if (this.isCreationMode) { - this.createNote.emit(this.operatorNote); - } else { - this.editNote.emit(this.operatorNote); - } - this.errorMsg = ''; - } else { - this.scrollUp(this.isCreationMode ? 'operator-note-modal' : 'operator-note-edit-modal'); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-view/operator-note-view.component.html b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-view/operator-note-view.component.html deleted file mode 100644 index 101250d..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-view/operator-note-view.component.html +++ /dev/null @@ -1,32 +0,0 @@ -

Notizen

-
Notiz hinzufügen
-
- - -
-
- - -
- - - - - - -
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-view/operator-note-view.component.scss b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-view/operator-note-view.component.scss deleted file mode 100644 index 6ab8792..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-view/operator-note-view.component.scss +++ /dev/null @@ -1,14 +0,0 @@ -#create-operator-note { - position: absolute; - right: 0; - top: -6rem; -} - -@media only screen and (max-width: 1004px) { - #create-operator-note { - position: relative; - right: auto; - top: auto; - display: inline-block; - } -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-view/operator-note-view.component.ts b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-view/operator-note-view.component.ts deleted file mode 100644 index 51d8f69..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-note-view/operator-note-view.component.ts +++ /dev/null @@ -1,162 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {AgGridComponent} from '../../../../components/ag-grid-component'; -import {ModalComponent} from '../../../../components/modal/modal.component'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {IOperatorNote} from '../../../../model/entities/operator-note'; -import {OperatorNoteEditComponent} from '../operator-note-edit/operator-note-edit.component'; -import {OperatorNoteDetailComponent} from '../operator-note-detail/operator-note-detail.component'; -import {IOperator} from '../../../../model/entities/operator'; - -@Component({ - selector: 'app-operator-note-view', - templateUrl: './operator-note-view.component.html', - styleUrls: ['./operator-note-view.component.scss'] -}) - -export class OperatorNoteViewComponent extends AgGridComponent implements OnInit { - - @Output() createNote: EventEmitter = new EventEmitter(); - @Output() editNote: EventEmitter = new EventEmitter(); - @Output() deleteNote: EventEmitter = new EventEmitter(); - @ViewChild('modalOperatorNoteEdit', { static: true }) modalOperatorNoteEdit: ModalComponent; - @ViewChild('operatorNoteEdit', { static: true }) operatorNoteEdit: OperatorNoteEditComponent; - @ViewChild('modalOperatorNoteDetail', { static: true }) modalOperatorNoteDetail: ModalComponent; - @ViewChild('operatorNoteDetail', { static: true }) operatorNoteDetail: OperatorNoteDetailComponent; - - public operator: IOperator; - public operatorNote: IOperatorNote[]; - public operatorNoteEntriesById: {}; - public hasEditRights: boolean; - - constructor(public appService: AppService) { - super(); - } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_ACCOUNTING); - this.operator = Factory.getEmptyOperator(); - this.operatorNote = []; - this.operatorNoteEntriesById = {}; - - this.defaultColDef = { - resizable: true, - sortable: true - }; - - this.columnDefs = [ - {headerName: 'Erstellungsdatum', field: 'creation_date', cellRenderer: this.dateRenderer, comparator: this.dateComparator }, - {headerName: 'Ersteller', field: 'creator' }, - {headerName: 'Datum', field: 'date', cellRenderer: this.dateRenderer, comparator: this.dateComparator }, - {headerName: 'Betreff', field: 'title' }, - {headerName: 'Notiz', field: 'comment' }, - {headerName: 'Anrede', field: 'gender', width: 90 }, - {headerName: 'Vorname', field: 'firstname' }, - {headerName: 'Nachname', field: 'lastname' }, - {headerName: 'Abteilung', field: 'department' }, - {headerName: 'E-Mail Adresse', field: 'email', cellRenderer: this.emailRenderer }, - {headerName: 'Telefon', field: 'phone_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Mobil', field: 'mobile_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Fax', field: 'fax_no' }, - ]; - } - - /** - * Sets data - * @param operator - * @param isUpdate - */ - public setData(operator: IOperator, isUpdate: boolean): void { - this.operator = operator; - this.operatorNote = this.operator.v_operator_notes; - this.operatorNoteEntriesById = Utils.getSortedObjFromArray(this.operatorNote, 'id'); - this.modalOperatorNoteEdit.closeModal(); - this.generateEntries(); - if (isUpdate) { - this.operatorNoteDetail.updateData(operator); - } else { - this.modalOperatorNoteDetail.closeModal(); - } - } - - /** - * Generates AG grid entries - */ - public generateEntries(): void { - this.rowData = []; - const items: {}[] = []; - for (let i = 0; i < this.operatorNote.length; i++) { - let ccGender = ''; - if (this.operatorNote[i].gender == 'male') { - ccGender = 'Herr'; - } else if (this.operatorNote[i].gender == 'female') { - ccGender = 'Frau'; - } else if (this.operatorNote[i].gender == 'diverse') { - ccGender = 'Divers'; - } - items.push({ - id: this.operatorNote[i].id, - date: this.operatorNote[i].note_date, - title: this.operatorNote[i].title, - comment: this.operatorNote[i].comment, - gender: ccGender, - firstname: this.operatorNote[i].firstname, - lastname: this.operatorNote[i].lastname, - email: this.operatorNote[i].email, - phone_no: this.operatorNote[i].phone_no, - mobile_no: this.operatorNote[i].mobile_no, - fax_no: this.operatorNote[i].fax_no, - department: this.operatorNote[i].department, - creation_date: this.operatorNote[i].creation_date, - creator: this.operatorNote[i].creation_user_firstname + ' ' + this.operatorNote[i].creation_user_lastname, - }); - this.rowData = items.sort((a: {} , b: {}) => this.dateComparator(a['date'], b['date'], false)); - } - } - - /** - * On row click - * @param e - */ - public rowClicked(e: any) { - this.modalOperatorNoteDetail.openModal(); - this.operatorNoteDetail.setData(this.operator, this.operatorNoteEntriesById[e.data.id]); - } - - /** - * On create click - */ - public create(): void { - this.modalOperatorNoteEdit.openModal(); - this.operatorNoteEdit.setData(this.operator, Factory.getEmptyOperatorNote(this.operator.id, Utils.getCurrentDate()), true); - } - - /** - * Creates operator note - * @param operatorNote - */ - public createOperatorNoteFunction(operatorNote: IOperatorNote): void { - this.createNote.emit(operatorNote); - } - - /** - * Edits note entry - * @param operatorNote - */ - public editOperatorNoteFunction(operatorNote: IOperatorNote) { - this.editNote.emit(operatorNote); - } - - /** - * Deletes operator note - * @param noteId - */ - public deleteOperatorNoteFunction(noteId: number): void { - this.deleteNote.emit(noteId); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-view.component.html b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-view.component.html deleted file mode 100644 index ffe1ba4..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-view.component.html +++ /dev/null @@ -1,32 +0,0 @@ -

{{operator.name}}

- - -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
-
diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-view.component.scss b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-view.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-view.component.ts b/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-view.component.ts deleted file mode 100644 index 6a00811..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operator-view/operator-view.component.ts +++ /dev/null @@ -1,156 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {IOperator} from '../../../model/entities/operator'; -import {TabsComponent} from '../../../components/tabs/tabs.component'; -import {Factory} from '../../../factory/factory'; -import {OperatorMeetingViewComponent} from './operator-meeting-view/operator-meeting-view.component'; -import {OperatorNoteViewComponent} from './operator-note-view/operator-note-view.component'; -import {OperatorContactPersonViewComponent} from './operator-contact-person-view/operator-contact-person-view.component'; -import {OperatorDataViewComponent} from './operator-data-view/operator-data-view.component'; -import {IOperatorMeeting} from '../../../model/entities/operator-meeting'; -import {IOperatorNote} from '../../../model/entities/operator-note'; -import {IOperatorContact} from '../../../model/entities/operator-contact'; - -@Component({ - selector: 'app-operator-view', - templateUrl: './operator-view.component.html', - styleUrls: ['./operator-view.component.scss'] -}) - -export class OperatorViewComponent implements OnInit { - - @Output() editOperator: EventEmitter = new EventEmitter(); - @Output() createOperatorContact: EventEmitter = new EventEmitter(); - @Output() editOperatorContact: EventEmitter = new EventEmitter(); - @Output() deleteOperatorContact: EventEmitter = new EventEmitter(); - @Output() createNote: EventEmitter = new EventEmitter(); - @Output() editNote: EventEmitter = new EventEmitter(); - @Output() deleteNote: EventEmitter = new EventEmitter(); - @Output() createMeeting: EventEmitter = new EventEmitter(); - @Output() editMeeting: EventEmitter = new EventEmitter(); - @Output() deleteMeeting: EventEmitter = new EventEmitter(); - @Output() editMeetingReport: EventEmitter = new EventEmitter(); - @Output() shortcut: EventEmitter = new EventEmitter(); - @ViewChild('tabsOperatorView', { static: true }) tabsOperatorView: TabsComponent; - @ViewChild('operatorDataView', { static: true }) operatorDataView: OperatorDataViewComponent; - @ViewChild('operatorContactPersonView', { static: true }) operatorContactPersonView: OperatorContactPersonViewComponent; - @ViewChild('operatorNoteView', { static: true }) operatorNoteView: OperatorNoteViewComponent; - @ViewChild('operatorMeetingView', { static: true }) operatorMeetingView: OperatorMeetingViewComponent; - - public operator: IOperator; - - constructor() { } - - ngOnInit() { - this.operator = Factory.getEmptyOperator(); - } - - /** - * Sets data - * @param operator - * @param isUpdate - */ - public setData(operator: IOperator, isUpdate: boolean = false): void { - this.operator = operator; - this.operatorDataView.setData(this.operator); - this.operatorContactPersonView.setData(this.operator, isUpdate); - this.operatorNoteView.setData(this.operator, isUpdate); - this.operatorMeetingView.setData(this.operator, isUpdate); - } - - /** - * Saves operator - * @param operator - */ - public editOperatorFunction(operator: IOperator): void { - this.editOperator.emit(operator); - } - - /** - * Creates operator contact - * @param operatorContact - */ - public createOperatorContactFunction(operatorContact: IOperatorContact): void { - this.createOperatorContact.emit(operatorContact); - } - - /** - * Edit operator contact - * @param operatorContact - */ - public editOperatorContactFunction(operatorContact: IOperatorContact): void { - this.editOperatorContact.emit(operatorContact); - } - - /** - * Creates operator note - * @param operatorNote - */ - public createOperatorNoteFunction(operatorNote: IOperatorNote): void { - this.createNote.emit(operatorNote); - } - - /** - * Edits note entry - * @param operatorNote - */ - public editOperatorNoteFunction(operatorNote: IOperatorNote) { - this.editNote.emit(operatorNote); - } - - /** - * Deletes operator note - * @param noteId - */ - public deleteOperatorNoteFunction(noteId: number): void { - this.deleteNote.emit(noteId); - } - - /** - * Deletes operator contact - * @param operatorId - */ - public deleteOperatorContactFunction(operatorId: number): void { - this.deleteOperatorContact.emit(operatorId); - } - - /** - * Creates operator meeting - * @param operatorMeeting - */ - public createOperatorMeetingFunction(operatorMeeting: IOperatorMeeting): void { - this.createMeeting.emit(operatorMeeting); - } - - /** - * Edits meeting entry - * @param operatorMeeting - */ - public editOperatorMeetingFunction(operatorMeeting: IOperatorMeeting) { - this.editMeeting.emit(operatorMeeting); - } - - /** - * Deletes operator meeting - * @param meetingId - */ - public deleteOperatorMeetingFunction(meetingId: number): void { - this.deleteMeeting.emit(meetingId); - } - - /** - * Edit report after meeting has started - * @param reportValues - */ - public editOperatorMeetingReportFunction(reportValues: any): void { - this.editMeetingReport.emit(reportValues); - } - - /** - * Shortcut to operator detail - * @param operator - */ - public shortcutFunction(operator: IOperator): void { - this.shortcut.emit(operator); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operators-contact-list/operators-contact-list.component.html b/httpdocs/plp-angular/src/app/views/operators/operators-contact-list/operators-contact-list.component.html deleted file mode 100644 index e6433c0..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operators-contact-list/operators-contact-list.component.html +++ /dev/null @@ -1,30 +0,0 @@ -
Ansprechpartner exportieren
-
Weihnachtspost-Etiketten
- -
- - -
- -
- - -
- - - - diff --git a/httpdocs/plp-angular/src/app/views/operators/operators-contact-list/operators-contact-list.component.scss b/httpdocs/plp-angular/src/app/views/operators/operators-contact-list/operators-contact-list.component.scss deleted file mode 100644 index 7273abc..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operators-contact-list/operators-contact-list.component.scss +++ /dev/null @@ -1,11 +0,0 @@ -#xmas-mail { - position: absolute; - right: 0; - top: 0; -} - -#export-operator-contacts { - position: absolute; - right: 225px; - top: 0; -} \ No newline at end of file diff --git a/httpdocs/plp-angular/src/app/views/operators/operators-contact-list/operators-contact-list.component.ts b/httpdocs/plp-angular/src/app/views/operators/operators-contact-list/operators-contact-list.component.ts deleted file mode 100644 index 6de3e15..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operators-contact-list/operators-contact-list.component.ts +++ /dev/null @@ -1,161 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {AgGridComponent} from '../../../components/ag-grid-component'; -import {ModalComponent} from '../../../components/modal/modal.component'; -import {OperatorContactPersonDetailComponent} from '../operator-view/operator-contact-person-detail/operator-contact-person-detail.component'; -import {IOperator} from '../../../model/entities/operator'; -import {OperatorService} from '../../../services/operator.service'; -import {IOperatorContact} from '../../../model/entities/operator-contact'; -import {Utils} from '../../../utils/utils'; -import {Const} from '../../../utils/const'; -import {AppService} from '../../../services/app.service'; -import {CommonService} from '../../../services/common.service'; - -@Component({ - selector: 'app-operators-contact-list', - templateUrl: './operators-contact-list.component.html', - styleUrls: ['./operators-contact-list.component.scss'] -}) - -export class OperatorsContactListComponent extends AgGridComponent implements OnInit { - - @Output() shortcut: EventEmitter = new EventEmitter(); - @ViewChild('modalOperatorsContactPersonDetailList', { static: true }) modalOperatorsContactPersonDetailList: ModalComponent; - @ViewChild('operatorContactPersonDetailList', { static: true }) operatorContactPersonDetailList: OperatorContactPersonDetailComponent; - - public operators: IOperator[]; - public operatorsById: {}; - private operatorContacts: IOperatorContact[]; - public operatorContactsById: {}; - public hasAdminRights: boolean; - public hasExportRights: boolean; - - constructor(public appService: AppService, private operatorService: OperatorService, private commonService: CommonService) { - super(); - } - - ngOnInit() { - this.hasAdminRights = this.appService.userHasRole(Const.USER_ROLE_ADMIN); - this.hasExportRights = - this.appService.userHasRole(Const.USER_ROLE_ADMIN) || - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE); - this.operators = []; - this.operatorsById = {}; - this.operatorContacts = []; - this.operatorContactsById = {}; - - this.defaultColDef = { - resizable: true, - sortable: true - }; - - this.columnDefs = [ - {headerName: 'ID', field: 'id', width: 60 }, - {headerName: 'Betreiber ID', field: 'operator_id', width: 100 }, - {headerName: 'Betreiber', field: 'operator' }, - {headerName: 'Vorname', field: 'firstname' }, - {headerName: 'Nachname', field: 'lastname' }, - {headerName: 'Abteilung', field: 'department' }, - {headerName: 'E-Mail Adresse', field: 'email', cellRenderer: this.emailRenderer }, - {headerName: 'Telefon', field: 'phone_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Mobil', field: 'mobile_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Fax', field: 'fax_no' }, - {headerName: 'Bemerkungen', field: 'comment' } - ]; - - this.rowSelection = 'single'; - } - - /** - * Sets data - * @param operators - * @param operatorContacts - */ - public setData(operators: IOperator[], operatorContacts: IOperatorContact[]): void { - this.operators = operators; - this.operatorsById = Utils.getSortedObjFromArray(this.operators, 'id'); - this.operatorContacts = operatorContacts; - this.operatorContactsById = Utils.getSortedObjFromArray(this.operatorContacts, 'id'); - this.generateEntries(); - } - - /** - * Generates AG grid entries for operators grid - */ - public generateEntries(): void { - this.rowData = []; - - for (let i = 0; i < this.operatorContacts.length; i++) { - this.rowData.push({ - id: this.operatorContacts[i].id, - operator_id: this.operatorContacts[i].operator_id, - operator: this.operatorsById[this.operatorContacts[i].operator_id].name, - firstname: this.operatorContacts[i].firstname, - lastname: this.operatorContacts[i].lastname, - department: this.operatorContacts[i].department, - email: this.operatorContacts[i].email, - phone_no: this.operatorContacts[i].phone_no, - mobile_no: this.operatorContacts[i].mobile_no, - fax_no: this.operatorContacts[i].fax_no, - comment: this.operatorContacts[i].comment - }); - } - } - - /** - * Row is clicked - * @param e - */ - public rowClicked(e: any) { - this.modalOperatorsContactPersonDetailList.openModal(); - this.operatorContactPersonDetailList.setData(this.operatorsById[e.data.operator_id], Utils.deepClone(this.operatorContactsById[e.data.id]) as IOperatorContact); - } - - /** - * Edit operator contact - * @param operatorContact - */ - public editOperatorContactFunction(operatorContact: IOperatorContact): void { - this.operatorService.apiEditOperatorContact(operatorContact).subscribe( - data => { - this.operatorContactPersonDetailList.updateData(data.result_data as IOperator); - }, - error => {} - ); - } - - /** - * Delete operator contact - * @param operatorId - */ - public deleteOperatorContactFunction(operatorId: number): void { - this.operatorService.apiDeleteOperatorContact(operatorId).subscribe( - data => { - this.modalOperatorsContactPersonDetailList.closeModal(); - }, - error => {} - ); - } - - /** - * Shortcut to operator detail - * @param operator - */ - public shortcutFunction(operator: IOperator): void { - this.modalOperatorsContactPersonDetailList.closeModal(); - this.shortcut.emit(operator); - } - - /** - * Export operator contacts pdf - */ - public exportOperatorContactsPdf(): void { - this.commonService.apiExportContactsPdf('Betreiber_Kontakte', 'operator'); - } - - /** - * Export operator xmas pdf - */ - public exportXmasPdf(): void { - this.commonService.apiExportXmasPdf('Betreiber_Weihnachten', 'operator'); - } -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operators-list/operators-list.component.html b/httpdocs/plp-angular/src/app/views/operators/operators-list/operators-list.component.html deleted file mode 100644 index e9b16c6..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operators-list/operators-list.component.html +++ /dev/null @@ -1,24 +0,0 @@ -
Betreiber anlegen
- -
- - -
- -
- - -
diff --git a/httpdocs/plp-angular/src/app/views/operators/operators-list/operators-list.component.scss b/httpdocs/plp-angular/src/app/views/operators/operators-list/operators-list.component.scss deleted file mode 100644 index 08c69a2..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operators-list/operators-list.component.scss +++ /dev/null @@ -1,14 +0,0 @@ -#create-operator { - position: absolute; - right: 0; - top: 0; -} - -@media only screen and (max-width: 1004px) { - #create-operator { - position: relative; - right: auto; - top: auto; - display: inline-block; - } -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operators-list/operators-list.component.ts b/httpdocs/plp-angular/src/app/views/operators/operators-list/operators-list.component.ts deleted file mode 100644 index 60ce956..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operators-list/operators-list.component.ts +++ /dev/null @@ -1,112 +0,0 @@ -import {Component, EventEmitter, OnInit, Output} from '@angular/core'; -import {AgGridComponent} from '../../../components/ag-grid-component'; -import {AppService} from '../../../services/app.service'; -import {Const} from '../../../utils/const'; -import {IOperator} from '../../../model/entities/operator'; -import {isNull} from 'util'; - -@Component({ - selector: 'app-operators-list', - templateUrl: './operators-list.component.html', - styleUrls: ['./operators-list.component.scss'] -}) - -export class OperatorsListComponent extends AgGridComponent implements OnInit { - - @Output() rowIsClicked: EventEmitter = new EventEmitter(); - @Output() createNewOperator: EventEmitter = new EventEmitter(); - - private operators: IOperator[]; - public rowClassRules: {}; - public hasEditRights: boolean; - - constructor(public appService: AppService) { - super(); - } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_ACCOUNTING); - this.operators = []; - - this.defaultColDef = { - resizable: true, - sortable: true - }; - - this.columnDefs = [ - {headerName: 'ID', field: 'operator_id', width: 60 }, - {headerName: 'Status', field: 'active', width: 90 }, - {headerName: 'Name', field: 'operator_name' }, - {headerName: 'Name Zusatz', field: 'operator_name_additional' }, - {headerName: 'Alte PLP Kennung', field: 'old_plp_id' }, - {headerName: 'Straße', field: 'street' }, - {headerName: 'Hausnummer', field: 'street_no' }, - {headerName: 'PLZ', field: 'zip' }, - {headerName: 'Ort', field: 'city' }, - {headerName: 'Internetadresse', field: 'url', cellRenderer: this.urlRenderer }, - {headerName: 'Bemerkungen (Allgemein)', field: 'comment' } - ]; - - this.rowSelection = 'single'; - - this.rowClassRules = { - inactive(params) { - return !params.data.active_state; - } - }; - } - - /** - * Sets data - * @param operators - */ - public setData(operators: IOperator[]): void { - this.operators = operators; - this.generateEntries(); - } - - /** - * Generates AG grid entries for operators grid - */ - public generateEntries(): void { - this.rowData = []; - - if (!isNull(this.operators)) { - for (let i = 0; i < this.operators.length; i++) { - this.rowData.push({ - operator_id: this.operators[i].id, - active_state: this.operators[i].active, - active: this.operators[i].active ? 'Aktiv' : 'Inaktiv', - operator_name: this.operators[i].name, - operator_name_additional: this.operators[i].name_additional, - old_plp_id: this.operators[i].old_plp_id, - street: this.operators[i].street, - street_no: this.operators[i].street_no, - zip: this.operators[i].zip, - city: this.operators[i].city, - url: this.operators[i].url, - comment: this.operators[i].comment, - }); - } - } - - } - - /** - * Row is clicked - * @param e - */ - public rowClicked(e: any) { - this.rowIsClicked.emit(e); - } - - /** - * OnClick Create Operator - */ - public createOperator(): void { - this.createNewOperator.emit(true); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/operators/operators.component.html b/httpdocs/plp-angular/src/app/views/operators/operators.component.html deleted file mode 100644 index 58a9c81..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operators.component.html +++ /dev/null @@ -1,34 +0,0 @@ -
-

Betreiber

- - - - - - - - - -
- - - - - -
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/operators/operators.component.scss b/httpdocs/plp-angular/src/app/views/operators/operators.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/operators/operators.component.ts b/httpdocs/plp-angular/src/app/views/operators/operators.component.ts deleted file mode 100644 index eaa1141..0000000 --- a/httpdocs/plp-angular/src/app/views/operators/operators.component.ts +++ /dev/null @@ -1,279 +0,0 @@ -import {Component, ElementRef, OnDestroy, OnInit, ViewChild} from '@angular/core'; -import {AgGridComponent} from '../../components/ag-grid-component'; -import {AppService} from '../../services/app.service'; -import {MeetingService} from '../../services/meeting.service'; -import {TabsComponent} from '../../components/tabs/tabs.component'; -import {ModalComponent} from '../../components/modal/modal.component'; -import {Subscription} from 'rxjs'; -import {OperatorViewComponent} from './operator-view/operator-view.component'; -import {OperatorsListComponent} from './operators-list/operators-list.component'; -import {OperatorsContactListComponent} from './operators-contact-list/operators-contact-list.component'; -import {IOperator} from '../../model/entities/operator'; -import {IOperatorContact} from '../../model/entities/operator-contact'; -import {Factory} from '../../factory/factory'; -import {OperatorDataEditComponent} from './operator-view/operator-data-edit/operator-data-edit.component'; -import {OperatorService} from '../../services/operator.service'; -import {IOperatorNote} from '../../model/entities/operator-note'; -import {IOperatorMeeting} from '../../model/entities/operator-meeting'; -import {isNull} from 'util'; - -@Component({ - selector: 'app-operators', - templateUrl: './operators.component.html', - styleUrls: ['./operators.component.scss'] -}) - -export class OperatorsComponent extends AgGridComponent implements OnInit, OnDestroy { - - @ViewChild('tabsCM', { static: true }) tabsCM: TabsComponent; - @ViewChild('modalOperator', { static: true }) modalOperator: ModalComponent; - @ViewChild('operatorView', { static: true }) operatorView: OperatorViewComponent; - @ViewChild('operatorsList', { static: true }) operatorsList: OperatorsListComponent; - @ViewChild('operatorsContactList', { static: true }) operatorsContactList: OperatorsContactListComponent; - @ViewChild('modalOperatorDataEdit', { static: true }) modalOperatorDataEdit: ModalComponent; - @ViewChild('operatorDataEdit', { static: true }) operatorDataEdit: OperatorDataEditComponent; - @ViewChild('headline', { static: true }) headline: ElementRef; - @ViewChild('content', { static: true }) content: ElementRef; - - private operators: IOperator[]; - private operatorsSub: Subscription; - private operatorsContactsSub: Subscription; - public operatorContacts: IOperatorContact[]; - - constructor(private appService: AppService, private operatorService: OperatorService, private meetingService: MeetingService) { - super(); - this.operatorService.apiGetOperatorData(); - } - - ngOnInit() { - this.operatorContacts = []; - - this.operatorsSub = this.operatorService.getOperators$().subscribe( - data => { - this.operators = data; - this.setComponentData(); - } - ); - - this.operatorsContactsSub = this.operatorService.getOperatorContacts$().subscribe( - data => { - this.operatorContacts = data; - this.setComponentData(); - } - ); - } - - /** - * Set component data after all data has been received - */ - private setComponentData() { - if (!isNull(this.operators) && !isNull(this.operatorContacts)) { - this.operatorsList.setData(this.operators); - this.operatorsContactList.setData(this.operators, this.operatorContacts); - } - } - - /** - * Operator row is clicked - * @param e - */ - public rowClickedOperator(e: any) { - this.operatorService.apiGetOperatorFull(e.data.operator_id).subscribe( - data => { - this.operatorView.setData(data.result_data as IOperator); - this.modalOperator.openModal(); - }, - error => {} - ); - } - - /** - * OnClick Create operator - */ - public createOperator(): void { - this.modalOperatorDataEdit.openModal(); - this.operatorDataEdit.setData(Factory.getEmptyOperator()); - } - - /** - * Creates operator - * @param operator - */ - public createOperatorFunction(operator: IOperator): void { - this.operatorService.apiCreateOperator(operator).subscribe( - data => { - this.modalOperatorDataEdit.closeModal(); - }, - error => {} - ); - } - - /** - * Saves operator - * @param operator - */ - public editOperatorFunction(operator: IOperator): void { - this.operatorService.apiEditOperator(operator).subscribe( - data => { - this.operatorView.setData(data.result_data as IOperator); - }, - error => {} - ); - } - - /** - * Creates operator contact - * @param operatorContact - */ - public createOperatorContactFunction(operatorContact: IOperatorContact): void { - this.operatorService.apiCreateOperatorContact(operatorContact).subscribe( - data => { - this.operatorView.setData(data.result_data as IOperator); - }, - error => {} - ); - } - - /** - * Edit operator contact - * @param operatorContact - */ - public editOperatorContactFunction(operatorContact: IOperatorContact): void { - this.operatorService.apiEditOperatorContact(operatorContact).subscribe( - data => { - this.operatorView.setData(data.result_data as IOperator, true); - }, - error => {} - ); - } - - /** - * Deletes operator contact - * @param operatorId - */ - public deleteOperatorContactFunction(operatorId: number): void { - this.operatorService.apiDeleteOperatorContact(operatorId).subscribe( - data => { - this.operatorView.setData(data.result_data as IOperator); - }, - error => {} - ); - } - - /** - * Creates operator note entry - * @param operatorNote - */ - public createOperatorNoteFunction(operatorNote: IOperatorNote): void { - this.operatorService.apiCreateOperatorNote(operatorNote).subscribe( - data => { - this.operatorView.setData(data.result_data as IOperator); - }, - error => {} - ); - } - - /** - * Edits operator note entry - * @param operatorNote - */ - public editOperatorNoteFunction(operatorNote: IOperatorNote): void { - this.operatorService.apiEditOperatorNote(operatorNote).subscribe( - data => { - this.operatorView.setData(data.result_data as IOperator, true); - }, - error => {} - ); - } - - /** - * Deletes operator note entry - * @param operatorNoteId - */ - public deleteOperatorNoteFunction(operatorNoteId: number): void { - this.operatorService.apiDeleteOperatorNote(operatorNoteId).subscribe( - data => { - this.operatorView.setData(data.result_data as IOperator); - }, - error => {} - ); - } - - /** - * Creates operator meeting entry - * @param operatorMeeting - */ - public createOperatorMeetingFunction(operatorMeeting: IOperatorMeeting): void { - this.meetingService.apiCreateOperatorMeeting(operatorMeeting).subscribe( - data => { - this.operatorView.setData(data.result_data as IOperator); - }, - error => {} - ); - } - - /** - * Edits operator meeting entry - * @param operatorMeeting - */ - public editOperatorMeetingFunction(operatorMeeting: IOperatorMeeting): void { - this.meetingService.apiEditOperatorMeeting(operatorMeeting).subscribe( - data => { - this.operatorView.setData(data.result_data as IOperator, true); - }, - error => {} - ); - } - - /** - * Deletes operator meeting entry - * @param operatorMeetingId - */ - public deleteOperatorMeetingFunction(operatorMeetingId: number): void { - this.meetingService.apiDeleteOperatorMeeting(operatorMeetingId).subscribe( - data => { - this.operatorView.setData(data.result_data as IOperator); - }, - error => {} - ); - } - - /** - * Edit report after meeting has started - * @param reportValues - */ - public editOperatorMeetingReportFunction(reportValues: any): void { - const meetingId: number = reportValues.id; - const report: string = reportValues.report; - this.meetingService.apiEditOperatorMeetingReport(meetingId, report).subscribe( - data => { - this.operatorView.setData(data.result_data as IOperator, true); - }, - error => {} - ); - } - - /** - * Shortcut to operator detail - * @param operator - */ - public shortcutFunction(operator: IOperator): void { - this.operatorService.apiGetOperatorFull(operator.id).subscribe( - data => { - this.operatorView.setData(data.result_data as IOperator); - this.modalOperator.openModal(); - }, - error => {} - ); - } - - /** - * Destroy - */ - ngOnDestroy(): void { - if (this.operatorsSub !== null && this.operatorsSub !== undefined) { - this.operatorsSub.unsubscribe(); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-detail/production-contact-person-detail.component.html b/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-detail/production-contact-person-detail.component.html deleted file mode 100644 index 3f08cd1..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-detail/production-contact-person-detail.component.html +++ /dev/null @@ -1,48 +0,0 @@ -
-

Ansprechpartner Detail

-
-
-
-
Gesprächspartner:
-
Herr - Frau - Divers {{productionContact.firstname}} {{productionContact.lastname}}
-
Abteilung:
-
{{productionContact.department}}
-
E-Mail:
-
{{productionContact.email}}
-
Telefon:
-
{{productionContact.phone_no}}
-
Mobil:
-
{{productionContact.mobile_no}}
-
Fax:
-
{{productionContact.fax_no}}
-
Adresse:
-
{{productionContact.street}} {{productionContact.street_no}}
- {{productionContact.zip}} {{productionContact.city}} -
{{config.vc_countries_by_id[productionContact.country_id]['name']}}
-
Notiz:
-
{{productionContact.comment}}
-
Markiert für Weihnachtspost:
-
- Ja - Nein -
-
-
-
-
-
-
- Zum Produzentenprofil -
Eintrag bearbeiten
-
Eintrag löschen
-
-
-
-
-
-
- -
-
\ No newline at end of file diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-detail/production-contact-person-detail.component.scss b/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-detail/production-contact-person-detail.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-detail/production-contact-person-detail.component.ts b/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-detail/production-contact-person-detail.component.ts deleted file mode 100644 index 11bea72..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-detail/production-contact-person-detail.component.ts +++ /dev/null @@ -1,108 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {IProductionContact} from '../../../../model/entities/production-contact'; -import {IProduction} from '../../../../model/entities/production'; -import { - ProductionContactPersonEditComponent -} from '../production-contact-person-edit/production-contact-person-edit.component'; - -@Component({ - selector: 'app-production-contact-person-detail', - templateUrl: './production-contact-person-detail.component.html', - styleUrls: ['./production-contact-person-detail.component.scss'] -}) - -export class ProductionContactPersonDetailComponent implements OnInit { - - @Output() deleteProductionContact: EventEmitter = new EventEmitter(); - @Output() editProductionContact: EventEmitter = new EventEmitter(); - @Output() shortcut: EventEmitter = new EventEmitter(); - @ViewChild('productionContactEdit', { static: true }) productionContactEdit: ProductionContactPersonEditComponent; - - public isEditMode: boolean; - public production: IProduction; - public productionContact: IProductionContact; - public config: IConfig; - public hasEditRights: boolean; - - constructor(public appService: AppService) { } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_PRODUCTION) || - this.appService.userHasRole(Const.USER_ROLE_SERVICE); - this.config = this.appService.getConfig(); - this.isEditMode = false; - this.production = Factory.getEmptyProduction(); - this.productionContact = Factory.getEmptyProductionContact(); - } - - /** - * Sets data - */ - public setData(production: IProduction, productionContact: IProductionContact): void { - this.setContactPersonData(production); - this.productionContact = productionContact; - } - - /** - * Updates data - * @param production - */ - public updateData(production: IProduction): void { - this.setContactPersonData(production); - for (let i = 0; i < this.production.v_production_contacts.length; i++) { - if (this.production.v_production_contacts[i].id === this.productionContact.id) { - this.productionContact = this.production.v_production_contacts[i]; - } - } - } - - /** - * Sets contact person data - * @param production - */ - public setContactPersonData(production: IProduction): void { - this.isEditMode = false; - this.production = production; - } - - /** - * Edit contact entry - */ - public editEntry(): void { - this.isEditMode = true; - this.productionContactEdit.setData(Utils.deepClone(this.productionContact) as IProductionContact); - } - - /** - * Edits meeting entry - * @param productionContact - */ - public editProductionContactFunction(productionContact: IProductionContact) { - this.editProductionContact.emit(productionContact); - } - - /** - * Delete contact entry - */ - public deleteEntry(): void { - const confirmAction = confirm('Wollen Sie diesen Ansprechpartner wirklich löschen?'); - if (confirmAction == true) { - this.deleteProductionContact.emit(this.productionContact.id); - } - } - - /** - * Shortcut to production detail - */ - public productionShortcut(): void { - this.shortcut.emit(this.production); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-edit/production-contact-person-edit.component.html b/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-edit/production-contact-person-edit.component.html deleted file mode 100644 index c012455..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-edit/production-contact-person-edit.component.html +++ /dev/null @@ -1,135 +0,0 @@ -

Ansprechpartner anlegen

-

Ansprechpartner bearbeiten

-
-
-
-

{{ errorMsg }}

-

- Anrede ist ein Pflichtfeld. -

-

- Nachname ist ein Pflichtfeld. -

-

- Bitte gültige E-Mail Adresse eingeben. -

-
-
-
-
-
-
- - -
-
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
-
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- -
-
- - -
-
-
diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-edit/production-contact-person-edit.component.scss b/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-edit/production-contact-person-edit.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-edit/production-contact-person-edit.component.ts b/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-edit/production-contact-person-edit.component.ts deleted file mode 100644 index f4bd50e..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-edit/production-contact-person-edit.component.ts +++ /dev/null @@ -1,80 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {FormComponent} from '../../../../components/form-component'; -import {NgForm} from '@angular/forms'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {Factory} from '../../../../factory/factory'; -import {isNull} from 'util'; -import {Utils} from '../../../../utils/utils'; -import {IProductionContact} from '../../../../model/entities/production-contact'; - -@Component({ - selector: 'app-production-contact-person-edit', - templateUrl: './production-contact-person-edit.component.html', - styleUrls: ['./production-contact-person-edit.component.scss'] -}) - -export class ProductionContactPersonEditComponent extends FormComponent implements OnInit { - - @Output() createProductionContact: EventEmitter = new EventEmitter(); - @Output() editProductionContact: EventEmitter = new EventEmitter(); - @ViewChild('productionContactForm', { static: true }) productionContactForm: NgForm; - - public productionContact: IProductionContact; - public config: IConfig; - - constructor(private appService: AppService, protected scrollToService: ScrollToService) { - super(scrollToService); - } - - ngOnInit() { - this.productionContact = Factory.getEmptyProductionContact(); - this.config = this.appService.getConfig(); - } - - /** - * Sets data - * @param productionContact - */ - public setData(productionContact: IProductionContact): void { - this.productionContact = productionContact; - this.isCreationMode = isNull(this.productionContact.id); - this.errorMsg = ''; - this.resetFormValidation(); - } - - /** - * Resets Form Validation - */ - public resetFormValidation(): void { - this.productionContactForm.form.markAsUntouched(); - } - - /** - * Saves production - * @param value - * @param valid - */ - public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { - this.errorMsg = 'Bitte beheben Sie alle Fehler.'; - if (valid) { - // Check if date is valid - if (isNull(this.productionContact.date_of_birth) || - (!isNull(this.productionContact.date_of_birth) && Utils.isValidDate(this.productionContact.date_of_birth))) { - if (this.isCreationMode) { - this.createProductionContact.emit(this.productionContact); - } else { - this.editProductionContact.emit(this.productionContact); - } - this.errorMsg = ''; - } else { - this.errorMsg = 'Bitte korrektes Datum eingeben.'; - this.scrollUp(this.isCreationMode ? 'production-contact-person-modal' : 'production-contact-person-edit-modal'); - } - } else { - this.scrollUp(this.isCreationMode ? 'production-contact-person-modal' : 'production-contact-person-edit-modal'); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-view/production-contact-person-view.component.html b/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-view/production-contact-person-view.component.html deleted file mode 100644 index aec0761..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-view/production-contact-person-view.component.html +++ /dev/null @@ -1,35 +0,0 @@ -

Ansprechpartner

-

Hier sind die Ansprechpartner zu sehen:

-
Ansprechpartner anlegen
-
- - -
-
- - -
- - - - - - -
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-view/production-contact-person-view.component.scss b/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-view/production-contact-person-view.component.scss deleted file mode 100644 index 17a3bcf..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-view/production-contact-person-view.component.scss +++ /dev/null @@ -1,14 +0,0 @@ -#create-production-contact { - position: absolute; - right: 0; - top: -6rem; -} - -@media only screen and (max-width: 1004px) { - #create-production-contact { - position: relative; - right: auto; - top: auto; - display: inline-block; - } -} diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-view/production-contact-person-view.component.ts b/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-view/production-contact-person-view.component.ts deleted file mode 100644 index cdb285a..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-contact-person-view/production-contact-person-view.component.ts +++ /dev/null @@ -1,181 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {AgGridComponent} from '../../../../components/ag-grid-component'; -import {ModalComponent} from '../../../../components/modal/modal.component'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {isNull} from 'util'; -import {IProductionContact} from '../../../../model/entities/production-contact'; -import {IProduction} from '../../../../model/entities/production'; -import { - ProductionContactPersonEditComponent -} from '../production-contact-person-edit/production-contact-person-edit.component'; -import { - ProductionContactPersonDetailComponent -} from '../production-contact-person-detail/production-contact-person-detail.component'; - -@Component({ - selector: 'app-production-contact-person-view', - templateUrl: './production-contact-person-view.component.html', - styleUrls: ['./production-contact-person-view.component.scss'] -}) - -export class ProductionContactPersonViewComponent extends AgGridComponent implements OnInit { - - @Output() createProductionContact: EventEmitter = new EventEmitter(); - @Output() editProductionContact: EventEmitter = new EventEmitter(); - @Output() deleteProductionContact: EventEmitter = new EventEmitter(); - @Output() shortcut: EventEmitter = new EventEmitter(); - @ViewChild('modalProductionContactPersonEdit', { static: true }) modalProductionContactPersonEdit: ModalComponent; - @ViewChild('productionContactPersonEdit', { static: true }) productionContactPersonEdit: ProductionContactPersonEditComponent; - @ViewChild('modalProductionContactPersonDetail', { static: true }) modalProductionContactPersonDetail: ModalComponent; - @ViewChild('productionContactPersonDetail', { static: true }) productionContactPersonDetail: ProductionContactPersonDetailComponent; - - public production: IProduction; - public productionContacts: IProductionContact[]; - public productionContactsById: {}; - public config: IConfig; - public hasEditRights: boolean; - - constructor(private appService: AppService) { - super(); - } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_PRODUCTION) || - this.appService.userHasRole(Const.USER_ROLE_SERVICE); - this.config = this.appService.getConfig(); - this.production = Factory.getEmptyProduction(); - this.productionContacts = []; - this.productionContactsById = {}; - - this.defaultColDef = { - resizable: true, - sortable: true - }; - - this.columnDefs = [ - {headerName: 'Anrede', field: 'gender', width: 90 }, - {headerName: 'Vorname', field: 'firstname' }, - {headerName: 'Nachname', field: 'lastname' }, - {headerName: 'Abteilung', field: 'department' }, - {headerName: 'E-Mail Adresse', field: 'email', cellRenderer: this.emailRenderer }, - {headerName: 'Telefon', field: 'phone_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Mobil', field: 'mobile_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Fax', field: 'fax_no' }, - {headerName: 'Straße', field: 'street' }, - {headerName: 'Hausnummer', field: 'street_no' }, - {headerName: 'PLZ', field: 'zip' }, - {headerName: 'Ort', field: 'city' }, - {headerName: 'Land', field: 'country' }, - {headerName: 'Bemerkungen', field: 'comment' } - ]; - } - - /** - * Sets data - * @param production - * @param isUpdate - */ - public setData(production: IProduction, isUpdate: boolean): void { - this.production = production; - this.productionContacts = this.production.v_production_contacts; - this.productionContactsById = Utils.getSortedObjFromArray(this.productionContacts, 'id'); - this.modalProductionContactPersonEdit.closeModal(); - this.generateEntries(); - if (isUpdate) { - this.productionContactPersonDetail.updateData(production); - } else { - this.modalProductionContactPersonDetail.closeModal(); - } - } - - /** - * Generates AG grid entries - */ - public generateEntries(): void { - this.rowData = []; - for (let i = 0; i < this.productionContacts.length; i++) { - let ocGender: string; - if (this.productionContacts[i].gender == 'male') { - ocGender = 'Herr'; - } else if (this.productionContacts[i].gender == 'female') { - ocGender = 'Frau'; - } else { - ocGender = 'Divers'; - } - this.rowData.push({ - id: this.productionContacts[i].id, - gender: ocGender, - firstname: this.productionContacts[i].firstname, - lastname: this.productionContacts[i].lastname, - department: this.productionContacts[i].department, - email: this.productionContacts[i].email, - phone_no: this.productionContacts[i].phone_no, - mobile_no: this.productionContacts[i].mobile_no, - fax_no: this.productionContacts[i].fax_no, - street: this.productionContacts[i].street, - street_no: this.productionContacts[i].street_no, - zip: this.productionContacts[i].zip, - city: this.productionContacts[i].city, - country: !isNull(this.productionContacts[i].country_id) ? this.config.vc_countries_by_id[this.productionContacts[i].country_id].name : null, - comment: this.productionContacts[i].comment, - }); - } - } - - /** - * On row click - * @param e - */ - public rowClicked(e: any) { - this.modalProductionContactPersonDetail.openModal(); - this.productionContactPersonDetail.setData(this.production, Utils.deepClone(this.productionContactsById[e.data.id]) as IProductionContact); - } - - /** - * On create click - */ - public create(): void { - this.modalProductionContactPersonEdit.openModal(); - this.productionContactPersonEdit.setData(Factory.getEmptyProductionContact(this.production.id)); - } - - /** - * Creates production contact - * @param productionContact - */ - public createProductionContactFunction(productionContact: IProductionContact): void { - this.createProductionContact.emit(productionContact); - } - - /** - * Edit production contact - * @param productionContact - */ - public editProductionContactFunction(productionContact: IProductionContact): void { - this.editProductionContact.emit(productionContact); - } - - /** - * Deletes production contact - * @param productionId - */ - public deleteProductionContactFunction(productionId: number): void { - this.deleteProductionContact.emit(productionId); - } - - /** - * Shortcut to production detail - * @param production - */ - public shortcutFunction(production: IProduction): void { - this.modalProductionContactPersonDetail.closeModal(); - this.shortcut.emit(production); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-edit/production-data-edit.component.html b/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-edit/production-data-edit.component.html deleted file mode 100644 index 6be4ef8..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-edit/production-data-edit.component.html +++ /dev/null @@ -1,120 +0,0 @@ -

{{production.name}} bearbeiten

-

Produzent anlegen

-
-
-
-

{{ errorMsg }}

-

- Name ist ein Pflichtfeld. -

-

- Bitte gültige E-Mail Adresse eingeben. -

-
-
-
-
-

Aktivität

- - -
-
-
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
-
-
-
- - -
-
- - -
-
-
-
-
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
-
-
-
- -
-
- - -
-
-
diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-edit/production-data-edit.component.scss b/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-edit/production-data-edit.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-edit/production-data-edit.component.ts b/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-edit/production-data-edit.component.ts deleted file mode 100644 index 218624f..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-edit/production-data-edit.component.ts +++ /dev/null @@ -1,71 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {FormComponent} from '../../../../components/form-component'; -import {NgForm} from '@angular/forms'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {Factory} from '../../../../factory/factory'; -import {isNull} from 'util'; -import {IProduction} from '../../../../model/entities/production'; - -@Component({ - selector: 'app-production-data-edit', - templateUrl: './production-data-edit.component.html', - styleUrls: ['./production-data-edit.component.scss'] -}) - -export class ProductionDataEditComponent extends FormComponent implements OnInit { - - @Output() editProduction: EventEmitter = new EventEmitter(); - @Output() createProduction: EventEmitter = new EventEmitter(); - @ViewChild('productionDataForm', { static: true }) productionDataForm: NgForm; - - public production: IProduction; - public config: IConfig; - - constructor(private appService: AppService, protected scrollToService: ScrollToService) { - super(scrollToService); - } - - ngOnInit() { - this.production = Factory.getEmptyProduction(); - this.config = this.appService.getConfig(); - } - - /** - * Sets data - * @param production - */ - public setData(production: IProduction): void { - this.production = production; - this.isCreationMode = isNull(this.production.id); - this.errorMsg = ''; - this.resetFormValidation(); - } - - /** - * Resets Form Validation - */ - public resetFormValidation(): void { - this.productionDataForm.form.markAsUntouched(); - } - - /** - * Saves production - * @param value - * @param valid - */ - public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { - this.errorMsg = 'Bitte beheben Sie alle Fehler.'; - if (valid) { - if (this.isCreationMode) { - this.createProduction.emit(this.production); - } else { - this.editProduction.emit(this.production); - } - this.errorMsg = ''; - } else { - this.scrollUp(this.isCreationMode ? 'production-data-modal' : 'production-data-edit-modal'); - } - } -} diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-view/production-data-view.component.html b/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-view/production-data-view.component.html deleted file mode 100644 index f743614..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-view/production-data-view.component.html +++ /dev/null @@ -1,38 +0,0 @@ -

Produzentendaten

-
-
-
-
Status:
-
AktivInaktiv
-
Firma:
-
{{production.name}} ({{production.old_plp_id}})
-
Zusatz:
-
{{production.name_additional}}
-
Adresse:
-
{{production.street}} {{production.street_no}}
- {{production.zip}} {{production.city}} -
{{config.vc_countries_by_id[production.country_id]['name']}}
-
Internetadresse:
-
{{checkedUrl}}
-
E-Mail:
-
{{production.email}}
-
Telefon:
-
{{production.phone_no}}
-
Mobil:
-
{{production.mobile_no}}
-
Fax:
-
{{production.fax_no}}
-
Bemerkung:
-
{{production.comment}}
-
-
-
-
bearbeiten
-
-
- - -
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-view/production-data-view.component.scss b/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-view/production-data-view.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-view/production-data-view.component.ts b/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-view/production-data-view.component.ts deleted file mode 100644 index dbf2661..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-data-view/production-data-view.component.ts +++ /dev/null @@ -1,66 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {ModalComponent} from '../../../../components/modal/modal.component'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {IProduction} from '../../../../model/entities/production'; -import {ProductionDataEditComponent} from '../production-data-edit/production-data-edit.component'; - -@Component({ - selector: 'app-production-data-view', - templateUrl: './production-data-view.component.html', - styleUrls: ['./production-data-view.component.scss'] -}) - -export class ProductionDataViewComponent implements OnInit { - - @Output() editProduction: EventEmitter = new EventEmitter(); - @ViewChild('modalProductionDataEdit', { static: true }) modalProductionDataEdit: ModalComponent; - @ViewChild('productionDataEdit', { static: true }) productionDataEdit: ProductionDataEditComponent; - - public production: IProduction; - public checkedUrl: string; - public config: IConfig; - public hasEditRights: boolean; - - constructor(private appService: AppService) { } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_PRODUCTION) || - this.appService.userHasRole(Const.USER_ROLE_SERVICE); - this.config = this.appService.getConfig(); - this.production = Factory.getEmptyProduction(); - this.checkedUrl = ''; - } - - /** - * Sets data - * @param production - */ - public setData(production: IProduction): void { - this.production = production; - this.checkedUrl = Utils.checkUrl(this.production.url); - this.modalProductionDataEdit.closeModal(); - } - - /** - * On edit click - */ - public edit(): void { - this.modalProductionDataEdit.openModal(); - this.productionDataEdit.setData(Utils.deepClone(this.production) as IProduction); - } - - /** - * Saves production - * @param production - */ - public editProductionFunction(production: IProduction): void { - this.editProduction.emit(production); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-detail/production-meeting-detail.component.html b/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-detail/production-meeting-detail.component.html deleted file mode 100644 index 6b5b0d6..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-detail/production-meeting-detail.component.html +++ /dev/null @@ -1,77 +0,0 @@ -
-

Termin mit Produzent: {{production.name}}

-

{{date}} {{timeStart}} Uhr bis {{timeEnd}} Uhr

-

{{productionMeeting.title}}

-
Erstellt von: {{creator.firstname}} {{creator.lastname}}
-

{{productionMeeting.description}}

-
-
-
-
-
Termin-Art:
-
{{meetingType.name}}
-
PLP Verantwortlicher:
-
{{owner.firstname}} {{owner.lastname}}
-
Teilnehmer:
-
- - {{p.firstname}} {{p.lastname}}
-
-
- -
Adresse:
-
{{productionMeeting.street}} {{productionMeeting.street_no}}
- {{productionMeeting.zip}} {{productionMeeting.city}} -
{{config.vc_countries_by_id[productionMeeting.country_id]['name']}}
-
-
Gesprächspartner:
-
Herr - Frau - Divers {{productionMeeting.firstname}} {{productionMeeting.lastname}}
-
Abteilung:
-
{{productionMeeting.department}}
-
E-Mail:
-
{{productionMeeting.email}}
-
Telefon:
-
{{productionMeeting.phone_no}}
-
Mobil:
-
{{productionMeeting.mobile_no}}
-
Report:
-
{{reportOld}}
-
-
-
-
-
-
-
-
Eintrag bearbeiten
-
Eintrag löschen
-
Report bearbeiten
-
-
-
-
-
-
-

{{ errorMsg }}

-
-
-
- - -
-
-
-
- -
-
-
-
-
-
-
- -
-
\ No newline at end of file diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-detail/production-meeting-detail.component.scss b/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-detail/production-meeting-detail.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-detail/production-meeting-detail.component.ts b/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-detail/production-meeting-detail.component.ts deleted file mode 100644 index 9d39a4c..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-detail/production-meeting-detail.component.ts +++ /dev/null @@ -1,206 +0,0 @@ -import { - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, - EventEmitter, - OnInit, - Output, - ViewChild -} from '@angular/core'; -import {FormComponent} from '../../../../components/form-component'; -import {NgForm} from '@angular/forms'; -import {IUser} from '../../../../model/entities/user'; -import {IMeetingType} from '../../../../model/entities/meeting-type'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {MeetingService} from '../../../../services/meeting.service'; -import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {isNull} from 'util'; -import {Utils} from '../../../../utils/utils'; -import {IProductionMeeting} from '../../../../model/entities/production-meeting'; -import {ProductionMeetingEditComponent} from '../production-meeting-edit/production-meeting-edit.component'; -import {IProduction} from '../../../../model/entities/production'; -import {ProductionService} from '../../../../services/production.service'; - -@Component({ - selector: 'app-production-meeting-detail', - templateUrl: './production-meeting-detail.component.html', - styleUrls: ['./production-meeting-detail.component.scss'], - // NOTE: We need manual change detection in this component - changeDetection: ChangeDetectionStrategy.OnPush, -}) - -export class ProductionMeetingDetailComponent extends FormComponent implements OnInit { - - @Output() editMeeting: EventEmitter = new EventEmitter(); - @Output() deleteMeeting: EventEmitter = new EventEmitter(); - @Output() editMeetingReport: EventEmitter = new EventEmitter(); - @ViewChild('productionMeetingDetailEdit', { static: true }) productionMeetingDetailEdit: ProductionMeetingEditComponent; - @ViewChild('productionMeetingReportForm', { static: true }) productionMeetingReportForm: NgForm; - - public production: IProduction; - public productionMeeting: IProductionMeeting; - public isEditMode: boolean; - public creator: IUser; - public owner: IUser; - public participants: IUser[]; - public meetingType: IMeetingType; - public date: string; - public timeStart: string; - public timeEnd: string; - public config: IConfig; - public reportFormVisible: boolean; - public reportOld: string; - public hasEditRights: boolean; - public hasReportRights: boolean; - - constructor(public appService: AppService, private productionService: ProductionService, private meetingService: MeetingService, protected scrollToService: ScrollToService, private ref: ChangeDetectorRef) { - super(scrollToService); - } - - ngOnInit() { - this.hasEditRights = this.appService.userHasRole(Const.USER_ROLE_ADMIN); - this.hasReportRights = this.appService.userHasRole(Const.USER_ROLE_ADMIN); - this.config = this.appService.getConfig(); - this.production = Factory.getEmptyProduction(); - this.productionMeeting = Factory.getEmptyProductionMeeting(); - this.creator = Factory.getEmptyUser(); - this.owner = Factory.getEmptyUser(); - this.participants = []; - this.meetingType = Factory.getEmptyMeetingType(); - this.date = ''; - this.timeStart = ''; - this.timeEnd = ''; - this.reportFormVisible = false; - this.reportOld = ''; - } - - /** - * Set data - * @param production - * @param productionMeeting - */ - public setData(production: IProduction, productionMeeting: IProductionMeeting): void { - this.production = production; - this.productionMeeting = productionMeeting; - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_ADMIN) || - this.appService.getAppUser().id === productionMeeting.creation_user_id || - this.appService.getAppUser().id === productionMeeting.owner_user_id; - this.hasReportRights = - this.appService.userHasRole(Const.USER_ROLE_ADMIN) || - this.appService.getAppUser().id === productionMeeting.owner_user_id; - this.setMeetingData(); - } - - /** - * Updates data - * @param production - */ - public updateData(production: IProduction): void { - this.production = production; - if (!isNull(this.productionMeeting.id)) { - for (let i = 0; i < this.production.v_production_meetings.length; i++) { - if (this.production.v_production_meetings[i].id == this.productionMeeting.id) { - this.productionMeeting = this.production.v_production_meetings[i]; - } - } - this.setMeetingData(); - } - } - - /** - * Sets variables for meeting - */ - public setMeetingData() { - this.errorMsg = ''; - this.reportFormVisible = false; - this.reportOld = this.productionMeeting.report; - this.creator = this.appService.getConfig().vc_user_by_id[this.productionMeeting.creation_user_id]; - this.owner = this.appService.getConfig().vc_user_by_id[this.productionMeeting.owner_user_id]; - this.participants = []; - for (let i = 0; i < this.productionMeeting.v_participants.length; i++) { - this.participants.push(this.appService.getConfig().vc_user_by_id[this.productionMeeting.v_participants[i].participant_user_id]); - } - this.meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.productionMeeting.meeting_type_id]; - this.date = Utils.getDateTimeToDisplay(this.productionMeeting.start_date); - this.timeStart = Utils.getDateTimeToDisplay(this.productionMeeting.start_date, false, true); - this.timeEnd = Utils.getDateTimeToDisplay(this.productionMeeting.end_date, false, true); - this.isEditMode = false; - this.resetFormValidation(); - // NOTE: We need manual change detection in this component - this.ref.detectChanges(); - } - - /** - * Edit meeting entry - */ - public editEntry(): void { - this.isEditMode = true; - this.productionMeetingDetailEdit.setData(this.production, Utils.deepClone(this.productionMeeting) as IProductionMeeting); - } - - /** - * Edits meeting entry - * @param productionMeeting - */ - public editProductionMeetingFunction(productionMeeting: IProductionMeeting) { - this.editMeeting.emit(productionMeeting); - } - - /** - * Delete meeting entry - */ - public deleteEntry(): void { - const confirmAction = confirm('Wollen Sie diesen Eintrag wirklich löschen?'); - if (confirmAction == true) { - this.deleteMeeting.emit(this.productionMeeting.id); - } - } - - /** - * Check if edit report after meeting has started - */ - public editReport(): void { - this.meetingService.apiCheckProductionMeetingReport(this.productionMeeting.id).subscribe( - data => { - this.reportFormVisible = data.result_data as boolean; - // NOTE: We need manual change detection in this component - this.ref.detectChanges(); - this.scrollUp('production-meeting-edit-report'); - }, - error => { - } - ); - } - - /** - * Resets Form Validation - */ - public resetFormValidation(): void { - if (this.reportFormVisible) { - this.productionMeetingReportForm.form.markAsUntouched(); - } - } - - /** - * Saves production meeting report - * @param value - * @param valid - */ - public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { - this.errorMsg = 'Bitte beheben Sie alle Fehler.'; - if (valid) { - this.editMeetingReport.emit({ - id: this.productionMeeting.id, - report: this.productionMeeting.report - }); - this.errorMsg = ''; - } else { - this.scrollUp('production-meeting-edit-report'); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-edit/production-meeting-edit.component.html b/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-edit/production-meeting-edit.component.html deleted file mode 100644 index c5f4e77..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-edit/production-meeting-edit.component.html +++ /dev/null @@ -1,200 +0,0 @@ -

Produzenten-Termin anlegen

-

Produzenten-Termin bearbeiten

-
-
-
-

{{ errorMsg }}

-

- Betreff ist ein Pflichtfeld. -

-

- Datum ist ein Pflichtfeld. -

-

- Uhrzeit (Start) ist ein Pflichtfeld. -

-

- Uhrzeit (Ende) ist ein Pflichtfeld. -

-

- Termin-Art ist ein Pflichtfeld. -

-

- PLP Verantwortlicher ist ein Pflichtfeld. -

-
-
-
-
-
-
- - -
-
-
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
-
-
- -
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
-
-
-
-
- - -
-
-
-
-
-
- - -
-
-
-
-
-

Teilnehmer

-
-
-
-
-
- - -
-
-
-
-
- - -
-
-
- - -
-
-
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
-
- -
-
- - -
-
-
\ No newline at end of file diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-edit/production-meeting-edit.component.scss b/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-edit/production-meeting-edit.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-edit/production-meeting-edit.component.ts b/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-edit/production-meeting-edit.component.ts deleted file mode 100644 index 35e7689..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-edit/production-meeting-edit.component.ts +++ /dev/null @@ -1,261 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {FormComponent} from '../../../../components/form-component'; -import {NgForm} from '@angular/forms'; -import {IUser} from '../../../../model/entities/user'; -import {IMeetingType} from '../../../../model/entities/meeting-type'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {isNull} from 'util'; -import {IProduction} from '../../../../model/entities/production'; -import {IProductionMeeting} from '../../../../model/entities/production-meeting'; -import {IProductionContact} from '../../../../model/entities/production-contact'; - -@Component({ - selector: 'app-production-meeting-edit', - templateUrl: './production-meeting-edit.component.html', - styleUrls: ['./production-meeting-edit.component.scss'] -}) - -export class ProductionMeetingEditComponent extends FormComponent implements OnInit { - - @Output() createMeeting: EventEmitter = new EventEmitter(); - @Output() editMeeting: EventEmitter = new EventEmitter(); - @ViewChild('productionMeetingForm', { static: true }) productionMeetingForm: NgForm; - - public production: IProduction; - public productionMeeting: IProductionMeeting; - public productionContacts: IProductionContact[]; - public productionContactsById: {}; - public isExistingProductionContact: boolean; - public users: IUser[]; - public usersById: {}; - public possibleOwners: IUser[]; - public participants: IUser[]; - public selectedParticipantsById: {}; - public selectedParticipantsByIdInitial: {}; - public owner: IUser; - public startDate: string; - public timeStart: string; - public timeEnd: string; - public meetingTypes: IMeetingType[]; - public contactPersonValue: string; - public config: IConfig; - - constructor(public appService: AppService, protected scrollToService: ScrollToService) { - super(scrollToService); - } - - ngOnInit() { - this.config = this.appService.getConfig(); - this.production = Factory.getEmptyProduction(); - this.productionMeeting = Factory.getEmptyProductionMeeting(); - this.productionContacts = []; - this.productionContactsById = {}; - this.isExistingProductionContact = false; - this.users = []; - this.usersById = {}; - this.possibleOwners = []; - this.participants = []; - this.selectedParticipantsById = {}; - this.selectedParticipantsByIdInitial = {}; - this.owner = Factory.getEmptyUser(); - this.startDate = ''; - this.timeStart = ''; - this.timeEnd = ''; - this.meetingTypes = []; - this.contactPersonValue = ''; - } - - /** - * Sets data - * @param production - * @param productionMeeting - * @param isCreationMode - */ - public setData(production: IProduction, productionMeeting: IProductionMeeting, isCreationMode: boolean = false): void { - this.production = production; - this.productionMeeting = productionMeeting; - this.productionContacts = this.production.v_production_contacts; - this.productionContactsById = Utils.getSortedObjFromArray(this.productionContacts, 'id'); - this.isCreationMode = isCreationMode; - this.users = this.appService.getConfig().users; - this.owner = this.productionMeeting.owner_user_id !== null ? - this.appService.getConfig().vc_user_by_id[this.productionMeeting.owner_user_id] : null; - this.startDate = Utils.getDateTimeToDisplay(this.productionMeeting.start_date, true, false, false, true); - this.timeStart = Utils.getDateTimeToDisplay(this.productionMeeting.start_date, false, true); - this.timeEnd = Utils.getDateTimeToDisplay(this.productionMeeting.end_date, false, true); - this.meetingTypes = this.appService.getConfig().meeting_types; - this.selectedParticipantsById = Utils.getSortedObjFromArray(this.productionMeeting.v_participants, 'participant_user_id'); - this.selectedParticipantsByIdInitial = Utils.getSortedObjFromArray(this.productionMeeting.v_participants, 'participant_user_id'); - this.usersById = Utils.getSortedObjFromArray(this.appService.getConfig().users, 'id'); - this.participants = []; - for (const p in this.usersById) { - if (this.isCreationMode) { - // New meeting - if (this.usersById[p].active) { - this.participants.push(this.usersById[p]); - this.possibleOwners.push(this.usersById[p]); - } - } else { - // Existing meeting - const userAttendsToMeeting: boolean = this.selectedParticipantsByIdInitial.hasOwnProperty(this.usersById[p].id); - if (this.usersById[p].id !== this.owner.id && (this.usersById[p].active || userAttendsToMeeting)) { - this.participants.push(this.usersById[p]); - this.possibleOwners.push(this.usersById[p]); - } - if (this.usersById[p].id === this.owner.id) { - this.possibleOwners.push(this.usersById[p]); - } - } - } - this.isCreationMode = isCreationMode; - - if (isNull(this.productionMeeting.production_contact_id)) { - this.productionMeeting.production_contact_id = -1; - } - if (this.productionMeeting.production_contact_id > 0) { - this.isExistingProductionContact = true; - } - this.errorMsg = ''; - this.resetFormValidation(); - } - - /** - * On select contact - * @param e - */ - public selectContact(e: any) { - this.productionMeeting.production_contact_id = e.target.value; - this.isExistingProductionContact = false; - this.productionMeeting.gender = null; - this.productionMeeting.firstname = null; - this.productionMeeting.lastname = null; - this.productionMeeting.department = null; - this.productionMeeting.email = null; - this.productionMeeting.phone_no = null; - this.productionMeeting.mobile_no = null; - if (this.productionMeeting.production_contact_id > 0) { - this.productionMeeting.gender = this.productionContactsById[this.productionMeeting.production_contact_id].gender; - this.productionMeeting.firstname = this.productionContactsById[this.productionMeeting.production_contact_id].firstname; - this.productionMeeting.lastname = this.productionContactsById[this.productionMeeting.production_contact_id].lastname; - this.productionMeeting.department = this.productionContactsById[this.productionMeeting.production_contact_id].department; - this.productionMeeting.email = this.productionContactsById[this.productionMeeting.production_contact_id].email; - this.productionMeeting.phone_no = this.productionContactsById[this.productionMeeting.production_contact_id].phone_no; - this.productionMeeting.mobile_no = this.productionContactsById[this.productionMeeting.production_contact_id].mobile_no; - this.isExistingProductionContact = true; - } - } - - /** - * On select owner - * @param e - */ - public selectOwner(e: any) { - if (e.target.value !== '0: null') { - this.owner = this.usersById[e.target.value]; - if (this.selectedParticipantsById.hasOwnProperty(this.owner.id)) { - delete this.selectedParticipantsById[this.owner.id]; - } - } else { - this.owner = null; - } - this.participants = []; - for (const p in this.usersById) { - if ((this.owner == null || this.usersById[p].id !== this.owner.id) && this.usersById[p].active) { - this.participants.push(this.usersById[p]); - } - } - } - - /** - * On select meeting type - * @param e - */ - public selectMeetingType(e: any) { - this.productionMeeting.meeting_type_id = e.target.value; - } - - /** - * On select participant - * @param e - */ - public participantsChange(e: any) { - const participantUserId: number = parseInt(e.target.value); - if (this.selectedParticipantsById.hasOwnProperty(participantUserId)) { - delete this.selectedParticipantsById[participantUserId]; - } else { - let myId: number = null; - if (this.selectedParticipantsByIdInitial.hasOwnProperty(participantUserId)) { - myId = this.selectedParticipantsByIdInitial[participantUserId].id; - } - this.selectedParticipantsById[participantUserId] = { - id: myId, - production_meeting_id: this.productionMeeting.id, - participant_user_id: participantUserId - }; - } - } - - /** - * Checks if participant is selected - * @param id - */ - public checkParticipants(id: number) { - return this.selectedParticipantsById.hasOwnProperty(id); - - } - - /** - * Resets Form Validation - */ - public resetFormValidation(): void { - this.productionMeetingForm.form.markAsUntouched(); - } - - /** - * Saves production meeting - * @param value - * @param valid - */ - public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { - this.errorMsg = 'Bitte beheben Sie alle Fehler.'; - const identifier: string = this.isCreationMode ? 'production-meeting-modal' : 'production-meeting-edit-modal'; - if (valid) { - // Check if start time before end time - if (parseInt(this.timeStart.replace(/\:/g, '')) - parseInt(this.timeEnd.replace(/\:/g, '')) > 0) { - this.errorMsg = 'Zeit (Ende) darf nicht vor Zeit (Start) liegen.'; - this.scrollUp(identifier); - } else { - this.productionMeeting.start_date = this.startDate + ' ' + this.timeStart + ':00'; - this.productionMeeting.end_date = this.startDate + ' ' + this.timeEnd + ':00'; - // Check if date is valid - if (Utils.isValidDate(this.productionMeeting.start_date)) { - this.productionMeeting.v_participants = []; - for (const spId in this.selectedParticipantsById) { - this.productionMeeting.v_participants.push(this.selectedParticipantsById[spId]); - } - - if (this.productionMeeting.production_contact_id === -1) { - this.productionMeeting.production_contact_id = null; - } - - if (this.isCreationMode) { - this.createMeeting.emit(this.productionMeeting); - } else { - this.editMeeting.emit(this.productionMeeting); - } - this.errorMsg = ''; - } else { - this.errorMsg = 'Bitte korrektes Datum eingeben.'; - this.scrollUp(identifier); - } - } - } else { - this.scrollUp(identifier); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-view/production-meeting-view.component.html b/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-view/production-meeting-view.component.html deleted file mode 100644 index 652430c..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-view/production-meeting-view.component.html +++ /dev/null @@ -1,33 +0,0 @@ -

Termine

-
Termin hinzufügen
-
- - -
-
- - -
- - - - - - -
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-view/production-meeting-view.component.scss b/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-view/production-meeting-view.component.scss deleted file mode 100644 index cbd2408..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-view/production-meeting-view.component.scss +++ /dev/null @@ -1,14 +0,0 @@ -#create-production-meeting { - position: absolute; - right: 0; - top: -6rem; -} - -@media only screen and (max-width: 1004px) { - #create-production-meeting { - position: relative; - right: auto; - top: auto; - display: inline-block; - } -} diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-view/production-meeting-view.component.ts b/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-view/production-meeting-view.component.ts deleted file mode 100644 index 0394b8c..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-meeting-view/production-meeting-view.component.ts +++ /dev/null @@ -1,202 +0,0 @@ -import {Component, EventEmitter, OnDestroy, OnInit, Output, ViewChild} from '@angular/core'; -import {AgGridComponent} from '../../../../components/ag-grid-component'; -import {ModalComponent} from '../../../../components/modal/modal.component'; -import {IUser} from '../../../../model/entities/user'; -import {IMeetingType} from '../../../../model/entities/meeting-type'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {isNull} from 'util'; -import {IProductionMeeting} from '../../../../model/entities/production-meeting'; -import {ProductionMeetingEditComponent} from '../production-meeting-edit/production-meeting-edit.component'; -import {ProductionMeetingDetailComponent} from '../production-meeting-detail/production-meeting-detail.component'; -import {IProduction} from '../../../../model/entities/production'; - -@Component({ - selector: 'app-production-meeting-view', - templateUrl: './production-meeting-view.component.html', - styleUrls: ['./production-meeting-view.component.scss'] -}) - -export class ProductionMeetingViewComponent extends AgGridComponent implements OnInit, OnDestroy { - - @Output() createMeeting: EventEmitter = new EventEmitter(); - @Output() editMeeting: EventEmitter = new EventEmitter(); - @Output() deleteMeeting: EventEmitter = new EventEmitter(); - @Output() editMeetingReport: EventEmitter = new EventEmitter(); - @ViewChild('modalProductionMeetingEdit', {static: true}) modalProductionMeetingEdit: ModalComponent; - @ViewChild('productionMeetingEdit', {static: true}) productionMeetingEdit: ProductionMeetingEditComponent; - @ViewChild('modalProductionMeetingDetail', {static: true}) modalProductionMeetingDetail: ModalComponent; - @ViewChild('productionMeetingDetail', {static: true}) productionMeetingDetail: ProductionMeetingDetailComponent; - - public production: IProduction; - public productionMeeting: IProductionMeeting[]; - public productionMeetingEntriesById: {}; - public owner: IUser; - public participants: IUser[]; - public meetingType: IMeetingType; - public date: string; - public timeStart: string; - public timeEnd: string; - public hasEditRights: boolean; - - constructor(public appService: AppService) { - super(); - } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_PRODUCTION) || - this.appService.userHasRole(Const.USER_ROLE_SERVICE); - this.production = Factory.getEmptyProduction(); - this.productionMeeting = []; - this.productionMeetingEntriesById = {}; - this.owner = Factory.getEmptyUser(); - this.participants = []; - this.meetingType = Factory.getEmptyMeetingType(); - this.date = ''; - this.timeStart = ''; - this.timeEnd = ''; - - this.defaultColDef = { - resizable: true, - sortable: true - }; - - this.columnDefs = [ - {headerName: 'Datum', field: 'date', cellRenderer: this.dateRenderer, comparator: this.dateComparator}, - {headerName: 'Ersteller', field: 'creator' }, - {headerName: 'PLP Verantwortlicher', field: 'owner'}, - {headerName: 'Gesprächspartner', field: 'productionContactName'}, - {headerName: 'Titel', field: 'title'}, - {headerName: 'Uhrzeit (Start)', field: 'time_start', cellRenderer: this.timeRenderer}, - {headerName: 'Uhrzeit (Ende)', field: 'time_end', cellRenderer: this.timeRenderer}, - {headerName: 'Termin-Art', field: 'type'}, - {headerName: 'Adresse', field: 'address', cellRenderer: this.addressRenderer, autoHeight: true}, - { - headerName: 'Teilnehmer', - field: 'participants', - cellRenderer: this.participantsRenderer, - autoHeight: true - }, - {headerName: 'Abteilung', field: 'department'}, - {headerName: 'E-Mail', field: 'email'}, - {headerName: 'Telefon', field: 'phone'}, - {headerName: 'Mobil', field: 'mobile'}, - ]; - } - - /** - * Sets data - * @param production - * @param isUpdate - */ - public setData(production: IProduction, isUpdate: boolean): void { - this.production = production; - this.productionMeeting = this.production.v_production_meetings; - this.productionMeetingEntriesById = Utils.getSortedObjFromArray(this.productionMeeting, 'id'); - this.modalProductionMeetingEdit.closeModal(); - this.generateEntries(); - if (isUpdate) { - this.productionMeetingDetail.updateData(production); - } else { - this.modalProductionMeetingDetail.closeModal(); - } - } - - /** - * Generates AG grid entries - */ - public generateEntries(): void { - this.rowData = []; - const items: {}[] = []; - for (let i = 0; i < this.productionMeeting.length; i++) { - - this.owner = this.appService.getConfig().vc_user_by_id[this.productionMeeting[i].owner_user_id]; - this.meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.productionMeeting[i].meeting_type_id]; - let productionContactName: string = !isNull(this.productionMeeting[i].firstname) ? this.productionMeeting[i].firstname + ' ' : ''; - productionContactName += !isNull(this.productionMeeting[i].lastname) ? this.productionMeeting[i].lastname : ''; - const creator: IUser = this.appService.getConfig().vc_user_by_id[this.productionMeeting[i].creation_user_id]; - - items.push({ - that: this, - id: this.productionMeeting[i].id, - title: this.productionMeeting[i].title, - date: this.productionMeeting[i].start_date, - time_start: this.productionMeeting[i].start_date, - time_end: this.productionMeeting[i].end_date, - type: this.meetingType.name, - typeType: this.meetingType.type, - street: this.productionMeeting[i].street, - street_no: this.productionMeeting[i].street_no, - zip: this.productionMeeting[i].zip, - city: this.productionMeeting[i].city, - owner: this.owner.firstname + ' ' + this.owner.lastname, - creator: creator.firstname + ' ' + creator.lastname, - productionContactName, - participants: this.productionMeeting[i].v_participants, - department: this.productionMeeting[i].department, - email: this.productionMeeting[i].email, - phone: this.productionMeeting[i].phone_no, - mobile: this.productionMeeting[i].mobile_no, - }); - } - this.rowData = items.sort((a: {} , b: {}) => this.dateComparator(a['date'], b['date'], false)); - } - - /** - * On row click - * @param e - */ - public rowClicked(e: any) { - this.modalProductionMeetingDetail.openModal(); - this.productionMeetingDetail.setData(this.production, this.productionMeetingEntriesById[e.data.id]); - } - - /** - * On create click - */ - public create(): void { - this.modalProductionMeetingEdit.openModal(); - this.productionMeetingEdit.setData(this.production, Factory.getEmptyProductionMeeting(this.production.id), true); - } - - /** - * Creates production meeting - * @param productionMeeting - */ - public createProductionMeetingFunction(productionMeeting: IProductionMeeting): void { - this.createMeeting.emit(productionMeeting); - } - - /** - * Edits meeting entry - * @param productionMeeting - */ - public editProductionMeetingFunction(productionMeeting: IProductionMeeting) { - this.editMeeting.emit(productionMeeting); - } - - /** - * Deletes production meeting - * @param meetingId - */ - public deleteProductionMeetingFunction(meetingId: number): void { - this.deleteMeeting.emit(meetingId); - } - - /** - * Edit report after meeting has started - * @param reportValues - */ - public editProductionMeetingReportFunction(reportValues: any): void { - this.editMeetingReport.emit(reportValues); - } - - ngOnDestroy(): void { - - } - -} diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-detail/production-note-detail.component.html b/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-detail/production-note-detail.component.html deleted file mode 100644 index a9cea7d..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-detail/production-note-detail.component.html +++ /dev/null @@ -1,45 +0,0 @@ -
-

Notiz Detail

-

Erstellt am {{creationDate}} von {{productionNote.creation_user_firstname}} - {{productionNote.creation_user_lastname}}

-
-
-
-
Datum:
-
{{noteDate}}
-
Betreff:
-
{{productionNote.title}}
-
Gesprächspartner:
-
Herr - Frau - Divers {{productionNote.firstname}} {{productionNote.lastname}}
-
Abteilung:
-
{{productionNote.department}}
-
E-Mail:
-
{{productionNote.email}}
-
Telefon:
-
{{productionNote.phone_no}}
-
Mobil:
-
{{productionNote.mobile_no}}
-
Fax:
-
{{productionNote.fax_no}}
-
Notiz:
-
{{productionNote.comment}}
-
-
-
- -
-
-
-
Eintrag bearbeiten
-
Eintrag löschen
-
-
-
-
-
-
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-detail/production-note-detail.component.scss b/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-detail/production-note-detail.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-detail/production-note-detail.component.ts b/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-detail/production-note-detail.component.ts deleted file mode 100644 index 9cc0ebd..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-detail/production-note-detail.component.ts +++ /dev/null @@ -1,95 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {IProductionNote} from '../../../../model/entities/production-note'; -import {ProductionNoteEditComponent} from '../production-note-edit/production-note-edit.component'; -import {IProduction} from '../../../../model/entities/production'; - -@Component({ - selector: 'app-production-note-detail', - templateUrl: './production-note-detail.component.html', - styleUrls: ['./production-note-detail.component.scss'] -}) - -export class ProductionNoteDetailComponent implements OnInit { - - @Output() editNote: EventEmitter = new EventEmitter(); - @Output() deleteNote: EventEmitter = new EventEmitter(); - @ViewChild('productionNoteEdit', { static: true }) productionNoteEdit: ProductionNoteEditComponent; - - public production: IProduction; - public productionNote: IProductionNote; - public creationDate: string; - public isEditMode: boolean; - public noteDate: string; - public hasEditRights: boolean; - - constructor(public appService: AppService) { } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_PRODUCTION) || - this.appService.userHasRole(Const.USER_ROLE_SERVICE); - this.production = Factory.getEmptyProduction(); - this.productionNote = Factory.getEmptyProductionNote(); - this.creationDate = ''; - this.isEditMode = false; - this.noteDate = ''; - } - - /** - * Set data - */ - public setData(production: IProduction, productionNote: IProductionNote): void { - this.production = production; - this.productionNote = productionNote; - this.creationDate = Utils.getDateTimeToDisplay(this.productionNote.creation_date); - this.isEditMode = false; - this.noteDate = Utils.getDateTimeToDisplay(this.productionNote.note_date); - } - - /** - * Updates data - * @param production - */ - public updateData(production: IProduction): void { - this.production = production; - for (let i = 0; i < this.production.v_production_notes.length; i++) { - if (this.production.v_production_notes[i].id == this.productionNote.id) { - this.productionNote = this.production.v_production_notes[i]; - this.noteDate = Utils.getDateTimeToDisplay(this.productionNote.note_date); - } - } - this.isEditMode = false; - } - - /** - * Edit note entry - */ - public editEntry(): void { - this.isEditMode = true; - this.productionNoteEdit.setData(this.production, Utils.deepClone(this.productionNote) as IProductionNote); - } - - /** - * Edits note entry - * @param productionNote - */ - public editProductionNoteFunction(productionNote: IProductionNote) { - this.editNote.emit(productionNote); - } - - /** - * Delete note entry - */ - public deleteEntry(): void { - const confirmAction = confirm('Wollen Sie diesen Eintrag wirklich löschen?'); - if (confirmAction == true) { - this.deleteNote.emit(this.productionNote.id); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-edit/production-note-edit.component.html b/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-edit/production-note-edit.component.html deleted file mode 100644 index 9a78462..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-edit/production-note-edit.component.html +++ /dev/null @@ -1,116 +0,0 @@ -

Notiz anlegen

-

Notiz bearbeiten

-
-
-
-

{{ errorMsg }}

-

- Datum ist ein Pflichtfeld. -

-

- Betreff ist ein Pflichtfeld. -

-
-
-
-
-
-
- - -
-
-
-
-
- - -
-
-
-
- - -
-
-
-
-
-
- - -
-
-
- - -
-
-
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
-
-
-
-
- -
-
- - -
-
-
diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-edit/production-note-edit.component.scss b/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-edit/production-note-edit.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-edit/production-note-edit.component.ts b/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-edit/production-note-edit.component.ts deleted file mode 100644 index 1df4a94..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-edit/production-note-edit.component.ts +++ /dev/null @@ -1,127 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {FormComponent} from '../../../../components/form-component'; -import {NgForm} from '@angular/forms'; -import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {isNull} from 'util'; -import {IProductionNote} from '../../../../model/entities/production-note'; -import {IProduction} from '../../../../model/entities/production'; -import {IProductionContact} from '../../../../model/entities/production-contact'; - -@Component({ - selector: 'app-production-note-edit', - templateUrl: './production-note-edit.component.html', - styleUrls: ['./production-note-edit.component.scss'] -}) - -export class ProductionNoteEditComponent extends FormComponent implements OnInit { - - @Output() createNote: EventEmitter = new EventEmitter(); - @Output() editNote: EventEmitter = new EventEmitter(); - @ViewChild('productionNoteForm', { static: true }) productionNoteForm: NgForm; - - public production: IProduction; - public productionNote: IProductionNote; - public productionContacts: IProductionContact[]; - public productionContactsById: {}; - public isExistingProductionContact: boolean; - public contactId: string; - - constructor(protected scrollToService: ScrollToService) { - super(scrollToService); - } - - ngOnInit() { - this.production = Factory.getEmptyProduction(); - this.productionNote = Factory.getEmptyProductionNote(); - this.productionContacts = []; - this.productionContactsById = {}; - this.errorMsg = ''; - this.contactId = ''; - this.isCreationMode = false; - this.isExistingProductionContact = false; - } - - /** - * Sets data - * @param production - * @param productionNote - * @param isCreationMode - */ - public setData(production: IProduction, productionNote: IProductionNote, isCreationMode = false): void { - this.production = production; - this.productionNote = productionNote; - this.productionContacts = this.production.v_production_contacts; - this.productionContactsById = Utils.getSortedObjFromArray(this.productionContacts, 'id'); - this.productionNote.production_id = this.production.id; - this.contactId = ''; - this.isCreationMode = isCreationMode; - this.errorMsg = ''; - if (isNull(this.productionNote.production_contact_id)) { - this.productionNote.production_contact_id = -1; - } - if (this.productionNote.production_contact_id > 0) { - this.isExistingProductionContact = true; - } - this.resetFormValidation(); - } - - /** - * On select contact - * @param e - */ - public selectContact(e: any) { - this.productionNote.production_contact_id = e.target.value; - this.isExistingProductionContact = false; - this.productionNote.gender = null; - this.productionNote.firstname = null; - this.productionNote.lastname = null; - this.productionNote.department = null; - this.productionNote.email = null; - this.productionNote.phone_no = null; - this.productionNote.mobile_no = null; - this.productionNote.fax_no = null; - if (this.productionNote.production_contact_id > 0) { - this.productionNote.gender = this.productionContactsById[this.productionNote.production_contact_id].gender; - this.productionNote.firstname = this.productionContactsById[this.productionNote.production_contact_id].firstname; - this.productionNote.lastname = this.productionContactsById[this.productionNote.production_contact_id].lastname; - this.productionNote.department = this.productionContactsById[this.productionNote.production_contact_id].department; - this.productionNote.email = this.productionContactsById[this.productionNote.production_contact_id].email; - this.productionNote.phone_no = this.productionContactsById[this.productionNote.production_contact_id].phone_no; - this.productionNote.mobile_no = this.productionContactsById[this.productionNote.production_contact_id].mobile_no; - this.productionNote.fax_no = this.productionContactsById[this.productionNote.production_contact_id].fax_no; - this.isExistingProductionContact = true; - } - } - - /** - * Resets Form Validation - */ - public resetFormValidation(): void { - this.productionNoteForm.form.markAsUntouched(); - } - - /** - * Saves production - * @param value - * @param valid - */ - public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { - this.errorMsg = 'Bitte beheben Sie alle Fehler.'; - if (valid) { - if (this.productionNote.production_contact_id == -1) { - this.productionNote.production_contact_id = null; - } - if (this.isCreationMode) { - this.createNote.emit(this.productionNote); - } else { - this.editNote.emit(this.productionNote); - } - this.errorMsg = ''; - } else { - this.scrollUp(this.isCreationMode ? 'production-note-modal' : 'production-note-edit-modal'); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-view/production-note-view.component.html b/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-view/production-note-view.component.html deleted file mode 100644 index 0ef3db6..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-view/production-note-view.component.html +++ /dev/null @@ -1,32 +0,0 @@ -

Notizen

-
Notiz hinzufügen
-
- - -
-
- - -
- - - - - - -
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-view/production-note-view.component.scss b/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-view/production-note-view.component.scss deleted file mode 100644 index ff4cdee..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-view/production-note-view.component.scss +++ /dev/null @@ -1,14 +0,0 @@ -#create-production-note { - position: absolute; - right: 0; - top: -6rem; -} - -@media only screen and (max-width: 1004px) { - #create-production-note { - position: relative; - right: auto; - top: auto; - display: inline-block; - } -} diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-view/production-note-view.component.ts b/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-view/production-note-view.component.ts deleted file mode 100644 index bb43bb1..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-note-view/production-note-view.component.ts +++ /dev/null @@ -1,163 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {AgGridComponent} from '../../../../components/ag-grid-component'; -import {ModalComponent} from '../../../../components/modal/modal.component'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {IProductionNote} from '../../../../model/entities/production-note'; -import {IProduction} from '../../../../model/entities/production'; -import {ProductionNoteEditComponent} from '../production-note-edit/production-note-edit.component'; -import {ProductionNoteDetailComponent} from '../production-note-detail/production-note-detail.component'; - -@Component({ - selector: 'app-production-note-view', - templateUrl: './production-note-view.component.html', - styleUrls: ['./production-note-view.component.scss'] -}) - -export class ProductionNoteViewComponent extends AgGridComponent implements OnInit { - - @Output() createNote: EventEmitter = new EventEmitter(); - @Output() editNote: EventEmitter = new EventEmitter(); - @Output() deleteNote: EventEmitter = new EventEmitter(); - @ViewChild('modalProductionNoteEdit', { static: true }) modalProductionNoteEdit: ModalComponent; - @ViewChild('productionNoteEdit', { static: true }) productionNoteEdit: ProductionNoteEditComponent; - @ViewChild('modalProductionNoteDetail', { static: true }) modalProductionNoteDetail: ModalComponent; - @ViewChild('productionNoteDetail', { static: true }) productionNoteDetail: ProductionNoteDetailComponent; - - public production: IProduction; - public productionNote: IProductionNote[]; - public productionNoteEntriesById: {}; - public hasEditRights: boolean; - - constructor(public appService: AppService) { - super(); - } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_PRODUCTION) || - this.appService.userHasRole(Const.USER_ROLE_SERVICE); - this.production = Factory.getEmptyProduction(); - this.productionNote = []; - this.productionNoteEntriesById = {}; - - this.defaultColDef = { - resizable: true, - sortable: true - }; - - this.columnDefs = [ - {headerName: 'Erstellungsdatum', field: 'creation_date', cellRenderer: this.dateRenderer, comparator: this.dateComparator }, - {headerName: 'Ersteller', field: 'creator' }, - {headerName: 'Datum', field: 'date', cellRenderer: this.dateRenderer, comparator: this.dateComparator }, - {headerName: 'Betreff', field: 'title' }, - {headerName: 'Notiz', field: 'comment' }, - {headerName: 'Anrede', field: 'gender', width: 90 }, - {headerName: 'Vorname', field: 'firstname' }, - {headerName: 'Nachname', field: 'lastname' }, - {headerName: 'Abteilung', field: 'department' }, - {headerName: 'E-Mail Adresse', field: 'email', cellRenderer: this.emailRenderer }, - {headerName: 'Telefon', field: 'phone_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Mobil', field: 'mobile_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Fax', field: 'fax_no' }, - ]; - } - - /** - * Sets data - * @param production - * @param isUpdate - */ - public setData(production: IProduction, isUpdate: boolean): void { - this.production = production; - this.productionNote = this.production.v_production_notes; - this.productionNoteEntriesById = Utils.getSortedObjFromArray(this.productionNote, 'id'); - this.modalProductionNoteEdit.closeModal(); - this.generateEntries(); - if (isUpdate) { - this.productionNoteDetail.updateData(production); - } else { - this.modalProductionNoteDetail.closeModal(); - } - } - - /** - * Generates AG grid entries - */ - public generateEntries(): void { - this.rowData = []; - const items: {}[] = []; - for (let i = 0; i < this.productionNote.length; i++) { - let ccGender = ''; - if (this.productionNote[i].gender == 'male') { - ccGender = 'Herr'; - } else if (this.productionNote[i].gender == 'female') { - ccGender = 'Frau'; - } else if (this.productionNote[i].gender == 'diverse') { - ccGender = 'Divers'; - } - items.push({ - id: this.productionNote[i].id, - date: this.productionNote[i].note_date, - title: this.productionNote[i].title, - comment: this.productionNote[i].comment, - gender: ccGender, - firstname: this.productionNote[i].firstname, - lastname: this.productionNote[i].lastname, - email: this.productionNote[i].email, - phone_no: this.productionNote[i].phone_no, - mobile_no: this.productionNote[i].mobile_no, - fax_no: this.productionNote[i].fax_no, - department: this.productionNote[i].department, - creation_date: this.productionNote[i].creation_date, - creator: this.productionNote[i].creation_user_firstname + ' ' + this.productionNote[i].creation_user_lastname, - }); - this.rowData = items.sort((a: {} , b: {}) => this.dateComparator(a['date'], b['date'], false)); - } - } - - /** - * On row click - * @param e - */ - public rowClicked(e: any) { - this.modalProductionNoteDetail.openModal(); - this.productionNoteDetail.setData(this.production, this.productionNoteEntriesById[e.data.id]); - } - - /** - * On create click - */ - public create(): void { - this.modalProductionNoteEdit.openModal(); - this.productionNoteEdit.setData(this.production, Factory.getEmptyProductionNote(this.production.id, Utils.getCurrentDate()), true); - } - - /** - * Creates production note - * @param productionNote - */ - public createProductionNoteFunction(productionNote: IProductionNote): void { - this.createNote.emit(productionNote); - } - - /** - * Edits note entry - * @param productionNote - */ - public editProductionNoteFunction(productionNote: IProductionNote) { - this.editNote.emit(productionNote); - } - - /** - * Deletes production note - * @param noteId - */ - public deleteProductionNoteFunction(noteId: number): void { - this.deleteNote.emit(noteId); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-view.component.html b/httpdocs/plp-angular/src/app/views/productions/production-view/production-view.component.html deleted file mode 100644 index 04196fd..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-view.component.html +++ /dev/null @@ -1,32 +0,0 @@ -

{{production.name}}

- - -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
-
diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-view.component.scss b/httpdocs/plp-angular/src/app/views/productions/production-view/production-view.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/productions/production-view/production-view.component.ts b/httpdocs/plp-angular/src/app/views/productions/production-view/production-view.component.ts deleted file mode 100644 index d76d052..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/production-view/production-view.component.ts +++ /dev/null @@ -1,157 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {TabsComponent} from '../../../components/tabs/tabs.component'; -import {Factory} from '../../../factory/factory'; -import {IProduction} from '../../../model/entities/production'; -import {IProductionContact} from '../../../model/entities/production-contact'; -import {IProductionNote} from '../../../model/entities/production-note'; -import {IProductionMeeting} from '../../../model/entities/production-meeting'; -import { - ProductionContactPersonViewComponent -} from './production-contact-person-view/production-contact-person-view.component'; -import {ProductionNoteViewComponent} from './production-note-view/production-note-view.component'; -import {ProductionMeetingViewComponent} from './production-meeting-view/production-meeting-view.component'; - -@Component({ - selector: 'app-production-view', - templateUrl: './production-view.component.html', - styleUrls: ['./production-view.component.scss'] -}) - -export class ProductionViewComponent implements OnInit { - - @Output() editProduction: EventEmitter = new EventEmitter(); - @Output() createProductionContact: EventEmitter = new EventEmitter(); - @Output() editProductionContact: EventEmitter = new EventEmitter(); - @Output() deleteProductionContact: EventEmitter = new EventEmitter(); - @Output() createNote: EventEmitter = new EventEmitter(); - @Output() editNote: EventEmitter = new EventEmitter(); - @Output() deleteNote: EventEmitter = new EventEmitter(); - @Output() createMeeting: EventEmitter = new EventEmitter(); - @Output() editMeeting: EventEmitter = new EventEmitter(); - @Output() deleteMeeting: EventEmitter = new EventEmitter(); - @Output() editMeetingReport: EventEmitter = new EventEmitter(); - @Output() shortcut: EventEmitter = new EventEmitter(); - @ViewChild('tabsProductionView', { static: true }) tabsProductionView: TabsComponent; - @ViewChild('productionDataView', { static: true }) productionDataView: ProductionViewComponent; - @ViewChild('productionContactPersonView', { static: true }) productionContactPersonView: ProductionContactPersonViewComponent; - @ViewChild('productionNoteView', { static: true }) productionNoteView: ProductionNoteViewComponent; - @ViewChild('productionMeetingView', { static: true }) productionMeetingView: ProductionMeetingViewComponent; - - public production: IProduction; - - constructor() { } - - ngOnInit() { - this.production = Factory.getEmptyProduction(); - } - - /** - * Sets data - * @param production - * @param isUpdate - */ - public setData(production: IProduction, isUpdate: boolean = false): void { - this.production = production; - this.productionDataView.setData(this.production); - this.productionContactPersonView.setData(this.production, isUpdate); - this.productionNoteView.setData(this.production, isUpdate); - this.productionMeetingView.setData(this.production, isUpdate); - } - - /** - * Saves production - * @param production - */ - public editProductionFunction(production: IProduction): void { - this.editProduction.emit(production); - } - - /** - * Creates production contact - * @param productionContact - */ - public createProductionContactFunction(productionContact: IProductionContact): void { - this.createProductionContact.emit(productionContact); - } - - /** - * Edit production contact - * @param productionContact - */ - public editProductionContactFunction(productionContact: IProductionContact): void { - this.editProductionContact.emit(productionContact); - } - - /** - * Creates production note - * @param productionNote - */ - public createProductionNoteFunction(productionNote: IProductionNote): void { - this.createNote.emit(productionNote); - } - - /** - * Edits note entry - * @param productionNote - */ - public editProductionNoteFunction(productionNote: IProductionNote) { - this.editNote.emit(productionNote); - } - - /** - * Deletes production note - * @param noteId - */ - public deleteProductionNoteFunction(noteId: number): void { - this.deleteNote.emit(noteId); - } - - /** - * Deletes production contact - * @param productionId - */ - public deleteProductionContactFunction(productionId: number): void { - this.deleteProductionContact.emit(productionId); - } - - /** - * Creates production meeting - * @param productionMeeting - */ - public createProductionMeetingFunction(productionMeeting: IProductionMeeting): void { - this.createMeeting.emit(productionMeeting); - } - - /** - * Edits meeting entry - * @param productionMeeting - */ - public editProductionMeetingFunction(productionMeeting: IProductionMeeting) { - this.editMeeting.emit(productionMeeting); - } - - /** - * Deletes production meeting - * @param meetingId - */ - public deleteProductionMeetingFunction(meetingId: number): void { - this.deleteMeeting.emit(meetingId); - } - - /** - * Edit report after meeting has started - * @param reportValues - */ - public editProductionMeetingReportFunction(reportValues: any): void { - this.editMeetingReport.emit(reportValues); - } - - /** - * Shortcut to production detail - * @param production - */ - public shortcutFunction(production: IProduction): void { - this.shortcut.emit(production); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/productions/productions-contact-list/productions-contact-list.component.html b/httpdocs/plp-angular/src/app/views/productions/productions-contact-list/productions-contact-list.component.html deleted file mode 100644 index 14a8860..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/productions-contact-list/productions-contact-list.component.html +++ /dev/null @@ -1,30 +0,0 @@ -
Ansprechpartner exportieren
-
Weihnachtspost-Etiketten
- -
- - -
- -
- - -
- - - - diff --git a/httpdocs/plp-angular/src/app/views/productions/productions-contact-list/productions-contact-list.component.scss b/httpdocs/plp-angular/src/app/views/productions/productions-contact-list/productions-contact-list.component.scss deleted file mode 100644 index 2a65933..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/productions-contact-list/productions-contact-list.component.scss +++ /dev/null @@ -1,11 +0,0 @@ -#xmas-mail { - position: absolute; - right: 0; - top: 0; -} - -#export-production-contacts { - position: absolute; - right: 225px; - top: 0; -} \ No newline at end of file diff --git a/httpdocs/plp-angular/src/app/views/productions/productions-contact-list/productions-contact-list.component.ts b/httpdocs/plp-angular/src/app/views/productions/productions-contact-list/productions-contact-list.component.ts deleted file mode 100644 index 6c91d7d..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/productions-contact-list/productions-contact-list.component.ts +++ /dev/null @@ -1,161 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {AgGridComponent} from '../../../components/ag-grid-component'; -import {ModalComponent} from '../../../components/modal/modal.component'; -import {Utils} from '../../../utils/utils'; -import {Const} from '../../../utils/const'; -import {AppService} from '../../../services/app.service'; -import {CommonService} from '../../../services/common.service'; -import {IProduction} from '../../../model/entities/production'; -import {IProductionContact} from '../../../model/entities/production-contact'; -import { - ProductionContactPersonDetailComponent -} from '../production-view/production-contact-person-detail/production-contact-person-detail.component'; -import {ProductionService} from '../../../services/production.service'; - -@Component({ - selector: 'app-production-contact-list', - templateUrl: './productions-contact-list.component.html', - styleUrls: ['./productions-contact-list.component.scss'] -}) - -export class ProductionsContactListComponent extends AgGridComponent implements OnInit { - - @Output() shortcut: EventEmitter = new EventEmitter(); - @ViewChild('modalProductionsContactPersonDetailList', { static: true }) modalProductionsContactPersonDetailList: ModalComponent; - @ViewChild('productionContactPersonDetailList', { static: true }) productionContactPersonDetailList: ProductionContactPersonDetailComponent; - - public productions: IProduction[]; - public productionsById: {}; - private productionContacts: IProductionContact[]; - public productionContactsById: {}; - public hasAdminRights: boolean; - public hasExportRights: boolean; - - constructor(public appService: AppService, private productionService: ProductionService, private commonService: CommonService) { - super(); - } - - ngOnInit() { - this.hasAdminRights = this.appService.userHasRole(Const.USER_ROLE_ADMIN); - this.hasExportRights = this.appService.userHasRole(Const.USER_ROLE_ADMIN); - this.productions = []; - this.productionsById = {}; - this.productionContacts = []; - this.productionContactsById = {}; - - this.defaultColDef = { - resizable: true, - sortable: true - }; - - this.columnDefs = [ - {headerName: 'ID', field: 'id', width: 60 }, - {headerName: 'Produzent ID', field: 'production_id', width: 100 }, - {headerName: 'Produzent', field: 'production' }, - {headerName: 'Vorname', field: 'firstname' }, - {headerName: 'Nachname', field: 'lastname' }, - {headerName: 'Abteilung', field: 'department' }, - {headerName: 'E-Mail Adresse', field: 'email', cellRenderer: this.emailRenderer }, - {headerName: 'Telefon', field: 'phone_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Mobil', field: 'mobile_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Fax', field: 'fax_no' }, - {headerName: 'Bemerkungen', field: 'comment' } - ]; - - this.rowSelection = 'single'; - } - - /** - * Sets data - * @param productions - * @param productionContacts - */ - public setData(productions: IProduction[], productionContacts: IProductionContact[]): void { - this.productions = productions; - this.productionsById = Utils.getSortedObjFromArray(this.productions, 'id'); - this.productionContacts = productionContacts; - this.productionContactsById = Utils.getSortedObjFromArray(this.productionContacts, 'id'); - this.generateEntries(); - } - - /** - * Generates AG grid entries for productions grid - */ - public generateEntries(): void { - this.rowData = []; - - for (let i = 0; i < this.productionContacts.length; i++) { - this.rowData.push({ - id: this.productionContacts[i].id, - production_id: this.productionContacts[i].production_id, - production: this.productionsById[this.productionContacts[i].production_id].name, - firstname: this.productionContacts[i].firstname, - lastname: this.productionContacts[i].lastname, - department: this.productionContacts[i].department, - email: this.productionContacts[i].email, - phone_no: this.productionContacts[i].phone_no, - mobile_no: this.productionContacts[i].mobile_no, - fax_no: this.productionContacts[i].fax_no, - comment: this.productionContacts[i].comment - }); - } - } - - /** - * Row is clicked - * @param e - */ - public rowClicked(e: any) { - this.modalProductionsContactPersonDetailList.openModal(); - this.productionContactPersonDetailList.setData(this.productionsById[e.data.production_id], Utils.deepClone(this.productionContactsById[e.data.id]) as IProductionContact); - } - - /** - * Edit production contact - * @param productionContact - */ - public editProductionContactFunction(productionContact: IProductionContact): void { - this.productionService.apiEditProductionContact(productionContact).subscribe( - data => { - this.productionContactPersonDetailList.updateData(data.result_data as IProduction); - }, - error => {} - ); - } - - /** - * Delete production contact - * @param productionId - */ - public deleteProductionContactFunction(productionId: number): void { - this.productionService.apiDeleteProductionContact(productionId).subscribe( - data => { - this.modalProductionsContactPersonDetailList.closeModal(); - }, - error => {} - ); - } - - /** - * Shortcut to production detail - * @param production - */ - public shortcutFunction(production: IProduction): void { - this.modalProductionsContactPersonDetailList.closeModal(); - this.shortcut.emit(production); - } - - /** - * Export production contacts pdf - */ - public exportProductionContactsPdf(): void { - this.commonService.apiExportContactsPdf('Produktion_Kontakte', 'production'); - } - - /** - * Export production xmas pdf - */ - public exportXmasPdf(): void { - this.commonService.apiExportXmasPdf('Produzent_Weihnachten', 'production'); - } -} diff --git a/httpdocs/plp-angular/src/app/views/productions/productions-list/productions-list.component.html b/httpdocs/plp-angular/src/app/views/productions/productions-list/productions-list.component.html deleted file mode 100644 index aedbcb1..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/productions-list/productions-list.component.html +++ /dev/null @@ -1,24 +0,0 @@ -
Produzent anlegen
- -
- - -
- -
- - -
diff --git a/httpdocs/plp-angular/src/app/views/productions/productions-list/productions-list.component.scss b/httpdocs/plp-angular/src/app/views/productions/productions-list/productions-list.component.scss deleted file mode 100644 index 57cf610..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/productions-list/productions-list.component.scss +++ /dev/null @@ -1,14 +0,0 @@ -#create-production { - position: absolute; - right: 0; - top: 0; -} - -@media only screen and (max-width: 1004px) { - #create-production { - position: relative; - right: auto; - top: auto; - display: inline-block; - } -} diff --git a/httpdocs/plp-angular/src/app/views/productions/productions-list/productions-list.component.ts b/httpdocs/plp-angular/src/app/views/productions/productions-list/productions-list.component.ts deleted file mode 100644 index 71e40d0..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/productions-list/productions-list.component.ts +++ /dev/null @@ -1,113 +0,0 @@ -import {Component, EventEmitter, OnInit, Output} from '@angular/core'; -import {AgGridComponent} from '../../../components/ag-grid-component'; -import {AppService} from '../../../services/app.service'; -import {Const} from '../../../utils/const'; -import {isNull} from 'util'; -import {IProduction} from '../../../model/entities/production'; - -@Component({ - selector: 'app-production-list', - templateUrl: './productions-list.component.html', - styleUrls: ['./productions-list.component.scss'] -}) - -export class ProductionsListComponent extends AgGridComponent implements OnInit { - - @Output() rowIsClicked: EventEmitter = new EventEmitter(); - @Output() createNewProduction: EventEmitter = new EventEmitter(); - - private productions: IProduction[]; - public rowClassRules: {}; - public hasEditRights: boolean; - - constructor(public appService: AppService) { - super(); - } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_PRODUCTION) || - this.appService.userHasRole(Const.USER_ROLE_SERVICE); - - this.productions = []; - this.defaultColDef = { - resizable: true, - sortable: true - }; - - this.columnDefs = [ - {headerName: 'ID', field: 'production_id', width: 60 }, - {headerName: 'Status', field: 'active', width: 90 }, - {headerName: 'Name', field: 'production_name' }, - {headerName: 'Name Zusatz', field: 'production_name_additional' }, - {headerName: 'Alte PLP Kennung', field: 'old_plp_id' }, - {headerName: 'Straße', field: 'street' }, - {headerName: 'Hausnummer', field: 'street_no' }, - {headerName: 'PLZ', field: 'zip' }, - {headerName: 'Ort', field: 'city' }, - {headerName: 'Internetadresse', field: 'url', cellRenderer: this.urlRenderer }, - {headerName: 'Bemerkungen (Allgemein)', field: 'comment' } - ]; - - this.rowSelection = 'single'; - - this.rowClassRules = { - inactive(params) { - return !params.data.active_state; - } - }; - } - - /** - * Sets data - * @param productions - */ - public setData(productions: IProduction[]): void { - this.productions = productions; - this.generateEntries(); - } - - /** - * Generates AG grid entries for production grid - */ - public generateEntries(): void { - this.rowData = []; - - if (!isNull(this.productions)) { - for (let i = 0; i < this.productions.length; i++) { - this.rowData.push({ - production_id: this.productions[i].id, - active_state: this.productions[i].active, - active: this.productions[i].active ? 'Aktiv' : 'Inaktiv', - production_name: this.productions[i].name, - production_name_additional: this.productions[i].name_additional, - old_plp_id: this.productions[i].old_plp_id, - street: this.productions[i].street, - street_no: this.productions[i].street_no, - zip: this.productions[i].zip, - city: this.productions[i].city, - url: this.productions[i].url, - comment: this.productions[i].comment, - }); - } - } - - } - - /** - * Row is clicked - * @param e - */ - public rowClicked(e: any) { - this.rowIsClicked.emit(e); - } - - /** - * OnClick Create production - */ - public createProduction(): void { - this.createNewProduction.emit(true); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/productions/productions.component.html b/httpdocs/plp-angular/src/app/views/productions/productions.component.html deleted file mode 100644 index f4219d8..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/productions.component.html +++ /dev/null @@ -1,34 +0,0 @@ -
-

Produzenten

- - - - - - - - - -
- - - - - -
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/productions/productions.component.scss b/httpdocs/plp-angular/src/app/views/productions/productions.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/productions/productions.component.ts b/httpdocs/plp-angular/src/app/views/productions/productions.component.ts deleted file mode 100644 index 3500952..0000000 --- a/httpdocs/plp-angular/src/app/views/productions/productions.component.ts +++ /dev/null @@ -1,279 +0,0 @@ -import {Component, ElementRef, OnDestroy, OnInit, ViewChild} from '@angular/core'; -import {AgGridComponent} from '../../components/ag-grid-component'; -import {AppService} from '../../services/app.service'; -import {MeetingService} from '../../services/meeting.service'; -import {TabsComponent} from '../../components/tabs/tabs.component'; -import {ModalComponent} from '../../components/modal/modal.component'; -import {Subscription} from 'rxjs'; -import {Factory} from '../../factory/factory'; -import {isNull} from 'util'; -import {ProductionViewComponent} from './production-view/production-view.component'; -import {ProductionsListComponent} from './productions-list/productions-list.component'; -import {ProductionsContactListComponent} from './productions-contact-list/productions-contact-list.component'; -import {ProductionDataEditComponent} from './production-view/production-data-edit/production-data-edit.component'; -import {IProduction} from '../../model/entities/production'; -import {IProductionContact} from '../../model/entities/production-contact'; -import {ProductionService} from '../../services/production.service'; -import {IProductionNote} from '../../model/entities/production-note'; -import {IProductionMeeting} from '../../model/entities/production-meeting'; - -@Component({ - selector: 'app-productions', - templateUrl: './productions.component.html', - styleUrls: ['./productions.component.scss'] -}) - -export class ProductionsComponent extends AgGridComponent implements OnInit, OnDestroy { - - @ViewChild('tabsCM', { static: true }) tabsCM: TabsComponent; - @ViewChild('modalProduction', { static: true }) modalProduction: ModalComponent; - @ViewChild('productionView', { static: true }) productionView: ProductionViewComponent; - @ViewChild('productionsList', { static: true }) productionsList: ProductionsListComponent; - @ViewChild('productionsContactList', { static: true }) productionsContactList: ProductionsContactListComponent; - @ViewChild('modalProductionDataEdit', { static: true }) modalProductionDataEdit: ModalComponent; - @ViewChild('productionDataEdit', { static: true }) productionDataEdit: ProductionDataEditComponent; - @ViewChild('headline', { static: true }) headline: ElementRef; - @ViewChild('content', { static: true }) content: ElementRef; - - private productions: IProduction[]; - private productionsSub: Subscription; - private productionsContactsSub: Subscription; - public productionContacts: IProductionContact[]; - - constructor(private appService: AppService, private productionService: ProductionService, private meetingService: MeetingService) { - super(); - this.productionService.apiGetProductionData(); - } - - ngOnInit() { - this.productionContacts = []; - - this.productionsSub = this.productionService.getProductions$().subscribe( - data => { - this.productions = data; - this.setComponentData(); - } - ); - - this.productionsContactsSub = this.productionService.getProductionContacts$().subscribe( - data => { - this.productionContacts = data; - this.setComponentData(); - } - ); - } - - /** - * Set component data after all data has been received - */ - private setComponentData() { - if (!isNull(this.productions) && !isNull(this.productionContacts)) { - this.productionsList.setData(this.productions); - this.productionsContactList.setData(this.productions, this.productionContacts); - } - } - - /** - * production row is clicked - * @param e - */ - public rowClickedProduction(e: any) { - this.productionService.apiGetProductionFull(e.data.production_id).subscribe( - data => { - this.productionView.setData(data.result_data as IProduction); - this.modalProduction.openModal(); - }, - error => {} - ); - } - - /** - * OnClick Create production - */ - public createProduction(): void { - this.modalProductionDataEdit.openModal(); - this.productionDataEdit.setData(Factory.getEmptyProduction()); - } - - /** - * Creates production - * @param production - */ - public createProductionFunction(production: IProduction): void { - this.productionService.apiCreateProduction(production).subscribe( - data => { - this.modalProductionDataEdit.closeModal(); - }, - error => {} - ); - } - - /** - * Saves production - * @param production - */ - public editProductionFunction(production: IProduction): void { - this.productionService.apiEditProduction(production).subscribe( - data => { - this.productionView.setData(data.result_data as IProduction); - }, - error => {} - ); - } - - /** - * Creates production contact - * @param productionContact - */ - public createProductionContactFunction(productionContact: IProductionContact): void { - this.productionService.apiCreateProductionContact(productionContact).subscribe( - data => { - this.productionView.setData(data.result_data as IProduction); - }, - error => {} - ); - } - - /** - * Edit production contact - * @param productionContact - */ - public editProductionContactFunction(productionContact: IProductionContact): void { - this.productionService.apiEditProductionContact(productionContact).subscribe( - data => { - this.productionView.setData(data.result_data as IProduction, true); - }, - error => {} - ); - } - - /** - * Deletes production contact - * @param productionContactId - */ - public deleteProductionContactFunction(productionContactId: number): void { - this.productionService.apiDeleteProductionContact(productionContactId).subscribe( - data => { - this.productionView.setData(data.result_data as IProduction); - }, - error => {} - ); - } - - /** - * Creates production note entry - * @param productionNote - */ - public createProductionNoteFunction(productionNote: IProductionNote): void { - this.productionService.apiCreateProductionNote(productionNote).subscribe( - data => { - this.productionView.setData(data.result_data as IProduction); - }, - error => {} - ); - } - - /** - * Edits production note entry - * @param productionNote - */ - public editProductionNoteFunction(productionNote: IProductionNote): void { - this.productionService.apiEditProductionNote(productionNote).subscribe( - data => { - this.productionView.setData(data.result_data as IProduction, true); - }, - error => {} - ); - } - - /** - * Deletes production note entry - * @param productionNoteId - */ - public deleteProductionNoteFunction(productionNoteId: number): void { - this.productionService.apiDeleteProductionNote(productionNoteId).subscribe( - data => { - this.productionView.setData(data.result_data as IProduction); - }, - error => {} - ); - } - - /** - * Creates production meeting entry - * @param productionMeeting - */ - public createProductionMeetingFunction(productionMeeting: IProductionMeeting): void { - this.meetingService.apiCreateProductionMeeting(productionMeeting).subscribe( - data => { - this.productionView.setData(data.result_data as IProduction); - }, - error => {} - ); - } - - /** - * Edits production meeting entry - * @param productionMeeting - */ - public editProductionMeetingFunction(productionMeeting: IProductionMeeting): void { - this.meetingService.apiEditProductionMeeting(productionMeeting).subscribe( - data => { - this.productionView.setData(data.result_data as IProduction, true); - }, - error => {} - ); - } - - /** - * Deletes production meeting entry - * @param productionMeetingId - */ - public deleteProductionMeetingFunction(productionMeetingId: number): void { - this.meetingService.apiDeleteProductionMeeting(productionMeetingId).subscribe( - data => { - this.productionView.setData(data.result_data as IProduction); - }, - error => {} - ); - } - - /** - * Edit report after meeting has started - * @param reportValues - */ - public editProductionMeetingReportFunction(reportValues: any): void { - const meetingId: number = reportValues.id; - const report: string = reportValues.report; - this.meetingService.apiEditProductionMeetingReport(meetingId, report).subscribe( - data => { - this.productionView.setData(data.result_data as IProduction, true); - }, - error => {} - ); - } - - /** - * Shortcut to production detail - * @param production - */ - public shortcutFunction(production: IProduction): void { - this.productionService.apiGetProductionFull(production.id).subscribe( - data => { - this.productionView.setData(data.result_data as IProduction); - this.modalProduction.openModal(); - }, - error => {} - ); - } - - /** - * Destroy - */ - ngOnDestroy(): void { - if (this.productionsSub !== null && this.productionsSub !== undefined) { - this.productionsSub.unsubscribe(); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-detail/service-contact-person-detail.component.html b/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-detail/service-contact-person-detail.component.html deleted file mode 100644 index 5f0a87b..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-detail/service-contact-person-detail.component.html +++ /dev/null @@ -1,48 +0,0 @@ -
-

Ansprechpartner Detail

-
-
-
-
Gesprächspartner:
-
Herr - Frau - Divers {{serviceContact.firstname}} {{serviceContact.lastname}}
-
Abteilung:
-
{{serviceContact.department}}
-
E-Mail:
-
{{serviceContact.email}}
-
Telefon:
-
{{serviceContact.phone_no}}
-
Mobil:
-
{{serviceContact.mobile_no}}
-
Fax:
-
{{serviceContact.fax_no}}
-
Adresse:
-
{{serviceContact.street}} {{serviceContact.street_no}}
- {{serviceContact.zip}} {{serviceContact.city}} -
{{config.vc_countries_by_id[serviceContact.country_id]['name']}}
-
Notiz:
-
{{serviceContact.comment}}
-
Markiert für Weihnachtspost:
-
- Ja - Nein -
-
-
-
-
-
-
- Zum Service-Dienstleister-Profil -
Eintrag bearbeiten
-
Eintrag löschen
-
-
-
-
-
-
- -
-
\ No newline at end of file diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-detail/service-contact-person-detail.component.scss b/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-detail/service-contact-person-detail.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-detail/service-contact-person-detail.component.ts b/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-detail/service-contact-person-detail.component.ts deleted file mode 100644 index 3f176c7..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-detail/service-contact-person-detail.component.ts +++ /dev/null @@ -1,108 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {IServiceContact} from '../../../../model/entities/service-contact'; -import {IService} from '../../../../model/entities/service'; -import { - ServiceContactPersonEditComponent -} from '../service-contact-person-edit/service-contact-person-edit.component'; - -@Component({ - selector: 'app-service-contact-person-detail', - templateUrl: './service-contact-person-detail.component.html', - styleUrls: ['./service-contact-person-detail.component.scss'] -}) - -export class ServiceContactPersonDetailComponent implements OnInit { - - @Output() deleteServiceContact: EventEmitter = new EventEmitter(); - @Output() editServiceContact: EventEmitter = new EventEmitter(); - @Output() shortcut: EventEmitter = new EventEmitter(); - @ViewChild('serviceContactEdit', { static: true }) serviceContactEdit: ServiceContactPersonEditComponent; - - public isEditMode: boolean; - public service: IService; - public serviceContact: IServiceContact; - public config: IConfig; - public hasEditRights: boolean; - - constructor(public appService: AppService) { } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_PRODUCTION) || - this.appService.userHasRole(Const.USER_ROLE_SERVICE); - this.config = this.appService.getConfig(); - this.isEditMode = false; - this.service = Factory.getEmptyService(); - this.serviceContact = Factory.getEmptyServiceContact(); - } - - /** - * Sets data - */ - public setData(service: IService, serviceContact: IServiceContact): void { - this.setContactPersonData(service); - this.serviceContact = serviceContact; - } - - /** - * Updates data - * @param service - */ - public updateData(service: IService): void { - this.setContactPersonData(service); - for (let i = 0; i < this.service.v_service_contacts.length; i++) { - if (this.service.v_service_contacts[i].id === this.serviceContact.id) { - this.serviceContact = this.service.v_service_contacts[i]; - } - } - } - - /** - * Sets contact person data - * @param service - */ - public setContactPersonData(service: IService): void { - this.isEditMode = false; - this.service = service; - } - - /** - * Edit contact entry - */ - public editEntry(): void { - this.isEditMode = true; - this.serviceContactEdit.setData(Utils.deepClone(this.serviceContact) as IServiceContact); - } - - /** - * Edits meeting entry - * @param serviceContact - */ - public editServiceContactFunction(serviceContact: IServiceContact) { - this.editServiceContact.emit(serviceContact); - } - - /** - * Delete contact entry - */ - public deleteEntry(): void { - const confirmAction = confirm('Wollen Sie diesen Ansprechpartner wirklich löschen?'); - if (confirmAction == true) { - this.deleteServiceContact.emit(this.serviceContact.id); - } - } - - /** - * Shortcut to service detail - */ - public serviceShortcut(): void { - this.shortcut.emit(this.service); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-edit/service-contact-person-edit.component.html b/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-edit/service-contact-person-edit.component.html deleted file mode 100644 index ca3ae85..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-edit/service-contact-person-edit.component.html +++ /dev/null @@ -1,135 +0,0 @@ -

Ansprechpartner anlegen

-

Ansprechpartner bearbeiten

-
-
-
-

{{ errorMsg }}

-

- Anrede ist ein Pflichtfeld. -

-

- Nachname ist ein Pflichtfeld. -

-

- Bitte gültige E-Mail Adresse eingeben. -

-
-
-
-
-
-
- - -
-
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
-
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- -
-
- - -
-
-
diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-edit/service-contact-person-edit.component.scss b/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-edit/service-contact-person-edit.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-edit/service-contact-person-edit.component.ts b/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-edit/service-contact-person-edit.component.ts deleted file mode 100644 index 3a5c6b0..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-edit/service-contact-person-edit.component.ts +++ /dev/null @@ -1,80 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {FormComponent} from '../../../../components/form-component'; -import {NgForm} from '@angular/forms'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {Factory} from '../../../../factory/factory'; -import {isNull} from 'util'; -import {Utils} from '../../../../utils/utils'; -import {IServiceContact} from '../../../../model/entities/service-contact'; - -@Component({ - selector: 'app-service-contact-person-edit', - templateUrl: './service-contact-person-edit.component.html', - styleUrls: ['./service-contact-person-edit.component.scss'] -}) - -export class ServiceContactPersonEditComponent extends FormComponent implements OnInit { - - @Output() createServiceContact: EventEmitter = new EventEmitter(); - @Output() editServiceContact: EventEmitter = new EventEmitter(); - @ViewChild('serviceContactForm', { static: true }) serviceContactForm: NgForm; - - public serviceContact: IServiceContact; - public config: IConfig; - - constructor(private appService: AppService, protected scrollToService: ScrollToService) { - super(scrollToService); - } - - ngOnInit() { - this.serviceContact = Factory.getEmptyServiceContact(); - this.config = this.appService.getConfig(); - } - - /** - * Sets data - * @param serviceContact - */ - public setData(serviceContact: IServiceContact): void { - this.serviceContact = serviceContact; - this.isCreationMode = isNull(this.serviceContact.id); - this.errorMsg = ''; - this.resetFormValidation(); - } - - /** - * Resets Form Validation - */ - public resetFormValidation(): void { - this.serviceContactForm.form.markAsUntouched(); - } - - /** - * Saves service - * @param value - * @param valid - */ - public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { - this.errorMsg = 'Bitte beheben Sie alle Fehler.'; - if (valid) { - // Check if date is valid - if (isNull(this.serviceContact.date_of_birth) || - (!isNull(this.serviceContact.date_of_birth) && Utils.isValidDate(this.serviceContact.date_of_birth))) { - if (this.isCreationMode) { - this.createServiceContact.emit(this.serviceContact); - } else { - this.editServiceContact.emit(this.serviceContact); - } - this.errorMsg = ''; - } else { - this.errorMsg = 'Bitte korrektes Datum eingeben.'; - this.scrollUp(this.isCreationMode ? 'service-contact-person-modal' : 'service-contact-person-edit-modal'); - } - } else { - this.scrollUp(this.isCreationMode ? 'service-contact-person-modal' : 'service-contact-person-edit-modal'); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-view/service-contact-person-view.component.html b/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-view/service-contact-person-view.component.html deleted file mode 100644 index bb7c1f4..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-view/service-contact-person-view.component.html +++ /dev/null @@ -1,35 +0,0 @@ -

Ansprechpartner

-

Hier sind die Ansprechpartner zu sehen:

-
Ansprechpartner anlegen
-
- - -
-
- - -
- - - - - - -
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-view/service-contact-person-view.component.scss b/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-view/service-contact-person-view.component.scss deleted file mode 100644 index 7006c6f..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-view/service-contact-person-view.component.scss +++ /dev/null @@ -1,14 +0,0 @@ -#create-service-contact { - position: absolute; - right: 0; - top: -6rem; -} - -@media only screen and (max-width: 1004px) { - #create-service-contact { - position: relative; - right: auto; - top: auto; - display: inline-block; - } -} diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-view/service-contact-person-view.component.ts b/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-view/service-contact-person-view.component.ts deleted file mode 100644 index bc69965..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-contact-person-view/service-contact-person-view.component.ts +++ /dev/null @@ -1,181 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {AgGridComponent} from '../../../../components/ag-grid-component'; -import {ModalComponent} from '../../../../components/modal/modal.component'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {isNull} from 'util'; -import {IServiceContact} from '../../../../model/entities/service-contact'; -import {IService} from '../../../../model/entities/service'; -import { - ServiceContactPersonEditComponent -} from '../service-contact-person-edit/service-contact-person-edit.component'; -import { - ServiceContactPersonDetailComponent -} from '../service-contact-person-detail/service-contact-person-detail.component'; - -@Component({ - selector: 'app-service-contact-person-view', - templateUrl: './service-contact-person-view.component.html', - styleUrls: ['./service-contact-person-view.component.scss'] -}) - -export class ServiceContactPersonViewComponent extends AgGridComponent implements OnInit { - - @Output() createServiceContact: EventEmitter = new EventEmitter(); - @Output() editServiceContact: EventEmitter = new EventEmitter(); - @Output() deleteServiceContact: EventEmitter = new EventEmitter(); - @Output() shortcut: EventEmitter = new EventEmitter(); - @ViewChild('modalServiceContactPersonEdit', { static: true }) modalServiceContactPersonEdit: ModalComponent; - @ViewChild('serviceContactPersonEdit', { static: true }) serviceContactPersonEdit: ServiceContactPersonEditComponent; - @ViewChild('modalServiceContactPersonDetail', { static: true }) modalServiceContactPersonDetail: ModalComponent; - @ViewChild('serviceContactPersonDetail', { static: true }) serviceContactPersonDetail: ServiceContactPersonDetailComponent; - - public service: IService; - public serviceContacts: IServiceContact[]; - public serviceContactsById: {}; - public config: IConfig; - public hasEditRights: boolean; - - constructor(private appService: AppService) { - super(); - } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_PRODUCTION) || - this.appService.userHasRole(Const.USER_ROLE_SERVICE); - this.config = this.appService.getConfig(); - this.service = Factory.getEmptyService(); - this.serviceContacts = []; - this.serviceContactsById = {}; - - this.defaultColDef = { - resizable: true, - sortable: true - }; - - this.columnDefs = [ - {headerName: 'Anrede', field: 'gender', width: 90 }, - {headerName: 'Vorname', field: 'firstname' }, - {headerName: 'Nachname', field: 'lastname' }, - {headerName: 'Abteilung', field: 'department' }, - {headerName: 'E-Mail Adresse', field: 'email', cellRenderer: this.emailRenderer }, - {headerName: 'Telefon', field: 'phone_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Mobil', field: 'mobile_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Fax', field: 'fax_no' }, - {headerName: 'Straße', field: 'street' }, - {headerName: 'Hausnummer', field: 'street_no' }, - {headerName: 'PLZ', field: 'zip' }, - {headerName: 'Ort', field: 'city' }, - {headerName: 'Land', field: 'country' }, - {headerName: 'Bemerkungen', field: 'comment' } - ]; - } - - /** - * Sets data - * @param service - * @param isUpdate - */ - public setData(service: IService, isUpdate: boolean): void { - this.service = service; - this.serviceContacts = this.service.v_service_contacts; - this.serviceContactsById = Utils.getSortedObjFromArray(this.serviceContacts, 'id'); - this.modalServiceContactPersonEdit.closeModal(); - this.generateEntries(); - if (isUpdate) { - this.serviceContactPersonDetail.updateData(service); - } else { - this.modalServiceContactPersonDetail.closeModal(); - } - } - - /** - * Generates AG grid entries - */ - public generateEntries(): void { - this.rowData = []; - for (let i = 0; i < this.serviceContacts.length; i++) { - let ocGender: string; - if (this.serviceContacts[i].gender == 'male') { - ocGender = 'Herr'; - } else if (this.serviceContacts[i].gender == 'female') { - ocGender = 'Frau'; - } else { - ocGender = 'Divers'; - } - this.rowData.push({ - id: this.serviceContacts[i].id, - gender: ocGender, - firstname: this.serviceContacts[i].firstname, - lastname: this.serviceContacts[i].lastname, - department: this.serviceContacts[i].department, - email: this.serviceContacts[i].email, - phone_no: this.serviceContacts[i].phone_no, - mobile_no: this.serviceContacts[i].mobile_no, - fax_no: this.serviceContacts[i].fax_no, - street: this.serviceContacts[i].street, - street_no: this.serviceContacts[i].street_no, - zip: this.serviceContacts[i].zip, - city: this.serviceContacts[i].city, - country: !isNull(this.serviceContacts[i].country_id) ? this.config.vc_countries_by_id[this.serviceContacts[i].country_id].name : null, - comment: this.serviceContacts[i].comment, - }); - } - } - - /** - * On row click - * @param e - */ - public rowClicked(e: any) { - this.modalServiceContactPersonDetail.openModal(); - this.serviceContactPersonDetail.setData(this.service, Utils.deepClone(this.serviceContactsById[e.data.id]) as IServiceContact); - } - - /** - * On create click - */ - public create(): void { - this.modalServiceContactPersonEdit.openModal(); - this.serviceContactPersonEdit.setData(Factory.getEmptyServiceContact(this.service.id)); - } - - /** - * Creates service contact - * @param serviceContact - */ - public createServiceContactFunction(serviceContact: IServiceContact): void { - this.createServiceContact.emit(serviceContact); - } - - /** - * Edit service contact - * @param serviceContact - */ - public editServiceContactFunction(serviceContact: IServiceContact): void { - this.editServiceContact.emit(serviceContact); - } - - /** - * Deletes service contact - * @param serviceId - */ - public deleteServiceContactFunction(serviceId: number): void { - this.deleteServiceContact.emit(serviceId); - } - - /** - * Shortcut to service detail - * @param service - */ - public shortcutFunction(service: IService): void { - this.modalServiceContactPersonDetail.closeModal(); - this.shortcut.emit(service); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-data-edit/service-data-edit.component.html b/httpdocs/plp-angular/src/app/views/services/service-view/service-data-edit/service-data-edit.component.html deleted file mode 100644 index 91c01b7..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-data-edit/service-data-edit.component.html +++ /dev/null @@ -1,120 +0,0 @@ -

{{service.name}} bearbeiten

-

Service-Dienstleister anlegen

-
-
-
-

{{ errorMsg }}

-

- Name ist ein Pflichtfeld. -

-

- Bitte gültige E-Mail Adresse eingeben. -

-
-
-
-
-

Aktivität

- - -
-
-
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
-
-
-
- - -
-
- - -
-
-
-
-
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
-
-
-
- -
-
- - -
-
-
diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-data-edit/service-data-edit.component.scss b/httpdocs/plp-angular/src/app/views/services/service-view/service-data-edit/service-data-edit.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-data-edit/service-data-edit.component.ts b/httpdocs/plp-angular/src/app/views/services/service-view/service-data-edit/service-data-edit.component.ts deleted file mode 100644 index 69e6112..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-data-edit/service-data-edit.component.ts +++ /dev/null @@ -1,71 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {FormComponent} from '../../../../components/form-component'; -import {NgForm} from '@angular/forms'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {Factory} from '../../../../factory/factory'; -import {isNull} from 'util'; -import {IService} from '../../../../model/entities/service'; - -@Component({ - selector: 'app-service-data-edit', - templateUrl: './service-data-edit.component.html', - styleUrls: ['./service-data-edit.component.scss'] -}) - -export class ServiceDataEditComponent extends FormComponent implements OnInit { - - @Output() editService: EventEmitter = new EventEmitter(); - @Output() createService: EventEmitter = new EventEmitter(); - @ViewChild('serviceDataForm', { static: true }) serviceDataForm: NgForm; - - public service: IService; - public config: IConfig; - - constructor(private appService: AppService, protected scrollToService: ScrollToService) { - super(scrollToService); - } - - ngOnInit() { - this.service = Factory.getEmptyService(); - this.config = this.appService.getConfig(); - } - - /** - * Sets data - * @param service - */ - public setData(service: IService): void { - this.service = service; - this.isCreationMode = isNull(this.service.id); - this.errorMsg = ''; - this.resetFormValidation(); - } - - /** - * Resets Form Validation - */ - public resetFormValidation(): void { - this.serviceDataForm.form.markAsUntouched(); - } - - /** - * Saves service - * @param value - * @param valid - */ - public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { - this.errorMsg = 'Bitte beheben Sie alle Fehler.'; - if (valid) { - if (this.isCreationMode) { - this.createService.emit(this.service); - } else { - this.editService.emit(this.service); - } - this.errorMsg = ''; - } else { - this.scrollUp(this.isCreationMode ? 'service-data-modal' : 'service-data-edit-modal'); - } - } -} diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-data-view/service-data-view.component.html b/httpdocs/plp-angular/src/app/views/services/service-view/service-data-view/service-data-view.component.html deleted file mode 100644 index 93de1d2..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-data-view/service-data-view.component.html +++ /dev/null @@ -1,38 +0,0 @@ -

Service-Dienstleister-Daten

-
-
-
-
Status:
-
AktivInaktiv
-
Firma:
-
{{service.name}} ({{service.old_plp_id}})
-
Zusatz:
-
{{service.name_additional}}
-
Adresse:
-
{{service.street}} {{service.street_no}}
- {{service.zip}} {{service.city}} -
{{config.vc_countries_by_id[service.country_id]['name']}}
-
Internetadresse:
-
{{checkedUrl}}
-
E-Mail:
-
{{service.email}}
-
Telefon:
-
{{service.phone_no}}
-
Mobil:
-
{{service.mobile_no}}
-
Fax:
-
{{service.fax_no}}
-
Bemerkung:
-
{{service.comment}}
-
-
-
-
bearbeiten
-
-
- - -
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-data-view/service-data-view.component.scss b/httpdocs/plp-angular/src/app/views/services/service-view/service-data-view/service-data-view.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-data-view/service-data-view.component.ts b/httpdocs/plp-angular/src/app/views/services/service-view/service-data-view/service-data-view.component.ts deleted file mode 100644 index 995d748..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-data-view/service-data-view.component.ts +++ /dev/null @@ -1,66 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {ModalComponent} from '../../../../components/modal/modal.component'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {IService} from '../../../../model/entities/service'; -import {ServiceDataEditComponent} from '../service-data-edit/service-data-edit.component'; - -@Component({ - selector: 'app-service-data-view', - templateUrl: './service-data-view.component.html', - styleUrls: ['./service-data-view.component.scss'] -}) - -export class ServiceDataViewComponent implements OnInit { - - @Output() editService: EventEmitter = new EventEmitter(); - @ViewChild('modalServiceDataEdit', { static: true }) modalServiceDataEdit: ModalComponent; - @ViewChild('serviceDataEdit', { static: true }) serviceDataEdit: ServiceDataEditComponent; - - public service: IService; - public checkedUrl: string; - public config: IConfig; - public hasEditRights: boolean; - - constructor(private appService: AppService) { } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_PRODUCTION) || - this.appService.userHasRole(Const.USER_ROLE_SERVICE); - this.config = this.appService.getConfig(); - this.service = Factory.getEmptyService(); - this.checkedUrl = ''; - } - - /** - * Sets data - * @param service - */ - public setData(service: IService): void { - this.service = service; - this.checkedUrl = Utils.checkUrl(this.service.url); - this.modalServiceDataEdit.closeModal(); - } - - /** - * On edit click - */ - public edit(): void { - this.modalServiceDataEdit.openModal(); - this.serviceDataEdit.setData(Utils.deepClone(this.service) as IService); - } - - /** - * Saves service - * @param service - */ - public editServiceFunction(service: IService): void { - this.editService.emit(service); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-detail/service-meeting-detail.component.html b/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-detail/service-meeting-detail.component.html deleted file mode 100644 index df26d16..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-detail/service-meeting-detail.component.html +++ /dev/null @@ -1,77 +0,0 @@ -
-

Termin mit Service-Dienstleister: {{service.name}}

-

{{date}} {{timeStart}} Uhr bis {{timeEnd}} Uhr

-

{{serviceMeeting.title}}

-
Erstellt von: {{creator.firstname}} {{creator.lastname}}
-

{{serviceMeeting.description}}

-
-
-
-
-
Termin-Art:
-
{{meetingType.name}}
-
PLP Verantwortlicher:
-
{{owner.firstname}} {{owner.lastname}}
-
Teilnehmer:
-
- - {{p.firstname}} {{p.lastname}}
-
-
- -
Adresse:
-
{{serviceMeeting.street}} {{serviceMeeting.street_no}}
- {{serviceMeeting.zip}} {{serviceMeeting.city}} -
{{config.vc_countries_by_id[serviceMeeting.country_id]['name']}}
-
-
Gesprächspartner:
-
Herr - Frau - Divers {{serviceMeeting.firstname}} {{serviceMeeting.lastname}}
-
Abteilung:
-
{{serviceMeeting.department}}
-
E-Mail:
-
{{serviceMeeting.email}}
-
Telefon:
-
{{serviceMeeting.phone_no}}
-
Mobil:
-
{{serviceMeeting.mobile_no}}
-
Report:
-
{{reportOld}}
-
-
-
-
-
-
-
-
Eintrag bearbeiten
-
Eintrag löschen
-
Report bearbeiten
-
-
-
-
-
-
-

{{ errorMsg }}

-
-
-
- - -
-
-
-
- -
-
-
-
-
-
-
- -
-
\ No newline at end of file diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-detail/service-meeting-detail.component.scss b/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-detail/service-meeting-detail.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-detail/service-meeting-detail.component.ts b/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-detail/service-meeting-detail.component.ts deleted file mode 100644 index d554652..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-detail/service-meeting-detail.component.ts +++ /dev/null @@ -1,206 +0,0 @@ -import { - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, - EventEmitter, - OnInit, - Output, - ViewChild -} from '@angular/core'; -import {FormComponent} from '../../../../components/form-component'; -import {NgForm} from '@angular/forms'; -import {IUser} from '../../../../model/entities/user'; -import {IMeetingType} from '../../../../model/entities/meeting-type'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {MeetingService} from '../../../../services/meeting.service'; -import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {isNull} from 'util'; -import {Utils} from '../../../../utils/utils'; -import {IServiceMeeting} from '../../../../model/entities/service-meeting'; -import {ServiceMeetingEditComponent} from '../service-meeting-edit/service-meeting-edit.component'; -import {IService} from '../../../../model/entities/service'; -import {ServiceService} from '../../../../services/service.service'; - -@Component({ - selector: 'app-service-meeting-detail', - templateUrl: './service-meeting-detail.component.html', - styleUrls: ['./service-meeting-detail.component.scss'], - // NOTE: We need manual change detection in this component - changeDetection: ChangeDetectionStrategy.OnPush, -}) - -export class ServiceMeetingDetailComponent extends FormComponent implements OnInit { - - @Output() editMeeting: EventEmitter = new EventEmitter(); - @Output() deleteMeeting: EventEmitter = new EventEmitter(); - @Output() editMeetingReport: EventEmitter = new EventEmitter(); - @ViewChild('serviceMeetingDetailEdit', { static: true }) serviceMeetingDetailEdit: ServiceMeetingEditComponent; - @ViewChild('serviceMeetingReportForm', { static: true }) serviceMeetingReportForm: NgForm; - - public service: IService; - public serviceMeeting: IServiceMeeting; - public isEditMode: boolean; - public creator: IUser; - public owner: IUser; - public participants: IUser[]; - public meetingType: IMeetingType; - public date: string; - public timeStart: string; - public timeEnd: string; - public config: IConfig; - public reportFormVisible: boolean; - public reportOld: string; - public hasEditRights: boolean; - public hasReportRights: boolean; - - constructor(public appService: AppService, private serviceService: ServiceService, private meetingService: MeetingService, protected scrollToService: ScrollToService, private ref: ChangeDetectorRef) { - super(scrollToService); - } - - ngOnInit() { - this.hasEditRights = this.appService.userHasRole(Const.USER_ROLE_ADMIN); - this.hasReportRights = this.appService.userHasRole(Const.USER_ROLE_ADMIN); - this.config = this.appService.getConfig(); - this.service = Factory.getEmptyService(); - this.serviceMeeting = Factory.getEmptyServiceMeeting(); - this.creator = Factory.getEmptyUser(); - this.owner = Factory.getEmptyUser(); - this.participants = []; - this.meetingType = Factory.getEmptyMeetingType(); - this.date = ''; - this.timeStart = ''; - this.timeEnd = ''; - this.reportFormVisible = false; - this.reportOld = ''; - } - - /** - * Set data - * @param service - * @param serviceMeeting - */ - public setData(service: IService, serviceMeeting: IServiceMeeting): void { - this.service = service; - this.serviceMeeting = serviceMeeting; - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_ADMIN) || - this.appService.getAppUser().id === serviceMeeting.creation_user_id || - this.appService.getAppUser().id === serviceMeeting.owner_user_id; - this.hasReportRights = - this.appService.userHasRole(Const.USER_ROLE_ADMIN) || - this.appService.getAppUser().id === serviceMeeting.owner_user_id; - this.setMeetingData(); - } - - /** - * Updates data - * @param service - */ - public updateData(service: IService): void { - this.service = service; - if (!isNull(this.serviceMeeting.id)) { - for (let i = 0; i < this.service.v_service_meetings.length; i++) { - if (this.service.v_service_meetings[i].id == this.serviceMeeting.id) { - this.serviceMeeting = this.service.v_service_meetings[i]; - } - } - this.setMeetingData(); - } - } - - /** - * Sets variables for meeting - */ - public setMeetingData() { - this.errorMsg = ''; - this.reportFormVisible = false; - this.reportOld = this.serviceMeeting.report; - this.creator = this.appService.getConfig().vc_user_by_id[this.serviceMeeting.creation_user_id]; - this.owner = this.appService.getConfig().vc_user_by_id[this.serviceMeeting.owner_user_id]; - this.participants = []; - for (let i = 0; i < this.serviceMeeting.v_participants.length; i++) { - this.participants.push(this.appService.getConfig().vc_user_by_id[this.serviceMeeting.v_participants[i].participant_user_id]); - } - this.meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.serviceMeeting.meeting_type_id]; - this.date = Utils.getDateTimeToDisplay(this.serviceMeeting.start_date); - this.timeStart = Utils.getDateTimeToDisplay(this.serviceMeeting.start_date, false, true); - this.timeEnd = Utils.getDateTimeToDisplay(this.serviceMeeting.end_date, false, true); - this.isEditMode = false; - this.resetFormValidation(); - // NOTE: We need manual change detection in this component - this.ref.detectChanges(); - } - - /** - * Edit meeting entry - */ - public editEntry(): void { - this.isEditMode = true; - this.serviceMeetingDetailEdit.setData(this.service, Utils.deepClone(this.serviceMeeting) as IServiceMeeting); - } - - /** - * Edits meeting entry - * @param serviceMeeting - */ - public editServiceMeetingFunction(serviceMeeting: IServiceMeeting) { - this.editMeeting.emit(serviceMeeting); - } - - /** - * Delete meeting entry - */ - public deleteEntry(): void { - const confirmAction = confirm('Wollen Sie diesen Eintrag wirklich löschen?'); - if (confirmAction == true) { - this.deleteMeeting.emit(this.serviceMeeting.id); - } - } - - /** - * Check if edit report after meeting has started - */ - public editReport(): void { - this.meetingService.apiCheckServiceMeetingReport(this.serviceMeeting.id).subscribe( - data => { - this.reportFormVisible = data.result_data as boolean; - // NOTE: We need manual change detection in this component - this.ref.detectChanges(); - this.scrollUp('service-meeting-edit-report'); - }, - error => { - } - ); - } - - /** - * Resets Form Validation - */ - public resetFormValidation(): void { - if (this.reportFormVisible) { - this.serviceMeetingReportForm.form.markAsUntouched(); - } - } - - /** - * Saves service meeting report - * @param value - * @param valid - */ - public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { - this.errorMsg = 'Bitte beheben Sie alle Fehler.'; - if (valid) { - this.editMeetingReport.emit({ - id: this.serviceMeeting.id, - report: this.serviceMeeting.report - }); - this.errorMsg = ''; - } else { - this.scrollUp('service-meeting-edit-report'); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-edit/service-meeting-edit.component.html b/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-edit/service-meeting-edit.component.html deleted file mode 100644 index 178d879..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-edit/service-meeting-edit.component.html +++ /dev/null @@ -1,200 +0,0 @@ -

Service-Dienstleister-Termin anlegen

-

Service-Dienstleister-Termin bearbeiten

-
-
-
-

{{ errorMsg }}

-

- Betreff ist ein Pflichtfeld. -

-

- Datum ist ein Pflichtfeld. -

-

- Uhrzeit (Start) ist ein Pflichtfeld. -

-

- Uhrzeit (Ende) ist ein Pflichtfeld. -

-

- Termin-Art ist ein Pflichtfeld. -

-

- PLP Verantwortlicher ist ein Pflichtfeld. -

-
-
-
-
-
-
- - -
-
-
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
-
-
- -
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
-
-
-
-
- - -
-
-
-
-
-
- - -
-
-
-
-
-

Teilnehmer

-
-
-
-
-
- - -
-
-
-
-
- - -
-
-
- - -
-
-
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
-
- -
-
- - -
-
-
\ No newline at end of file diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-edit/service-meeting-edit.component.scss b/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-edit/service-meeting-edit.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-edit/service-meeting-edit.component.ts b/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-edit/service-meeting-edit.component.ts deleted file mode 100644 index 8246a55..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-edit/service-meeting-edit.component.ts +++ /dev/null @@ -1,259 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {FormComponent} from '../../../../components/form-component'; -import {NgForm} from '@angular/forms'; -import {IUser} from '../../../../model/entities/user'; -import {IMeetingType} from '../../../../model/entities/meeting-type'; -import {IConfig} from '../../../../model/virtual/config'; -import {AppService} from '../../../../services/app.service'; -import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {isNull} from 'util'; -import {IService} from '../../../../model/entities/service'; -import {IServiceMeeting} from '../../../../model/entities/service-meeting'; -import {IServiceContact} from '../../../../model/entities/service-contact'; - -@Component({ - selector: 'app-service-meeting-edit', - templateUrl: './service-meeting-edit.component.html', - styleUrls: ['./service-meeting-edit.component.scss'] -}) - -export class ServiceMeetingEditComponent extends FormComponent implements OnInit { - - @Output() createMeeting: EventEmitter = new EventEmitter(); - @Output() editMeeting: EventEmitter = new EventEmitter(); - @ViewChild('serviceMeetingForm', { static: true }) serviceMeetingForm: NgForm; - - public service: IService; - public serviceMeeting: IServiceMeeting; - public serviceContacts: IServiceContact[]; - public serviceContactsById: {}; - public isExistingServiceContact: boolean; - public users: IUser[]; - public usersById: {}; - public possibleOwners: IUser[]; - public participants: IUser[]; - public selectedParticipantsById: {}; - public selectedParticipantsByIdInitial: {}; - public owner: IUser; - public startDate: string; - public timeStart: string; - public timeEnd: string; - public meetingTypes: IMeetingType[]; - public contactPersonValue: string; - public config: IConfig; - - constructor(public appService: AppService, protected scrollToService: ScrollToService) { - super(scrollToService); - } - - ngOnInit() { - this.config = this.appService.getConfig(); - this.service = Factory.getEmptyService(); - this.serviceMeeting = Factory.getEmptyServiceMeeting(); - this.serviceContacts = []; - this.serviceContactsById = {}; - this.isExistingServiceContact = false; - this.users = []; - this.usersById = {}; - this.possibleOwners = []; - this.participants = []; - this.selectedParticipantsById = {}; - this.selectedParticipantsByIdInitial = {}; - this.owner = Factory.getEmptyUser(); - this.startDate = ''; - this.timeStart = ''; - this.timeEnd = ''; - this.meetingTypes = []; - this.contactPersonValue = ''; - } - - /** - * Sets data - * @param service - * @param serviceMeeting - * @param isCreationMode - */ - public setData(service: IService, serviceMeeting: IServiceMeeting, isCreationMode: boolean = false): void { - this.service = service; - this.serviceMeeting = serviceMeeting; - this.serviceContacts = this.service.v_service_contacts; - this.serviceContactsById = Utils.getSortedObjFromArray(this.serviceContacts, 'id'); - this.users = this.appService.getConfig().users; - this.isCreationMode = isCreationMode; - this.owner = this.serviceMeeting.owner_user_id !== null ? - this.appService.getConfig().vc_user_by_id[this.serviceMeeting.owner_user_id] : null; - this.startDate = Utils.getDateTimeToDisplay(this.serviceMeeting.start_date, true, false, false, true); - this.timeStart = Utils.getDateTimeToDisplay(this.serviceMeeting.start_date, false, true); - this.timeEnd = Utils.getDateTimeToDisplay(this.serviceMeeting.end_date, false, true); - this.meetingTypes = this.appService.getConfig().meeting_types; - this.usersById = Utils.getSortedObjFromArray(this.appService.getConfig().users, 'id'); - this.selectedParticipantsById = Utils.getSortedObjFromArray(this.serviceMeeting.v_participants, 'participant_user_id'); - this.selectedParticipantsByIdInitial = Utils.getSortedObjFromArray(this.serviceMeeting.v_participants, 'participant_user_id'); - this.participants = []; - for (const p in this.usersById) { - if (this.isCreationMode) { - // New meeting - if (this.usersById[p].active) { - this.participants.push(this.usersById[p]); - this.possibleOwners.push(this.usersById[p]); - } - } else { - // Existing meeting - const userAttendsToMeeting: boolean = this.selectedParticipantsByIdInitial.hasOwnProperty(this.usersById[p].id); - if (this.usersById[p].id !== this.owner.id && (this.usersById[p].active || userAttendsToMeeting)) { - this.participants.push(this.usersById[p]); - this.possibleOwners.push(this.usersById[p]); - } - if (this.usersById[p].id === this.owner.id) { - this.possibleOwners.push(this.usersById[p]); - } - } - } - if (isNull(this.serviceMeeting.service_contact_id)) { - this.serviceMeeting.service_contact_id = -1; - } - if (this.serviceMeeting.service_contact_id > 0) { - this.isExistingServiceContact = true; - } - this.errorMsg = ''; - this.resetFormValidation(); - } - - /** - * On select contact - * @param e - */ - public selectContact(e: any) { - this.serviceMeeting.service_contact_id = e.target.value; - this.isExistingServiceContact = false; - this.serviceMeeting.gender = null; - this.serviceMeeting.firstname = null; - this.serviceMeeting.lastname = null; - this.serviceMeeting.department = null; - this.serviceMeeting.email = null; - this.serviceMeeting.phone_no = null; - this.serviceMeeting.mobile_no = null; - if (this.serviceMeeting.service_contact_id > 0) { - this.serviceMeeting.gender = this.serviceContactsById[this.serviceMeeting.service_contact_id].gender; - this.serviceMeeting.firstname = this.serviceContactsById[this.serviceMeeting.service_contact_id].firstname; - this.serviceMeeting.lastname = this.serviceContactsById[this.serviceMeeting.service_contact_id].lastname; - this.serviceMeeting.department = this.serviceContactsById[this.serviceMeeting.service_contact_id].department; - this.serviceMeeting.email = this.serviceContactsById[this.serviceMeeting.service_contact_id].email; - this.serviceMeeting.phone_no = this.serviceContactsById[this.serviceMeeting.service_contact_id].phone_no; - this.serviceMeeting.mobile_no = this.serviceContactsById[this.serviceMeeting.service_contact_id].mobile_no; - this.isExistingServiceContact = true; - } - } - - /** - * On select owner - * @param e - */ - public selectOwner(e: any) { - if (e.target.value !== '0: null') { - this.owner = this.usersById[e.target.value]; - if (this.selectedParticipantsById.hasOwnProperty(this.owner.id)) { - delete this.selectedParticipantsById[this.owner.id]; - } - } else { - this.owner = null; - } - this.participants = []; - for (const p in this.usersById) { - if ((this.owner == null || this.usersById[p].id !== this.owner.id) && this.usersById[p].active) { - this.participants.push(this.usersById[p]); - } - } - } - - /** - * On select meeting type - * @param e - */ - public selectMeetingType(e: any) { - this.serviceMeeting.meeting_type_id = e.target.value; - } - - /** - * On select participant - * @param e - */ - public participantsChange(e: any) { - const participantUserId: number = parseInt(e.target.value); - if (this.selectedParticipantsById.hasOwnProperty(participantUserId)) { - delete this.selectedParticipantsById[participantUserId]; - } else { - let myId: number = null; - if (this.selectedParticipantsByIdInitial.hasOwnProperty(participantUserId)) { - myId = this.selectedParticipantsByIdInitial[participantUserId].id; - } - this.selectedParticipantsById[participantUserId] = { - id: myId, - service_meeting_id: this.serviceMeeting.id, - participant_user_id: participantUserId - }; - } - } - - /** - * Checks if participant is selected - * @param id - */ - public checkParticipants(id: number) { - return this.selectedParticipantsById.hasOwnProperty(id); - - } - - /** - * Resets Form Validation - */ - public resetFormValidation(): void { - this.serviceMeetingForm.form.markAsUntouched(); - } - - /** - * Saves service meeting - * @param value - * @param valid - */ - public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { - this.errorMsg = 'Bitte beheben Sie alle Fehler.'; - const identifier: string = this.isCreationMode ? 'service-meeting-modal' : 'service-meeting-edit-modal'; - if (valid) { - // Check if start time before end time - if (parseInt(this.timeStart.replace(/\:/g, '')) - parseInt(this.timeEnd.replace(/\:/g, '')) > 0) { - this.errorMsg = 'Zeit (Ende) darf nicht vor Zeit (Start) liegen.'; - this.scrollUp(identifier); - } else { - this.serviceMeeting.start_date = this.startDate + ' ' + this.timeStart + ':00'; - this.serviceMeeting.end_date = this.startDate + ' ' + this.timeEnd + ':00'; - // Check if date is valid - if (Utils.isValidDate(this.serviceMeeting.start_date)) { - this.serviceMeeting.v_participants = []; - for (const spId in this.selectedParticipantsById) { - this.serviceMeeting.v_participants.push(this.selectedParticipantsById[spId]); - } - - if (this.serviceMeeting.service_contact_id === -1) { - this.serviceMeeting.service_contact_id = null; - } - - if (this.isCreationMode) { - this.createMeeting.emit(this.serviceMeeting); - } else { - this.editMeeting.emit(this.serviceMeeting); - } - this.errorMsg = ''; - } else { - this.errorMsg = 'Bitte korrektes Datum eingeben.'; - this.scrollUp(identifier); - } - } - } else { - this.scrollUp(identifier); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-view/service-meeting-view.component.html b/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-view/service-meeting-view.component.html deleted file mode 100644 index 59468a6..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-view/service-meeting-view.component.html +++ /dev/null @@ -1,33 +0,0 @@ -

Termine

-
Termin hinzufügen
-
- - -
-
- - -
- - - - - - -
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-view/service-meeting-view.component.scss b/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-view/service-meeting-view.component.scss deleted file mode 100644 index 17ceacb..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-view/service-meeting-view.component.scss +++ /dev/null @@ -1,14 +0,0 @@ -#create-service-meeting { - position: absolute; - right: 0; - top: -6rem; -} - -@media only screen and (max-width: 1004px) { - #create-service-meeting { - position: relative; - right: auto; - top: auto; - display: inline-block; - } -} diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-view/service-meeting-view.component.ts b/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-view/service-meeting-view.component.ts deleted file mode 100644 index 942a46b..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-meeting-view/service-meeting-view.component.ts +++ /dev/null @@ -1,202 +0,0 @@ -import {Component, EventEmitter, OnDestroy, OnInit, Output, ViewChild} from '@angular/core'; -import {AgGridComponent} from '../../../../components/ag-grid-component'; -import {ModalComponent} from '../../../../components/modal/modal.component'; -import {IUser} from '../../../../model/entities/user'; -import {IMeetingType} from '../../../../model/entities/meeting-type'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {isNull} from 'util'; -import {IServiceMeeting} from '../../../../model/entities/service-meeting'; -import {ServiceMeetingEditComponent} from '../service-meeting-edit/service-meeting-edit.component'; -import {ServiceMeetingDetailComponent} from '../service-meeting-detail/service-meeting-detail.component'; -import {IService} from '../../../../model/entities/service'; - -@Component({ - selector: 'app-service-meeting-view', - templateUrl: './service-meeting-view.component.html', - styleUrls: ['./service-meeting-view.component.scss'] -}) - -export class ServiceMeetingViewComponent extends AgGridComponent implements OnInit, OnDestroy { - - @Output() createMeeting: EventEmitter = new EventEmitter(); - @Output() editMeeting: EventEmitter = new EventEmitter(); - @Output() deleteMeeting: EventEmitter = new EventEmitter(); - @Output() editMeetingReport: EventEmitter = new EventEmitter(); - @ViewChild('modalServiceMeetingEdit', {static: true}) modalServiceMeetingEdit: ModalComponent; - @ViewChild('serviceMeetingEdit', {static: true}) serviceMeetingEdit: ServiceMeetingEditComponent; - @ViewChild('modalServiceMeetingDetail', {static: true}) modalServiceMeetingDetail: ModalComponent; - @ViewChild('serviceMeetingDetail', {static: true}) serviceMeetingDetail: ServiceMeetingDetailComponent; - - public service: IService; - public serviceMeeting: IServiceMeeting[]; - public serviceMeetingEntriesById: {}; - public owner: IUser; - public participants: IUser[]; - public meetingType: IMeetingType; - public date: string; - public timeStart: string; - public timeEnd: string; - public hasEditRights: boolean; - - constructor(public appService: AppService) { - super(); - } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_PRODUCTION) || - this.appService.userHasRole(Const.USER_ROLE_SERVICE); - this.service = Factory.getEmptyService(); - this.serviceMeeting = []; - this.serviceMeetingEntriesById = {}; - this.owner = Factory.getEmptyUser(); - this.participants = []; - this.meetingType = Factory.getEmptyMeetingType(); - this.date = ''; - this.timeStart = ''; - this.timeEnd = ''; - - this.defaultColDef = { - resizable: true, - sortable: true - }; - - this.columnDefs = [ - {headerName: 'Datum', field: 'date', cellRenderer: this.dateRenderer, comparator: this.dateComparator}, - {headerName: 'Ersteller', field: 'creator' }, - {headerName: 'PLP Verantwortlicher', field: 'owner'}, - {headerName: 'Gesprächspartner', field: 'serviceContactName'}, - {headerName: 'Titel', field: 'title'}, - {headerName: 'Uhrzeit (Start)', field: 'time_start', cellRenderer: this.timeRenderer}, - {headerName: 'Uhrzeit (Ende)', field: 'time_end', cellRenderer: this.timeRenderer}, - {headerName: 'Termin-Art', field: 'type'}, - {headerName: 'Adresse', field: 'address', cellRenderer: this.addressRenderer, autoHeight: true}, - { - headerName: 'Teilnehmer', - field: 'participants', - cellRenderer: this.participantsRenderer, - autoHeight: true - }, - {headerName: 'Abteilung', field: 'department'}, - {headerName: 'E-Mail', field: 'email'}, - {headerName: 'Telefon', field: 'phone'}, - {headerName: 'Mobil', field: 'mobile'}, - ]; - } - - /** - * Sets data - * @param service - * @param isUpdate - */ - public setData(service: IService, isUpdate: boolean): void { - this.service = service; - this.serviceMeeting = this.service.v_service_meetings; - this.serviceMeetingEntriesById = Utils.getSortedObjFromArray(this.serviceMeeting, 'id'); - this.modalServiceMeetingEdit.closeModal(); - this.generateEntries(); - if (isUpdate) { - this.serviceMeetingDetail.updateData(service); - } else { - this.modalServiceMeetingDetail.closeModal(); - } - } - - /** - * Generates AG grid entries - */ - public generateEntries(): void { - this.rowData = []; - const items: {}[] = []; - for (let i = 0; i < this.serviceMeeting.length; i++) { - - this.owner = this.appService.getConfig().vc_user_by_id[this.serviceMeeting[i].owner_user_id]; - this.meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.serviceMeeting[i].meeting_type_id]; - let serviceContactName: string = !isNull(this.serviceMeeting[i].firstname) ? this.serviceMeeting[i].firstname + ' ' : ''; - serviceContactName += !isNull(this.serviceMeeting[i].lastname) ? this.serviceMeeting[i].lastname : ''; - const creator: IUser = this.appService.getConfig().vc_user_by_id[this.serviceMeeting[i].creation_user_id]; - - items.push({ - that: this, - id: this.serviceMeeting[i].id, - title: this.serviceMeeting[i].title, - date: this.serviceMeeting[i].start_date, - time_start: this.serviceMeeting[i].start_date, - time_end: this.serviceMeeting[i].end_date, - type: this.meetingType.name, - typeType: this.meetingType.type, - street: this.serviceMeeting[i].street, - street_no: this.serviceMeeting[i].street_no, - zip: this.serviceMeeting[i].zip, - city: this.serviceMeeting[i].city, - owner: this.owner.firstname + ' ' + this.owner.lastname, - creator: creator.firstname + ' ' + creator.lastname, - serviceContactName, - participants: this.serviceMeeting[i].v_participants, - department: this.serviceMeeting[i].department, - email: this.serviceMeeting[i].email, - phone: this.serviceMeeting[i].phone_no, - mobile: this.serviceMeeting[i].mobile_no, - }); - } - this.rowData = items.sort((a: {} , b: {}) => this.dateComparator(a['date'], b['date'], false)); - } - - /** - * On row click - * @param e - */ - public rowClicked(e: any) { - this.modalServiceMeetingDetail.openModal(); - this.serviceMeetingDetail.setData(this.service, this.serviceMeetingEntriesById[e.data.id]); - } - - /** - * On create click - */ - public create(): void { - this.modalServiceMeetingEdit.openModal(); - this.serviceMeetingEdit.setData(this.service, Factory.getEmptyServiceMeeting(this.service.id), true); - } - - /** - * Creates service meeting - * @param serviceMeeting - */ - public createServiceMeetingFunction(serviceMeeting: IServiceMeeting): void { - this.createMeeting.emit(serviceMeeting); - } - - /** - * Edits meeting entry - * @param serviceMeeting - */ - public editServiceMeetingFunction(serviceMeeting: IServiceMeeting) { - this.editMeeting.emit(serviceMeeting); - } - - /** - * Deletes service meeting - * @param meetingId - */ - public deleteServiceMeetingFunction(meetingId: number): void { - this.deleteMeeting.emit(meetingId); - } - - /** - * Edit report after meeting has started - * @param reportValues - */ - public editServiceMeetingReportFunction(reportValues: any): void { - this.editMeetingReport.emit(reportValues); - } - - ngOnDestroy(): void { - - } - -} diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-detail/service-note-detail.component.html b/httpdocs/plp-angular/src/app/views/services/service-view/service-note-detail/service-note-detail.component.html deleted file mode 100644 index 9316db2..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-detail/service-note-detail.component.html +++ /dev/null @@ -1,44 +0,0 @@ -
-

Notiz Detail

-

Erstellt am {{creationDate}} von {{serviceNote.creation_user_firstname}} - {{serviceNote.creation_user_lastname}}

-
-
-
-
Datum:
-
{{noteDate}}
-
Betreff:
-
{{serviceNote.title}}
-
Gesprächspartner:
-
Herr - Frau - Divers {{serviceNote.firstname}} {{serviceNote.lastname}}
-
Abteilung:
-
{{serviceNote.department}}
-
E-Mail:
-
{{serviceNote.email}}
-
Telefon:
-
{{serviceNote.phone_no}}
-
Mobil:
-
{{serviceNote.mobile_no}}
-
Fax:
-
{{serviceNote.fax_no}}
-
Notiz:
-
{{serviceNote.comment}}
-
-
-
-
-
-
-
Eintrag bearbeiten
-
Eintrag löschen
-
-
-
-
-
-
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-detail/service-note-detail.component.scss b/httpdocs/plp-angular/src/app/views/services/service-view/service-note-detail/service-note-detail.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-detail/service-note-detail.component.ts b/httpdocs/plp-angular/src/app/views/services/service-view/service-note-detail/service-note-detail.component.ts deleted file mode 100644 index be51a49..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-detail/service-note-detail.component.ts +++ /dev/null @@ -1,95 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {IServiceNote} from '../../../../model/entities/service-note'; -import {ServiceNoteEditComponent} from '../service-note-edit/service-note-edit.component'; -import {IService} from '../../../../model/entities/service'; - -@Component({ - selector: 'app-service-note-detail', - templateUrl: './service-note-detail.component.html', - styleUrls: ['./service-note-detail.component.scss'] -}) - -export class ServiceNoteDetailComponent implements OnInit { - - @Output() editNote: EventEmitter = new EventEmitter(); - @Output() deleteNote: EventEmitter = new EventEmitter(); - @ViewChild('serviceNoteEdit', { static: true }) serviceNoteEdit: ServiceNoteEditComponent; - - public service: IService; - public serviceNote: IServiceNote; - public creationDate: string; - public isEditMode: boolean; - public noteDate: string; - public hasEditRights: boolean; - - constructor(public appService: AppService) { } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_PRODUCTION) || - this.appService.userHasRole(Const.USER_ROLE_SERVICE); - this.service = Factory.getEmptyService(); - this.serviceNote = Factory.getEmptyServiceNote(); - this.creationDate = ''; - this.isEditMode = false; - this.noteDate = ''; - } - - /** - * Set data - */ - public setData(service: IService, serviceNote: IServiceNote): void { - this.service = service; - this.serviceNote = serviceNote; - this.creationDate = Utils.getDateTimeToDisplay(this.serviceNote.creation_date); - this.isEditMode = false; - this.noteDate = Utils.getDateTimeToDisplay(this.serviceNote.note_date); - } - - /** - * Updates data - * @param service - */ - public updateData(service: IService): void { - this.service = service; - for (let i = 0; i < this.service.v_service_notes.length; i++) { - if (this.service.v_service_notes[i].id == this.serviceNote.id) { - this.serviceNote = this.service.v_service_notes[i]; - this.noteDate = Utils.getDateTimeToDisplay(this.serviceNote.note_date); - } - } - this.isEditMode = false; - } - - /** - * Edit note entry - */ - public editEntry(): void { - this.isEditMode = true; - this.serviceNoteEdit.setData(this.service, Utils.deepClone(this.serviceNote) as IServiceNote); - } - - /** - * Edits note entry - * @param serviceNote - */ - public editServiceNoteFunction(serviceNote: IServiceNote) { - this.editNote.emit(serviceNote); - } - - /** - * Delete note entry - */ - public deleteEntry(): void { - const confirmAction = confirm('Wollen Sie diesen Eintrag wirklich löschen?'); - if (confirmAction == true) { - this.deleteNote.emit(this.serviceNote.id); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-edit/service-note-edit.component.html b/httpdocs/plp-angular/src/app/views/services/service-view/service-note-edit/service-note-edit.component.html deleted file mode 100644 index 780edb9..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-edit/service-note-edit.component.html +++ /dev/null @@ -1,116 +0,0 @@ -

Notiz anlegen

-

Notiz bearbeiten

-
-
-
-

{{ errorMsg }}

-

- Datum ist ein Pflichtfeld. -

-

- Betreff ist ein Pflichtfeld. -

-
-
-
-
-
-
- - -
-
-
-
-
- - -
-
-
-
- - -
-
-
-
-
-
- - -
-
-
- - -
-
-
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
- - -
-
-
-
- - -
-
-
-
-
-
- -
-
- - -
-
-
diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-edit/service-note-edit.component.scss b/httpdocs/plp-angular/src/app/views/services/service-view/service-note-edit/service-note-edit.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-edit/service-note-edit.component.ts b/httpdocs/plp-angular/src/app/views/services/service-view/service-note-edit/service-note-edit.component.ts deleted file mode 100644 index 2b774b7..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-edit/service-note-edit.component.ts +++ /dev/null @@ -1,127 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {FormComponent} from '../../../../components/form-component'; -import {NgForm} from '@angular/forms'; -import {ScrollToService} from '@nicky-lenaers/ngx-scroll-to'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {isNull} from 'util'; -import {IServiceNote} from '../../../../model/entities/service-note'; -import {IService} from '../../../../model/entities/service'; -import {IServiceContact} from '../../../../model/entities/service-contact'; - -@Component({ - selector: 'app-service-note-edit', - templateUrl: './service-note-edit.component.html', - styleUrls: ['./service-note-edit.component.scss'] -}) - -export class ServiceNoteEditComponent extends FormComponent implements OnInit { - - @Output() createNote: EventEmitter = new EventEmitter(); - @Output() editNote: EventEmitter = new EventEmitter(); - @ViewChild('serviceNoteForm', { static: true }) serviceNoteForm: NgForm; - - public service: IService; - public serviceNote: IServiceNote; - public serviceContacts: IServiceContact[]; - public serviceContactsById: {}; - public isExistingServiceContact: boolean; - public contactId: string; - - constructor(protected scrollToService: ScrollToService) { - super(scrollToService); - } - - ngOnInit() { - this.service = Factory.getEmptyService(); - this.serviceNote = Factory.getEmptyServiceNote(); - this.serviceContacts = []; - this.serviceContactsById = {}; - this.errorMsg = ''; - this.contactId = ''; - this.isCreationMode = false; - this.isExistingServiceContact = false; - } - - /** - * Sets data - * @param service - * @param serviceNote - * @param isCreationMode - */ - public setData(service: IService, serviceNote: IServiceNote, isCreationMode = false): void { - this.service = service; - this.serviceNote = serviceNote; - this.serviceContacts = this.service.v_service_contacts; - this.serviceContactsById = Utils.getSortedObjFromArray(this.serviceContacts, 'id'); - this.serviceNote.service_id = this.service.id; - this.contactId = ''; - this.isCreationMode = isCreationMode; - this.errorMsg = ''; - if (isNull(this.serviceNote.service_contact_id)) { - this.serviceNote.service_contact_id = -1; - } - if (this.serviceNote.service_contact_id > 0) { - this.isExistingServiceContact = true; - } - this.resetFormValidation(); - } - - /** - * On select contact - * @param e - */ - public selectContact(e: any) { - this.serviceNote.service_contact_id = e.target.value; - this.isExistingServiceContact = false; - this.serviceNote.gender = null; - this.serviceNote.firstname = null; - this.serviceNote.lastname = null; - this.serviceNote.department = null; - this.serviceNote.email = null; - this.serviceNote.phone_no = null; - this.serviceNote.mobile_no = null; - this.serviceNote.fax_no = null; - if (this.serviceNote.service_contact_id > 0) { - this.serviceNote.gender = this.serviceContactsById[this.serviceNote.service_contact_id].gender; - this.serviceNote.firstname = this.serviceContactsById[this.serviceNote.service_contact_id].firstname; - this.serviceNote.lastname = this.serviceContactsById[this.serviceNote.service_contact_id].lastname; - this.serviceNote.department = this.serviceContactsById[this.serviceNote.service_contact_id].department; - this.serviceNote.email = this.serviceContactsById[this.serviceNote.service_contact_id].email; - this.serviceNote.phone_no = this.serviceContactsById[this.serviceNote.service_contact_id].phone_no; - this.serviceNote.mobile_no = this.serviceContactsById[this.serviceNote.service_contact_id].mobile_no; - this.serviceNote.fax_no = this.serviceContactsById[this.serviceNote.service_contact_id].fax_no; - this.isExistingServiceContact = true; - } - } - - /** - * Resets Form Validation - */ - public resetFormValidation(): void { - this.serviceNoteForm.form.markAsUntouched(); - } - - /** - * Saves service - * @param value - * @param valid - */ - public onFormSubmit({value, valid}: { value: any, valid: boolean }): void { - this.errorMsg = 'Bitte beheben Sie alle Fehler.'; - if (valid) { - if (this.serviceNote.service_contact_id == -1) { - this.serviceNote.service_contact_id = null; - } - if (this.isCreationMode) { - this.createNote.emit(this.serviceNote); - } else { - this.editNote.emit(this.serviceNote); - } - this.errorMsg = ''; - } else { - this.scrollUp(this.isCreationMode ? 'service-note-modal' : 'service-note-edit-modal'); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-view/service-note-view.component.html b/httpdocs/plp-angular/src/app/views/services/service-view/service-note-view/service-note-view.component.html deleted file mode 100644 index 1d7c648..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-view/service-note-view.component.html +++ /dev/null @@ -1,32 +0,0 @@ -

Notizen

-
Notiz hinzufügen
-
- - -
-
- - -
- - - - - - -
- -
-
diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-view/service-note-view.component.scss b/httpdocs/plp-angular/src/app/views/services/service-view/service-note-view/service-note-view.component.scss deleted file mode 100644 index e725c6f..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-view/service-note-view.component.scss +++ /dev/null @@ -1,14 +0,0 @@ -#create-service-note { - position: absolute; - right: 0; - top: -6rem; -} - -@media only screen and (max-width: 1004px) { - #create-service-note { - position: relative; - right: auto; - top: auto; - display: inline-block; - } -} diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-view/service-note-view.component.ts b/httpdocs/plp-angular/src/app/views/services/service-view/service-note-view/service-note-view.component.ts deleted file mode 100644 index 0cbc240..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-note-view/service-note-view.component.ts +++ /dev/null @@ -1,163 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {AgGridComponent} from '../../../../components/ag-grid-component'; -import {ModalComponent} from '../../../../components/modal/modal.component'; -import {AppService} from '../../../../services/app.service'; -import {Const} from '../../../../utils/const'; -import {Factory} from '../../../../factory/factory'; -import {Utils} from '../../../../utils/utils'; -import {IServiceNote} from '../../../../model/entities/service-note'; -import {IService} from '../../../../model/entities/service'; -import {ServiceNoteEditComponent} from '../service-note-edit/service-note-edit.component'; -import {ServiceNoteDetailComponent} from '../service-note-detail/service-note-detail.component'; - -@Component({ - selector: 'app-service-note-view', - templateUrl: './service-note-view.component.html', - styleUrls: ['./service-note-view.component.scss'] -}) - -export class ServiceNoteViewComponent extends AgGridComponent implements OnInit { - - @Output() createNote: EventEmitter = new EventEmitter(); - @Output() editNote: EventEmitter = new EventEmitter(); - @Output() deleteNote: EventEmitter = new EventEmitter(); - @ViewChild('modalServiceNoteEdit', { static: true }) modalServiceNoteEdit: ModalComponent; - @ViewChild('serviceNoteEdit', { static: true }) serviceNoteEdit: ServiceNoteEditComponent; - @ViewChild('modalServiceNoteDetail', { static: true }) modalServiceNoteDetail: ModalComponent; - @ViewChild('serviceNoteDetail', { static: true }) serviceNoteDetail: ServiceNoteDetailComponent; - - public service: IService; - public serviceNote: IServiceNote[]; - public serviceNoteEntriesById: {}; - public hasEditRights: boolean; - - constructor(public appService: AppService) { - super(); - } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_PRODUCTION) || - this.appService.userHasRole(Const.USER_ROLE_SERVICE); - this.service = Factory.getEmptyService(); - this.serviceNote = []; - this.serviceNoteEntriesById = {}; - - this.defaultColDef = { - resizable: true, - sortable: true - }; - - this.columnDefs = [ - {headerName: 'Erstellungsdatum', field: 'creation_date', cellRenderer: this.dateRenderer, comparator: this.dateComparator }, - {headerName: 'Ersteller', field: 'creator'}, - {headerName: 'Datum', field: 'date', cellRenderer: this.dateRenderer, comparator: this.dateComparator }, - {headerName: 'Betreff', field: 'title' }, - {headerName: 'Notiz', field: 'comment' }, - {headerName: 'Anrede', field: 'gender', width: 90 }, - {headerName: 'Vorname', field: 'firstname' }, - {headerName: 'Nachname', field: 'lastname' }, - {headerName: 'Abteilung', field: 'department' }, - {headerName: 'E-Mail Adresse', field: 'email', cellRenderer: this.emailRenderer }, - {headerName: 'Telefon', field: 'phone_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Mobil', field: 'mobile_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Fax', field: 'fax_no' }, - ]; - } - - /** - * Sets data - * @param service - * @param isUpdate - */ - public setData(service: IService, isUpdate: boolean): void { - this.service = service; - this.serviceNote = this.service.v_service_notes; - this.serviceNoteEntriesById = Utils.getSortedObjFromArray(this.serviceNote, 'id'); - this.modalServiceNoteEdit.closeModal(); - this.generateEntries(); - if (isUpdate) { - this.serviceNoteDetail.updateData(service); - } else { - this.modalServiceNoteDetail.closeModal(); - } - } - - /** - * Generates AG grid entries - */ - public generateEntries(): void { - this.rowData = []; - const items: {}[] = []; - for (let i = 0; i < this.serviceNote.length; i++) { - let ccGender = ''; - if (this.serviceNote[i].gender == 'male') { - ccGender = 'Herr'; - } else if (this.serviceNote[i].gender == 'female') { - ccGender = 'Frau'; - } else if (this.serviceNote[i].gender == 'diverse') { - ccGender = 'Divers'; - } - items.push({ - id: this.serviceNote[i].id, - date: this.serviceNote[i].note_date, - title: this.serviceNote[i].title, - comment: this.serviceNote[i].comment, - gender: ccGender, - firstname: this.serviceNote[i].firstname, - lastname: this.serviceNote[i].lastname, - email: this.serviceNote[i].email, - phone_no: this.serviceNote[i].phone_no, - mobile_no: this.serviceNote[i].mobile_no, - fax_no: this.serviceNote[i].fax_no, - department: this.serviceNote[i].department, - creation_date: this.serviceNote[i].creation_date, - creator: this.serviceNote[i].creation_user_firstname + ' ' + this.serviceNote[i].creation_user_lastname, - }); - this.rowData = items.sort((a: {} , b: {}) => this.dateComparator(a['date'], b['date'], false)); - } - } - - /** - * On row click - * @param e - */ - public rowClicked(e: any) { - this.modalServiceNoteDetail.openModal(); - this.serviceNoteDetail.setData(this.service, this.serviceNoteEntriesById[e.data.id]); - } - - /** - * On create click - */ - public create(): void { - this.modalServiceNoteEdit.openModal(); - this.serviceNoteEdit.setData(this.service, Factory.getEmptyServiceNote(this.service.id, Utils.getCurrentDate()), true); - } - - /** - * Creates service note - * @param serviceNote - */ - public createServiceNoteFunction(serviceNote: IServiceNote): void { - this.createNote.emit(serviceNote); - } - - /** - * Edits note entry - * @param serviceNote - */ - public editServiceNoteFunction(serviceNote: IServiceNote) { - this.editNote.emit(serviceNote); - } - - /** - * Deletes service note - * @param noteId - */ - public deleteServiceNoteFunction(noteId: number): void { - this.deleteNote.emit(noteId); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-view.component.html b/httpdocs/plp-angular/src/app/views/services/service-view/service-view.component.html deleted file mode 100644 index 21615ba..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-view.component.html +++ /dev/null @@ -1,32 +0,0 @@ -

{{service.name}}

- - -
- -
-
- -
- -
-
- -
- -
-
- -
- -
-
-
diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-view.component.scss b/httpdocs/plp-angular/src/app/views/services/service-view/service-view.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/services/service-view/service-view.component.ts b/httpdocs/plp-angular/src/app/views/services/service-view/service-view.component.ts deleted file mode 100644 index 46bee8c..0000000 --- a/httpdocs/plp-angular/src/app/views/services/service-view/service-view.component.ts +++ /dev/null @@ -1,157 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {TabsComponent} from '../../../components/tabs/tabs.component'; -import {Factory} from '../../../factory/factory'; -import {IService} from '../../../model/entities/service'; -import {IServiceContact} from '../../../model/entities/service-contact'; -import {IServiceNote} from '../../../model/entities/service-note'; -import {IServiceMeeting} from '../../../model/entities/service-meeting'; -import { - ServiceContactPersonViewComponent -} from './service-contact-person-view/service-contact-person-view.component'; -import {ServiceNoteViewComponent} from './service-note-view/service-note-view.component'; -import {ServiceMeetingViewComponent} from './service-meeting-view/service-meeting-view.component'; - -@Component({ - selector: 'app-service-view', - templateUrl: './service-view.component.html', - styleUrls: ['./service-view.component.scss'] -}) - -export class ServiceViewComponent implements OnInit { - - @Output() editService: EventEmitter = new EventEmitter(); - @Output() createServiceContact: EventEmitter = new EventEmitter(); - @Output() editServiceContact: EventEmitter = new EventEmitter(); - @Output() deleteServiceContact: EventEmitter = new EventEmitter(); - @Output() createNote: EventEmitter = new EventEmitter(); - @Output() editNote: EventEmitter = new EventEmitter(); - @Output() deleteNote: EventEmitter = new EventEmitter(); - @Output() createMeeting: EventEmitter = new EventEmitter(); - @Output() editMeeting: EventEmitter = new EventEmitter(); - @Output() deleteMeeting: EventEmitter = new EventEmitter(); - @Output() editMeetingReport: EventEmitter = new EventEmitter(); - @Output() shortcut: EventEmitter = new EventEmitter(); - @ViewChild('tabsServiceView', { static: true }) tabsServiceView: TabsComponent; - @ViewChild('serviceDataView', { static: true }) serviceDataView: ServiceViewComponent; - @ViewChild('serviceContactPersonView', { static: true }) serviceContactPersonView: ServiceContactPersonViewComponent; - @ViewChild('serviceNoteView', { static: true }) serviceNoteView: ServiceNoteViewComponent; - @ViewChild('serviceMeetingView', { static: true }) serviceMeetingView: ServiceMeetingViewComponent; - - public service: IService; - - constructor() { } - - ngOnInit() { - this.service = Factory.getEmptyService(); - } - - /** - * Sets data - * @param service - * @param isUpdate - */ - public setData(service: IService, isUpdate: boolean = false): void { - this.service = service; - this.serviceDataView.setData(this.service); - this.serviceContactPersonView.setData(this.service, isUpdate); - this.serviceNoteView.setData(this.service, isUpdate); - this.serviceMeetingView.setData(this.service, isUpdate); - } - - /** - * Saves service - * @param service - */ - public editServiceFunction(service: IService): void { - this.editService.emit(service); - } - - /** - * Creates service contact - * @param serviceContact - */ - public createServiceContactFunction(serviceContact: IServiceContact): void { - this.createServiceContact.emit(serviceContact); - } - - /** - * Edit service contact - * @param serviceContact - */ - public editServiceContactFunction(serviceContact: IServiceContact): void { - this.editServiceContact.emit(serviceContact); - } - - /** - * Creates service note - * @param serviceNote - */ - public createServiceNoteFunction(serviceNote: IServiceNote): void { - this.createNote.emit(serviceNote); - } - - /** - * Edits note entry - * @param serviceNote - */ - public editServiceNoteFunction(serviceNote: IServiceNote) { - this.editNote.emit(serviceNote); - } - - /** - * Deletes service note - * @param noteId - */ - public deleteServiceNoteFunction(noteId: number): void { - this.deleteNote.emit(noteId); - } - - /** - * Deletes service contact - * @param serviceId - */ - public deleteServiceContactFunction(serviceId: number): void { - this.deleteServiceContact.emit(serviceId); - } - - /** - * Creates service meeting - * @param serviceMeeting - */ - public createServiceMeetingFunction(serviceMeeting: IServiceMeeting): void { - this.createMeeting.emit(serviceMeeting); - } - - /** - * Edits meeting entry - * @param serviceMeeting - */ - public editServiceMeetingFunction(serviceMeeting: IServiceMeeting) { - this.editMeeting.emit(serviceMeeting); - } - - /** - * Deletes service meeting - * @param meetingId - */ - public deleteServiceMeetingFunction(meetingId: number): void { - this.deleteMeeting.emit(meetingId); - } - - /** - * Edit report after meeting has started - * @param reportValues - */ - public editServiceMeetingReportFunction(reportValues: any): void { - this.editMeetingReport.emit(reportValues); - } - - /** - * Shortcut to service detail - * @param service - */ - public shortcutFunction(service: IService): void { - this.shortcut.emit(service); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/services/services-contact-list/services-contact-list.component.html b/httpdocs/plp-angular/src/app/views/services/services-contact-list/services-contact-list.component.html deleted file mode 100644 index abc6d85..0000000 --- a/httpdocs/plp-angular/src/app/views/services/services-contact-list/services-contact-list.component.html +++ /dev/null @@ -1,30 +0,0 @@ -
Ansprechpartner exportieren
-
Weihnachtspost-Etiketten
- -
- - -
- -
- - -
- - - - diff --git a/httpdocs/plp-angular/src/app/views/services/services-contact-list/services-contact-list.component.scss b/httpdocs/plp-angular/src/app/views/services/services-contact-list/services-contact-list.component.scss deleted file mode 100644 index ca22e5c..0000000 --- a/httpdocs/plp-angular/src/app/views/services/services-contact-list/services-contact-list.component.scss +++ /dev/null @@ -1,11 +0,0 @@ -#xmas-mail { - position: absolute; - right: 0; - top: 0; -} - -#export-service-contacts { - position: absolute; - right: 225px; - top: 0; -} \ No newline at end of file diff --git a/httpdocs/plp-angular/src/app/views/services/services-contact-list/services-contact-list.component.ts b/httpdocs/plp-angular/src/app/views/services/services-contact-list/services-contact-list.component.ts deleted file mode 100644 index 2446b59..0000000 --- a/httpdocs/plp-angular/src/app/views/services/services-contact-list/services-contact-list.component.ts +++ /dev/null @@ -1,161 +0,0 @@ -import {Component, EventEmitter, OnInit, Output, ViewChild} from '@angular/core'; -import {AgGridComponent} from '../../../components/ag-grid-component'; -import {ModalComponent} from '../../../components/modal/modal.component'; -import {Utils} from '../../../utils/utils'; -import {Const} from '../../../utils/const'; -import {AppService} from '../../../services/app.service'; -import {CommonService} from '../../../services/common.service'; -import {IService} from '../../../model/entities/service'; -import {IServiceContact} from '../../../model/entities/service-contact'; -import { - ServiceContactPersonDetailComponent -} from '../service-view/service-contact-person-detail/service-contact-person-detail.component'; -import {ServiceService} from '../../../services/service.service'; - -@Component({ - selector: 'app-service-contact-list', - templateUrl: './services-contact-list.component.html', - styleUrls: ['./services-contact-list.component.scss'] -}) - -export class ServicesContactListComponent extends AgGridComponent implements OnInit { - - @Output() shortcut: EventEmitter = new EventEmitter(); - @ViewChild('modalServicesContactPersonDetailList', { static: true }) modalServicesContactPersonDetailList: ModalComponent; - @ViewChild('serviceContactPersonDetailList', { static: true }) serviceContactPersonDetailList: ServiceContactPersonDetailComponent; - - public services: IService[]; - public servicesById: {}; - private serviceContacts: IServiceContact[]; - public serviceContactsById: {}; - public hasAdminRights: boolean; - public hasExportRights: boolean; - - constructor(public appService: AppService, private serviceService: ServiceService, private commonService: CommonService) { - super(); - } - - ngOnInit() { - this.hasAdminRights = this.appService.userHasRole(Const.USER_ROLE_ADMIN); - this.hasExportRights = this.appService.userHasRole(Const.USER_ROLE_ADMIN); - this.services = []; - this.servicesById = {}; - this.serviceContacts = []; - this.serviceContactsById = {}; - - this.defaultColDef = { - resizable: true, - sortable: true - }; - - this.columnDefs = [ - {headerName: 'ID', field: 'id', width: 60 }, - {headerName: 'Service-Dienstleister ID', field: 'service_id', width: 100 }, - {headerName: 'Service-Dienstleister', field: 'service' }, - {headerName: 'Vorname', field: 'firstname' }, - {headerName: 'Nachname', field: 'lastname' }, - {headerName: 'Abteilung', field: 'department' }, - {headerName: 'E-Mail Adresse', field: 'email', cellRenderer: this.emailRenderer }, - {headerName: 'Telefon', field: 'phone_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Mobil', field: 'mobile_no', cellRenderer: this.phoneRenderer }, - {headerName: 'Fax', field: 'fax_no' }, - {headerName: 'Bemerkungen', field: 'comment' } - ]; - - this.rowSelection = 'single'; - } - - /** - * Sets data - * @param services - * @param serviceContacts - */ - public setData(services: IService[], serviceContacts: IServiceContact[]): void { - this.services = services; - this.servicesById = Utils.getSortedObjFromArray(this.services, 'id'); - this.serviceContacts = serviceContacts; - this.serviceContactsById = Utils.getSortedObjFromArray(this.serviceContacts, 'id'); - this.generateEntries(); - } - - /** - * Generates AG grid entries for services grid - */ - public generateEntries(): void { - this.rowData = []; - - for (let i = 0; i < this.serviceContacts.length; i++) { - this.rowData.push({ - id: this.serviceContacts[i].id, - service_id: this.serviceContacts[i].service_id, - service: this.servicesById[this.serviceContacts[i].service_id].name, - firstname: this.serviceContacts[i].firstname, - lastname: this.serviceContacts[i].lastname, - department: this.serviceContacts[i].department, - email: this.serviceContacts[i].email, - phone_no: this.serviceContacts[i].phone_no, - mobile_no: this.serviceContacts[i].mobile_no, - fax_no: this.serviceContacts[i].fax_no, - comment: this.serviceContacts[i].comment - }); - } - } - - /** - * Row is clicked - * @param e - */ - public rowClicked(e: any) { - this.modalServicesContactPersonDetailList.openModal(); - this.serviceContactPersonDetailList.setData(this.servicesById[e.data.service_id], Utils.deepClone(this.serviceContactsById[e.data.id]) as IServiceContact); - } - - /** - * Edit service contact - * @param serviceContact - */ - public editServiceContactFunction(serviceContact: IServiceContact): void { - this.serviceService.apiEditServiceContact(serviceContact).subscribe( - data => { - this.serviceContactPersonDetailList.updateData(data.result_data as IService); - }, - error => {} - ); - } - - /** - * Delete service contact - * @param serviceId - */ - public deleteServiceContactFunction(serviceId: number): void { - this.serviceService.apiDeleteServiceContact(serviceId).subscribe( - data => { - this.modalServicesContactPersonDetailList.closeModal(); - }, - error => {} - ); - } - - /** - * Shortcut to service detail - * @param service - */ - public shortcutFunction(service: IService): void { - this.modalServicesContactPersonDetailList.closeModal(); - this.shortcut.emit(service); - } - - /** - * Export service contacts pdf - */ - public exportServiceContactsPdf(): void { - this.commonService.apiExportContactsPdf('Service_Kontakte', 'service'); - } - - /** - * Export service xmas pdf - */ - public exportXmasPdf(): void { - this.commonService.apiExportXmasPdf('Produzent_Weihnachten', 'service'); - } -} diff --git a/httpdocs/plp-angular/src/app/views/services/services-list/services-list.component.html b/httpdocs/plp-angular/src/app/views/services/services-list/services-list.component.html deleted file mode 100644 index 2d27c28..0000000 --- a/httpdocs/plp-angular/src/app/views/services/services-list/services-list.component.html +++ /dev/null @@ -1,24 +0,0 @@ -
Service-Dienstleister anlegen
- -
- - -
- -
- - -
diff --git a/httpdocs/plp-angular/src/app/views/services/services-list/services-list.component.scss b/httpdocs/plp-angular/src/app/views/services/services-list/services-list.component.scss deleted file mode 100644 index 09e2891..0000000 --- a/httpdocs/plp-angular/src/app/views/services/services-list/services-list.component.scss +++ /dev/null @@ -1,14 +0,0 @@ -#create-service { - position: absolute; - right: 0; - top: 0; -} - -@media only screen and (max-width: 1004px) { - #create-service { - position: relative; - right: auto; - top: auto; - display: inline-block; - } -} diff --git a/httpdocs/plp-angular/src/app/views/services/services-list/services-list.component.ts b/httpdocs/plp-angular/src/app/views/services/services-list/services-list.component.ts deleted file mode 100644 index 14f870d..0000000 --- a/httpdocs/plp-angular/src/app/views/services/services-list/services-list.component.ts +++ /dev/null @@ -1,113 +0,0 @@ -import {Component, EventEmitter, OnInit, Output} from '@angular/core'; -import {AgGridComponent} from '../../../components/ag-grid-component'; -import {AppService} from '../../../services/app.service'; -import {Const} from '../../../utils/const'; -import {isNull} from 'util'; -import {IService} from '../../../model/entities/service'; - -@Component({ - selector: 'app-service-list', - templateUrl: './services-list.component.html', - styleUrls: ['./services-list.component.scss'] -}) - -export class ServicesListComponent extends AgGridComponent implements OnInit { - - @Output() rowIsClicked: EventEmitter = new EventEmitter(); - @Output() createNewService: EventEmitter = new EventEmitter(); - - private services: IService[]; - public rowClassRules: {}; - public hasEditRights: boolean; - - constructor(public appService: AppService) { - super(); - } - - ngOnInit() { - this.hasEditRights = - this.appService.userHasRole(Const.USER_ROLE_TECHNIQUE) || - this.appService.userHasRole(Const.USER_ROLE_PRODUCTION) || - this.appService.userHasRole(Const.USER_ROLE_SERVICE); - - this.services = []; - this.defaultColDef = { - resizable: true, - sortable: true - }; - - this.columnDefs = [ - {headerName: 'ID', field: 'service_id', width: 60 }, - {headerName: 'Status', field: 'active', width: 90 }, - {headerName: 'Name', field: 'service_name' }, - {headerName: 'Name Zusatz', field: 'service_name_additional' }, - {headerName: 'Alte PLP Kennung', field: 'old_plp_id' }, - {headerName: 'Straße', field: 'street' }, - {headerName: 'Hausnummer', field: 'street_no' }, - {headerName: 'PLZ', field: 'zip' }, - {headerName: 'Ort', field: 'city' }, - {headerName: 'Internetadresse', field: 'url', cellRenderer: this.urlRenderer }, - {headerName: 'Bemerkungen (Allgemein)', field: 'comment' } - ]; - - this.rowSelection = 'single'; - - this.rowClassRules = { - inactive(params) { - return !params.data.active_state; - } - }; - } - - /** - * Sets data - * @param services - */ - public setData(services: IService[]): void { - this.services = services; - this.generateEntries(); - } - - /** - * Generates AG grid entries for service grid - */ - public generateEntries(): void { - this.rowData = []; - - if (!isNull(this.services)) { - for (let i = 0; i < this.services.length; i++) { - this.rowData.push({ - service_id: this.services[i].id, - active_state: this.services[i].active, - active: this.services[i].active ? 'Aktiv' : 'Inaktiv', - service_name: this.services[i].name, - service_name_additional: this.services[i].name_additional, - old_plp_id: this.services[i].old_plp_id, - street: this.services[i].street, - street_no: this.services[i].street_no, - zip: this.services[i].zip, - city: this.services[i].city, - url: this.services[i].url, - comment: this.services[i].comment, - }); - } - } - - } - - /** - * Row is clicked - * @param e - */ - public rowClicked(e: any) { - this.rowIsClicked.emit(e); - } - - /** - * OnClick Create service - */ - public createService(): void { - this.createNewService.emit(true); - } - -} diff --git a/httpdocs/plp-angular/src/app/views/services/services.component.html b/httpdocs/plp-angular/src/app/views/services/services.component.html deleted file mode 100644 index 8dcb50a..0000000 --- a/httpdocs/plp-angular/src/app/views/services/services.component.html +++ /dev/null @@ -1,34 +0,0 @@ -
-

Service-Dienstleister

- - - - - - - - - -
- - - - - -
- -
-
\ No newline at end of file diff --git a/httpdocs/plp-angular/src/app/views/services/services.component.scss b/httpdocs/plp-angular/src/app/views/services/services.component.scss deleted file mode 100644 index e69de29..0000000 diff --git a/httpdocs/plp-angular/src/app/views/services/services.component.ts b/httpdocs/plp-angular/src/app/views/services/services.component.ts deleted file mode 100644 index 2c29e14..0000000 --- a/httpdocs/plp-angular/src/app/views/services/services.component.ts +++ /dev/null @@ -1,283 +0,0 @@ -import {Component, ElementRef, OnDestroy, OnInit, ViewChild} from '@angular/core'; -import {AgGridComponent} from '../../components/ag-grid-component'; -import {TabsComponent} from '../../components/tabs/tabs.component'; -import {ModalComponent} from '../../components/modal/modal.component'; -import {ServiceViewComponent} from '../services/service-view/service-view.component'; -import {ServicesListComponent} from '../services/services-list/services-list.component'; -import { - ServicesContactListComponent -} from '../services/services-contact-list/services-contact-list.component'; -import { - ServiceDataEditComponent -} from '../services/service-view/service-data-edit/service-data-edit.component'; -import {IService} from '../../model/entities/service'; -import {Subscription} from 'rxjs'; -import {IServiceContact} from '../../model/entities/service-contact'; -import {AppService} from '../../services/app.service'; -import {ServiceService} from '../../services/service.service'; -import {MeetingService} from '../../services/meeting.service'; -import {isNull} from 'util'; -import {Factory} from '../../factory/factory'; -import {IServiceNote} from '../../model/entities/service-note'; -import {IServiceMeeting} from '../../model/entities/service-meeting'; - -@Component({ - selector: 'app-services', - templateUrl: './services.component.html', - styleUrls: ['./services.component.scss'] -}) - -export class ServicesComponent extends AgGridComponent implements OnInit, OnDestroy { - - @ViewChild('tabsCM', { static: true }) tabsCM: TabsComponent; - @ViewChild('modalService', { static: true }) modalService: ModalComponent; - @ViewChild('serviceView', { static: true }) serviceView: ServiceViewComponent; - @ViewChild('servicesList', { static: true }) servicesList: ServicesListComponent; - @ViewChild('servicesContactList', { static: true }) servicesContactList: ServicesContactListComponent; - @ViewChild('modalServiceDataEdit', { static: true }) modalServiceDataEdit: ModalComponent; - @ViewChild('serviceDataEdit', { static: true }) serviceDataEdit: ServiceDataEditComponent; - @ViewChild('headline', { static: true }) headline: ElementRef; - @ViewChild('content', { static: true }) content: ElementRef; - - private services: IService[]; - private servicesSub: Subscription; - private servicesContactsSub: Subscription; - public serviceContacts: IServiceContact[]; - - constructor(private appService: AppService, private serviceService: ServiceService, private meetingService: MeetingService) { - super(); - this.serviceService.apiGetServiceData(); - } - - ngOnInit() { - this.serviceContacts = []; - - this.servicesSub = this.serviceService.getServices$().subscribe( - data => { - this.services = data; - this.setComponentData(); - } - ); - - this.servicesContactsSub = this.serviceService.getServiceContacts$().subscribe( - data => { - this.serviceContacts = data; - this.setComponentData(); - } - ); - } - - /** - * Set component data after all data has been received - */ - private setComponentData() { - if (!isNull(this.services) && !isNull(this.serviceContacts)) { - this.servicesList.setData(this.services); - this.servicesContactList.setData(this.services, this.serviceContacts); - } - } - - /** - * service row is clicked - * @param e - */ - public rowClickedService(e: any) { - this.serviceService.apiGetServiceFull(e.data.service_id).subscribe( - data => { - this.serviceView.setData(data.result_data as IService); - this.modalService.openModal(); - }, - error => {} - ); - } - - /** - * OnClick Create service - */ - public createService(): void { - this.modalServiceDataEdit.openModal(); - this.serviceDataEdit.setData(Factory.getEmptyService()); - } - - /** - * Creates service - * @param service - */ - public createServiceFunction(service: IService): void { - this.serviceService.apiCreateService(service).subscribe( - data => { - this.modalServiceDataEdit.closeModal(); - }, - error => {} - ); - } - - /** - * Saves service - * @param service - */ - public editServiceFunction(service: IService): void { - this.serviceService.apiEditService(service).subscribe( - data => { - this.serviceView.setData(data.result_data as IService); - }, - error => {} - ); - } - - /** - * Creates service contact - * @param serviceContact - */ - public createServiceContactFunction(serviceContact: IServiceContact): void { - this.serviceService.apiCreateServiceContact(serviceContact).subscribe( - data => { - this.serviceView.setData(data.result_data as IService); - }, - error => {} - ); - } - - /** - * Edit service contact - * @param serviceContact - */ - public editServiceContactFunction(serviceContact: IServiceContact): void { - this.serviceService.apiEditServiceContact(serviceContact).subscribe( - data => { - this.serviceView.setData(data.result_data as IService, true); - }, - error => {} - ); - } - - /** - * Deletes service contact - * @param serviceContactId - */ - public deleteServiceContactFunction(serviceContactId: number): void { - this.serviceService.apiDeleteServiceContact(serviceContactId).subscribe( - data => { - this.serviceView.setData(data.result_data as IService); - }, - error => {} - ); - } - - /** - * Creates service note entry - * @param serviceNote - */ - public createServiceNoteFunction(serviceNote: IServiceNote): void { - this.serviceService.apiCreateServiceNote(serviceNote).subscribe( - data => { - this.serviceView.setData(data.result_data as IService); - }, - error => {} - ); - } - - /** - * Edits service note entry - * @param serviceNote - */ - public editServiceNoteFunction(serviceNote: IServiceNote): void { - this.serviceService.apiEditServiceNote(serviceNote).subscribe( - data => { - this.serviceView.setData(data.result_data as IService, true); - }, - error => {} - ); - } - - /** - * Deletes service note entry - * @param serviceNoteId - */ - public deleteServiceNoteFunction(serviceNoteId: number): void { - this.serviceService.apiDeleteServiceNote(serviceNoteId).subscribe( - data => { - this.serviceView.setData(data.result_data as IService); - }, - error => {} - ); - } - - /** - * Creates service meeting entry - * @param serviceMeeting - */ - public createServiceMeetingFunction(serviceMeeting: IServiceMeeting): void { - this.meetingService.apiCreateServiceMeeting(serviceMeeting).subscribe( - data => { - this.serviceView.setData(data.result_data as IService); - }, - error => {} - ); - } - - /** - * Edits service meeting entry - * @param serviceMeeting - */ - public editServiceMeetingFunction(serviceMeeting: IServiceMeeting): void { - this.meetingService.apiEditServiceMeeting(serviceMeeting).subscribe( - data => { - this.serviceView.setData(data.result_data as IService, true); - }, - error => {} - ); - } - - /** - * Deletes service meeting entry - * @param serviceMeetingId - */ - public deleteServiceMeetingFunction(serviceMeetingId: number): void { - this.meetingService.apiDeleteServiceMeeting(serviceMeetingId).subscribe( - data => { - this.serviceView.setData(data.result_data as IService); - }, - error => {} - ); - } - - /** - * Edit report after meeting has started - * @param reportValues - */ - public editServiceMeetingReportFunction(reportValues: any): void { - const meetingId: number = reportValues.id; - const report: string = reportValues.report; - this.meetingService.apiEditServiceMeetingReport(meetingId, report).subscribe( - data => { - this.serviceView.setData(data.result_data as IService, true); - }, - error => {} - ); - } - - /** - * Shortcut to service detail - * @param service - */ - public shortcutFunction(service: IService): void { - this.serviceService.apiGetServiceFull(service.id).subscribe( - data => { - this.serviceView.setData(data.result_data as IService); - this.modalService.openModal(); - }, - error => {} - ); - } - - /** - * Destroy - */ - ngOnDestroy(): void { - if (this.servicesSub !== null && this.servicesSub !== undefined) { - this.servicesSub.unsubscribe(); - } - } - -} diff --git a/httpdocs/plp-angular/src/app/views/start/internal-meeting-detail/internal-meeting-detail.component.ts b/httpdocs/plp-angular/src/app/views/start/internal-meeting-detail/internal-meeting-detail.component.ts index d6a834f..e2ffda4 100644 --- a/httpdocs/plp-angular/src/app/views/start/internal-meeting-detail/internal-meeting-detail.component.ts +++ b/httpdocs/plp-angular/src/app/views/start/internal-meeting-detail/internal-meeting-detail.component.ts @@ -12,7 +12,6 @@ import {NgForm} from '@angular/forms'; import {InternalMeetingEditComponent} from '../internal-meeting-edit/internal-meeting-edit.component'; import {Utils} from '../../../utils/utils'; import {Factory} from '../../../factory/factory'; -import {isNull} from 'util'; import {IConfig} from '../../../model/virtual/config'; import {AppService} from '../../../services/app.service'; import {IUser} from '../../../model/entities/user'; @@ -87,7 +86,7 @@ export class InternalMeetingDetailComponent extends FormComponent implements OnI * @param internalMeeting */ public updateData(internalMeeting: IInternalMeeting): void { - if (!isNull(this.internalMeeting.id)) { + if (null !== this.internalMeeting.id) { this.internalMeeting = internalMeeting; this.setMeetingData(); } diff --git a/httpdocs/plp-angular/src/app/views/start/meeting-calendar/meeting-calendar.component.ts b/httpdocs/plp-angular/src/app/views/start/meeting-calendar/meeting-calendar.component.ts index e32c46c..82c4941 100644 --- a/httpdocs/plp-angular/src/app/views/start/meeting-calendar/meeting-calendar.component.ts +++ b/httpdocs/plp-angular/src/app/views/start/meeting-calendar/meeting-calendar.component.ts @@ -11,7 +11,6 @@ import {AppService} from '../../../services/app.service'; import {IInternalMeeting} from '../../../model/entities/internal-meeting'; import {IOperatorMeeting} from '../../../model/entities/operator-meeting'; import {IOperator} from '../../../model/entities/operator'; -import {isNull} from 'util'; import {IProductionMeeting} from '../../../model/entities/production-meeting'; import {IServiceMeeting} from '../../../model/entities/service-meeting'; import {IProduction} from '../../../model/entities/production'; @@ -183,9 +182,9 @@ export class MeetingCalendarComponent implements OnInit { private generateEntries() { this.events = []; this.closeOpenMonthViewDay(); - const filterUser: IUser = !isNull(this.selectedUserIndex) ? this.selectableUsers[this.selectedUserIndex - 1] : null; + const filterUser: IUser = null !== this.selectedUserIndex ? this.selectableUsers[this.selectedUserIndex - 1] : null; for (let c = 0; c < this.customerMeetings.length; c++) { - if (!isNull(filterUser)) { + if (null !== filterUser) { if (filterUser.id !== this.customerMeetings[c].owner_user_id) { let isParticipant = false; for (let p = 0; p < this.customerMeetings[c].v_participants.length; p++) { @@ -228,7 +227,7 @@ export class MeetingCalendarComponent implements OnInit { const title: string = Utils.getDateTimeToDisplay(this.internalMeetings[i].start_date, true, true) + ' bis ' + Utils.getDateTimeToDisplay(this.internalMeetings[i].end_date, true, true) + ' - ' + user.firstname + ' ' + user.lastname + ': ' + 'PLP intern [' + this.internalMeetings[i].title + ']'; - if (!isNull(filterUser)) { + if (null !== filterUser) { if (filterUser.id !== this.internalMeetings[i].owner_user_id) { let isParticipant = false; for (let p = 0; p < this.internalMeetings[i].v_participants.length; p++) { @@ -269,7 +268,7 @@ export class MeetingCalendarComponent implements OnInit { user.firstname + ' ' + user.lastname + ': ' + operator.name + ' [' + this.operatorMeetings[o].title + ']'; - if (!isNull(filterUser)) { + if (null !== filterUser) { if (filterUser.id !== this.operatorMeetings[o].owner_user_id) { let isParticipant = false; for (let p = 0; p < this.operatorMeetings[o].v_participants.length; p++) { @@ -308,7 +307,7 @@ export class MeetingCalendarComponent implements OnInit { user.firstname + ' ' + user.lastname + ': ' + production.name + ' [' + this.productionMeetings[pr].title + ']'; - if (!isNull(filterUser)) { + if (null !== filterUser) { if (filterUser.id !== this.productionMeetings[pr].owner_user_id) { let isParticipant = false; for (let p = 0; p < this.productionMeetings[pr].v_participants.length; p++) { @@ -347,7 +346,7 @@ export class MeetingCalendarComponent implements OnInit { user.firstname + ' ' + user.lastname + ': ' + service.name + ' [' + this.serviceMeetings[se].title + ']'; - if (!isNull(filterUser)) { + if (null !== filterUser) { if (filterUser.id !== this.serviceMeetings[se].owner_user_id) { let isParticipant = false; for (let p = 0; p < this.serviceMeetings[se].v_participants.length; p++) { diff --git a/httpdocs/plp-angular/src/app/views/start/meeting-list/meeting-list.component.ts b/httpdocs/plp-angular/src/app/views/start/meeting-list/meeting-list.component.ts index 8fd2b13..51ab91f 100644 --- a/httpdocs/plp-angular/src/app/views/start/meeting-list/meeting-list.component.ts +++ b/httpdocs/plp-angular/src/app/views/start/meeting-list/meeting-list.component.ts @@ -1,6 +1,5 @@ import {Component, EventEmitter, OnDestroy, OnInit, Output} from '@angular/core'; import {AgGridComponent} from '../../../components/ag-grid-component'; -import {isNull} from 'util'; import {ICustomer} from '../../../model/entities/customer'; import {ICustomerMeeting} from '../../../model/entities/customer-meeting'; import {IUser} from '../../../model/entities/user'; @@ -124,8 +123,8 @@ export class MeetingListComponent extends AgGridComponent implements OnInit, OnD for (let c = 0; c < this.customerMeetings.length; c++) { owner = this.appService.getConfig().vc_user_by_id[this.customerMeetings[c].owner_user_id] as IUser; meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.customerMeetings[c].meeting_type_id] as IMeetingType; - let customerContactName: string = !isNull(this.customerMeetings[c].firstname) ? this.customerMeetings[c].firstname + ' ' : ''; - customerContactName += !isNull(this.customerMeetings[c].lastname) ? this.customerMeetings[c].lastname : ''; + let customerContactName: string = null !== this.customerMeetings[c].firstname) ? this.customerMeetings[c].firstname + ' ' : ''; + customerContactName += null !== this.customerMeetings[c].lastname) ? this.customerMeetings[c].lastname : ''; const customer: ICustomer = this.customersById[this.customerMeetings[c].customer_id]; const creator: IUser = this.appService.getConfig().vc_user_by_id[this.customerMeetings[c].creation_user_id]; @@ -191,8 +190,8 @@ export class MeetingListComponent extends AgGridComponent implements OnInit, OnD for (let o = 0; o < this.operatorMeetings.length; o++) { owner = this.appService.getConfig().vc_user_by_id[this.operatorMeetings[o].owner_user_id]; meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.operatorMeetings[o].meeting_type_id]; - let operatorContactName: string = !isNull(this.operatorMeetings[o].firstname) ? this.operatorMeetings[o].firstname + ' ' : ''; - operatorContactName += !isNull(this.operatorMeetings[o].lastname) ? this.operatorMeetings[o].lastname : ''; + let operatorContactName: string = null !== this.operatorMeetings[o].firstname ? this.operatorMeetings[o].firstname + ' ' : ''; + operatorContactName += null !== this.operatorMeetings[o].lastname ? this.operatorMeetings[o].lastname : ''; const operator: IOperator = this.operatorsById[this.operatorMeetings[o].operator_id]; const creator: IUser = this.appService.getConfig().vc_user_by_id[this.operatorMeetings[o].creation_user_id]; @@ -227,8 +226,8 @@ export class MeetingListComponent extends AgGridComponent implements OnInit, OnD for (let p = 0; p < this.productionMeetings.length; p++) { owner = this.appService.getConfig().vc_user_by_id[this.productionMeetings[p].owner_user_id]; meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.productionMeetings[p].meeting_type_id]; - let contactName: string = !isNull(this.productionMeetings[p].firstname) ? this.productionMeetings[p].firstname + ' ' : ''; - contactName += !isNull(this.productionMeetings[p].lastname) ? this.productionMeetings[p].lastname : ''; + let contactName: string = null !== this.productionMeetings[p].firstname ? this.productionMeetings[p].firstname + ' ' : ''; + contactName += null !== this.productionMeetings[p].lastname ? this.productionMeetings[p].lastname : ''; const production: IProduction = this.operatorsById[this.productionMeetings[p].production_id]; const creator: IUser = this.appService.getConfig().vc_user_by_id[this.productionMeetings[p].creation_user_id]; @@ -263,8 +262,8 @@ export class MeetingListComponent extends AgGridComponent implements OnInit, OnD for (let s = 0; s < this.serviceMeetings.length; s++) { owner = this.appService.getConfig().vc_user_by_id[this.serviceMeetings[s].owner_user_id]; meetingType = this.appService.getConfig().vc_meeting_types_by_id[this.serviceMeetings[s].meeting_type_id]; - let contactName: string = !isNull(this.serviceMeetings[s].firstname) ? this.serviceMeetings[s].firstname + ' ' : ''; - contactName += !isNull(this.serviceMeetings[s].lastname) ? this.serviceMeetings[s].lastname : ''; + let contactName: string = null !== this.serviceMeetings[s].firstname ? this.serviceMeetings[s].firstname + ' ' : ''; + contactName += null !== this.serviceMeetings[s].lastname ? this.serviceMeetings[s].lastname : ''; const service: IService = this.operatorsById[this.serviceMeetings[s].service_id]; const creator: IUser = this.appService.getConfig().vc_user_by_id[this.serviceMeetings[s].creation_user_id]; items.push({ diff --git a/httpdocs/plp-angular/src/app/views/start/start.component.ts b/httpdocs/plp-angular/src/app/views/start/start.component.ts index 9809494..331b2bf 100644 --- a/httpdocs/plp-angular/src/app/views/start/start.component.ts +++ b/httpdocs/plp-angular/src/app/views/start/start.component.ts @@ -4,7 +4,6 @@ import {AppService} from '../../services/app.service'; import {CustomerService} from '../../services/customer.service'; import {ICustomer} from '../../model/entities/customer'; import {ICustomerMeeting} from '../../model/entities/customer-meeting'; -import {isNull} from 'util'; import {MeetingCalendarComponent} from './meeting-calendar/meeting-calendar.component'; import {TabsComponent} from '../../components/tabs/tabs.component'; import {MeetingListComponent} from './meeting-list/meeting-list.component'; @@ -19,11 +18,8 @@ import {Factory} from '../../factory/factory'; import {InternalMeetingDetailComponent} from './internal-meeting-detail/internal-meeting-detail.component'; import {IMeetingData} from '../../model/virtual/meeting-data'; import {IOperatorMeeting} from '../../model/entities/operator-meeting'; -import {OperatorService} from '../../services/operator.service'; import {IOperator} from '../../model/entities/operator'; import {OperatorMeetingDetailComponent} from '../operators/operator-view/operator-meeting-detail/operator-meeting-detail.component'; -import {ProductionService} from '../../services/production.service'; -import {ServiceService} from '../../services/service.service'; import {IProduction} from '../../model/entities/production'; import {IService} from '../../model/entities/service'; import {IProductionMeeting} from '../../model/entities/production-meeting'; @@ -85,9 +81,6 @@ export class StartComponent implements OnInit, OnDestroy { constructor( private appService: AppService, private customerService: CustomerService, - private operatorService: OperatorService, - private productionService: ProductionService, - private serviceService: ServiceService, private meetingService: MeetingService) { } @@ -105,9 +98,6 @@ export class StartComponent implements OnInit, OnDestroy { this.customerService.apiGetCustomerData(); this.meetingService.apiGetMeetingData(); - this.operatorService.apiGetOperatorData(); - this.productionService.apiGetProductionData(); - this.serviceService.apiGetServiceData(); this.customersSub = this.customerService.getCustomers$().subscribe( data => { @@ -116,32 +106,11 @@ export class StartComponent implements OnInit, OnDestroy { this.setComponentData(); } ); - this.operatorsSub = this.operatorService.getOperators$().subscribe( - data => { - this.operators = data; - this.operatorsById = Utils.getSortedObjFromArray(this.operators, 'id'); - this.setComponentData(); - } - ); - this.productionsSub = this.productionService.getProductions$().subscribe( - data => { - this.productions = data; - this.productionsById = Utils.getSortedObjFromArray(this.productions, 'id'); - this.setComponentData(); - } - ); - this.servicesSub = this.serviceService.getServices$().subscribe( - data => { - this.services = data; - this.servicesById = Utils.getSortedObjFromArray(this.services, 'id'); - this.setComponentData(); - } - ); this.meetingsSub = this.meetingService.getMeetingsData$().subscribe( data => { this.meetingData = data; - if (!isNull(data)) { + if (null !== data) { this.customerMeetings = data.customerMeetings; this.internalMeetings = data.internalMeetings; this.operatorMeetings = data.operatorMeetings; @@ -163,15 +132,15 @@ export class StartComponent implements OnInit, OnDestroy { * Sets component data */ private setComponentData() { - if (!isNull(this.customers) && - !isNull(this.operators) && - !isNull(this.productions) && - !isNull(this.services) && - !isNull(this.customerMeetings) && - !isNull(this.internalMeetings) && - !isNull(this.operatorMeetings) && - !isNull(this.productionMeetings) && - !isNull(this.serviceMeetings) + if (null !== this.customers && + null !== this.operators && + null !== this.productions && + null !== this.services && + null !== this.customerMeetings && + null !== this.internalMeetings && + null !== this.operatorMeetings && + null !== this.productionMeetings && + null !== this.serviceMeetings ) { this.meetingCalendar.setData( this.customersById,